public void IJobEntityBatchRun() { var archetype = m_Manager.CreateArchetype(typeof(EcsTestData)); using (var query = m_Manager.CreateEntityQuery(typeof(EcsTestData))) { var entityCount = 100; m_Manager.CreateEntity(archetype, entityCount); var job = new WriteBatchIndex { EcsTestTypeHandle = m_Manager.GetComponentTypeHandle <EcsTestData>(false) }; Assert.DoesNotThrow(() => { job.Run(query); }); } }
public void IJobEntityBatchRunWithoutDependency_Throws() { var archetype = m_Manager.CreateArchetype(typeof(EcsTestData)); using (var query = m_Manager.CreateEntityQuery(typeof(EcsTestData))) { var entityCount = 100; m_Manager.CreateEntity(archetype, entityCount); var job = new WriteBatchIndex { EcsTestTypeHandle = m_Manager.GetComponentTypeHandle <EcsTestData>(false) }; var handle = job.Schedule(query); Assert.Throws <InvalidOperationException>(() => { job.Run(query); }); handle.Complete(); } }
public void IJobEntityBatchProcess([Values(1, 4, 17, 100)] int jobsPerChunk) { var archetype = m_Manager.CreateArchetype(typeof(EcsTestData)); var query = m_Manager.CreateEntityQuery(typeof(EcsTestData)); var entityCount = 100; var entities = m_Manager.CreateEntity(archetype, entityCount, Allocator.Temp); var job = new WriteBatchIndex { EcsTestTypeHandle = m_Manager.GetComponentTypeHandle <EcsTestData>(false) }; job.ScheduleParallel(query, jobsPerChunk).Complete(); for (int batchIndex = 0; batchIndex < jobsPerChunk; ++batchIndex) { ArchetypeChunk.CalculateBatchSizeAndStartIndex(entityCount, jobsPerChunk, batchIndex, out var batchCount, out var startIndex); Assert.AreEqual(batchIndex, m_Manager.GetComponentData <EcsTestData>(entities[startIndex]).value); } query.Dispose(); }
public void IJobEntityBatchProcess() { var archetype = m_Manager.CreateArchetype(typeof(EcsTestData)); var query = m_Manager.CreateEntityQuery(typeof(EcsTestData)); var entityCount = 100; var jobsPerChunk = 4; var expectedEntitiesPerBatch = entityCount / jobsPerChunk; var entities = m_Manager.CreateEntity(archetype, entityCount, Allocator.Temp); var job = new WriteBatchIndex { ecsTestType = m_Manager.GetArchetypeChunkComponentType <EcsTestData>(false) }; job.ScheduleParallelBatched(query, jobsPerChunk).Complete(); for (int i = 0; i < jobsPerChunk; ++i) { Assert.AreEqual(i, m_Manager.GetComponentData <EcsTestData>(entities[i * expectedEntitiesPerBatch]).value); } query.Dispose(); }