// Copyright (c) Microsoft Corporation. // Licensed under the MIT License. using Microsoft.MixedReality.Toolkit.Input; using Microsoft.MixedReality.Toolkit.Utilities.Editor; using UnityEngine.Events; namespace Microsoft.MixedReality.Toolkit.UI { /// /// An event receiver that listens to toggle events /// public class InteractableOnToggleReceiver : ReceiverBase { /// /// Invoked when toggle is deselected /// [InspectorField(Type = InspectorField.FieldTypes.Event, Label = "On Deselect", Tooltip = "The toggle is deselected")] public UnityEvent OnDeselect = new UnityEvent(); /// /// Invoked when toggle is checked /// public UnityEvent OnSelect => uEvent; /// /// Creates a receiver that raises events for toggle button states /// public InteractableOnToggleReceiver(UnityEvent ev) : base(ev, "OnSelect") { } /// /// Creates a receiver that raises events for toggle button states /// public InteractableOnToggleReceiver() : this(new UnityEvent()) { } /// public override void OnUpdate(InteractableStates state, Interactable source) { // using onClick } /// public override void OnClick(InteractableStates state, Interactable source, IMixedRealityPointer pointer = null) { if (source.ButtonMode == SelectionModes.Toggle) { if (source.IsToggled) { OnSelect.Invoke(); } else { OnDeselect.Invoke(); } } } } }