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); } } }
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); } }
public EntityReferenceAdapter(RemapVisitor visitor) { Visitor = visitor; }