diff options
| author | sschirm <[email protected]> | 2016-12-23 14:20:36 +0100 |
|---|---|---|
| committer | sschirm <[email protected]> | 2016-12-23 14:56:17 +0100 |
| commit | ef6937e69e8ee3f409cf9d460d5ad300a65d5924 (patch) | |
| tree | 710426e8daa605551ce3f34b581897011101c30f /APEX_1.4/samples_v2/SampleBase/ApexController.cpp | |
| parent | Initial commit: (diff) | |
| download | physx-3.4-ef6937e69e8ee3f409cf9d460d5ad300a65d5924.tar.xz physx-3.4-ef6937e69e8ee3f409cf9d460d5ad300a65d5924.zip | |
PhysX 3.4 / APEX 1.4 release candidate @21506124
Diffstat (limited to 'APEX_1.4/samples_v2/SampleBase/ApexController.cpp')
| -rw-r--r-- | APEX_1.4/samples_v2/SampleBase/ApexController.cpp | 25 |
1 files changed, 23 insertions, 2 deletions
diff --git a/APEX_1.4/samples_v2/SampleBase/ApexController.cpp b/APEX_1.4/samples_v2/SampleBase/ApexController.cpp index d8c7eb67..cf63f274 100644 --- a/APEX_1.4/samples_v2/SampleBase/ApexController.cpp +++ b/APEX_1.4/samples_v2/SampleBase/ApexController.cpp @@ -32,6 +32,9 @@ ApexController::ApexController(PxSimulationFilterShader filterShader, CFirstPers , mFilterShader(filterShader) , mLastSimulationTime(0) , mPaused(false) +, mUseFixedTimestep(true) +, mFixedTimestep(1.0/60.0) +, mTimeRemainder(0.0) { QueryPerformanceFrequency(&mPerformanceFreq); } @@ -271,8 +274,26 @@ void ApexController::Animate(double dt) if (mPaused) return; - // slower physics if fps is too low - dt = PxClamp(dt, 0.001, 0.33); + if (mFixedTimestep) + { + mTimeRemainder += dt; + if (mTimeRemainder <= 0.0) + { + return; + } + mTimeRemainder -= mFixedTimestep; + if (mTimeRemainder > 0.0) + { + // slower physics if fps is below 1/mFixedTimestep + mTimeRemainder = 0.0; + } + dt = mFixedTimestep; + } + else + { + // slower physics if fps is too low + dt = PxClamp(dt, 0.001, 0.33); + } LARGE_INTEGER time0; QueryPerformanceCounter(&time0); |