namespace VRTK.Prefabs.CameraRig.SimulatedCameraRig { using UnityEngine; using Malimbe.MemberClearanceMethod; using Malimbe.PropertySerializationAttribute; using Malimbe.XmlDocumentationAttribute; using Malimbe.MemberChangeMethod; /// /// Resets the saved properties of a given transform. /// public class TransformPropertyResetter : MonoBehaviour { /// /// The source to cache and reset. /// [Serialized, Cleared] [field: DocumentedByXml] public GameObject Source { get; set; } /// /// The initial local position of the . /// protected Vector3? initialLocalPosition; /// /// The initial local rotation of the . /// protected Quaternion initialLocalRotation; /// /// The initial local scale of the . /// protected Vector3 initialLocalScale; /// /// Resets to the cached properties. /// public virtual void ResetProperties() { if (Source == null || initialLocalPosition == null) { return; } Source.transform.localPosition = (Vector3)initialLocalPosition; Source.transform.localRotation = initialLocalRotation; Source.transform.localScale = initialLocalScale; } protected virtual void Awake() { CacheSourceTransformData(); } /// /// Caches the initial state of the transform data. /// protected virtual void CacheSourceTransformData() { if (Source == null) { initialLocalPosition = null; return; } initialLocalPosition = Source.transform.localPosition; initialLocalRotation = Source.transform.localRotation; initialLocalScale = Source.transform.localScale; } /// /// Called after has been changed. /// [CalledAfterChangeOf(nameof(Source))] protected virtual void OnAfterSourceChange() { CacheSourceTransformData(); } } }