removed shown ray; jumping straight up;

This commit is contained in:
Dave Schuyler 2003-11-19 03:54:52 +00:00
parent 23aa2a9ead
commit f29545a167
2 changed files with 22 additions and 17 deletions

View File

@ -121,8 +121,14 @@ class NonPhysicsWalker(DirectObject.DirectObject):
del self.pusher del self.pusher
del self.lifter del self.lifter
def collisionsOff(self): def setCollisionsActive(self, active = 1):
assert(self.debugPrint("collisionsOff")) assert(self.debugPrint("setCollisionsActive(active%s)"%(active,)))
if self.collisionsActive != active:
self.collisionsActive = active
if active:
self.cTrav.addCollider(self.cSphereNodePath, self.pusher)
self.cTrav.addCollider(self.cRayNodePath, self.lifter)
else:
self.cTrav.removeCollider(self.cSphereNodePath) self.cTrav.removeCollider(self.cSphereNodePath)
self.cTrav.removeCollider(self.cRayNodePath) self.cTrav.removeCollider(self.cRayNodePath)
@ -130,11 +136,6 @@ class NonPhysicsWalker(DirectObject.DirectObject):
# right now to ensure we aren't standing in a wall. # right now to ensure we aren't standing in a wall.
self.oneTimeCollide() self.oneTimeCollide()
def collisionsOn(self):
assert(self.debugPrint("collisionsOn"))
self.cTrav.addCollider(self.cSphereNodePath, self.pusher)
self.cTrav.addCollider(self.cRayNodePath, self.lifter)
def oneTimeCollide(self): def oneTimeCollide(self):
""" """
Makes one quick collision pass for the avatar, for instance as Makes one quick collision pass for the avatar, for instance as

View File

@ -148,7 +148,6 @@ class PhysicsWalker(DirectObject.DirectObject):
else: # useCollisionHandlerQueue else: # useCollisionHandlerQueue
self.cRayQueue = CollisionHandlerQueue() self.cRayQueue = CollisionHandlerQueue()
self.cTrav.addCollider(self.cRayNodePath, self.cRayQueue) self.cTrav.addCollider(self.cRayNodePath, self.cRayQueue)
self.cRayNodePath.show()
def determineHeight(self): def determineHeight(self):
""" """
@ -550,7 +549,7 @@ class PhysicsWalker(DirectObject.DirectObject):
else: else:
# ...the avatar is very close to the ground (close enough to be # ...the avatar is very close to the ground (close enough to be
# considered on the ground). # considered on the ground).
if self.isAirborne: if self.isAirborne and physObject.getVelocity().getZ() <= 0.0:
# ...the avatar has landed. # ...the avatar has landed.
contactLength = contact.length() contactLength = contact.length()
if contactLength>self.__hardLandingForce: if contactLength>self.__hardLandingForce:
@ -565,9 +564,14 @@ class PhysicsWalker(DirectObject.DirectObject):
#print "jump" #print "jump"
#self.__jumpButton=0 #self.__jumpButton=0
messenger.send("jumpStart") messenger.send("jumpStart")
if 0:
# ...jump away from walls and with with the slope normal.
jumpVec=Vec3(contact+Vec3.up()) jumpVec=Vec3(contact+Vec3.up())
#jumpVec=Vec3(rotAvatarToPhys.xform(jumpVec)) #jumpVec=Vec3(rotAvatarToPhys.xform(jumpVec))
jumpVec.normalize() jumpVec.normalize()
else:
# ...jump straight up, even if next to a wall.
jumpVec=Vec3.up()
jumpVec*=self.avatarControlJumpForce jumpVec*=self.avatarControlJumpForce
physObject.addImpulse(Vec3(jumpVec)) physObject.addImpulse(Vec3(jumpVec))
self.isAirborne = 1 # Avoid double impulse before fully airborne. self.isAirborne = 1 # Avoid double impulse before fully airborne.