def getTurn(controller): # car obj carObj = controller.owner reverse = controller.sensors['Reverse'] if reverse.positive == True: return carObj['reverseTurn'] #current and max car speed carSpeed = carObj.getLinearVelocity(True).y carMaxSpeed = carObj['maxSpeed'] #interpolation switch speed: #maxSpeed/4 switchSpeed = carMaxSpeed/4 #interpolate based on current speed if carSpeed < switchSpeed: return tools3d.linearInterpolation( carSpeed, 0,carObj['minSpeedTurn'], switchSpeed,carObj['switchSpeedTurn']) else: return tools3d.linearInterpolation( carSpeed, switchSpeed,carObj['switchSpeedTurn'], carMaxSpeed,carObj['maxSpeedTurn'])
def execute(self,bgeCar): carspeed = bgeCar.getSpeed() #if car is stopped, we send gas message and return if carspeed == 0: bge.logic.sendMessage(bgeCar.carname + '_Gas') return #deduce car target speed by interpolation target_speed = tools3d.linearInterpolation( bgeCar.dist_next_interface, 0, bgeCar.tiManager.getInterfaceTargetSpeed(bgeCar.next_interface_idx), bgeCar.tiManager.getDistanceWithPreviousInterface(bgeCar.next_interface_idx), bgeCar.tiManager.getPreviousInterfaceTargetSpeed(bgeCar.next_interface_idx)) if carspeed > target_speed: bge.logic.sendMessage(bgeCar.carname + '_Brake') else: bge.logic.sendMessage(bgeCar.carname + '_Gas')