summaryrefslogtreecommitdiff
path: root/Assets/Samples/XR Interaction Toolkit/3.1.2/Starter Assets/Scripts/ControllerAnimator.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Assets/Samples/XR Interaction Toolkit/3.1.2/Starter Assets/Scripts/ControllerAnimator.cs')
-rw-r--r--Assets/Samples/XR Interaction Toolkit/3.1.2/Starter Assets/Scripts/ControllerAnimator.cs84
1 files changed, 84 insertions, 0 deletions
diff --git a/Assets/Samples/XR Interaction Toolkit/3.1.2/Starter Assets/Scripts/ControllerAnimator.cs b/Assets/Samples/XR Interaction Toolkit/3.1.2/Starter Assets/Scripts/ControllerAnimator.cs
new file mode 100644
index 0000000..858f8f2
--- /dev/null
+++ b/Assets/Samples/XR Interaction Toolkit/3.1.2/Starter Assets/Scripts/ControllerAnimator.cs
@@ -0,0 +1,84 @@
+using UnityEngine.XR.Interaction.Toolkit.Inputs.Readers;
+
+namespace UnityEngine.XR.Interaction.Toolkit.Samples.StarterAssets
+{
+ /// <summary>
+ /// Component which reads input values and drives the thumbstick, trigger, and grip transforms
+ /// to animate a controller model.
+ /// </summary>
+ public class ControllerAnimator : MonoBehaviour
+ {
+ [Header("Thumbstick")]
+ [SerializeField]
+ Transform m_ThumbstickTransform;
+
+ [SerializeField]
+ Vector2 m_StickRotationRange = new Vector2(30f, 30f);
+
+ [SerializeField]
+ XRInputValueReader<Vector2> m_StickInput = new XRInputValueReader<Vector2>("Thumbstick");
+
+ [Header("Trigger")]
+ [SerializeField]
+ Transform m_TriggerTransform;
+
+ [SerializeField]
+ Vector2 m_TriggerXAxisRotationRange = new Vector2(0f, -15f);
+
+ [SerializeField]
+ XRInputValueReader<float> m_TriggerInput = new XRInputValueReader<float>("Trigger");
+
+ [Header("Grip")]
+ [SerializeField]
+ Transform m_GripTransform;
+
+ [SerializeField]
+ Vector2 m_GripRightRange = new Vector2(-0.0125f, -0.011f);
+
+ [SerializeField]
+ XRInputValueReader<float> m_GripInput = new XRInputValueReader<float>("Grip");
+
+ void OnEnable()
+ {
+ if (m_ThumbstickTransform == null || m_GripTransform == null || m_TriggerTransform == null)
+ {
+ enabled = false;
+ Debug.LogWarning($"Controller Animator component missing references on {gameObject.name}", this);
+ return;
+ }
+
+ m_StickInput?.EnableDirectActionIfModeUsed();
+ m_TriggerInput?.EnableDirectActionIfModeUsed();
+ m_GripInput?.EnableDirectActionIfModeUsed();
+ }
+
+ void OnDisable()
+ {
+ m_StickInput?.DisableDirectActionIfModeUsed();
+ m_TriggerInput?.DisableDirectActionIfModeUsed();
+ m_GripInput?.DisableDirectActionIfModeUsed();
+ }
+
+ void Update()
+ {
+ if (m_StickInput != null)
+ {
+ var stickVal = m_StickInput.ReadValue();
+ m_ThumbstickTransform.localRotation = Quaternion.Euler(-stickVal.y * m_StickRotationRange.x, 0f, -stickVal.x * m_StickRotationRange.y);
+ }
+
+ if (m_TriggerInput != null)
+ {
+ var triggerVal = m_TriggerInput.ReadValue();
+ m_TriggerTransform.localRotation = Quaternion.Euler(Mathf.Lerp(m_TriggerXAxisRotationRange.x, m_TriggerXAxisRotationRange.y, triggerVal), 0f, 0f);
+ }
+
+ if (m_GripInput != null)
+ {
+ var gripVal = m_GripInput.ReadValue();
+ var currentPos = m_GripTransform.localPosition;
+ m_GripTransform.localPosition = new Vector3(Mathf.Lerp(m_GripRightRange.x, m_GripRightRange.y, gripVal), currentPos.y, currentPos.z);
+ }
+ }
+ }
+}