diff options
Diffstat (limited to 'GameCode/KeepRelativeRotationTo.cs')
| -rw-r--r-- | GameCode/KeepRelativeRotationTo.cs | 59 |
1 files changed, 0 insertions, 59 deletions
diff --git a/GameCode/KeepRelativeRotationTo.cs b/GameCode/KeepRelativeRotationTo.cs deleted file mode 100644 index 94dbe16..0000000 --- a/GameCode/KeepRelativeRotationTo.cs +++ /dev/null @@ -1,59 +0,0 @@ -using UnityEngine; - -public class KeepRelativeRotationTo : MonoBehaviour -{ - [SerializeField] - private Transform transformToKeepRelativeRotationTo; - - [SerializeField] - private Vector3 upVector = Vector3.up; - - private Quaternion initialOffset; - - private Vector3 selfPosition; - - private Vector3 otherPosition; - - private Quaternion localRotationStart; - - private Vector3 upVectorAdjusted; - - private void PrepareData() - { - if ((bool)base.transform.parent) - { - selfPosition = base.transform.localPosition; - otherPosition = base.transform.parent.worldToLocalMatrix.MultiplyPoint(transformToKeepRelativeRotationTo.position); - upVectorAdjusted = upVector; - } - else - { - selfPosition = base.transform.position; - otherPosition = transformToKeepRelativeRotationTo.position; - upVectorAdjusted = upVector; - } - } - - private void Start() - { - if ((bool)base.transform.parent) - { - upVector = base.transform.localToWorldMatrix.MultiplyVector(upVector); - upVector = base.transform.parent.localToWorldMatrix.MultiplyVector(upVector); - upVector = upVector.normalized; - } - localRotationStart = base.transform.localRotation; - PrepareData(); - initialOffset = Quaternion.Inverse(Quaternion.LookRotation(otherPosition - selfPosition, upVectorAdjusted)); - } - - private void Update() - { - if ((bool)transformToKeepRelativeRotationTo) - { - PrepareData(); - Quaternion quaternion = Quaternion.LookRotation(otherPosition - selfPosition, upVectorAdjusted); - base.transform.localRotation = quaternion * initialOffset * localRotationStart; - } - } -} |
