Esempio n. 1
0
        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]));
            }
        }
Esempio n. 2
0
 public void Dispose()
 {
     m_WorldDiff.Dispose();
     m_InverseWorldDiff.Dispose();
 }