aboutsummaryrefslogtreecommitdiff
path: root/APEX_1.4/samples_v2/SampleBase/ApexController.cpp
diff options
context:
space:
mode:
authorsschirm <[email protected]>2016-12-23 14:20:36 +0100
committersschirm <[email protected]>2016-12-23 14:56:17 +0100
commitef6937e69e8ee3f409cf9d460d5ad300a65d5924 (patch)
tree710426e8daa605551ce3f34b581897011101c30f /APEX_1.4/samples_v2/SampleBase/ApexController.cpp
parentInitial commit: (diff)
downloadphysx-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.cpp25
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);