From 92fbd4149dc3ecb103b5384eab3a696d1aab75d5 Mon Sep 17 00:00:00 2001 From: Dave Schuyler Date: Wed, 4 Aug 2004 02:50:57 +0000 Subject: [PATCH] changing to new general Control Manager --- direct/src/showbase/ControlManager.py | 161 ++++++++++---------------- 1 file changed, 58 insertions(+), 103 deletions(-) diff --git a/direct/src/showbase/ControlManager.py b/direct/src/showbase/ControlManager.py index 988aacdb34..fdef728aec 100755 --- a/direct/src/showbase/ControlManager.py +++ b/direct/src/showbase/ControlManager.py @@ -25,18 +25,12 @@ class ControlManager: assert self.notify.debugCall(id(self)) self.enableJumpCounter = 1 - - self.swimControls=NonPhysicsWalker.NonPhysicsWalker() - self.ghostControls=GhostWalker.GhostWalker() - if __debug__: - self.devControls=DevWalker.DevWalker() - self.walkControls=GravityWalker.GravityWalker( - gravity = -32.1740 * 2.0) # * 2.0 is a hack; + self.controls = {} # This is the non physics walker if you ever wanted to turn off phys # self.walkControls=NonPhysicsWalker.NonPhysicsWalker() - self.currentControls = self.walkControls + self.currentControls = None self.isEnabled = 1 #self.monitorTask = taskMgr.add(self.monitor, "ControlManager-%s"%(id(self)), priority=-1) inputState.watch("forward", "arrow_up", "arrow_up-up") @@ -90,10 +84,11 @@ class ControlManager: def add(self, controls, name="basic"): assert self.notify.debugCall(id(self)) - controls = self.controls.get(name) - if controls is not None: + assert controls is not None + oldControls = self.controls.get(name) + if oldControls is not None: print "Replacing controls:", name - controls.delete() + oldControls.delete() self.controls[name] = controls def use(self, name="basic"): @@ -105,91 +100,43 @@ class ControlManager: self.currentControls.setCollisionsActive(0) self.currentControls = controls self.currentControls.setCollisionsActive(1) + if self.isEnabled: + self.currentControls.enableAvatarControls() + else: + print "Controls are already", name else: print "Unkown controls:", name - def setSpeeds_new(self, toonForwardSpeed, toonJumpForce, - toonReverseSpeed, toonRotateSpeed): + def setSpeeds(self, forwardSpeed, jumpForce, + reverseSpeed, rotateSpeed): assert self.notify.debugCall(id(self)) for controls in self.controls.values(): controls.setWalkSpeed( - toonForwardSpeed, - toonJumpForce, - toonReverseSpeed, - toonRotateSpeed) + forwardSpeed, jumpForce, reverseSpeed, rotateSpeed) - def useSwimControls(self): - assert self.notify.debugCall(id(self)) - if self.currentControls is not self.swimControls: - self.currentControls.disableAvatarControls() - self.currentControls.setCollisionsActive(0) - self.swimControls.setCollisionsActive(1) - self.currentControls = self.swimControls - if self.isEnabled: - self.currentControls.enableAvatarControls() + #def useSwimControls(self): + # assert self.notify.debugCall(id(self)) + # self.use("swim") - def useGhostControls(self): - assert self.notify.debugCall(id(self)) - if self.currentControls is not self.ghostControls: - self.currentControls.disableAvatarControls() - self.currentControls.setCollisionsActive(0) - self.ghostControls.setCollisionsActive(1) - self.currentControls = self.ghostControls - if self.isEnabled: - self.currentControls.enableAvatarControls() + #def useGhostControls(self): + # assert self.notify.debugCall(id(self)) + # self.use("ghost") - def useWalkControls(self): - assert self.notify.debugCall(id(self)) - if self.currentControls is not self.walkControls: - self.currentControls.disableAvatarControls() - self.currentControls.setCollisionsActive(0) - self.walkControls.setCollisionsActive(1) - self.currentControls = self.walkControls - if self.isEnabled: - self.currentControls.enableAvatarControls() + #def useWalkControls(self): + # assert self.notify.debugCall(id(self)) + # self.use("walk") - if __debug__: - def useDevControls(self): - assert self.notify.debugCall(id(self)) - if self.currentControls is not self.devControls: - self.currentControls.disableAvatarControls() - self.currentControls.setCollisionsActive(0) - self.devControls.setCollisionsActive(1) - self.currentControls = self.devControls - if self.isEnabled: - self.currentControls.enableAvatarControls() + #if __debug__: + # def useDevControls(self): + # assert self.notify.debugCall(id(self)) + # self.use("dev") def delete(self): assert self.notify.debugCall(id(self)) self.disable() #self.monitorTask.remove() - def setSpeeds(self, toonForwardSpeed, toonJumpForce, - toonReverseSpeed, toonRotateSpeed): - assert self.notify.debugCall(id(self)) - self.swimControls.setWalkSpeed( - toonForwardSpeed, - toonJumpForce, - toonReverseSpeed, - toonRotateSpeed) - self.ghostControls.setWalkSpeed( - toonForwardSpeed, - toonJumpForce, - toonReverseSpeed, - toonRotateSpeed) - self.walkControls.setWalkSpeed( - toonForwardSpeed, - toonJumpForce, - toonReverseSpeed, - toonRotateSpeed) - if __debug__: - self.devControls.setWalkSpeed( - toonForwardSpeed, - toonJumpForce, - toonReverseSpeed, - toonRotateSpeed) - def getSpeeds(self): return self.currentControls.getSpeeds() @@ -197,41 +144,49 @@ class ControlManager: wallBitmask, floorBitmask, ghostBitmask, avatarRadius, floorOffset, reach = 4.0): assert self.notify.debugCall(id(self)) - self.walkControls.initializeCollisions(cTrav, self.avatar, - wallBitmask, floorBitmask, avatarRadius, floorOffset, reach) - self.walkControls.setAirborneHeightFunc(self.avatar.getAirborneHeight) - self.walkControls.disableAvatarControls() - self.walkControls.setCollisionsActive(0) + swimControls=NonPhysicsWalker.NonPhysicsWalker() + ghostControls=GhostWalker.GhostWalker() + if __debug__: + devControls=DevWalker.DevWalker() + walkControls=GravityWalker.GravityWalker( + gravity = -32.1740 * 2.0) # * 2.0 is a hack; - self.swimControls.initializeCollisions(cTrav, self.avatar, + walkControls.initializeCollisions(cTrav, self.avatar, wallBitmask, floorBitmask, avatarRadius, floorOffset, reach) - self.swimControls.setAirborneHeightFunc(self.avatar.getAirborneHeight) - self.swimControls.disableAvatarControls() - self.swimControls.setCollisionsActive(0) + walkControls.setAirborneHeightFunc(self.avatar.getAirborneHeight) + walkControls.disableAvatarControls() + walkControls.setCollisionsActive(0) - self.ghostControls.initializeCollisions(cTrav, self.avatar, + swimControls.initializeCollisions(cTrav, self.avatar, + wallBitmask, floorBitmask, avatarRadius, floorOffset, reach) + swimControls.setAirborneHeightFunc(self.avatar.getAirborneHeight) + swimControls.disableAvatarControls() + swimControls.setCollisionsActive(0) + + ghostControls.initializeCollisions(cTrav, self.avatar, ghostBitmask, floorBitmask, avatarRadius, floorOffset, reach) - self.ghostControls.setAirborneHeightFunc(self.avatar.getAirborneHeight) - self.ghostControls.disableAvatarControls() - self.ghostControls.setCollisionsActive(0) + ghostControls.setAirborneHeightFunc(self.avatar.getAirborneHeight) + ghostControls.disableAvatarControls() + ghostControls.setCollisionsActive(0) if __debug__: - self.devControls.initializeCollisions(cTrav, self.avatar, + devControls.initializeCollisions(cTrav, self.avatar, wallBitmask, floorBitmask, avatarRadius, floorOffset, reach) - self.devControls.setAirborneHeightFunc(self.avatar.getAirborneHeight) - self.devControls.disableAvatarControls() - self.devControls.setCollisionsActive(0) + devControls.setAirborneHeightFunc(self.avatar.getAirborneHeight) + devControls.disableAvatarControls() + devControls.setCollisionsActive(0) - #self.walkControls.setCollisionsActive(1) - #self.walkControls.enableAvatarControls() + self.add(walkControls, "walk") + self.add(swimControls, "swim") + self.add(ghostControls, "ghost") + self.add(devControls, "dev") + + self.currentControls=walkControls def deleteCollisions(self): assert self.notify.debugCall(id(self)) - self.walkControls.deleteCollisions() - self.swimControls.deleteCollisions() - self.ghostControls.deleteCollisions() - if __debug__: - self.devControls.deleteCollisions() + for controls in self.controls.values(): + controls.deleteCollisions() def collisionsOn(self): assert self.notify.debugCall(id(self))