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();
}
}
}