void OnEvent(Events identifier, IEntity entity)
        {
            if (!Entities.Contains(entity))
                return;

            var relay = entity.GetComponent<EventRelayComponent>();

            for (int i = 0; i < relay.Events.Length; i++)
            {
                var relayEvent = relay.Events[i];

                if (relayEvent.Event == identifier)
                    EventManager.Trigger(identifier, relayEvent.Relay.Entity);
            }
        }
        void OnEvent(Events identifier, IEntity entity)
        {
            if (!Entities.Contains(entity))
                return;

            var state = entity.GetComponent<StateComponent>();
            var switchState = entity.GetComponent<SwitchStateOnEventComponent>();

            for (int i = 0; i < switchState.Events.Length; i++)
            {
                var switchEvent = switchState.Events[i];

                if (switchEvent.Event == identifier)
                    EventManager.Trigger(StateMachineEvents.OnStateSwitch, state.StateMachine, switchEvent.State);
            }
        }
        void OnEvent(Events identifier, IEntity entity)
        {
            if (!Entities.Contains(entity))
                return;

            var recycle = entity.GetComponent<RecycleOnEventComponent>();

            for (int i = 0; i < recycle.Events.Length; i++)
            {
                var recycleEvent = recycle.Events[i];

                if (recycleEvent.Event == identifier)
                {
                    EntityManager.RecycleEntity(recycleEvent.Recycle);
                    break;
                }
            }
        }