BITFALL/Assets/BITKit/Unity/Scripts/Selection/SelectableEvent.cs

46 lines
1.8 KiB
C#
Raw Normal View History

2023-10-20 19:31:12 +08:00
using System;
2023-06-08 14:09:50 +08:00
using UnityEngine;
using UnityEngine.Events;
namespace BITKit
{
2023-10-20 19:31:12 +08:00
public class SelectableEvent : MonoBehaviour
2023-06-08 14:09:50 +08:00
{
[Header(nameof(SelectionState.None))]
2023-10-20 19:31:12 +08:00
[SerializeField] private UnityEvent OnNone;
2023-06-08 14:09:50 +08:00
[Header(nameof(SelectionState.Hover))]
2023-10-20 19:31:12 +08:00
[SerializeField]private UnityEvent OnHover;
2023-06-08 14:09:50 +08:00
[Header(nameof(SelectionState.Active))]
2023-10-20 19:31:12 +08:00
[SerializeField]private UnityEvent OnActive;
2023-06-08 14:09:50 +08:00
[Header(nameof(SelectionState.Inactive))]
2023-10-20 19:31:12 +08:00
[SerializeField]private UnityEvent OnInactive;
2023-06-08 14:09:50 +08:00
[Header(nameof(SelectionState.Focus))]
2023-10-20 19:31:12 +08:00
[SerializeField]private UnityEvent OnFocus;
2023-06-08 14:09:50 +08:00
[Header(nameof(SelectionState.Selected))]
2023-10-20 19:31:12 +08:00
[SerializeField]private UnityEvent OnSelected;
2023-06-08 14:09:50 +08:00
[Header(nameof(SelectionState.Enabled))]
2023-10-20 19:31:12 +08:00
[SerializeField]private UnityEvent OnEnabled;
2023-06-08 14:09:50 +08:00
[Header(nameof(SelectionState.Checked))]
2023-10-20 19:31:12 +08:00
[SerializeField]private UnityEvent OnChecked;
2023-06-08 14:09:50 +08:00
[Header(nameof(SelectionState.Root))]
2023-10-20 19:31:12 +08:00
[SerializeField]private UnityEvent OnRoot;
private void Start()
2023-06-08 14:09:50 +08:00
{
2023-10-20 19:31:12 +08:00
var selectable = GetComponent<ISelectable>();
if (selectable == null)
2023-06-08 14:09:50 +08:00
{
2023-10-20 19:31:12 +08:00
Debug.LogError($"No {nameof(ISelectable)} component found on {gameObject.name}");
return;
2023-06-08 14:09:50 +08:00
}
2023-10-20 19:31:12 +08:00
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;
2023-06-08 14:09:50 +08:00
}
}
}