diff options
author | aap <aap@papnet.eu> | 2021-01-02 20:15:01 +0100 |
---|---|---|
committer | aap <aap@papnet.eu> | 2021-01-02 20:15:01 +0100 |
commit | 78fed0dfe73fa3abf2e9feebfda35256fe38d930 (patch) | |
tree | 7a497cc59b1ce7b5046fc04b5196f44fbb2b40be /src/vehicles | |
parent | fix fix (diff) | |
download | re3-78fed0dfe73fa3abf2e9feebfda35256fe38d930.tar re3-78fed0dfe73fa3abf2e9feebfda35256fe38d930.tar.gz re3-78fed0dfe73fa3abf2e9feebfda35256fe38d930.tar.bz2 re3-78fed0dfe73fa3abf2e9feebfda35256fe38d930.tar.lz re3-78fed0dfe73fa3abf2e9feebfda35256fe38d930.tar.xz re3-78fed0dfe73fa3abf2e9feebfda35256fe38d930.tar.zst re3-78fed0dfe73fa3abf2e9feebfda35256fe38d930.zip |
Diffstat (limited to 'src/vehicles')
-rw-r--r-- | src/vehicles/HandlingMgr.cpp | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/src/vehicles/HandlingMgr.cpp b/src/vehicles/HandlingMgr.cpp index be8150fb..7b60acf2 100644 --- a/src/vehicles/HandlingMgr.cpp +++ b/src/vehicles/HandlingMgr.cpp @@ -202,15 +202,21 @@ cHandlingDataMgr::ConvertDataToGameUnits(tHandlingData *handling) handling->fInvMass = 1.0f/handling->fMass; handling->fBuoyancy = 100.0f/handling->nPercentSubmerged * GRAVITY*handling->fMass; - // What the hell is going on here? - specificVolume = handling->Dimension.x*handling->Dimension.z*0.5f / handling->fMass; // ? + // Don't quite understand this. What seems to be going on is that + // we calculate a drag (air resistance) deceleration for a given velocity and + // find the intersection between that and the max engine acceleration. + // at that point the car cannot accelerate any further and we've found the max velocity. a = 0.0f; b = 100.0f; velocity = handling->Transmission.fMaxVelocity; while(a < b && velocity > 0.0f){ velocity -= 0.01f; + // what's the 1/6? a = handling->Transmission.fEngineAcceleration/6.0f; - b = -velocity * (1.0f/(specificVolume * sq(velocity) + 1.0f) - 1.0f); + // no density or drag coefficient here... + float a_drag = 0.5f*SQR(velocity) * handling->Dimension.x*handling->Dimension.z / handling->fMass; + // can't make sense of this... maybe v - v/(drag + 1) ? but that doesn't make so much sense either + b = -velocity * (1.0f/(a_drag + 1.0f) - 1.0f); } if(handling->nIdentifier == HANDLING_RCBANDIT){ |