public void TestParallelNativeInitializerReturningEntityReferencesMultipleJobs() { var firstCreationJob = new CreateEntitiesJob { factory = _factory.ToNative <TestDescriptor>("TestNative"), references = new NativeArray <EntityReference>(10000, Allocator.Persistent) }; var firstJob = firstCreationJob.Schedule(firstCreationJob.references.Length, 1); var secondCreationJob = new CreateEntitiesJob { factory = _factory.ToNative <TestDescriptor>("TestNative"), references = new NativeArray <EntityReference>(5000, Allocator.Persistent) }; var secondJob = secondCreationJob.Schedule(secondCreationJob.references.Length, 1); JobHandle.CombineDependencies(firstJob, secondJob).Complete(); _scheduler.SubmitEntities(); var(egids, references, count) = _engine.entitiesDB.QueryEntities <EGIDComponent, NativeSelfReferenceComponent>(TestGroupA); for (var i = 0; i < count; i++) { Assert.IsTrue(_engine.entitiesDB.TryGetEGID(references[i].value, out var refEgid)); Assert.AreEqual(egids[i].ID, refEgid); } }
public void TestParallelNativeInitializerReturningEntityReferencesWithoutReuse() { var creationJob = new CreateEntitiesJob { factory = _factory.ToNative <TestDescriptor>("TestNative"), references = new NativeArray <EntityReference>(10000, Allocator.Persistent) }; // Full granularity to have as many threads as possible. var job = creationJob.Schedule(creationJob.references.Length, 1); job.Complete(); _scheduler.SubmitEntities(); var(egids, references, count) = _engine.entitiesDB.QueryEntities <EGIDComponent, NativeSelfReferenceComponent>(TestGroupA); for (var i = 0; i < count; i++) { Assert.IsTrue(_engine.entitiesDB.TryGetEGID(references[i].value, out var refEgid)); Assert.AreEqual(egids[i].ID, refEgid); } }