|
|
- namespace VRTK.Examples
- {
- using UnityEngine;
- using UnityEventHelper;
- using VRTK.Controllables;
-
- public class ControlReactor : MonoBehaviour
- {
- public TextMesh go;
-
- #pragma warning disable 0618
- protected VRTK_Control_UnityEvents controlEvents;
- #pragma warning restore 0618
- protected VRTK_BaseControllable controllableEvents;
-
- protected virtual void OnEnable()
- {
- #pragma warning disable 0618
- if (GetComponent<VRTK_Control>() != null && GetComponent<VRTK_Control_UnityEvents>() == null)
- {
- controlEvents = gameObject.AddComponent<VRTK_Control_UnityEvents>();
- }
- controlEvents = GetComponent<VRTK_Control_UnityEvents>();
- #pragma warning restore 0618
- controllableEvents = GetComponent<VRTK_BaseControllable>();
-
- ManageListeners(true);
- }
-
- protected virtual void OnDisable()
- {
- ManageListeners(false);
- }
-
- protected virtual void ManageListeners(bool state)
- {
- if (state)
- {
- if (controlEvents != null)
- {
- controlEvents.OnValueChanged.AddListener(HandleChange);
- }
- if (controllableEvents != null)
- {
- controllableEvents.ValueChanged += ValueChanged;
- }
- }
- else
- {
- if (controlEvents != null)
- {
- controlEvents.OnValueChanged.RemoveListener(HandleChange);
- }
- if (controllableEvents != null)
- {
- controllableEvents.ValueChanged -= ValueChanged;
- }
- }
- }
-
- protected virtual void ValueChanged(object sender, ControllableEventArgs e)
- {
- UpdateText(e.value.ToString("F2"), (e.normalizedValue * 100f).ToString("F0"));
- }
-
- protected virtual void HandleChange(object sender, Control3DEventArgs e)
- {
- UpdateText(e.value.ToString("F2"), (e.normalizedValue * 100f).ToString("F0"));
- }
-
- protected virtual void UpdateText(string valueText, string normalizedValueText)
- {
- if (go != null)
- {
- go.text = valueText;
- }
- }
- }
- }
|