Browse Source

changed debug output; started using ship globals

Dave Schuyler 21 years ago
parent
commit
6bf0ce7b64
1 changed files with 41 additions and 22 deletions
  1. 41 22
      direct/src/controls/ShipPilot.py

+ 41 - 22
direct/src/controls/ShipPilot.py

@@ -27,7 +27,7 @@ import PhysicsWalker
 class ShipPilot(PhysicsWalker.PhysicsWalker):
 class ShipPilot(PhysicsWalker.PhysicsWalker):
 
 
     notify = DirectNotifyGlobal.directNotify.newCategory("PhysicsWalker")
     notify = DirectNotifyGlobal.directNotify.newCategory("PhysicsWalker")
-    wantAvatarPhysicsIndicator = base.config.GetBool('want-avatar-physics-indicator', 0)
+    wantDebugIndicator = base.config.GetBool('want-avatar-physics-indicator', 0)
     
     
     useLifter = 0
     useLifter = 0
     useHeightRay = 0
     useHeightRay = 0
@@ -68,12 +68,18 @@ class ShipPilot(PhysicsWalker.PhysicsWalker):
         self.avatarControlForwardSpeed=forward
         self.avatarControlForwardSpeed=forward
         self.avatarControlJumpForce=0.0
         self.avatarControlJumpForce=0.0
         self.avatarControlReverseSpeed=reverse
         self.avatarControlReverseSpeed=reverse
-        self.avatarControlRotateSpeed=rotate
+        self.avatarControlRotateSpeed=0.3*rotate
 
 
     def getSpeeds(self):
     def getSpeeds(self):
         #assert(self.debugPrint("getSpeeds()"))
         #assert(self.debugPrint("getSpeeds()"))
         return (self.__speed, self.__rotationSpeed)
         return (self.__speed, self.__rotationSpeed)
 
 
+    def setShip(self, ship):
+        self.ship = ship
+        if ship is not None:
+            #self.setupShip()
+            self.avatarNodePath = self.setupPhysics(ship)
+
     def setupRay(self, floorBitmask, floorOffset):
     def setupRay(self, floorBitmask, floorOffset):
         # This is a ray cast from your head down to detect floor polygons
         # This is a ray cast from your head down to detect floor polygons
         # A toon is about 4.0 feet high, so start it there
         # A toon is about 4.0 feet high, so start it there
@@ -192,14 +198,15 @@ class ShipPilot(PhysicsWalker.PhysicsWalker):
         self.priorParentNp = fnp
         self.priorParentNp = fnp
         self.priorParent = priorParent
         self.priorParent = priorParent
 
 
-        fn=ForceNode("viscosity")
-        fnp=NodePath(fn)
-        #fnp.reparentTo(physicsActor)
-        fnp.reparentTo(render)
-        self.avatarViscosity=LinearFrictionForce(0.0, 1.0, 0)
-        #self.avatarViscosity.setCoef(0.9)
-        fn.addForce(self.avatarViscosity)
-        self.phys.addLinearForce(self.avatarViscosity)
+        if 0:
+            fn=ForceNode("viscosity")
+            fnp=NodePath(fn)
+            #fnp.reparentTo(physicsActor)
+            fnp.reparentTo(render)
+            self.avatarViscosity=LinearFrictionForce(0.0, 1.0, 0)
+            #self.avatarViscosity.setCoef(0.9)
+            fn.addForce(self.avatarViscosity)
+            self.phys.addLinearForce(self.avatarViscosity)
 
 
         self.phys.attachLinearIntegrator(LinearEulerIntegrator())
         self.phys.attachLinearIntegrator(LinearEulerIntegrator())
         self.phys.attachPhysicalnode(physicsActor.node())
         self.phys.attachPhysicalnode(physicsActor.node())
@@ -358,15 +365,24 @@ class ShipPilot(PhysicsWalker.PhysicsWalker):
                 tempCTrav.addCollider(self.cRayNodePath, self.cRayQueue)
                 tempCTrav.addCollider(self.cRayNodePath, self.cRayQueue)
         tempCTrav.traverse(render)
         tempCTrav.traverse(render)
 
 
+    def displayDebugInfo(self):
+        """
+        For debug use.
+        """
+        onScreenDebug.add("w controls", "ShipPilot")
+
+        onScreenDebug.add("w ship", self.ship)
+        onScreenDebug.add("w isAirborne", self.isAirborne)
+
     def handleAvatarControls(self, task):
     def handleAvatarControls(self, task):
         """
         """
         Check on the arrow keys and update the avatar.
         Check on the arrow keys and update the avatar.
         """
         """
         if __debug__:
         if __debug__:
-            if self.wantAvatarPhysicsIndicator:
+            if self.wantDebugIndicator:
                 onScreenDebug.append("localAvatar pos = %s\n"%(base.localAvatar.getPos().pPrintValues(),))
                 onScreenDebug.append("localAvatar pos = %s\n"%(base.localAvatar.getPos().pPrintValues(),))
                 onScreenDebug.append("localAvatar h = % 10.4f\n"%(base.localAvatar.getH(),))
                 onScreenDebug.append("localAvatar h = % 10.4f\n"%(base.localAvatar.getH(),))
