Browse Source

don't clear the global controlForce's physicsObject if some other code has set it to move something else

Darren Ranalli 18 years ago
parent
commit
ae64fbe298
1 changed files with 8 additions and 2 deletions
  1. 8 2
      direct/src/controls/ShipPilot.py

+ 8 - 2
direct/src/controls/ShipPilot.py

@@ -77,8 +77,14 @@ class ShipPilot(PhysicsWalker):
         
         
     def setAvatar(self, ship):
     def setAvatar(self, ship):
         if ship is None:
         if ship is None:
-            base.controlForce.clearPhysicsObject()
-            base.controlForce.setVector(Vec3(0))
+            # only clear out the global controlForce's physics object if it hasn't
+            # been changed since we set it up for our boat
+            # this could still break if we have more than one ShipPilot referencing
+            # a single boat
+            if (self.ship is not None and
+                base.controlForce.getPhysicsObject() is self.ship.node().getPhysicsObject()):
+                base.controlForce.clearPhysicsObject()
+                base.controlForce.setVector(Vec3(0))
             self.takedownPhysics()
             self.takedownPhysics()
             self.setCollisionsActive(0)
             self.setCollisionsActive(0)
             self.ship = ship
             self.ship = ship