Browse Source

setting worldVelocity on self.ship

Dave Schuyler 21 years ago
parent
commit
c87d40274e
1 changed files with 20 additions and 19 deletions
  1. 20 19
      direct/src/controls/ShipPilot.py

+ 20 - 19
direct/src/controls/ShipPilot.py

@@ -478,7 +478,7 @@ class ShipPilot(PhysicsWalker.PhysicsWalker):
             onScreenDebug.add("w acForce len",
                 "% 10.4f"%acForce.length())
 
-            onScreenDebug.add("avatarViscosity",
+            onScreenDebug.add("w avatarViscosity",
                 "% 10.4f"%(self.avatarViscosity.getCoef(),))
 
             #onScreenDebug.add("physMgr",
@@ -507,9 +507,7 @@ class ShipPilot(PhysicsWalker.PhysicsWalker):
         if 0:
             onScreenDebug.add("w priorParent po",
                 self.priorParent.getVector(physObject).pPrintValues())
-        if 0:
-            onScreenDebug.add("w __posDelta",
-                self.__oldPosDelta.pPrintValues())
+
         if 1:
             onScreenDebug.add("w contact",
                 self.actorNode.getContactVector().pPrintValues())
@@ -602,21 +600,7 @@ class ShipPilot(PhysicsWalker.PhysicsWalker):
         if self.needToDeltaPos:
             self.setPriorParentVector()
             self.needToDeltaPos = 0
-        #self.__oldPosDelta = render.getRelativeVector(
-        #    self.avatarNodePath,
-        #    self.avatarNodePath.getPosDelta(render))
-        #self.__oldPosDelta = self.avatarNodePath.getRelativeVector(
-        #    render,
-        #    self.avatarNodePath.getPosDelta(render))
-        self.__oldPosDelta = self.avatarNodePath.getPosDelta(render)
-        self.__oldDt = dt
-        #posDelta = self.avatarNodePath.getPosDelta(render)
-        #if posDelta==Vec3.zero():
-        #    self.priorParent.setVector(self.__oldPosDelta)
-        #else:
-        #    self.priorParent.setVector(Vec3.zero())
-        #    # We must copy the vector to preserve it:
-        #    self.__oldPosDelta=Vec3(posDelta)
+
         airborneHeight=self.getAirborneHeight()
         if airborneHeight > self.highMark:
             self.highMark = airborneHeight
@@ -815,6 +799,23 @@ class ShipPilot(PhysicsWalker.PhysicsWalker):
 
         # Clear the contact vector so we can tell if we contact something next frame:
         self.actorNode.setContactVector(Vec3.zero())
+
+        self.__oldPosDelta = self.avatarNodePath.getPosDelta(render)
+        self.__oldDt = dt
+        assert hasattr(self.ship, 'worldVelocity')
+        self.ship.worldVelocity = self.__oldPosDelta*(1/self.__oldDt)
+        if self.wantDebugIndicator:
+            onScreenDebug.add("w __oldPosDelta vec",
+                self.__oldPosDelta.pPrintValues())
+            onScreenDebug.add("w __oldPosDelta len",
+                "% 10.4f"%self.__oldPosDelta.length())
+            onScreenDebug.add("w __oldDt",
+                "% 10.4f"%self.__oldDt)
+            onScreenDebug.add("w worldVelocity vec",
+                self.ship.worldVelocity.pPrintValues())
+            onScreenDebug.add("w worldVelocity len",
+                "% 10.4f"%self.ship.worldVelocity.length())
+
         return Task.cont
     
     def doDeltaPos(self):