コード例 #1
0
        public void Remove()
        {
            ME.ECS.Pools.current = new ME.ECS.PoolImplementation(isNull: false);
            var st = new ME.ECS.FiltersArchetype.FiltersArchetypeStorage();

            st.Initialize(100);

            var entity = st.Alloc();

            st.Dealloc(entity);
            st.ApplyDead();
            st.IncrementGeneration(entity);

            NUnit.Framework.Assert.IsTrue(st.IsAlive(entity.id, entity.generation) == false);

            NUnit.Framework.Assert.AreEqual(st.AliveCount, 0);
            NUnit.Framework.Assert.AreEqual(st.DeadCount, 1);

            {
                var entity2 = st.Alloc();
                NUnit.Framework.Assert.AreEqual(entity2.id, 0);
                NUnit.Framework.Assert.AreEqual(entity2.generation, 2);

                NUnit.Framework.Assert.AreEqual(st.AliveCount, 1);
                NUnit.Framework.Assert.AreEqual(st.DeadCount, 0);
            }

            st.Recycle();
        }
コード例 #2
0
        public void AddRemoveMulti()
        {
            ME.ECS.Pools.current = new ME.ECS.PoolImplementation(isNull: false);
            var st = new ME.ECS.FiltersArchetype.FiltersArchetypeStorage();

            st.Initialize(20);

            var list = new System.Collections.Generic.List <Entity>();
            var v    = 1;

            for (int j = 0; j < 10; ++j)
            {
                list.Clear();
                for (int i = 0; i < 10000; ++i)
                {
                    var entity = st.Alloc();
                    list.Add(entity);
                    //NUnit.Framework.Assert.AreEqual(entity.id, i);
                    NUnit.Framework.Assert.AreEqual(entity.generation, v);

                    //NUnit.Framework.Assert.AreEqual(st.AliveCount, i + 1);

                    NUnit.Framework.Assert.IsTrue(st.IsAlive(entity.id, entity.generation));
                }

                for (int i = 0; i < list.Count; ++i)
                {
                    st.Dealloc(list[i]);
                    st.IncrementGeneration(list[i]);
                }

                for (int i = 0; i < 10000; ++i)
                {
                    var entity = st.Alloc();
                    list.Add(entity);
                    //NUnit.Framework.Assert.AreEqual(entity.id, i);
                    NUnit.Framework.Assert.AreEqual(entity.generation, v);

                    //NUnit.Framework.Assert.AreEqual(st.AliveCount, i + 1);

                    NUnit.Framework.Assert.IsTrue(st.IsAlive(entity.id, entity.generation));
                }

                for (int i = 0; i < list.Count; ++i)
                {
                    st.Dealloc(list[i]);
                    st.IncrementGeneration(list[i]);
                }

                st.ApplyDead();
                v += 1;
            }

            //UnityEngine.Debug.Log("Stats: " + st.AliveCount + " :: " + st.DeadCount);

            st.Recycle();
        }
コード例 #3
0
        public void Add()
        {
            ME.ECS.Pools.current = new ME.ECS.PoolImplementation(isNull: false);
            var st = new ME.ECS.FiltersArchetype.FiltersArchetypeStorage();

            st.Initialize(100);

            var entity = st.Alloc();

            NUnit.Framework.Assert.AreEqual(entity.id, 0);
            NUnit.Framework.Assert.AreEqual(entity.generation, 1);

            NUnit.Framework.Assert.AreEqual(st.AliveCount, 1);
            NUnit.Framework.Assert.AreEqual(st.DeadCount, 0);
        }
コード例 #4
0
 public static void Release(ref ME.ECS.FiltersArchetype.FiltersArchetypeStorage storage)
 {
     storage.Recycle();
 }