summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXuchen Han <xuchenhan@xuchenhan-macbookpro.roam.corp.google.com>2019-08-03 00:10:36 -0700
committerXuchen Han <xuchenhan@xuchenhan-macbookpro.roam.corp.google.com>2019-08-03 00:12:34 -0700
commitc5d84c1a0b5f1120f0a392b8894b0d685193864b (patch)
tree797c0c9ad83420f762adc41cd24bcf9ea9a6913d
parent021cbb2a0ea0e5e7a4b19908bfd8663b2300b82a (diff)
downloadbullet3-c5d84c1a0b5f1120f0a392b8894b0d685193864b.tar.gz
get rid of nullptr and std::function
-rw-r--r--examples/Pinch/Pinch.cpp2
-rw-r--r--src/BulletSoftBody/btCGProjection.h4
-rw-r--r--src/BulletSoftBody/btDeformableContactProjection.cpp2
-rw-r--r--src/BulletSoftBody/btDeformableRigidDynamicsWorld.cpp20
-rw-r--r--src/BulletSoftBody/btDeformableRigidDynamicsWorld.h10
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()
{
}