From a2437a514da288f7a230c30ff75efeea45b71f59 Mon Sep 17 00:00:00 2001 From: Dave Schuyler Date: Tue, 9 Dec 2003 05:49:33 +0000 Subject: [PATCH] *** empty log message *** --- direct/src/showbase/ControlManager.py | 7 +++---- direct/src/showbase/GravityWalker.py | 29 +++++++++++++++++++++------ direct/src/showbase/PhysicsWalker.py | 5 +++++ 3 files changed, 31 insertions(+), 10 deletions(-) diff --git a/direct/src/showbase/ControlManager.py b/direct/src/showbase/ControlManager.py index 34d10d6566..8004803521 100755 --- a/direct/src/showbase/ControlManager.py +++ b/direct/src/showbase/ControlManager.py @@ -122,18 +122,17 @@ class ControlManager: wallBitmask, floorBitmask, avatarRadius, floorOffset) self.walkControls.setAirborneHeightFunc(self.avatar.getAirborneHeight) self.walkControls.disableAvatarControls() + self.walkControls.setCollisionsActive(0) self.swimControls.initializeCollisions(cTrav, self.avatar, wallBitmask, floorBitmask, avatarRadius, floorOffset) self.swimControls.setAirborneHeightFunc(self.avatar.getAirborneHeight) self.swimControls.disableAvatarControls() + self.swimControls.setCollisionsActive(0) + self.walkControls.setCollisionsActive(1) self.walkControls.enableAvatarControls() - if self.wantAvatarPhysicsIndicator: - indicator=loader.loadModelCopy('phase_5/models/props/dagger') - #self.walkControls.setAvatarPhysicsIndicator(indicator) - def deleteCollisions(self): assert(self.debugPrint("deleteCollisions()")) self.walkControls.deleteCollisions() diff --git a/direct/src/showbase/GravityWalker.py b/direct/src/showbase/GravityWalker.py index 7b47bf595d..0378d51a79 100755 --- a/direct/src/showbase/GravityWalker.py +++ b/direct/src/showbase/GravityWalker.py @@ -248,16 +248,21 @@ class GravityWalker(DirectObject.DirectObject): tempCTrav.traverse(render) def setMayJump(self, task): + """ + This function's use is internal to this class (maybe I'll add + the __ someday). Anyway, if you want to enable or disable + jumping in a general way see the ControlManager (don't use this). + """ self.mayJump = 1 return Task.done - def startJumpDelay(self): - assert(self.debugPrint("startJumpDelay()")) + def startJumpDelay(self, delay): + assert(self.debugPrint("startJumpDelay(delay=%s)"%(delay,))) if self.jumpDelayTask: self.jumpDelayTask.remove() self.mayJump = 0 self.jumpDelayTask=taskMgr.doMethodLater( - 0.5, + delay, self.setMayJump, "jumpDelay-%s"%id(self)) @@ -295,14 +300,26 @@ class GravityWalker(DirectObject.DirectObject): onScreenDebug.add("airborneHeight", self.lifter.getAirborneHeight()) #*# onScreenDebug.add("falling", self.falling) #*# onScreenDebug.add("isOnGround", self.lifter.isOnGround()) #*# + + onScreenDebug.add("gravity", self.lifter.getGravity()) #*# + onScreenDebug.add("jumpForce", self.avatarControlJumpForce) #*# + onScreenDebug.add("mayJump", self.mayJump) #*# + onScreenDebug.add("impact", self.lifter.getImpactVelocity()) #*# + onScreenDebug.add("velocity", self.lifter.getVelocity()) #*# onScreenDebug.add("jump", jump) #*# if self.lifter.isOnGround(): if self.falling: self.falling = 0 - #messenger.send("jumpHardLand") - messenger.send("jumpLand") - self.startJumpDelay() + impact = self.lifter.getImpactVelocity() + if impact < -30.0: + messenger.send("jumpHardLand") + self.startJumpDelay(0.1) + else: + messenger.send("jumpLand") + if impact < -5.0: + self.startJumpDelay(0.05) + # else, ignore the little potholes. if jump and self.mayJump: # ...the jump button is down and we're close # enough to the ground to jump. diff --git a/direct/src/showbase/PhysicsWalker.py b/direct/src/showbase/PhysicsWalker.py index 3c55ef9f13..f11ff6af65 100755 --- a/direct/src/showbase/PhysicsWalker.py +++ b/direct/src/showbase/PhysicsWalker.py @@ -723,6 +723,11 @@ class PhysicsWalker(DirectObject.DirectObject): if __debug__: + def setupAvatarPhysicsIndicator(self): + if self.wantAvatarPhysicsIndicator: + indicator=loader.loadModelCopy('phase_5/models/props/dagger') + #self.walkControls.setAvatarPhysicsIndicator(indicator) + def debugPrint(self, message): """for debugging""" return self.notify.debug(