예제 #1
0
 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++;
     }
 }
예제 #2
0
        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;
        }