Beispiel #1
0
        public void CreatesInstanceForEverySystemInConstructor()
        {
            var systems = new ISystem[]{new TwoComponentSystem(), new OneComponentSystem()};
            var manager = new RuntimeSystemManager(systems, Mock.Of<ILogger>());

            manager.Systems.Count.ShouldBe(2);
            manager.Systems.ShouldAllBe(p => systems.Contains(p.System));
        }
Beispiel #2
0
        public void RemovesEntityFromSystem()
        {
            var oneComponentSystem = new OneComponentSystem();

            var manager = new RuntimeSystemManager(new ISystem[] {oneComponentSystem}, Mock.Of<ILogger>());

            var oneComponentEntity = new EngineEntity(0, new IComponent[] {new SimpleComponent()},
                Mock.Of<IEventDispatcher>());

            manager.AddEntities(new[] {oneComponentEntity});
            manager.RemoveEntities(new[] {oneComponentEntity});

            manager.Systems.Single().Entities.ShouldNotContain(oneComponentEntity);
        }
Beispiel #3
0
        public void CorrectlyFilterEntitiesIntoSystemInstances()
        {
            var oneComponentSystem = new OneComponentSystem();
            var twoComponentSystem = new TwoComponentSystem();

            var manager = new RuntimeSystemManager(new ISystem[] {oneComponentSystem, twoComponentSystem}, Mock.Of<ILogger>());

            var oneComponentEntity = new EngineEntity(0, new IComponent[] {new SimpleComponent()},
                Mock.Of<IEventDispatcher>());

            var twoComponentEntity = new EngineEntity(0,
                new IComponent[] {new SimpleComponent(), new OtherSimpleComponent(),},
                Mock.Of<IEventDispatcher>());

            manager.AddEntities(new[] {oneComponentEntity, twoComponentEntity});

            manager.Systems.Single(p => p.System == oneComponentSystem).Entities.ShouldContain(oneComponentEntity);
            manager.Systems.Single(p => p.System == oneComponentSystem).Entities.ShouldContain(twoComponentEntity);

            manager.Systems.Single(p => p.System == twoComponentSystem).Entities.ShouldContain(twoComponentEntity);
            manager.Systems.Single(p => p.System == twoComponentSystem).Entities.ShouldNotContain(oneComponentEntity);
        }