57 lines
1.6 KiB
C#
57 lines
1.6 KiB
C#
// (c) Copyright HutongGames, LLC 2010-2018. All rights reserved.
|
|
|
|
using UnityEngine.EventSystems;
|
|
|
|
#if UNITY_5_6_OR_NEWER
|
|
namespace HutongGames.PlayMaker.Actions
|
|
{
|
|
// Base action for EventTrigger actions
|
|
// Handles boilerplate setup etc.
|
|
public abstract class EventTriggerActionBase : ComponentAction<EventTrigger>
|
|
{
|
|
[DisplayOrder(0)]
|
|
[RequiredField]
|
|
[Tooltip("The GameObject with the UI component.")]
|
|
public FsmOwnerDefault gameObject;
|
|
|
|
[DisplayOrder(1)]
|
|
[Tooltip("Where to send the event.")]
|
|
public FsmEventTarget eventTarget;
|
|
|
|
protected EventTrigger trigger;
|
|
protected EventTrigger.Entry entry;
|
|
|
|
public override void Reset()
|
|
{
|
|
gameObject = null;
|
|
eventTarget = FsmEventTarget.Self;
|
|
}
|
|
|
|
protected void Init(EventTriggerType eventTriggerType, UnityEngine.Events.UnityAction<BaseEventData> call)
|
|
{
|
|
var go = Fsm.GetOwnerDefaultTarget(gameObject);
|
|
if (UpdateCacheAddComponent(go))
|
|
{
|
|
trigger = cachedComponent;
|
|
|
|
if (entry == null)
|
|
{
|
|
entry = new EventTrigger.Entry ();
|
|
}
|
|
|
|
entry.eventID = eventTriggerType;
|
|
entry.callback.AddListener(call);
|
|
|
|
trigger.triggers.Add(entry);
|
|
}
|
|
}
|
|
|
|
public override void OnExit()
|
|
{
|
|
entry.callback.RemoveAllListeners ();
|
|
trigger.triggers.Remove (entry);
|
|
}
|
|
}
|
|
}
|
|
|
|
#endif |