Implemented tick callback for BulletWorld.
This commit is contained in:
parent
56334e73e8
commit
cc79e24c6c
|
|
@ -852,10 +852,11 @@ clear_contact_added_callback() {
|
|||
// Description:
|
||||
////////////////////////////////////////////////////////////////////
|
||||
void BulletWorld::
|
||||
set_tick_callback(CallbackObject *obj) {
|
||||
set_tick_callback(CallbackObject *obj, bool is_pretick) {
|
||||
|
||||
nassertv(obj != NULL);
|
||||
_tick_callback_obj = obj;
|
||||
_world->setInternalTickCallback(&BulletWorld::tick_callback, this, is_pretick);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
|
@ -867,6 +868,7 @@ void BulletWorld::
|
|||
clear_tick_callback() {
|
||||
|
||||
_tick_callback_obj = NULL;
|
||||
_world->setInternalTickCallback(NULL);
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////
|
||||
|
|
@ -880,8 +882,11 @@ tick_callback(btDynamicsWorld *world, btScalar timestep) {
|
|||
nassertv(world->getWorldUserInfo());
|
||||
|
||||
BulletWorld *w = static_cast<BulletWorld *>(world->getWorldUserInfo());
|
||||
BulletTickCallbackData cbdata(timestep);
|
||||
w->_tick_callback_obj->do_callback(&cbdata);
|
||||
CallbackObject *obj = w->_tick_callback_obj;
|
||||
if (obj) {
|
||||
BulletTickCallbackData cbdata(timestep);
|
||||
obj->do_callback(&cbdata);
|
||||
}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
|
@ -895,7 +900,7 @@ set_filter_callback(CallbackObject *obj) {
|
|||
nassertv(obj != NULL);
|
||||
|
||||
if (bullet_filter_algorithm != FA_callback) {
|
||||
bullet_cat.warning() << "filter algorithm is not 'python-callback'" << endl;
|
||||
bullet_cat.warning() << "filter algorithm is not 'callback'" << endl;
|
||||
}
|
||||
|
||||
_filter_cb3._filter_callback_obj = obj;
|
||||
|
|
|
|||
|
|
@ -139,7 +139,7 @@ PUBLISHED:
|
|||
void set_contact_added_callback(CallbackObject *obj);
|
||||
void clear_contact_added_callback();
|
||||
|
||||
void set_tick_callback(CallbackObject *obj);
|
||||
void set_tick_callback(CallbackObject *obj, bool is_pretick=false);
|
||||
void clear_tick_callback();
|
||||
|
||||
void set_filter_callback(CallbackObject *obj);
|
||||
|
|
@ -184,7 +184,7 @@ private:
|
|||
void sync_p2b(PN_stdfloat dt, int num_substeps);
|
||||
void sync_b2p();
|
||||
|
||||
void tick_callback(btDynamicsWorld *world, btScalar timestep);
|
||||
static void tick_callback(btDynamicsWorld *world, btScalar timestep);
|
||||
|
||||
typedef PTA(PT(BulletRigidBodyNode)) BulletRigidBodies;
|
||||
typedef PTA(PT(BulletSoftBodyNode)) BulletSoftBodies;
|
||||
|
|
|
|||
Loading…
Reference in New Issue