VR4Medical/ICI/Library/PackageCache/com.unity.xr.interaction.toolkit@42ef3600567b/Samples~/visionOS/Scripts/Helpers/Resetable.cs
2025-07-29 13:45:50 +03:00

51 lines
1.5 KiB
C#

namespace UnityEngine.XR.Interaction.Toolkit.Samples.VisionOS
{
/// <summary>
/// Simple class that serves to reset the transform of an object to its initial state.
/// </summary>
public class Resetable : MonoBehaviour
{
Vector3 m_InitialPosition;
Quaternion m_InitialRotation;
Vector3 m_InitialScale;
Rigidbody m_Rigidbody;
Transform m_Transform;
void Awake()
{
m_Transform = transform;
// Capture initial transform
m_InitialPosition = m_Transform.position;
m_InitialRotation = m_Transform.rotation;
m_InitialScale = m_Transform.localScale;
// Get Rigidbody if exists
m_Rigidbody = GetComponent<Rigidbody>();
}
public void DoReset()
{
// Reset transform
m_Transform.SetPositionAndRotation(m_InitialPosition, m_InitialRotation);
m_Transform.localScale = m_InitialScale;
// Reset Rigidbody velocities if exists
if (m_Rigidbody != null)
{
m_Rigidbody.MovePosition(m_InitialPosition);
m_Rigidbody.MoveRotation(m_InitialRotation);
if (!m_Rigidbody.isKinematic)
return;
#if UNITY_2023_3_OR_NEWER
m_Rigidbody.linearVelocity = Vector3.zero;
#else
m_Rigidbody.velocity = Vector3.zero;
#endif
m_Rigidbody.angularVelocity = Vector3.zero;
}
}
}
}