namespace Blue { public static class ICanTriggerEventExtension { private static ITypeEventSystem _eventSystem; public static void SetEventSystem(ITypeEventSystem eventSystem) { _eventSystem = eventSystem; } public static void TriggerEvent(this ICanTriggerEvent self) where T:IEvent,new() { _eventSystem.TriggerEvent(); } public static void TriggerEvent(this ICanTriggerEvent self,T e) where T : IEvent { _eventSystem.TriggerEvent(e); } public static void TriggerChainEvent(this ICanTriggerEvent self,params IEvent[] events) where T : IChainEvent { _eventSystem.TriggerChainEvent(events); } public static void TriggerChainEvent(this ICanTriggerEvent self) where T : IChainEvent { _eventSystem.TriggerChainEvent(); } } }