예제 #1
0
        public void RemoveEntity()
        {
            var                component1Type = ComponentType.Create <Component1>();
            var                component2Type = ComponentType.Create <Component2>();
            EntityTypeChunk    chunk          = new EntityTypeChunk(null, EntityTypes.Type1);
            ArrayList <Entity> entities       = new ArrayList <Entity>(5);
            ArrayList <int>    values         = new ArrayList <int>(5);

            for (int k = 0; k < 5; k++)
            {
                entities.Add(chunk.AddEntity(new Entity(), null));
                var component1Data = Data <Component1>(chunk.ComponentDatas[component1Type.TypeIndex]);
                var component2Data = Data <Component2>(chunk.ComponentDatas[component2Type.TypeIndex]);
                component1Data[k]       = new Component1();
                component1Data[k].Value = k;
                component2Data[k].Value = k;
                values.Add(k);
            }
            chunk.RemoveEntity(entities[0], null);
            entities.UnorderedRemoveAt(0);
            values.UnorderedRemoveAt(0);
            Assert.AreEqual(4, chunk.EntityCount);
            for (int k = 0; k < chunk.EntityCount; k++)
            {
                Assert.AreEqual(entities[k], chunk.EntityData[k]);
                Assert.AreEqual(k, entities[k].IndexInChunk);
                ref var component1 = ref Data <Component1>(chunk.ComponentDatas[component1Type.TypeIndex])[k];
                Assert.AreEqual(values[k], component1.Value);
                ref var component2 = ref Data <Component2>(chunk.ComponentDatas[component2Type.TypeIndex])[k];
예제 #2
0
        public void CreateEntity()
        {
            EntityTypeChunk chunk = new EntityTypeChunk(null, EntityTypes.Type1);

            for (int k = 0; k < 10; k++)
            {
                var entity = chunk.AddEntity(new Entity(), null);
                Assert.AreEqual(k, entity.IndexInChunk);
                Assert.AreEqual(entity, chunk.EntityData[k]);
                Assert.AreEqual(k + 1, chunk.EntityCount);
                Assert.AreEqual(chunk.EntityCount, chunk.EntityData.Count);
                for (int i = 0; i < EntityTypes.Type1.ComponentTypes.Length; i++)
                {
                    Assert.AreEqual(chunk.EntityCount, chunk.ComponentDatas[EntityTypes.Type1.ComponentTypes[i].TypeIndex].Count);
                }
            }
        }