Example #1
0
        public void CreateMultiple()
        {
            ECSWorld world = new ECSWorld();

            Entity[] entities = new Entity[numIterations];

            for (int i = 0; i < numIterations; i++)
            {
                entities[i] = world.Instantiate(prefab1);
            }

            for (int i = 0; i < numIterations; i++)
            {
                Assert.True(world.ComponentManager.HasComponent <TestComponent1>(entities[i]));

                var component  = world.ComponentManager.GetComponent <TestComponent1>(entities[i]);
                var component2 = world.ComponentManager.GetComponent <TestComponent2>(entities[i]);

                Assert.Same(shared, world.ComponentManager.GetSharedComponent <SharedComponent1>(entities[i]));

                Assert.Equal(1, component.i);
                Assert.Equal(2, component.d, 3);
                Assert.Equal(3, component.f, 3);

                Assert.Equal(3, component2.i);
                Assert.Equal(4, component2.d, 3);
                Assert.Equal(5, component2.f, 3);
            }
        }
Example #2
0
        public void RemoveSharedComponentFromEntity()
        {
            ECSWorld world  = new ECSWorld();
            var      buffer = new EntityCommandBuffer(world);

            SharedComponent1 shared1   = new SharedComponent1();
            EntityArchetype  archetype = EntityArchetype.Empty;

            archetype = archetype.Add <TestComponent1>();
            archetype = archetype.AddShared(shared1);

            Entity target = world.Instantiate(archetype);

            buffer.RemoveSharedComponent <SharedComponent1>(target);
            buffer.Playback();

            ComponentQuery query = new ComponentQuery();

            query.IncludeReadWrite <TestComponent1>();
            query.ExcludeShared <SharedComponent1>();

            Assert.Collection(world.ComponentManager.GetBlocks(query), accessor => {
                Assert.Equal(1, accessor.GetEntityData().Length);
            });
        }
Example #3
0
        public void SetComponentToEntity()
        {
            ECSWorld world  = new ECSWorld();
            var      buffer = new EntityCommandBuffer(world);

            SharedComponent1 shared1   = new SharedComponent1();
            EntityArchetype  archetype = EntityArchetype.Empty;

            archetype = archetype.Add <TestComponent1>();
            archetype = archetype.AddShared(shared1);

            Entity target = world.Instantiate(archetype);

            buffer.SetComponent(target, new TestComponent1 {
                i = 2, d = 3, f = 4
            });
            buffer.Playback();

            ComponentQuery query = new ComponentQuery();

            query.IncludeReadWrite <TestComponent1>();
            query.IncludeShared <SharedComponent1>();

            Assert.Collection(world.ComponentManager.GetBlocks(query), accessor => {
                Assert.Equal(1, accessor.GetEntityData().Length);

                var cData = accessor.GetComponentData <TestComponent1>();
                Assert.Equal(2, cData[0].i);
                Assert.Equal(3d, cData[0].d, 3);
                Assert.Equal(4f, cData[0].f, 3);
            });
        }
Example #4
0
        public void CreateWithComponent()
        {
            ECSWorld world = new ECSWorld();

            Entity instantiated = world.Instantiate(prefab2);

            Assert.True(world.ComponentManager.HasComponent <TestComponentVector3>(instantiated));

            TestComponentVector3 component = world.ComponentManager.GetComponent <TestComponentVector3>(instantiated);

            Assert.Equal(component.value, Vector3.One);
        }