public SystemExecutor(IPoolManager poolManager, IEventSystem eventSystem, IReactToEntitySystemHandler reactToEntitySystemHandler, IReactToGroupSystemHandler reactToGroupSystemHandler, ISetupSystemHandler setupSystemHandler, IReactToDataSystemHandler reactToDataSystemHandler, IManualSystemHandler manualSystemHandler) { PoolManager = poolManager; EventSystem = eventSystem; ReactToEntitySystemHandler = reactToEntitySystemHandler; ReactToGroupSystemHandler = reactToGroupSystemHandler; SetupSystemHandler = setupSystemHandler; ReactToDataSystemHandler = reactToDataSystemHandler; ManualSystemHandler = manualSystemHandler; var addEntitySubscription = EventSystem.Receive <EntityAddedEvent>().Subscribe(OnEntityAddedToPool); var removeEntitySubscription = EventSystem.Receive <EntityRemovedEvent>().Subscribe(OnEntityRemovedFromPool); var addComponentSubscription = EventSystem.Receive <ComponentAddedEvent>().Subscribe(OnEntityComponentAdded); var removeComponentSubscription = EventSystem.Receive <ComponentRemovedEvent>().Subscribe(OnEntityComponentRemoved); _systems = new List <ISystem>(); _systemSubscriptions = new Dictionary <ISystem, IList <SubscriptionToken> >(); _eventSubscriptions = new List <IDisposable> { addEntitySubscription, removeEntitySubscription, addComponentSubscription, removeComponentSubscription }; }
public SystemExecutor(IPoolManager poolManager, IMessageBroker messageBroker, IReactToEntitySystemHandler reactToEntitySystemHandler, IReactToGroupSystemHandler reactToGroupSystemHandler, ISetupSystemHandler setupSystemHandler, IReactToDataSystemHandler reactToDataSystemHandler) { PoolManager = poolManager; MessageBroker = messageBroker; ReactToEntitySystemHandler = reactToEntitySystemHandler; ReactToGroupSystemHandler = reactToGroupSystemHandler; SetupSystemHandler = setupSystemHandler; ReactToDataSystemHandler = reactToDataSystemHandler; MessageBroker.Receive <EntityAddedEvent>().Subscribe(OnEntityAddedToPool); MessageBroker.Receive <EntityRemovedEvent>().Subscribe(OnEntityRemovedFromPool); MessageBroker.Receive <ComponentAddedEvent>().Subscribe(OnEntityComponentAdded); MessageBroker.Receive <ComponentRemovedEvent>().Subscribe(OnEntityComponentRemoved); _systems = new List <ISystem>(); _systemSubscriptions = new Dictionary <ISystem, IList <SubscriptionToken> >(); }