| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- using UnityEngine;
- using UnityEngine.EventSystems;
- using UnityEngine.UI;
- namespace Unity.VRTemplate
- {
- /// <summary>
- /// Controls the visual states of a boolean toggle switch UI
- /// </summary>
- [RequireComponent(typeof(Toggle))]
- public class BooleanToggleVisualsController : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler
- {
- const float k_TargetPositionX = 17f;
- #pragma warning disable 649
- [SerializeField, Tooltip("The boolean toggle knob.")]
- RectTransform m_Knob;
- [SerializeField, Tooltip("How much to translate the button imagery on the z on hover.")]
- float m_ZTranslation = 5f;
- #pragma warning restore 649
- Toggle m_Toggle;
- float m_InitialBackground;
- Coroutine m_ColorFade;
- Coroutine m_LocalMove;
- void Awake()
- {
- m_Toggle = gameObject.GetComponent<Toggle>();
- //Add listener for when the state of the Toggle changes, to take action
- m_Toggle.onValueChanged.AddListener(ToggleValueChanged);
- if (m_Knob != null)
- {
- m_InitialBackground = m_Knob.localPosition.z;
- }
- }
- void OnEnable()
- {
- ToggleValueChanged(m_Toggle.isOn);
- }
- /// <inheritdoc />
- void IPointerEnterHandler.OnPointerEnter(PointerEventData eventData)
- {
- PerformEntranceActions();
- }
- /// <inheritdoc />
- void IPointerExitHandler.OnPointerExit(PointerEventData eventData)
- {
- PerformExitActions();
- }
- void ToggleValueChanged(bool value)
- {
- if (value)
- {
- m_Knob.localPosition = new Vector3(k_TargetPositionX, m_Knob.localPosition.y, m_Knob.localPosition.z);
- }
- else
- {
- m_Knob.localPosition = new Vector3(-k_TargetPositionX, m_Knob.localPosition.y, m_Knob.localPosition.z);
- }
- }
- void PerformEntranceActions()
- {
- if (m_Knob != null)
- {
- var backgroundLocalPosition = m_Knob.localPosition;
- backgroundLocalPosition.z = m_InitialBackground - m_ZTranslation;
- m_Knob.localPosition = backgroundLocalPosition;
- }
- }
- void PerformExitActions()
- {
- if (m_Knob != null)
- {
- var backgroundLocalPosition = m_Knob.localPosition;
- backgroundLocalPosition.z = m_InitialBackground;
- m_Knob.localPosition = backgroundLocalPosition;
- m_Knob.localScale = Vector3.one;
- }
- }
- }
- }
|