void Reset() { bodyMovements = (BodyMovementsBasics) target; InstantVR ivr = bodyMovements.GetComponent<InstantVR>(); if (ivr == null) { Debug.LogWarning("Body Movements script requires Instant VR script on the game object"); DestroyImmediate(bodyMovements); return; } IVR_BodyMovementsFree[] bodyMovementsScripts = bodyMovements.GetComponents<IVR_BodyMovementsFree>(); if (bodyMovementsScripts.Length > 1) { Debug.LogError("You cant have more than one BodyMovements script"); DestroyImmediate(bodyMovements); // why does it delete the first script, while target should be the new script... return; } Animator animator = bodyMovements.transform.GetComponentInChildren<Animator>(); if (animator) { avatarGameObject = animator.gameObject; prefabPose = false; bodyMovements.StartMovements(); } }
public ArmBasics(InstantVR ivr, BodySide bodySide_in, BodyMovementsBasics bodyMovements_in) { this.ivr = ivr; animator = ivr.GetComponentInChildren<Animator>(); this.bodyMovements = bodyMovements_in; this.bodySide = bodySide_in; if (bodySide_in == BodySide.Left) { upperArm = animator.GetBoneTransform(HumanBodyBones.LeftUpperArm); forearm = animator.GetBoneTransform(HumanBodyBones.LeftLowerArm); hand = animator.GetBoneTransform(HumanBodyBones.LeftHand); if (bodyMovements.fromNormLeftHand == Quaternion.identity) { bodyMovements.fromNormLeftUpperArm = Quaternion.Inverse(Quaternion.LookRotation(forearm.position - upperArm.position)) * upperArm.rotation; bodyMovements.fromNormLeftForearm = Quaternion.Inverse(Quaternion.LookRotation(hand.position - forearm.position)) * forearm.rotation; bodyMovements.fromNormLeftHand = Quaternion.Inverse(Quaternion.LookRotation(hand.position - forearm.position)) * hand.rotation; } if (fromNormHand == Quaternion.identity) { fromNormUpperArm = Quaternion.Inverse(Quaternion.LookRotation(forearm.position - upperArm.position)) * upperArm.rotation; fromNormForearm = Quaternion.Inverse(Quaternion.LookRotation(hand.position - forearm.position)) * forearm.rotation; fromNormHand = Quaternion.Inverse(Quaternion.LookRotation(hand.position - forearm.position)) * hand.rotation; } } else { upperArm = animator.GetBoneTransform(HumanBodyBones.RightUpperArm); forearm = animator.GetBoneTransform(HumanBodyBones.RightLowerArm); hand = animator.GetBoneTransform(HumanBodyBones.RightHand); if (bodyMovements.fromNormRightHand == Quaternion.identity) { bodyMovements.fromNormRightUpperArm = Quaternion.Inverse(Quaternion.LookRotation(forearm.position - upperArm.position)) * upperArm.rotation; bodyMovements.fromNormRightForearm = Quaternion.Inverse(Quaternion.LookRotation(hand.position - forearm.position)) * forearm.rotation; bodyMovements.fromNormRightHand = Quaternion.Inverse(Quaternion.LookRotation(hand.position - forearm.position)) * hand.rotation; } if (fromNormHand == Quaternion.identity) { fromNormUpperArm = Quaternion.Inverse(Quaternion.LookRotation(forearm.position - upperArm.position)) * upperArm.rotation; fromNormForearm = Quaternion.Inverse(Quaternion.LookRotation(hand.position - forearm.position)) * forearm.rotation; fromNormHand = Quaternion.Inverse(Quaternion.LookRotation(hand.position - forearm.position)) * hand.rotation; } } float upperArmLength = Vector3.Distance(upperArm.position, forearm.position); float forearmLength = Vector3.Distance(forearm.position, hand.position); length = upperArmLength + forearmLength; upperArmStartPosition = upperArm.position; }
public ArmMovements_Free(InstantVR ivr, ArmBasics.BodySide bodySide_in, BodyMovementsBasics bodyMovements) : base(ivr, bodySide_in, bodyMovements) { }