—————————————————————
private void CLIMBING_IN_The_VU()
{
//Vector3 vCtrl1_to_Ctrl2 = ctrl2.transform.position - ctrl1.transform.position;
bool bClimb1 = ctrl1.GetComponent<Argos_Controller_Interface>().bClimbing;
bool bClimb2 = ctrl2.GetComponent<Argos_Controller_Interface>().bClimbing;
Vector3 axis;
float angle;
if (bClimb1 || bClimb2)
{
if (is_A_Trigger_Pressed() && bClimb1)
{
vCtrl1_Right = ctrl1.transform.right;
Quaternion q = Quaternion.FromToRotation(vCtrl1_Right, vCtrl1_Last_Right);
vCtrl1_Up = ctrl1.transform.up;
Quaternion q2 = Quaternion.FromToRotation(vCtrl1_Up, vCtrl1_Last_Up);
Quaternion q3 = q * q2;
slerp_Ctrl_Pos_1 = Vector3.Slerp(slerp_Ctrl_Pos_1, ctrl1.transform.position, Time.deltaTime * grab_Rotate_Damping);
slerp_Rotation_1 = Quaternion.Slerp(slerp_Rotation_1, q3, Time.deltaTime * grab_Rotate_Damping);
slerp_Rotation_1.ToAngleAxis(out angle, out axis);
argos_Teleport.transform.RotateAround(slerp_Ctrl_Pos_1, axis, angle * 0.99f);
VU_UI.transform.RotateAround(slerp_Ctrl_Pos_1, axis, angle *0.99f);
}
else if(is_A_Trigger_Pressed() && bClimb2)
{
vCtrl2_Right = ctrl2.transform.right;
Quaternion q = Quaternion.FromToRotation(vCtrl2_Right, vCtrl2_Last_Right);
vCtrl2_Up = ctrl2.transform.up;
Quaternion q2 = Quaternion.FromToRotation(vCtrl2_Up, vCtrl2_Last_Up);
Quaternion q3 = q * q2;
slerp_Ctrl_Pos_2 = Vector3.Slerp(slerp_Ctrl_Pos_2, ctrl2.transform.position, Time.deltaTime * grab_Rotate_Damping);
slerp_Rotation_2 = Quaternion.Slerp(slerp_Rotation_2, q3, Time.deltaTime * grab_Rotate_Damping);
slerp_Rotation_2.ToAngleAxis(out angle, out axis);
argos_Teleport.transform.RotateAround(slerp_Ctrl_Pos_2, axis, angle * 0.99f);
VU_UI.transform.RotateAround(slerp_Ctrl_Pos_2, axis, angle * 0.99f);
}
if (!is_A_Trigger_Pressed())
{
float c = 1;
if(current_USER_LOCATION == USER_LOCATION.IN_THE_VU)
{
c = 75* ui_Ladder.Velocity_Adjust/28f; //Introduce scaling
}
if (bClimb1)
{
Vector3 vDelt = ctrl1.transform.position - vCtrl1_Last_Pos;
argos_Teleport.transform.position -= c*vDelt;
Vector3 vTran = c * vDelt; //argos_Teleport.transform.InverseTransformDirection(c * vDelt);
VU_UI.transform.position -= vTran;
}
else if (bClimb2)
{
Vector3 vDelt = ctrl2.transform.position - vCtrl2_Last_Pos;
argos_Teleport.transform.position -= c*vDelt;
Vector3 vTran = c * vDelt; //argos_Teleport.transform.InverseTransformDirection(c * vDelt);
VU_UI.transform.position -= vTran;
}
}
}
else
{
if (active_Ctrl_States.bCtrl_1_On)
{
slerp_Ctrl_Pos_1 = ctrl1.transform.position;
slerp_Rotation_1 = Quaternion.identity;
}
if(active_Ctrl_States.bCtrl_1_On)
{
slerp_Ctrl_Pos_2 = ctrl2.transform.position;
slerp_Rotation_2 = Quaternion.identity;
}
}
vCtrl1_Last_Right = ctrl1.transform.right;
vCtrl2_Last_Right = ctrl2.transform.right;
vCtrl1_Last_Up = ctrl1.transform.up;
vCtrl2_Last_Up = ctrl2.transform.up;
vCtrl1_Last_Pos = ctrl1.transform.position;
vCtrl2_Last_Pos = ctrl2.transform.position;
}
public void Shape_Flight_Control_Transforms()
{
if (glass_Stabilizer != null)
{
vCurrPos = argos_Teleport.transform.position;
if (active_Ctrl_States.bGlobal_Flight_Control_On)
{
if (!bUI_Grabbed_Glass_Hold)
{
float rotation_Rate = argos_file.Get_Curr_Rotation_Rate_Adjust((int)active_Ctrl_States.curr_FLIGHT_MODE); //ui_Ladder.Rotation_Rate;
float velocity_Adjust = argos_file.Get_Curr_Velocity_Adjust((int)active_Ctrl_States.curr_FLIGHT_MODE);//ui_Ladder.Velocity_Adjust;
if (current_USER_LOCATION != USER_LOCATION.IN_THE_VU)
{
rotation_Rate /= 5f; //Don't rotate so much in Lab View
velocity_Adjust = velocity_Adjust * 5;
}
float val_Z = ctrl_Rotation.get_z_Rota();
argos_Teleport.transform.RotateAround(glass_Stabilizer.gameObject.transform.position,
glass_Stabilizer.gameObject.transform.forward, rotation_Rate * val_Z * Time.fixedDeltaTime);
VU_UI.transform.RotateAround(glass_Stabilizer.gameObject.transform.position,
glass_Stabilizer.gameObject.transform.forward, rotation_Rate * val_Z * Time.fixedDeltaTime);
/////////////////////////////////
float val_X = ctrl_Rotation.get_x_Rota();
argos_Teleport.transform.RotateAround(glass_Stabilizer.gameObject.transform.position,
glass_Stabilizer.gameObject.transform.right, rotation_Rate * val_X * Time.fixedDeltaTime);
VU_UI.transform.RotateAround(glass_Stabilizer.gameObject.transform.position,
glass_Stabilizer.gameObject.transform.right, rotation_Rate * val_X * Time.fixedDeltaTime);
/////////////////////////////////
float val_Y = ctrl_Rotation.get_y_Rota();
argos_Teleport.transform.RotateAround(glass_Stabilizer.gameObject.transform.position,
glass_Stabilizer.gameObject.transform.up, rotation_Rate * val_Y * Time.fixedDeltaTime);
VU_UI.transform.RotateAround(glass_Stabilizer.gameObject.transform.position,
glass_Stabilizer.gameObject.transform.up, rotation_Rate * val_Y * Time.fixedDeltaTime);
/////////////////////////////////
Vector3 dP = glass_Stabilizer.get_current_Velocity() * velocity_Adjust * Time.fixedDeltaTime;
argos_Teleport.transform.position += dP;
VU_UI.transform.transform.position += dP;
}
}
vLastPos = vCurrPos;
}
}

