- Added autosailing

This commit is contained in:
Jason Yeung 2006-10-05 04:35:34 +00:00
parent c464005eec
commit beb9eb025b

View File

@ -63,6 +63,7 @@ class ShipPilot2(PhysicsWalker):
self.__slideSpeed=0.0 self.__slideSpeed=0.0
self.__vel=Vec3(0.0) self.__vel=Vec3(0.0)
self.collisionsActive = 0 self.collisionsActive = 0
self.currentTurning = 0.0
self.isAirborne = 0 self.isAirborne = 0
self.highMark = 0 self.highMark = 0
@ -89,7 +90,8 @@ class ShipPilot2(PhysicsWalker):
#self.setupShip() #self.setupShip()
self.setupPhysics(ship) self.setupPhysics(ship)
self.ship = ship self.ship = ship
"""
#*# Debug: #*# Debug:
if not hasattr(ship, "acceleration"): if not hasattr(ship, "acceleration"):
self.ship.acceleration = 60 self.ship.acceleration = 60
@ -100,7 +102,8 @@ class ShipPilot2(PhysicsWalker):
self.ship.maxTurn = 30 self.ship.maxTurn = 30
self.ship.anchorDrag = .9 self.ship.anchorDrag = .9
self.ship.hullDrag = .9 self.ship.hullDrag = .9
"""
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
@ -593,6 +596,14 @@ class ShipPilot2(PhysicsWalker):
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:
# Check for Auto-Sailing
if self.ship.getIsAutoSailing():
forward = 1
reverse = 0
# How far did we move based on the amount of time elapsed?
dt=ClockObject.getGlobalClock().getDt()
# this was causing the boat to get stuck moving forward or back # this was causing the boat to get stuck moving forward or back
if 0: if 0:
if not hasattr(self, "sailsDeployed"): if not hasattr(self, "sailsDeployed"):
@ -611,8 +622,11 @@ class ShipPilot2(PhysicsWalker):
self.sailsDeployed = -1.0 self.sailsDeployed = -1.0
self.__speed = self.ship.acceleration * self.sailsDeployed self.__speed = self.ship.acceleration * self.sailsDeployed
else: else:
self.__speed=(forward and self.ship.acceleration or self.__speed=(forward and self.ship.acceleration) or \
reverse and -self.ship.reverseAcceleration) (reverse and -self.ship.reverseAcceleration)
#self.__speed=(forward and min(dt*(self.__speed + self.ship.acceleration), self.ship.maxSpeed) or
# reverse and min(dt*(self.__speed - self.ship.reverseAcceleration), self.ship.maxReverseSpeed))
avatarSlideSpeed=self.ship.acceleration*0.5 avatarSlideSpeed=self.ship.acceleration*0.5
#self.__slideSpeed=slide and ( #self.__slideSpeed=slide and (
# (turnLeft and -avatarSlideSpeed) or # (turnLeft and -avatarSlideSpeed) or
@ -623,8 +637,7 @@ class ShipPilot2(PhysicsWalker):
self.__rotationSpeed=not slide and ( self.__rotationSpeed=not slide and (
(turnLeft and self.ship.turnRate) or (turnLeft and self.ship.turnRate) or
(turnRight and -self.ship.turnRate)) (turnRight and -self.ship.turnRate))
# Enable debug turbo mode # Enable debug turbo mode
maxSpeed = self.ship.maxSpeed maxSpeed = self.ship.maxSpeed
if __debug__: if __debug__:
@ -634,11 +647,8 @@ class ShipPilot2(PhysicsWalker):
self.__slideSpeed*=4.0 self.__slideSpeed*=4.0
self.__rotationSpeed*=1.25 self.__rotationSpeed*=1.25
maxSpeed = self.ship.maxSpeed * 4.0 maxSpeed = self.ship.maxSpeed * 4.0
#*# #*#
if not hasattr(self, "currentTurning"):
self.currentTurning = 0.0
self.currentTurning += self.__rotationSpeed self.currentTurning += self.__rotationSpeed
if self.currentTurning > self.ship.maxTurn: if self.currentTurning > self.ship.maxTurn:
self.currentTurning = self.ship.maxTurn self.currentTurning = self.ship.maxTurn
@ -659,9 +669,6 @@ class ShipPilot2(PhysicsWalker):
if self.wantDebugIndicator: if self.wantDebugIndicator:
self.displayDebugInfo() self.displayDebugInfo()
# How far did we move based on the amount of time elapsed?
dt=ClockObject.getGlobalClock().getDt()
if self.needToDeltaPos: if self.needToDeltaPos:
self.setPriorParentVector() self.setPriorParentVector()
self.needToDeltaPos = 0 self.needToDeltaPos = 0