mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-02-19 14:43:47 +00:00
Merge pull request #49 from eightyeight/vehicle-steering
Vehicle steering return-to-centre merged into development branch.
This commit is contained in:
commit
b2e2c7b50f
2 changed files with 39 additions and 0 deletions
|
|
@ -172,6 +172,10 @@ VehicleData::VehicleData()
|
|||
jetEnergyDrain = 0.8f;
|
||||
minJetEnergy = 1;
|
||||
|
||||
steeringReturn = 0.0f;
|
||||
steeringReturnSpeedScale = 0.01f;
|
||||
powerSteering = false;
|
||||
|
||||
for (S32 i = 0; i < Body::MaxSounds; i++)
|
||||
body.sound[i] = 0;
|
||||
|
||||
|
|
@ -292,6 +296,10 @@ void VehicleData::packData(BitStream* stream)
|
|||
stream->write(jetEnergyDrain);
|
||||
stream->write(minJetEnergy);
|
||||
|
||||
stream->write(steeringReturn);
|
||||
stream->write(steeringReturnSpeedScale);
|
||||
stream->writeFlag(powerSteering);
|
||||
|
||||
stream->writeFlag(cameraRoll);
|
||||
stream->write(cameraLag);
|
||||
stream->write(cameraDecay);
|
||||
|
|
@ -384,6 +392,10 @@ void VehicleData::unpackData(BitStream* stream)
|
|||
stream->read(&jetEnergyDrain);
|
||||
stream->read(&minJetEnergy);
|
||||
|
||||
stream->read(&steeringReturn);
|
||||
stream->read(&steeringReturnSpeedScale);
|
||||
powerSteering = stream->readFlag();
|
||||
|
||||
cameraRoll = stream->readFlag();
|
||||
stream->read(&cameraLag);
|
||||
stream->read(&cameraDecay);
|
||||
|
|
@ -462,6 +474,13 @@ void VehicleData::initPersistFields()
|
|||
addField( "minJetEnergy", TypeF32, Offset(minJetEnergy, VehicleData),
|
||||
"Minimum vehicle energy level to begin jetting." );
|
||||
|
||||
addField( "steeringReturn", TypeF32, Offset(steeringReturn, VehicleData),
|
||||
"Rate at which the vehicle's steering returns to forwards when it is moving." );
|
||||
addField( "steeringReturnSpeedScale", TypeF32, Offset(steeringReturnSpeedScale, VehicleData),
|
||||
"Amount of effect the vehicle's speed has on its rate of steering return." );
|
||||
addField( "powerSteering", TypeBool, Offset(powerSteering, VehicleData),
|
||||
"If true, steering does not auto-centre while the vehicle is being steered by its driver." );
|
||||
|
||||
addField( "massCenter", TypePoint3F, Offset(massCenter, VehicleData),
|
||||
"Defines the vehicle's center of mass (offset from the origin of the model)." );
|
||||
addField( "massBox", TypePoint3F, Offset(massBox, VehicleData),
|
||||
|
|
@ -1085,6 +1104,22 @@ void Vehicle::updateMove(const Move* move)
|
|||
mSteering.y = 0;
|
||||
}
|
||||
|
||||
// Steering return
|
||||
if(mDataBlock->steeringReturn > 0.0f &&
|
||||
(!mDataBlock->powerSteering || (move->yaw == 0.0f && move->pitch == 0.0f)))
|
||||
{
|
||||
Point2F returnAmount(mSteering.x * mDataBlock->steeringReturn * TickSec,
|
||||
mSteering.y * mDataBlock->steeringReturn * TickSec);
|
||||
if(mDataBlock->steeringReturnSpeedScale > 0.0f)
|
||||
{
|
||||
Point3F vel;
|
||||
mWorldToObj.mulV(getVelocity(), &vel);
|
||||
returnAmount += Point2F(mSteering.x * vel.y * mDataBlock->steeringReturnSpeedScale * TickSec,
|
||||
mSteering.y * vel.y * mDataBlock->steeringReturnSpeedScale * TickSec);
|
||||
}
|
||||
mSteering -= returnAmount;
|
||||
}
|
||||
|
||||
// Jetting flag
|
||||
if (move->trigger[3]) {
|
||||
if (!mJetting && getEnergyLevel() >= mDataBlock->minJetEnergy)
|
||||
|
|
|
|||
|
|
@ -107,6 +107,10 @@ struct VehicleData: public ShapeBaseData
|
|||
F32 jetEnergyDrain; ///< Energy drain/tick
|
||||
F32 minJetEnergy;
|
||||
|
||||
F32 steeringReturn;
|
||||
F32 steeringReturnSpeedScale;
|
||||
bool powerSteering;
|
||||
|
||||
ParticleEmitterData * dustEmitter;
|
||||
S32 dustID;
|
||||
F32 triggerDustHeight; ///< height vehicle has to be under to kick up dust
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue