char processBrakeCommand(char commandCode, void* commandData, void* responseData) { switch(commandCode) { case SET_BRAKE: setBrake(*((char*)commandData)); break; case GET_BRAKE: getBrake((char*) responseData); break; } }
void Vehicle::setInput(const VehicleInput & input) { setSteering(input.controls[VehicleInput::STEER]); setThrottle(input.controls[VehicleInput::THROTTLE]); setBrake(input.controls[VehicleInput::BRAKE]); setHandBrake(input.controls[VehicleInput::HBRAKE]); setClutch(1 - input.controls[VehicleInput::CLUTCH]); setNOS(input.controls[VehicleInput::NOS]); setGear(transmission.getGear() + input.shiftgear); autoshift = (input.logic & VehicleInput::AUTOSHIFT); autoclutch = (input.logic & VehicleInput::AUTOCLUTCH); setABS(input.logic & VehicleInput::ABS); setTCS(input.logic & VehicleInput::TCS); if (input.logic & VehicleInput::STARTENG) startEngine(); if (input.logic & VehicleInput::RECOVER) rolloverRecover(); }
bool GameDriver::prerenderUpdate(float frameTime) { auto car = mWorld.getCar(); if(!mBrake) car->setThrottle(mThrottle); if(!mThrottle) car->setBrake(mBrake); if((mSteeringVelocity > 0.0f && mSteering < 0.0f) || (mSteeringVelocity < 0.0f && mSteering > 0.0f)) mSteering = 0.0f; if(mSteeringVelocity) { mSteering += mSteeringVelocity * frameTime; mSteering = Common::clamp(-1.0f, mSteering, 1.0f); } if(!mSteeringWithMouse && mSteeringVelocity == 0.0f && mSteering != 0.0f) { if(fabs(mSteering) < 4.0f * frameTime) mSteering = 0.0f; else if(mSteering < 0.0f) mSteering += 4.0f * frameTime; else if(mSteering > 0.0f) mSteering -= 4.0f * frameTime; } car->setSteering(mSteering); mWorld.updatePhysics(frameTime); mZoom += mZoomSpeed * frameTime; mZoom = mRenderer.setZoom(mZoom); mRenderer.setSteering(mThrottle, mBrake, mSteering); if(mDebugDisplay.check(frameTime)) { mRenderer.updateDebug(&mWorld); } return false; }