51 lines
1.3 KiB
C#
51 lines
1.3 KiB
C#
|
using UnityEngine;
|
|||
|
using UnityEngine.Events;
|
|||
|
|
|||
|
namespace Lean.Common
|
|||
|
{
|
|||
|
/// <summary>This component allows you to detect when any selectable object in the scene has been selected.</summary>
|
|||
|
[HelpURL(LeanHelper.PlusHelpUrlPrefix + "LeanSelected")]
|
|||
|
[AddComponentMenu(LeanHelper.ComponentPathPrefix + "Selected")]
|
|||
|
public class LeanSelected : MonoBehaviour
|
|||
|
{
|
|||
|
[System.Serializable] public class LeanSelectableEvent : UnityEvent<LeanSelectable> {}
|
|||
|
|
|||
|
public LeanSelectableEvent OnSelectable { get { if (onSelectable == null) onSelectable = new LeanSelectableEvent(); return onSelectable; } } [SerializeField] private LeanSelectableEvent onSelectable;
|
|||
|
|
|||
|
protected virtual void OnEnable()
|
|||
|
{
|
|||
|
LeanSelect.OnAnySelected += HandleSelectGlobal;
|
|||
|
}
|
|||
|
protected virtual void OnDisable()
|
|||
|
{
|
|||
|
LeanSelect.OnAnySelected -= HandleSelectGlobal;
|
|||
|
}
|
|||
|
|
|||
|
private void HandleSelectGlobal(LeanSelect select, LeanSelectable selectable)
|
|||
|
{
|
|||
|
if (onSelectable != null)
|
|||
|
{
|
|||
|
onSelectable.Invoke(selectable);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
#if UNITY_EDITOR
|
|||
|
namespace Lean.Common.Editor
|
|||
|
{
|
|||
|
using TARGET = LeanSelected;
|
|||
|
|
|||
|
[UnityEditor.CanEditMultipleObjects]
|
|||
|
[UnityEditor.CustomEditor(typeof(TARGET), true)]
|
|||
|
public class LeanSelected_Editor : LeanEditor
|
|||
|
{
|
|||
|
protected override void OnInspector()
|
|||
|
{
|
|||
|
TARGET tgt; TARGET[] tgts; GetTargets(out tgt, out tgts);
|
|||
|
|
|||
|
Draw("onSelectable");
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
#endif
|