本文整理汇总了C++中btDiscreteDynamicsWorld::removeRigidBody方法的典型用法代码示例。如果您正苦于以下问题:C++ btDiscreteDynamicsWorld::removeRigidBody方法的具体用法?C++ btDiscreteDynamicsWorld::removeRigidBody怎么用?C++ btDiscreteDynamicsWorld::removeRigidBody使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类btDiscreteDynamicsWorld
的用法示例。
在下文中一共展示了btDiscreteDynamicsWorld::removeRigidBody方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: exitPhysics
void triMeshApp::exitPhysics()
{
//cleanup in the reverse order of creation/initialization
if(m_convexRigidBody->getMotionState())
delete m_convexRigidBody->getMotionState();
m_dynamicsWorld->removeRigidBody(m_convexRigidBody);
delete m_convexRigidBody;
if(m_concaveRigidBody->getMotionState())
delete m_concaveRigidBody->getMotionState();
m_dynamicsWorld->removeRigidBody(m_concaveRigidBody);
delete m_concaveRigidBody;
if(m_hfRigidBody->getMotionState())
delete m_hfRigidBody->getMotionState();
m_dynamicsWorld->removeRigidBody(m_hfRigidBody);
delete m_hfRigidBody;
delete m_dynamicsWorld;
delete m_solver;
delete m_broadphase;
delete m_dispatcher;
delete m_collisionConfiguration;
}
示例2:
~World(void) {
for (auto &robot : robots)
dynamics.removeRigidBody(&robot.body);
for (auto &ball : balls)
dynamics.removeRigidBody(&ball.body);
dynamics.removeRigidBody(&field.ground_body);
dynamics.removeRigidBody(&field.ceil_body);
dynamics.removeRigidBody(&field.left_wall_body);
dynamics.removeRigidBody(&field.right_wall_body);
dynamics.removeRigidBody(&field.top_wall_body);
dynamics.removeRigidBody(&field.bottom_wall_body);
dynamics.removeRigidBody(&field.left_goal_body);
dynamics.removeRigidBody(&field.right_goal_body);
}
示例3: UnregisterFromWorld
void UnregisterFromWorld(){
if (mWorld){
auto num = mSelf->getNumConstraintRefs();
for (int i = 0; i < num; ++i){
auto constraint = mSelf->getConstraintRef(i);
assert(constraint);
constraint->setEnabled(false);
}
mWorld->removeRigidBody(mSelf);
mAddedToWorld = false;
}
}
示例4: UnregisterFromWorld
void UnregisterFromWorld(){
if (mWorld){
auto num = mSelf->getNumConstraintRefs();
for (int i = 0; i < num; ++i){
auto constraint = mSelf->getConstraintRef(i);
assert(constraint);
constraint->setEnabled(false);
}
mWorld->removeRigidBody(mSelf);
mAddedToWorld = false;
}
else
Logger::Log(FB_ERROR_LOG_ARG, "No colprovier exists!");
}
示例5: removeAllBodies
void BulletWrapper::removeAllBodies()
{
for (unsigned int i = 0; i < m_BodyDatas.size(); i++)
{
btRigidBody* body = m_BodyDatas[i].m_Body;
m_DynamicsWorld->removeRigidBody(body);
delete body->getMotionState();
delete body;
// Shape is automatically released via the shared pointer
}
m_BodyDatas.clear();
}
示例6: RefreshColShape
// Physics dll internal
void RefreshColShape(IPhysicsInterface* colProvider){
if (!colProvider)
{
Logger::Log(FB_ERROR_LOG_ARG, "No colProvider");
return;
}
mWorld->removeRigidBody(mSelf);
mAddedToWorld = false;
auto prevColShape = mSelf->getCollisionShape();
if (prevColShape){
Physics::GetInstance().Release(prevColShape);
}
btCollisionShape* colShape = 0;
float mass = 1.0f;
auto& physics = Physics::GetInstance();
if (mGroupedRigidBody){
if (colProvider->GetNumColShapes(mGroupIdx) == 0)
return;
colShape = physics.CreateColShapeForGroup(colProvider, mGroupIdx);
mass = colProvider->GetMassForGroup(mGroupIdx);
}
else{
if (colProvider->GetNumColShapes() == 0)
return;
colShape = physics.CreateColShape(colProvider);
mass = colProvider->GetMass();
}
assert(colShape);
mSelf->setCollisionShape(colShape);
if (colShape)
physics.AddRef(colShape);
if (mass > 0 && colShape)
{
btVector3 inertia;
colShape->calculateLocalInertia(mass, inertia);
mSelf->setMassProps(mass, inertia);
}
else{
SetMass(0.f);
}
assert(!mAddedToWorld);
mWorld->addRigidBody(mSelf, colProvider->GetCollisionGroup(), colProvider->GetCollisionMask());
mAddedToWorld = true;
}
示例7: removeBody
void BulletWrapper::removeBody(btRigidBody* bodyToRemove)
{
for (unsigned int i = 0; i < m_BodyDatas.size(); i++)
{
btRigidBody* body = m_BodyDatas[i].m_Body;
if (body == bodyToRemove)
{
m_DynamicsWorld->removeRigidBody(body);
delete body->getMotionState();
delete body;
m_BodyDatas.erase(m_BodyDatas.begin()+i);
break;
}
// Shape is automatically released via the shared pointer
}
}
示例8:
~Impl(){
UnregisterFromWorld();
mSelf->setUserPointer(0);
mGamePtr = 0;
FB_DELETE(mRotationInfo);
RemoveConstraints();
auto colShape = mSelf->getCollisionShape();
if (colShape){
Physics::GetInstance().Release(colShape);
}
if (mWorld){
mWorld->removeRigidBody(mSelf);
mAddedToWorld = false;
}
FB_DELETE_ALIGNED(mSelf->getMotionState());
}