public void Clone(CollisionIsland ci) { this.bodies.Clear(); this.index = 0; this.length = ci.bodies.Count; while (this.index < this.length) { this.bodies.Add(ci.bodies[this.index]); this.index++; } this.arbiters.Clear(); this.index = 0; this.length = ci.arbiter.Count; while (this.index < this.length) { ArbiterClone @new = WorldClone.poolArbiterClone.GetNew(); @new.Clone(ci.arbiter[this.index]); this.arbiters.Add(@new); this.index++; } this.constraints.Clear(); this.index = 0; this.length = ci.constraints.Count; while (this.index < this.length) { this.constraints.Add(ci.constraints[this.index]); this.index++; } }
public void Clone(IWorld iWorld, bool doChecksum) { World world = (World)iWorld; this.Reset(); if (doChecksum) { this.checksum = ChecksumExtractor.GetEncodedChecksum(); } this.clonedPhysics.Clear(); foreach (RigidBody rigidBody in world.RigidBodies) { RigidBodyClone @new = WorldClone.poolRigidBodyClone.GetNew(); @new.Clone(rigidBody); this.clonedPhysics.Add(rigidBody.GetInstance(), @new); } this.clonedArbiters.Clear(); foreach (Arbiter current in world.ArbiterMap.Arbiters) { ArbiterClone new2 = WorldClone.poolArbiterClone.GetNew(); new2.Clone(current); this.clonedArbiters.Add(new2); } this.clonedArbitersTrigger.Clear(); foreach (Arbiter current2 in world.ArbiterTriggerMap.Arbiters) { ArbiterClone new3 = WorldClone.poolArbiterClone.GetNew(); new3.Clone(current2); this.clonedArbitersTrigger.Add(new3); } this.collisionIslands.Clear(); this.index = 0; this.length = world.islands.Count; while (this.index < this.length) { CollisionIsland ci = world.islands[this.index]; CollisionIslandClone new4 = WorldClone.poolCollisionIslandClone.GetNew(); new4.Clone(ci); this.collisionIslands.Add(new4); this.index++; } this.cloneCollision.Clone((CollisionSystemPersistentSAP)world.CollisionSystem); this.clonedInitialCollisions.Clear(); this.clonedInitialCollisions.AddRange(world.initialCollisions); this.clonedInitialTriggers.Clear(); this.clonedInitialTriggers.AddRange(world.initialTriggers); this.rigidBodyInstanceCount = RigidBody.instanceCount; this.constraintInstanceCount = Constraint.instanceCount; }