From 79ef84f34463f6e00f0ad2317af974eaa7dc6005 Mon Sep 17 00:00:00 2001 From: "erwin.coumans" Date: Tue, 23 Feb 2010 02:33:11 +0000 Subject: [PATCH] fix Issue 345 with kinematic objects Thanks to nanocell http://code.google.com/p/bullet/issues/detail?id=345 --- src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp b/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp index 1c9b74b7e..a88ed1caf 100644 --- a/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp +++ b/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp @@ -267,12 +267,14 @@ int btDiscreteDynamicsWorld::stepSimulation( btScalar timeStep,int maxSubSteps, if (numSimulationSubSteps) { - saveKinematicState(fixedTimeStep); + //clamp the number of substeps, to prevent simulation grinding spiralling down to a halt + int clampedSimulationSteps = (numSimulationSubSteps > maxSubSteps)? maxSubSteps : numSimulationSubSteps; + + saveKinematicState(fixedTimeStep*clampedSimulationSteps); applyGravity(); - //clamp the number of substeps, to prevent simulation grinding spiralling down to a halt - int clampedSimulationSteps = (numSimulationSubSteps > maxSubSteps)? maxSubSteps : numSimulationSubSteps; + for (int i=0;i