public void IJobChunk_Run_WorksWithMultipleChunks() { var archetype = m_Manager.CreateArchetype(typeof(EcsTestData), typeof(EcsTestData2), typeof(EcsTestSharedComp)); var group = m_Manager.CreateEntityQuery(new EntityQueryDesc { Any = Array.Empty <ComponentType>(), None = Array.Empty <ComponentType>(), All = new ComponentType[] { typeof(EcsTestData), typeof(EcsTestData2) } }); const int entityCount = 10; var entities = new NativeArray <Entity>(entityCount, Allocator.Temp); m_Manager.CreateEntity(archetype, entities); for (int i = 0; i < entityCount; ++i) { m_Manager.SetSharedComponentData(entities[i], new EcsTestSharedComp(i)); } var job = new ProcessChunks { ecsTestType = m_Manager.GetArchetypeChunkComponentType <EcsTestData>(false) }; job.Run(group); for (int i = 0; i < entityCount; ++i) { Assert.AreEqual(5, m_Manager.GetComponentData <EcsTestData>(entities[i]).value); } entities.Dispose(); }
public void IJobChunkProcess() { var archetype = m_Manager.CreateArchetype(typeof(EcsTestData), typeof(EcsTestData2)); var group = m_Manager.CreateEntityQuery(new EntityQueryDesc { Any = Array.Empty <ComponentType>(), None = Array.Empty <ComponentType>(), All = new ComponentType[] { typeof(EcsTestData), typeof(EcsTestData2) } }); var entity = m_Manager.CreateEntity(archetype); var job = new ProcessChunks { ecsTestType = m_Manager.GetArchetypeChunkComponentType <EcsTestData>(false) }; job.Run(group); Assert.AreEqual(5, m_Manager.GetComponentData <EcsTestData>(entity).value); }
public void IJobChunkProcessFiltered() { 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 = 20 }); var job = new ProcessChunks { ecsTestType = m_Manager.GetArchetypeChunkComponentType <EcsTestData>(false) }; job.Schedule(group).Complete(); Assert.AreEqual(10, m_Manager.GetComponentData <EcsTestData>(entity1).value); Assert.AreEqual(5, m_Manager.GetComponentData <EcsTestData>(entity2).value); group.Dispose(); }