// 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();
}
}
}
}
}