Browse Source

control manager now cleanly removes its controls during delete()

Josh Wilson 19 years ago
parent
commit
c56249dd2f
2 changed files with 8 additions and 5 deletions
  1. 4 3
      direct/src/controls/ControlManager.py
  2. 4 2
      direct/src/controls/ShipPilot.py

+ 4 - 3
direct/src/controls/ControlManager.py

@@ -104,13 +104,12 @@ class ControlManager:
         See also: add().
         """
         assert self.notify.debugCall(id(self))
-        oldControls = self.controls.get(name)
+        oldControls = self.controls.pop(name,None)
         if oldControls is not None:
             print "Removing controls:", name
             oldControls.disableAvatarControls()
             oldControls.setCollisionsActive(0)
             oldControls.delete()
-            del self.controls[name]
 
     if __debug__:
         def lockControls(self):
@@ -159,9 +158,11 @@ class ControlManager:
                 forwardSpeed, jumpForce, reverseSpeed, rotateSpeed)
 
     def delete(self):
+        import pdb;pdb.set_trace()
         assert self.notify.debugCall(id(self))
         self.disable()
-        # TODO: put controls delete code in here
+        for controls in self.controls.keys():
+            self.remove(controls)
         del self.controls
         del self.currentControls
 

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

@@ -30,8 +30,10 @@ class ShipPilot(PhysicsWalker):
         'want-avatar-physics-indicator', 0)
 
     # special methods
-    def __init__(self, gravity = -32.1740, standableGround=0.707,
-            hardLandingForce=16.0):
+    def __init__(self,
+                 gravity = -32.1740,
+                 standableGround=0.707,
+                 hardLandingForce=16.0):
         assert self.debugPrint(
             "PhysicsWalker(gravity=%s, standableGround=%s)"%(
             gravity, standableGround))