public void AddAndUpdateEntity() { GameSnapshot snapshot = (GameSnapshot)LevelManager.CreateSnapshot(); ITemplateGroup templates = LevelManager.CreateTemplateGroup(); snapshot.Systems.Add(new SystemEventLogger(new Type[] { })); IEntity entity = snapshot.CreateEntity(GameSnapshot.EntityAddTarget.Added); IGameEngine engine = GameEngineFactory.CreateEngine(snapshot, templates).Value; engine.Update().Wait(); engine.SynchronizeState().Wait(); List <TriggerEvent> events = new List <TriggerEvent>(); events.Add(TriggerEvent.OnAdded); events.Add(TriggerEvent.OnGlobalPreUpdate); events.Add(TriggerEvent.OnUpdate); events.Add(TriggerEvent.OnGlobalPostUpdate); Assert.Equal(events, engine.GetSystem <SystemEventLogger>().Events); for (int i = 0; i < 20; ++i) { engine.Update().Wait(); engine.SynchronizeState().Wait(); events.Add(TriggerEvent.OnGlobalPreUpdate); events.Add(TriggerEvent.OnUpdate); events.Add(TriggerEvent.OnGlobalPostUpdate); Assert.Equal(events, engine.GetSystem <SystemEventLogger>().Events); } }
public void CorrectUpdateCount() { GameSnapshot snapshot = (GameSnapshot)LevelManager.CreateSnapshot(); ITemplateGroup templates = LevelManager.CreateTemplateGroup(); for (int i = 0; i < 10; ++i) { IEntity entity = snapshot.CreateEntity(GameSnapshot.EntityAddTarget.Active); entity.AddData <DataEmpty>(); } snapshot.Systems.Add(new SystemCounter() { Filter = new[] { typeof(DataEmpty) } }); IGameEngine engine = GameEngineFactory.CreateEngine(snapshot, templates).Value; engine.Update().Wait(); engine.SynchronizeState().Wait(); Assert.Equal(snapshot.ActiveEntities.Count(), engine.GetSystem <SystemCounter>().UpdateCount); }
public void RemoveEntityAndModifyInRemoveNotification() { GameSnapshot snapshot = (GameSnapshot)LevelManager.CreateSnapshot(); ITemplateGroup templates = LevelManager.CreateTemplateGroup(); snapshot.Systems.Add(new SystemEventLogger(new Type[] { })); snapshot.Systems.Add(new ModifyOnRemovedTrigger()); { IEntity e = snapshot.CreateEntity(GameSnapshot.EntityAddTarget.Removed); e.AddData <DataEmpty>(); } IGameEngine engine = GameEngineFactory.CreateEngine(snapshot, templates).Value; engine.Update().Wait(); engine.SynchronizeState().Wait(); List <TriggerEvent> events = new List <TriggerEvent>(); events.Add( TriggerEvent.OnRemoved, TriggerEvent.OnGlobalPreUpdate, TriggerEvent.OnGlobalPostUpdate); Assert.Equal(events, engine.GetSystem <SystemEventLogger>().Events); for (int i = 0; i < 20; ++i) { engine.Update().Wait(); engine.SynchronizeState().Wait(); events.Add( TriggerEvent.OnGlobalPreUpdate, TriggerEvent.OnGlobalPostUpdate); Assert.Equal(events, engine.GetSystem <SystemEventLogger>().Events); } }