-                onScreenDebug.append("localAvatar anim = %s\n"%(base.localAvatar.animFSM.getCurrentState().getName(),))
+                #onScreenDebug.append("localAvatar anim = %s\n"%(base.localAvatar.animFSM.getCurrentState().getName(),))
         #assert(self.debugPrint("handleAvatarControls(task=%s)"%(task,)))
         #assert(self.debugPrint("handleAvatarControls(task=%s)"%(task,)))
         physObject=self.actorNode.getPhysicsObject()
         physObject=self.actorNode.getPhysicsObject()
         #rotAvatarToPhys=Mat3.rotateMatNormaxis(-self.avatarNodePath.getH(), Vec3.up())
         #rotAvatarToPhys=Mat3.rotateMatNormaxis(-self.avatarNodePath.getH(), Vec3.up())
@@ -390,9 +406,9 @@ class ShipPilot(PhysicsWalker.PhysicsWalker):
         slideRight = 0#inputState.isSet("slideRight")
         slideRight = 0#inputState.isSet("slideRight")
         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)
-        avatarSlideSpeed=self.avatarControlForwardSpeed*0.5
+        self.__speed=(forward and self.ship.acceleration or 
+                reverse and -self.ship.reverseAcceleration)
+        avatarSlideSpeed=self.ship.acceleration*0.5
         #self.__slideSpeed=slide and (
         #self.__slideSpeed=slide and (
         #        (turnLeft and -avatarSlideSpeed) or 
         #        (turnLeft and -avatarSlideSpeed) or 
         #        (turnRight and avatarSlideSpeed))
         #        (turnRight and avatarSlideSpeed))
@@ -400,8 +416,11 @@ class ShipPilot(PhysicsWalker.PhysicsWalker):
                 (slideLeft and -avatarSlideSpeed) or 
                 (slideLeft and -avatarSlideSpeed) or 
                 (slideRight and avatarSlideSpeed))
                 (slideRight and avatarSlideSpeed))
         self.__rotationSpeed=not slide and (
         self.__rotationSpeed=not slide and (
-                (turnLeft and self.avatarControlRotateSpeed) or
-                (turnRight and -self.avatarControlRotateSpeed))
+                (turnLeft and self.ship.turnRate) or
+                (turnRight and -self.ship.turnRate))
+           
+        if self.wantDebugIndicator:
+            self.displayDebugInfo()
 
 
         # How far did we move based on the amount of time elapsed?
         # How far did we move based on the amount of time elapsed?
         dt=ClockObject.getGlobalClock().getDt()
         dt=ClockObject.getGlobalClock().getDt()
@@ -425,7 +444,7 @@ class ShipPilot(PhysicsWalker.PhysicsWalker):
         #    # We must copy the vector to preserve it:
         #    # We must copy the vector to preserve it:
         #    self.__oldPosDelta=Vec3(posDelta)
         #    self.__oldPosDelta=Vec3(posDelta)
         if __debug__:
         if __debug__:
-            if self.wantAvatarPhysicsIndicator:
+            if self.wantDebugIndicator:
                 onScreenDebug.add("posDelta1",
                 onScreenDebug.add("posDelta1",
                     self.avatarNodePath.getPosDelta(render).pPrintValues())
                     self.avatarNodePath.getPosDelta(render).pPrintValues())
                 
                 
@@ -596,8 +615,8 @@ class ShipPilot(PhysicsWalker.PhysicsWalker):
             rotMat=Mat3.rotateMatNormaxis(self.avatarNodePath.getH(), Vec3.up())
             rotMat=Mat3.rotateMatNormaxis(self.avatarNodePath.getH(), Vec3.up())
             step=rotMat.xform(self.__vel)
             step=rotMat.xform(self.__vel)
 
 
-            newVector = self.acForce.getLocalVector()+Vec3(step*100.0)
-            maxLen = 500.0
+            newVector = self.acForce.getLocalVector()+Vec3(step)
+            maxLen = self.ship.maxSpeed
             if newVector.length() > maxLen:
             if newVector.length() > maxLen:
                 newVector.normalize()
                 newVector.normalize()
                 newVector *= maxLen
                 newVector *= maxLen
@@ -646,7 +665,7 @@ class ShipPilot(PhysicsWalker.PhysicsWalker):
         assert(self.debugPrint("  velocity=%s"%(velocity,)))
         assert(self.debugPrint("  velocity=%s"%(velocity,)))
         self.priorParent.setVector(Vec3(velocity))
         self.priorParent.setVector(Vec3(velocity))
         if __debug__:
         if __debug__:
-            if self.wantAvatarPhysicsIndicator:
+            if self.wantDebugIndicator:
                 onScreenDebug.add("velocity", velocity.pPrintValues())
                 onScreenDebug.add("velocity", velocity.pPrintValues())
     
     
     def reset(self):
     def reset(self):
@@ -699,7 +718,7 @@ class ShipPilot(PhysicsWalker.PhysicsWalker):
     
     
     if __debug__:
     if __debug__:
         def setupAvatarPhysicsIndicator(self):
         def setupAvatarPhysicsIndicator(self):
-            if self.wantAvatarPhysicsIndicator:
+            if self.wantDebugIndicator:
                 indicator=loader.loadModelCopy('phase_5/models/props/dagger')
                 indicator=loader.loadModelCopy('phase_5/models/props/dagger')
                 #self.walkControls.setAvatarPhysicsIndicator(indicator)
                 #self.walkControls.setAvatarPhysicsIndicator(indicator)