public void IJobEntityBatchWithIndex([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 expectedEntitiesPerBatch = entityCount / jobsPerChunk; var entities = m_Manager.CreateEntity(archetype, entityCount, Allocator.Temp); var job = new WriteEntityIndex { 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(startIndex, m_Manager.GetComponentData <EcsTestData>(entities[startIndex]).value); } query.Dispose(); }
public void IJobEntityBatchRunWithIndexWithoutDependency_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 WriteEntityIndex { EcsTestTypeHandle = m_Manager.GetComponentTypeHandle <EcsTestData>(false) }; var handle = job.Schedule(query); Assert.Throws <InvalidOperationException>(() => { job.Run(query); }); handle.Complete(); } }
public void IJobEntityBatchWithIndex_Run() { var archetype = m_Manager.CreateArchetype(typeof(EcsTestData)); using (var query = m_Manager.CreateEntityQuery(typeof(EcsTestData))) { var entityCount = 100; m_Manager.CreateEntity(archetype, entityCount); Assert.DoesNotThrow(() => { var job = new WriteEntityIndex { EcsTestTypeHandle = m_Manager.GetComponentTypeHandle <EcsTestData>(false) }; job.Run(query); }); } }