public void ComputeDiffOnly() { EntityGuid[] guids = new EntityGuid[4]; Entity[] ents = new Entity[4]; // create 4 entities for (int i = 0; i < 4; ++i) { guids[i] = GenerateEntityGuid(i + 1); ents[i] = m_Manager.CreateEntity(typeof(EntityGuid), typeof(EcsTestData)); m_Manager.SetComponentData(ents[i], guids[i]); m_Manager.SetComponentData(ents[i], new EcsTestData { value = i }); } WorldDiff diff = default; // Calculate initial diff diff = WorldDiffer.CreateDiff(m_After, m_Shadow, Allocator.TempJob); Assert.AreEqual(diff.NewEntityCount, 4); diff.Dispose(); // These shouldn't exist in the shadow world foreach (var guid in guids) { Assert.AreEqual(Entity.Null, GetEntityByGuid(m_Shadow.EntityManager, guid)); } // Calculate same diff again; results should be the same as above diff = WorldDiffer.CreateDiff(m_After, m_Shadow, Allocator.TempJob); Assert.AreEqual(diff.NewEntityCount, 4); // These still shouldn't exist in the shadow world foreach (var guid in guids) { Assert.AreEqual(Entity.Null, GetEntityByGuid(m_Shadow.EntityManager, guid)); } // Now apply the diff to the dst world WorldDiffer.ApplyDiff(m_DstWorld, diff); diff.Dispose(); // and now they should exist in the dst world for (int i = 0; i < 4; ++i) { Assert.AreEqual(ents[i], GetEntityByGuid(m_DstManager, guids[i])); } }
public void Dispose() { m_WorldDiff.Dispose(); m_InverseWorldDiff.Dispose(); }