using UnityEngine; using UnityEngine.Events; namespace BITKit { public class SelectableEvent : MonoBehaviour, ISelectableComponent { [Header(nameof(SelectionState.None))] [SerializeField] UnityEvent OnNone; [Header(nameof(SelectionState.Hover))] [SerializeField] UnityEvent OnHover; [Header(nameof(SelectionState.Active))] [SerializeField] UnityEvent OnActive; [Header(nameof(SelectionState.Inactive))] [SerializeField] UnityEvent OnInactive; [Header(nameof(SelectionState.Focus))] [SerializeField] UnityEvent OnFocus; [Header(nameof(SelectionState.Selected))] [SerializeField] UnityEvent OnSelected; [Header(nameof(SelectionState.Enabled))] [SerializeField] UnityEvent OnEnabled; [Header(nameof(SelectionState.Checked))] [SerializeField] UnityEvent OnChecked; [Header(nameof(SelectionState.Root))] [SerializeField] UnityEvent OnRoot; public void SetSelectionState(SelectionState state) { switch (state) { case SelectionState.None: OnNone.Invoke(); break; case SelectionState.Hover: OnHover.Invoke(); break; case SelectionState.Active: OnActive.Invoke(); break; case SelectionState.Inactive: OnInactive.Invoke(); break; case SelectionState.Focus: OnFocus.Invoke(); break; case SelectionState.Selected: OnSelected.Invoke(); break; case SelectionState.Enabled: OnEnabled.Invoke(); break; case SelectionState.Checked: OnChecked.Invoke(); break; case SelectionState.Root: OnRoot.Invoke(); break; } } } }