Пример #1
0
        private void RemapEntityReferences(NativeHashMap <Entity, Entity> remap)
        {
            if (remap.Length == 0)
            {
                return;
            }

            using (var entities = EntityManager.GetAllEntities(Allocator.TempJob))
            {
                var visitor = new RemapVisitor <Entity>(remap);

                foreach (var entity in entities)
                {
                    PropertyContainer.Visit(new EntityContainer(EntityManager, entity, false), visitor);
                }
            }
        }
Пример #2
0
        protected override void Remap(ISceneGraphNode source, ISceneGraphNode target)
        {
            // Extract all entities from the source and target trees
            var sourceEntities = source.GetDescendants().OfType <EntityNode>().Select(n => n.Entity).ToList();
            var targetEntities = target.GetDescendants().OfType <EntityNode>().Select(n => n.Entity).ToList();

            Assert.IsTrue(sourceEntities.Count == targetEntities.Count);

            // Build the remap information
            var entityReferenceRemap = new Dictionary <Entity, Entity>();

            for (var i = 0; i < sourceEntities.Count; i++)
            {
                entityReferenceRemap.Add(sourceEntities[i], targetEntities[i]);
            }

            var visitor = new RemapVisitor(entityReferenceRemap);

            // Remap each component of the target tree
            foreach (var entity in targetEntities)
            {
                PropertyContainer.Visit(new EntityContainer(m_EntityManager, entity), visitor);
            }
        }
Пример #3
0
 public EntityReferenceAdapter(RemapVisitor visitor)
 {
     Visitor = visitor;
 }