added btInternalTickCallback, see btDynamicsWorld::setInternalTickCallback

Thanks chunky!

http://www.bulletphysics.com/Bullet/phpBB3/viewtopic.php?f=9&t=1991
This commit is contained in:
erwin.coumans
2008-04-08 02:51:49 +00:00
parent 2997b95f63
commit b32d6f790f
3 changed files with 19 additions and 4 deletions

View File

@@ -77,7 +77,6 @@ void btContinuousDynamicsWorld::internalSingleStepSimulation( btScalar timeStep)
solveConstraints(getSolverInfo()); solveConstraints(getSolverInfo());
///CallbackTriggers(); ///CallbackTriggers();
calculateTimeOfImpacts(timeStep); calculateTimeOfImpacts(timeStep);
btScalar toi = dispatchInfo.m_timeOfImpact; btScalar toi = dispatchInfo.m_timeOfImpact;
@@ -96,6 +95,9 @@ void btContinuousDynamicsWorld::internalSingleStepSimulation( btScalar timeStep)
updateActivationState( timeStep ); updateActivationState( timeStep );
if(0 != m_internalTickCallback) {
(*m_internalTickCallback)(this, timeStep);
}
} }
void btContinuousDynamicsWorld::calculateTimeOfImpacts(btScalar timeStep) void btContinuousDynamicsWorld::calculateTimeOfImpacts(btScalar timeStep)
@@ -188,3 +190,4 @@ void btContinuousDynamicsWorld::updateTemporalAabbs(btScalar timeStep)
} }

View File

@@ -375,6 +375,9 @@ void btDiscreteDynamicsWorld::internalSingleStepSimulation(btScalar timeStep)
updateActivationState( timeStep ); updateActivationState( timeStep );
if(0 != m_internalTickCallback) {
(*m_internalTickCallback)(this, timeStep);
}
} }
void btDiscreteDynamicsWorld::setGravity(const btVector3& gravity) void btDiscreteDynamicsWorld::setGravity(const btVector3& gravity)

View File

@@ -21,6 +21,9 @@ class btTypedConstraint;
class btRaycastVehicle; class btRaycastVehicle;
class btConstraintSolver; class btConstraintSolver;
class btDynamicsWorld;
/// Type for the callback for each tick
typedef void (*btInternalTickCallback)(const btDynamicsWorld *world, btScalar timeStep);
enum btDynamicsWorldType enum btDynamicsWorldType
{ {
@@ -36,7 +39,7 @@ class btDynamicsWorld : public btCollisionWorld
btDynamicsWorld(btDispatcher* dispatcher,btBroadphaseInterface* broadphase,btCollisionConfiguration* collisionConfiguration) btDynamicsWorld(btDispatcher* dispatcher,btBroadphaseInterface* broadphase,btCollisionConfiguration* collisionConfiguration)
:btCollisionWorld(dispatcher,broadphase,collisionConfiguration) :btCollisionWorld(dispatcher,broadphase,collisionConfiguration), m_internalTickCallback(0)
{ {
} }
@@ -81,8 +84,14 @@ class btDynamicsWorld : public btCollisionWorld
virtual void clearForces() = 0; virtual void clearForces() = 0;
/// Set the callback for when an internal tick (simulation substep) happens
void setInternalTickCallback(btInternalTickCallback cb) { m_internalTickCallback = cb; }
btInternalTickCallback m_internalTickCallback;
}; };
#endif //BT_DYNAMICS_WORLD_H #endif //BT_DYNAMICS_WORLD_H