Browse Source

added advance anim

Samir Naik 21 years ago
parent
commit
091754663b
1 changed files with 22 additions and 20 deletions
  1. 22 20
      direct/src/controls/BattleWalker.py

+ 22 - 20
direct/src/controls/BattleWalker.py

@@ -11,10 +11,12 @@ def ToggleStrafe():
 class BattleWalker(GravityWalker.GravityWalker):
 class BattleWalker(GravityWalker.GravityWalker):
     def __init__(self):
     def __init__(self):
         GravityWalker.GravityWalker.__init__(self)
         GravityWalker.GravityWalker.__init__(self)
-
+        self.slideSpeed = 0
+        self.advanceSpeed = 0
+        
     def getSpeeds(self):
     def getSpeeds(self):
         #assert(self.debugPrint("getSpeeds()"))
         #assert(self.debugPrint("getSpeeds()"))
-        return (self.speed, self.rotationSpeed, self.slideSpeed)
+        return (self.speed, self.rotationSpeed, self.slideSpeed, self.advanceSpeed)
 
 
 
 
     def handleAvatarControls(self, task):
     def handleAvatarControls(self, task):
@@ -39,22 +41,23 @@ class BattleWalker(GravityWalker.GravityWalker):
         slide = 0 #hack -- was: inputState.isSet("slide")
         slide = 0 #hack -- was: inputState.isSet("slide")
         jump = inputState.isSet("jump")
         jump = inputState.isSet("jump")
         # Determine what the speeds are based on the buttons:
         # Determine what the speeds are based on the buttons:
-        self.speed=(forward and self.avatarControlForwardSpeed or 
-                    reverse and -self.avatarControlReverseSpeed)
-        if run and self.speed>0.0:
-            self.speed*=2.0 #*#
+        self.advanceSpeed=(forward and self.avatarControlForwardSpeed or 
+                           reverse and -self.avatarControlReverseSpeed)
+        if run and self.advanceSpeed>0.0:
+            self.advanceSpeed*=2.0 #*#
         # Should fSlide be renamed slideButton?
         # Should fSlide be renamed slideButton?
         self.slideSpeed=.15*(turnLeft and -self.avatarControlForwardSpeed or 
         self.slideSpeed=.15*(turnLeft and -self.avatarControlForwardSpeed or 
                             turnRight and self.avatarControlForwardSpeed)
                             turnRight and self.avatarControlForwardSpeed)
         self.rotationSpeed=0
         self.rotationSpeed=0
+        self.speed=0
         
         
         if __debug__:
         if __debug__:
             debugRunning = inputState.isSet("debugRunning")
             debugRunning = inputState.isSet("debugRunning")
             if debugRunning:
             if debugRunning:
-                self.speed*=4.0
+                self.advanceSpeed*=4.0
                 self.slideSpeed*=4.0
                 self.slideSpeed*=4.0
                 self.rotationSpeed*=1.25
                 self.rotationSpeed*=1.25
-
+                
         if self.needToDeltaPos:
         if self.needToDeltaPos:
             self.setPriorParentVector()
             self.setPriorParentVector()
             self.needToDeltaPos = 0
             self.needToDeltaPos = 0
@@ -95,30 +98,29 @@ class BattleWalker(GravityWalker.GravityWalker):
         # Before we do anything with position or orientation, make the avatar
         # Before we do anything with position or orientation, make the avatar
         # face it's target.  Only allow rMax degrees rotation per frame, so
         # face it's target.  Only allow rMax degrees rotation per frame, so
         # we don't get an unnatural spinning effect
         # we don't get an unnatural spinning effect
-        oldH = self.avatarNodePath.getH()
+        curH = self.avatarNodePath.getH()
         self.avatarNodePath.headsUp(targetNp)
         self.avatarNodePath.headsUp(targetNp)
         newH = self.avatarNodePath.getH()
         newH = self.avatarNodePath.getH()
-        delH = newH-oldH
+        delH = reduceAngle(newH-curH)
         rMax = 10
         rMax = 10
-        if delH > rMax:
-            self.avatarNodePath.setH(oldH+rMax)
-            self.rotationSpeed=self.avatarControlRotateSpeed
-
-        elif delH < -rMax:
-            self.avatarNodePath.setH(oldH-rMax)
+        if delH < -rMax:
+            self.avatarNodePath.setH(curH-rMax)
             self.rotationSpeed=-self.avatarControlRotateSpeed
             self.rotationSpeed=-self.avatarControlRotateSpeed
-
+        elif delH > rMax:
+            self.avatarNodePath.setH(curH+rMax)
+            self.rotationSpeed=self.avatarControlRotateSpeed
+            
         # Check to see if we're moving at all:
         # Check to see if we're moving at all:
-        self.moving = self.speed or self.slideSpeed or self.rotationSpeed or (self.priorParent!=Vec3.zero())
+        self.moving = self.advanceSpeed or self.slideSpeed or self.rotationSpeed or (self.priorParent!=Vec3.zero())
         if self.moving:
         if self.moving:
-            distance = dt * self.speed
+            distance = dt * self.advanceSpeed
             slideDistance = dt * self.slideSpeed
             slideDistance = dt * self.slideSpeed
             rotation = dt * self.rotationSpeed
             rotation = dt * self.rotationSpeed
 
 
             # Prevent avatar from getting too close to target
             # Prevent avatar from getting too close to target
             d = self.avatarNodePath.getPos(targetNp)
             d = self.avatarNodePath.getPos(targetNp)
             # TODO:  make min distance adjust for current weapon
             # TODO:  make min distance adjust for current weapon
-            if (d[0]*d[0]+d[1]*d[1] < 6.0):
+            if (d[0]*d[0]+d[1]*d[1] < 6.0 and distance > 0):
                 # move the avatar sideways instead of forward
                 # move the avatar sideways instead of forward
                 slideDistance += .2
                 slideDistance += .2
                 distance = 0
                 distance = 0