AlicizaX/Client/Packages/com.alicizax.unity/Runtime/Event/EventRuntimeHandle.cs

37 lines
1.1 KiB
C#
Raw Normal View History

2025-09-02 16:30:55 +08:00
using System;
using System.Runtime.CompilerServices;
2025-03-04 18:40:14 +08:00
using Unity.IL2CPP.CompilerServices;
2025-09-02 16:30:55 +08:00
namespace AlicizaX
2025-03-04 18:40:14 +08:00
{
2025-09-02 16:30:55 +08:00
public interface IEventArgs { }
[AttributeUsage(AttributeTargets.Struct)]
public sealed class PrewarmAttribute : Attribute
{
public int Capacity { get; }
public PrewarmAttribute(int capacity) => Capacity = capacity;
}
2025-03-04 18:40:14 +08:00
[Il2CppSetOption(Option.NullChecks, false)]
[Il2CppSetOption(Option.DivideByZeroChecks, false)]
[Il2CppSetOption(Option.ArrayBoundsChecks, false)]
public readonly struct EventRuntimeHandle
{
2025-09-02 16:30:55 +08:00
private readonly Action<int,int> _unsubscribe;
2025-03-04 18:40:14 +08:00
private readonly int _index;
private readonly int _version;
[MethodImpl(MethodImplOptions.AggressiveInlining)]
2025-09-02 16:30:55 +08:00
public EventRuntimeHandle(Action<int,int> unsubscribe, int index, int version)
2025-03-04 18:40:14 +08:00
{
_unsubscribe = unsubscribe;
_index = index;
_version = version;
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
2025-09-02 16:30:55 +08:00
public void Dispose() => _unsubscribe?.Invoke(_index, _version);
2025-03-04 18:40:14 +08:00
}
}