moved jump landing force.

This commit is contained in:
Dave Schuyler 2003-09-26 03:38:54 +00:00
parent 5c113af66a
commit 72a9a6a007
3 changed files with 38 additions and 10 deletions

View File

@ -511,13 +511,10 @@ class Actor(PandaObject, NodePath):
return animControl.getNumFrames() / animControl.getFrameRate() return animControl.getNumFrames() / animControl.getFrameRate()
def getNumFrames(self, animName=None, partName=None): def getNumFrames(self, animName=None, partName=None):
""" getNumFrames(animName, partName)
"""
lodName = self.__animControlDict.keys()[0] lodName = self.__animControlDict.keys()[0]
controls = self.getAnimControls(animName, partName) controls = self.getAnimControls(animName, partName)
if len(controls) == 0: if len(controls) == 0:
return None return None
return controls[0].getNumFrames() return controls[0].getNumFrames()
def getCurrentAnim(self, partName=None): def getCurrentAnim(self, partName=None):
@ -940,7 +937,8 @@ class Actor(PandaObject, NodePath):
control.pose(frame) control.pose(frame)
def enableBlend(self, blendType = PartBundle.BTNormalizedLinear, partName = None): def enableBlend(self, blendType = PartBundle.BTNormalizedLinear, partName = None):
"""Enables blending of multiple animations simultaneously. """
Enables blending of multiple animations simultaneously.
After this is called, you may call play(), loop(), or pose() After this is called, you may call play(), loop(), or pose()
on multiple animations and have all of them contribute to the on multiple animations and have all of them contribute to the
final pose each frame. final pose each frame.
@ -970,7 +968,8 @@ class Actor(PandaObject, NodePath):
def setControlEffect(self, animName, effect, def setControlEffect(self, animName, effect,
partName = None, lodName = None): partName = None, lodName = None):
""" Sets the amount by which the named animation contributes to """
Sets the amount by which the named animation contributes to
the overall pose. This controls blending of multiple the overall pose. This controls blending of multiple
animations; it only makes sense to call this after a previous animations; it only makes sense to call this after a previous
call to enableBlend(). call to enableBlend().

View File

@ -1,4 +1,18 @@
"""NonPhysicsWalker.py is for avatars.""" """
NonPhysicsWalker.py is for avatars.
A walker control such as this one provides:
- creation of the collision nodes
- handling the keyboard and mouse input for avatar movement
- moving the avatar
it does not:
- play sounds
- play animations
although it does send messeges that allow a listener to play sounds or
animations based on walker events.
"""
from ShowBaseGlobal import * from ShowBaseGlobal import *

View File

@ -1,4 +1,18 @@
"""PhysicsWalker.py is for avatars.""" """
PhysicsWalker.py is for avatars.
A walker control such as this one provides:
- creation of the collision nodes
- handling the keyboard and mouse input for avatar movement
- moving the avatar
it does not:
- play sounds
- play animations
although it does send messeges that allow a listener to play sounds or
animations based on walker events.
"""
from ShowBaseGlobal import * from ShowBaseGlobal import *
@ -13,12 +27,14 @@ class PhysicsWalker(DirectObject.DirectObject):
wantAvatarPhysicsIndicator = base.config.GetBool('want-avatar-physics-indicator', 1) wantAvatarPhysicsIndicator = base.config.GetBool('want-avatar-physics-indicator', 1)
# special methods # special methods
def __init__(self, gravity = -32.1740, standableGround=0.707): def __init__(self, gravity = -32.1740, standableGround=0.707,
hardLandingForce=16.0):
assert(self.debugPrint("PhysicsWalker(gravity=%s, standableGround=%s)"%( assert(self.debugPrint("PhysicsWalker(gravity=%s, standableGround=%s)"%(
gravity, standableGround))) gravity, standableGround)))
DirectObject.DirectObject.__init__(self) DirectObject.DirectObject.__init__(self)
self.__gravity=gravity self.__gravity=gravity
self.__standableGround=standableGround self.__standableGround=standableGround
self.__hardLandingForce=hardLandingForce
self.physVelocityIndicator=None self.physVelocityIndicator=None
self.__old_contact=None self.__old_contact=None
@ -236,8 +252,7 @@ class PhysicsWalker(DirectObject.DirectObject):
# ...avatar is on standable ground. # ...avatar is on standable ground.
if self.__old_contact==Vec3.zero(): if self.__old_contact==Vec3.zero():
jumpTime = 0.0 jumpTime = 0.0
print "contactLength", contactLength if contactLength>self.__hardLandingForce:
if contactLength>14.0:
# ...avatar was airborne. # ...avatar was airborne.
messenger.send("jumpHardLand") messenger.send("jumpHardLand")
else: else: