Exemplo n.º 1
0
        public void IJobChunkProcessEntityOffset()
        {
            var archetype = m_Manager.CreateArchetype(typeof(EcsTestData), typeof(EcsTestData2), typeof(SharedData1));
            var group     = m_Manager.CreateEntityQuery(typeof(EcsTestData), typeof(EcsTestData2), typeof(SharedData1));

            var entity1 = m_Manager.CreateEntity(archetype);
            var entity2 = m_Manager.CreateEntity(archetype);

            m_Manager.SetSharedComponentData <SharedData1>(entity1, new SharedData1 {
                value = 10
            });
            m_Manager.SetComponentData <EcsTestData>(entity1, new EcsTestData {
                value = 10
            });

            m_Manager.SetSharedComponentData <SharedData1>(entity2, new SharedData1 {
                value = 20
            });
            m_Manager.SetComponentData <EcsTestData>(entity2, new EcsTestData {
                value = 20
            });

            group.SetSharedComponentFilter(new SharedData1 {
                value = 10
            });

            var job = new ProcessEntityOffset
            {
                ecsTestType = m_Manager.GetArchetypeChunkComponentType <EcsTestData>(false)
            };

            job.Schedule(group).Complete();

            group.SetSharedComponentFilter(new SharedData1 {
                value = 20
            });
            job.Schedule(group).Complete();

            Assert.AreEqual(0, m_Manager.GetComponentData <EcsTestData>(entity1).value);
            Assert.AreEqual(0, m_Manager.GetComponentData <EcsTestData>(entity2).value);

            group.Dispose();
        }
Exemplo n.º 2
0
        public void IJobChunkProcessChunkMultiArchetype()
        {
            var archetypeA = m_Manager.CreateArchetype(typeof(EcsTestData));
            var archetypeB = m_Manager.CreateArchetype(typeof(EcsTestData), typeof(EcsTestData2));
            var archetypeC = m_Manager.CreateArchetype(typeof(EcsTestData), typeof(EcsTestData2), typeof(EcsTestData3));

            var entity1A = m_Manager.CreateEntity(archetypeA);
            var entity2A = m_Manager.CreateEntity(archetypeA);

            var entityB = m_Manager.CreateEntity(archetypeB);

            var entityC = m_Manager.CreateEntity(archetypeC);

            var group = m_Manager.CreateEntityQuery(typeof(EcsTestData));

            m_Manager.SetComponentData <EcsTestData>(entity1A, new EcsTestData {
                value = -1
            });
            m_Manager.SetComponentData <EcsTestData>(entity2A, new EcsTestData {
                value = -1
            });
            m_Manager.SetComponentData <EcsTestData>(entityB, new EcsTestData {
                value = -1
            });
            m_Manager.SetComponentData <EcsTestData>(entityC, new EcsTestData {
                value = -1
            });

            var job = new ProcessEntityOffset
            {
                ecsTestType = m_Manager.GetArchetypeChunkComponentType <EcsTestData>(false)
            };

            job.Schedule(group).Complete();

            Assert.AreEqual(0, m_Manager.GetComponentData <EcsTestData>(entity1A).value);
            Assert.AreEqual(2, m_Manager.GetComponentData <EcsTestData>(entityB).value);
            Assert.AreEqual(3, m_Manager.GetComponentData <EcsTestData>(entityC).value);

            group.Dispose();
        }