using System; using UnityEngine; using UnityEngine.Events; namespace BITKit { public class SelectableEvent : MonoBehaviour { [Header(nameof(SelectionState.None))] [SerializeField] private UnityEvent OnNone; [Header(nameof(SelectionState.Hover))] [SerializeField]private UnityEvent OnHover; [Header(nameof(SelectionState.Active))] [SerializeField]private UnityEvent OnActive; [Header(nameof(SelectionState.Inactive))] [SerializeField]private UnityEvent OnInactive; [Header(nameof(SelectionState.Focus))] [SerializeField]private UnityEvent OnFocus; [Header(nameof(SelectionState.Selected))] [SerializeField]private UnityEvent OnSelected; [Header(nameof(SelectionState.Enabled))] [SerializeField]private UnityEvent OnEnabled; [Header(nameof(SelectionState.Checked))] [SerializeField]private UnityEvent OnChecked; [Header(nameof(SelectionState.Root))] [SerializeField]private UnityEvent OnRoot; private void Start() { var selectable = GetComponent(); if (selectable == null) { Debug.LogError($"No {nameof(ISelectable)} component found on {gameObject.name}"); return; } selectable.OnNone += OnNone.Invoke; selectable.OnHover += OnHover.Invoke; selectable.OnActive += OnActive.Invoke; selectable.OnInactive += OnInactive.Invoke; selectable.OnFocus += OnFocus.Invoke; selectable.OnSelected += OnSelected.Invoke; selectable.OnEnabled += OnEnabled.Invoke; selectable.OnChecked += OnChecked.Invoke; selectable.OnRoot += OnRoot.Invoke; } } }