summaryrefslogtreecommitdiff
path: root/Assets/Samples/XR Interaction Toolkit/3.1.2/Hands Interaction Demo/HandsDemoSceneAssets/Scripts/ToggleGraphicToggler.cs
blob: 3fb0acc6c8a72612ed09ad1301170eca11cb85dd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
using UnityEngine.UI;

namespace UnityEngine.XR.Interaction.Toolkit.Samples.Hands
{
    /// <summary>
    /// Toggles between two graphic objects based on the state of a toggle.
    /// </summary>
    [RequireComponent(typeof(Toggle))]
    public class ToggleGraphicToggler : MonoBehaviour
    {
        [SerializeField]
        [Tooltip("Graphic object representing the toggle on position.")]
        Graphic m_ToggleOnGraphic;

        [SerializeField]
        [Tooltip("Graphic object representing the toggle off position.")]
        Graphic m_ToggleOffGraphic;

        Toggle m_TargetToggle;

        /// <summary>
        /// See <see cref="MonoBehaviour"/>.
        /// </summary>
        void Awake()
        {
            m_TargetToggle = GetComponent<Toggle>();
        }

        /// <summary>
        /// See <see cref="MonoBehaviour"/>.
        /// </summary>
        void OnEnable()
        {
            m_TargetToggle.onValueChanged.AddListener(OnToggleValueChanged);
        }

        /// <summary>
        /// See <see cref="MonoBehaviour"/>.
        /// </summary>
        void OnDisable()
        {
            m_TargetToggle.onValueChanged.RemoveListener(OnToggleValueChanged);
        }

        void OnToggleValueChanged(bool isOn)
        {
            if (isOn)
                m_TargetToggle.targetGraphic = m_ToggleOnGraphic;
            else
                m_TargetToggle.targetGraphic = m_ToggleOffGraphic;

            m_ToggleOnGraphic.gameObject.SetActive(isOn);
        }
    }
}