get rid of nullptr and std::function
This commit is contained in:
@@ -256,7 +256,7 @@ void Pinch::initPhysics()
|
|||||||
m_dynamicsWorld->setGravity(gravity);
|
m_dynamicsWorld->setGravity(gravity);
|
||||||
getDeformableDynamicsWorld()->getWorldInfo().m_gravity = gravity;
|
getDeformableDynamicsWorld()->getWorldInfo().m_gravity = gravity;
|
||||||
|
|
||||||
getDeformableDynamicsWorld()->m_beforeSolverCallbacks.push_back(dynamics);
|
getDeformableDynamicsWorld()->setSolverCallback(dynamics);
|
||||||
m_guiHelper->createPhysicsDebugDrawer(m_dynamicsWorld);
|
m_guiHelper->createPhysicsDebugDrawer(m_dynamicsWorld);
|
||||||
|
|
||||||
//create a ground
|
//create a ground
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ struct DeformableContactConstraint
|
|||||||
|
|
||||||
DeformableContactConstraint(const btVector3 dir)
|
DeformableContactConstraint(const btVector3 dir)
|
||||||
{
|
{
|
||||||
m_contact.push_back(nullptr);
|
m_contact.push_back(NULL);
|
||||||
m_direction.push_back(dir);
|
m_direction.push_back(dir);
|
||||||
m_value.push_back(0);
|
m_value.push_back(0);
|
||||||
m_accumulated_normal_impulse.push_back(0);
|
m_accumulated_normal_impulse.push_back(0);
|
||||||
@@ -37,7 +37,7 @@ struct DeformableContactConstraint
|
|||||||
|
|
||||||
DeformableContactConstraint()
|
DeformableContactConstraint()
|
||||||
{
|
{
|
||||||
m_contact.push_back(nullptr);
|
m_contact.push_back(NULL);
|
||||||
m_direction.push_back(btVector3(0,0,0));
|
m_direction.push_back(btVector3(0,0,0));
|
||||||
m_value.push_back(0);
|
m_value.push_back(0);
|
||||||
m_accumulated_normal_impulse.push_back(0);
|
m_accumulated_normal_impulse.push_back(0);
|
||||||
|
|||||||
@@ -59,7 +59,7 @@ void btDeformableContactProjection::update()
|
|||||||
DeformableFrictionConstraint& friction = frictions[i];
|
DeformableFrictionConstraint& friction = frictions[i];
|
||||||
for (int j = 0; j < constraint.m_contact.size(); ++j)
|
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
|
// nothing needs to be done for dirichelet constraints
|
||||||
continue;
|
continue;
|
||||||
|
|||||||
@@ -58,7 +58,7 @@ void btDeformableRigidDynamicsWorld::positionCorrection(btScalar dt)
|
|||||||
{
|
{
|
||||||
const btSoftBody::RContact* c = constraint.m_contact[j];
|
const btSoftBody::RContact* c = constraint.m_contact[j];
|
||||||
// skip anchor points
|
// skip anchor points
|
||||||
if (c == nullptr || c->m_node->m_im == 0)
|
if (c == NULL || c->m_node->m_im == 0)
|
||||||
continue;
|
continue;
|
||||||
const btSoftBody::sCti& cti = c->m_cti;
|
const btSoftBody::sCti& cti = c->m_cti;
|
||||||
btVector3 va(0, 0, 0);
|
btVector3 va(0, 0, 0);
|
||||||
@@ -206,14 +206,24 @@ void btDeformableRigidDynamicsWorld::beforeSolverCallbacks(btScalar timeStep)
|
|||||||
{
|
{
|
||||||
(*m_internalTickCallback)(this, 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)
|
void btDeformableRigidDynamicsWorld::afterSolverCallbacks(btScalar timeStep)
|
||||||
{
|
{
|
||||||
for (int i = 0; i < m_beforeSolverCallbacks.size(); ++i)
|
if (0 != m_solverCallback)
|
||||||
m_beforeSolverCallbacks[i](m_internalTime, this);
|
{
|
||||||
|
(*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)
|
void btDeformableRigidDynamicsWorld::addForce(btSoftBody* psb, btDeformableLagrangianForce* force)
|
||||||
|
|||||||
@@ -75,7 +75,15 @@ public:
|
|||||||
m_sbi.m_sparsesdf.Initialize();
|
m_sbi.m_sparsesdf.Initialize();
|
||||||
m_internalTime = 0.0;
|
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()
|
virtual ~btDeformableRigidDynamicsWorld()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user