HandModel.GetArmCenter C# (CSharp) Method

GetArmCenter() public method

public GetArmCenter ( ) : Vector3
return Vector3
  public Vector3 GetArmCenter() {
    if (controller_ != null && hand_ != null) {
      Vector leap_center = 0.5f * (hand_.Arm.WristPosition + hand_.Arm.ElbowPosition);
      return controller_.transform.TransformPoint (leap_center.ToUnityScaled (mirror_z_axis_)) + GetHandOffset ();
    }
    if (forearm) {
      return forearm.position;
    }
    return Vector3.zero;
  }

Usage Example

示例#1
0
        void AlignArmHUD(HandModel handModel)
        {
            ArmHUDgeom.SetActive(true);

            if (targetHandID != handModel.GetInstanceID())
            {
                // Reinitialize ArmHUD alignment
                //Debug.Log ("Reinitialize ArmHUD alignment Time.time = " + Time.time);
                smoothedPosition.reset = true;
                smoothedRotation.reset = true;
                targetHandID           = handModel.GetInstanceID();
            }
            float sqrCos = handModel.GetArmDirection().y;

            sqrCos *= sqrCos;
            float delay = sqrCos * verticalFilterTime + (1f - sqrCos) * horizontalFilterTime;

            //Debug.Log ("delay(sqrCos = " + sqrCos + ", Time.deltaTime = " + Time.deltaTime + ") = " + delay);
            smoothedPosition.delay = delay;
            smoothedRotation.delay = delay;
            Vector3    localArmCenter   = transform.parent.InverseTransformPoint(handModel.GetArmCenter());
            Quaternion localArmRotation = Quaternion.Inverse(transform.parent.rotation) * handModel.GetArmRotation();

            transform.localPosition = smoothedPosition.Update(localArmCenter, Time.deltaTime);
            transform.localRotation = smoothedRotation.Update(localArmRotation, Time.deltaTime);

            if (ArmHUDisOpen == false)            //Change this to state transition from ARMHUDSTATE_NOLEFTHAND -> ARMHUDSTATE_STATUS_ETC
            {
                if (Activate())
                {
                    ArmHUDAnimator.Play("Take 001_Opening");
                    ArmHUDeventsAnimator.Play("WristGraphicsEvents");
                    ArmHUDisOpen = true;
                }
                else
                {
                    ArmHUDState.Change(ARMHUDSTATE_STATUS_ETC);
                    return;
                }
            }
//			ArmHUDbaseLookAtGRP.LookAt(LookTarget);
            Vector3 localEulerAngles = ArmHUDbaseLookAtGRP.localEulerAngles;

            if (ArmHUDisOpen == true)
            {
                if (localEulerAngles.x < 340.0f && localEulerAngles.x > 280.0f)
                {
                    ArmHUDState.Change(ARMHUDSTATE_STATUS_ETC);
                }
                else if (localEulerAngles.x > 26.0f && localEulerAngles.x < 80.0f && ArmHUDState.state != ARMHUDSTATE_PANELVISIBLE)
                {
                    ArmHUDState.Change(ARMHUDSTATE_SETTINGS_ONLY);
                }
            }
//			localEulerAngles.y = 90f;
//			localEulerAngles.z = 0f;
//			ArmHUDbaseLookAtGRP.localEulerAngles = localEulerAngles;
        }
All Usage Examples Of HandModel::GetArmCenter