diff options
author | Xuchen Han <xuchenhan@xuchenhan-macbookpro.roam.corp.google.com> | 2019-08-03 00:10:36 -0700 |
---|---|---|
committer | Xuchen Han <xuchenhan@xuchenhan-macbookpro.roam.corp.google.com> | 2019-08-03 00:12:34 -0700 |
commit | c5d84c1a0b5f1120f0a392b8894b0d685193864b (patch) | |
tree | 797c0c9ad83420f762adc41cd24bcf9ea9a6913d | |
parent | 021cbb2a0ea0e5e7a4b19908bfd8663b2300b82a (diff) | |
download | bullet3-c5d84c1a0b5f1120f0a392b8894b0d685193864b.tar.gz |
get rid of nullptr and std::function
-rw-r--r-- | examples/Pinch/Pinch.cpp | 2 | ||||
-rw-r--r-- | src/BulletSoftBody/btCGProjection.h | 4 | ||||
-rw-r--r-- | src/BulletSoftBody/btDeformableContactProjection.cpp | 2 | ||||
-rw-r--r-- | src/BulletSoftBody/btDeformableRigidDynamicsWorld.cpp | 20 | ||||
-rw-r--r-- | src/BulletSoftBody/btDeformableRigidDynamicsWorld.h | 10 |
5 files changed, 28 insertions, 10 deletions
diff --git a/examples/Pinch/Pinch.cpp b/examples/Pinch/Pinch.cpp index 4252a47b8..1e4afb748 100644 --- a/examples/Pinch/Pinch.cpp +++ b/examples/Pinch/Pinch.cpp @@ -256,7 +256,7 @@ void Pinch::initPhysics() m_dynamicsWorld->setGravity(gravity); getDeformableDynamicsWorld()->getWorldInfo().m_gravity = gravity; - getDeformableDynamicsWorld()->m_beforeSolverCallbacks.push_back(dynamics); + getDeformableDynamicsWorld()->setSolverCallback(dynamics); m_guiHelper->createPhysicsDebugDrawer(m_dynamicsWorld); //create a ground diff --git a/src/BulletSoftBody/btCGProjection.h b/src/BulletSoftBody/btCGProjection.h index 144208908..e11ecf817 100644 --- a/src/BulletSoftBody/btCGProjection.h +++ b/src/BulletSoftBody/btCGProjection.h @@ -29,7 +29,7 @@ struct DeformableContactConstraint DeformableContactConstraint(const btVector3 dir) { - m_contact.push_back(nullptr); + m_contact.push_back(NULL); m_direction.push_back(dir); m_value.push_back(0); m_accumulated_normal_impulse.push_back(0); @@ -37,7 +37,7 @@ struct DeformableContactConstraint DeformableContactConstraint() { - m_contact.push_back(nullptr); + m_contact.push_back(NULL); m_direction.push_back(btVector3(0,0,0)); m_value.push_back(0); m_accumulated_normal_impulse.push_back(0); diff --git a/src/BulletSoftBody/btDeformableContactProjection.cpp b/src/BulletSoftBody/btDeformableContactProjection.cpp index 5a3f9e555..edee3126e 100644 --- a/src/BulletSoftBody/btDeformableContactProjection.cpp +++ b/src/BulletSoftBody/btDeformableContactProjection.cpp @@ -59,7 +59,7 @@ void btDeformableContactProjection::update() DeformableFrictionConstraint& friction = frictions[i]; for (int j = 0; j < constraint.m_contact.size(); ++j) { - if (constraint.m_contact[j] == nullptr) + if (constraint.m_contact[j] == NULL) { // nothing needs to be done for dirichelet constraints continue; diff --git a/src/BulletSoftBody/btDeformableRigidDynamicsWorld.cpp b/src/BulletSoftBody/btDeformableRigidDynamicsWorld.cpp index 6e1ed75bd..de39778ad 100644 --- a/src/BulletSoftBody/btDeformableRigidDynamicsWorld.cpp +++ b/src/BulletSoftBody/btDeformableRigidDynamicsWorld.cpp @@ -58,7 +58,7 @@ void btDeformableRigidDynamicsWorld::positionCorrection(btScalar dt) { const btSoftBody::RContact* c = constraint.m_contact[j]; // skip anchor points - if (c == nullptr || c->m_node->m_im == 0) + if (c == NULL || c->m_node->m_im == 0) continue; const btSoftBody::sCti& cti = c->m_cti; btVector3 va(0, 0, 0); @@ -206,14 +206,24 @@ void btDeformableRigidDynamicsWorld::beforeSolverCallbacks(btScalar timeStep) { (*m_internalTickCallback)(this, timeStep); } - for (int i = 0; i < m_beforeSolverCallbacks.size(); ++i) - m_beforeSolverCallbacks[i](m_internalTime, this); + + if (0 != m_solverCallback) + { + (*m_solverCallback)(m_internalTime, this); + } + +// for (int i = 0; i < m_beforeSolverCallbacks.size(); ++i) +// m_beforeSolverCallbacks[i](m_internalTime, this); } void btDeformableRigidDynamicsWorld::afterSolverCallbacks(btScalar timeStep) { - for (int i = 0; i < m_beforeSolverCallbacks.size(); ++i) - m_beforeSolverCallbacks[i](m_internalTime, this); + if (0 != m_solverCallback) + { + (*m_solverCallback)(m_internalTime, this); + } +// for (int i = 0; i < m_beforeSolverCallbacks.size(); ++i) +// m_beforeSolverCallbacks[i](m_internalTime, this); } void btDeformableRigidDynamicsWorld::addForce(btSoftBody* psb, btDeformableLagrangianForce* force) diff --git a/src/BulletSoftBody/btDeformableRigidDynamicsWorld.h b/src/BulletSoftBody/btDeformableRigidDynamicsWorld.h index 779a88ee3..47284e7fb 100644 --- a/src/BulletSoftBody/btDeformableRigidDynamicsWorld.h +++ b/src/BulletSoftBody/btDeformableRigidDynamicsWorld.h @@ -75,7 +75,15 @@ public: m_sbi.m_sparsesdf.Initialize(); m_internalTime = 0.0; } - btAlignedObjectArray<std::function<void(btScalar, btDeformableRigidDynamicsWorld*)> > m_beforeSolverCallbacks; +// btAlignedObjectArray<std::function<void(btScalar, btDeformableRigidDynamicsWorld*)> > m_beforeSolverCallbacks; + typedef void (*btSolverCallback)(btScalar time, btDeformableRigidDynamicsWorld* world); + btSolverCallback m_solverCallback; + + void setSolverCallback(btSolverCallback cb) + { + m_solverCallback = cb; + } + virtual ~btDeformableRigidDynamicsWorld() { } |