106 lines
2.3 KiB
C#
Raw Normal View History

2025-06-07 17:43:34 +08:00
using System.Collections.Generic;
using UnityEngine;
namespace FairyGUI
{
/// <summary>
///
/// </summary>
public class EventContext
{
/// <summary>
///
/// </summary>
public EventDispatcher sender { get; internal set; }
/// <summary>
/// /
/// </summary>
public object initiator { get; internal set; }
/// <summary>
/// /
/// </summary>
public InputEvent inputEvent { get; internal set; }
/// <summary>
///
/// </summary>
public string type;
/// <summary>
///
/// </summary>
public object data;
internal bool _defaultPrevented;
internal bool _stopsPropagation;
internal bool _touchCapture;
internal List<EventBridge> callChain = new List<EventBridge>();
/// <summary>
///
/// </summary>
public void StopPropagation()
{
_stopsPropagation = true;
}
/// <summary>
///
/// </summary>
public void PreventDefault()
{
_defaultPrevented = true;
}
/// <summary>
///
/// </summary>
public void CaptureTouch()
{
_touchCapture = true;
}
/// <summary>
///
/// </summary>
public bool isDefaultPrevented
{
get { return _defaultPrevented; }
}
static Stack<EventContext> pool = new Stack<EventContext>();
internal static EventContext Get()
{
if (pool.Count > 0)
{
EventContext context = pool.Pop();
context._stopsPropagation = false;
context._defaultPrevented = false;
context._touchCapture = false;
return context;
}
else
return new EventContext();
}
internal static void Return(EventContext value)
{
pool.Push(value);
}
#if UNITY_2019_3_OR_NEWER
[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.SubsystemRegistration)]
static void InitializeOnLoad()
{
pool.Clear();
}
#endif
}
}