|
|
|
using System;
|
|
|
|
using static flecs_hub.flecs;
|
|
|
|
|
|
|
|
namespace gaemstone.ECS;
|
|
|
|
|
|
|
|
public enum ObserverEvent
|
|
|
|
{
|
|
|
|
OnAdd = ECS_HI_COMPONENT_ID + 33,
|
|
|
|
OnRemove = ECS_HI_COMPONENT_ID + 34,
|
|
|
|
OnSet = ECS_HI_COMPONENT_ID + 35,
|
|
|
|
UnSet = ECS_HI_COMPONENT_ID + 36,
|
|
|
|
OnDelete = ECS_HI_COMPONENT_ID + 37,
|
|
|
|
OnCreateTable = ECS_HI_COMPONENT_ID + 38,
|
|
|
|
OnDeleteTable = ECS_HI_COMPONENT_ID + 39,
|
|
|
|
OnTableEmpty = ECS_HI_COMPONENT_ID + 40,
|
|
|
|
OnTableFill = ECS_HI_COMPONENT_ID + 41,
|
|
|
|
OnCreateTrigger = ECS_HI_COMPONENT_ID + 42,
|
|
|
|
OnDeleteTrigger = ECS_HI_COMPONENT_ID + 43,
|
|
|
|
OnDeleteObservable = ECS_HI_COMPONENT_ID + 44,
|
|
|
|
OnComponentHooks = ECS_HI_COMPONENT_ID + 45,
|
|
|
|
OnDeleteTarget = ECS_HI_COMPONENT_ID + 46,
|
|
|
|
}
|
|
|
|
|
|
|
|
[AttributeUsage(AttributeTargets.Method)]
|
|
|
|
public class ObserverAttribute : Attribute
|
|
|
|
{
|
|
|
|
public ObserverEvent Event { get; }
|
|
|
|
public string? Expression { get; }
|
|
|
|
|
|
|
|
public ObserverAttribute(ObserverEvent @event)
|
|
|
|
=> Event = @event;
|
|
|
|
}
|