sio2PhysicRemoveObject bug fix
2 posters
sio2PhysicRemoveObject bug fix
- Code:
void sio2PhysicRemoveObject( SIO2physic *_SIO2physic,
SIO2object *_SIO2object )
{
int i = 0;
if( !_SIO2object->_btRigidBody && !_SIO2object->_btSoftBody )
{ return; }
while( i != _SIO2physic->_btSoftRigidDynamicsWorld->getNumCollisionObjects() )
{
btCollisionObject *_btCollisionObject = _SIO2physic->_btSoftRigidDynamicsWorld->getCollisionObjectArray()[ i ];
btRigidBody *_btRigidBody = btRigidBody::upcast( _btCollisionObject );
btSoftBody *_btSoftBody = btSoftBody::upcast( _btCollisionObject );
if( _btRigidBody == _SIO2object->_btRigidBody && _btRigidBody ) ///<<<<<< fixed
{
delete _btRigidBody->getCollisionShape();
delete _btRigidBody->getMotionState();
_SIO2physic->_btSoftRigidDynamicsWorld->removeRigidBody( _btRigidBody );
_SIO2physic->_btSoftRigidDynamicsWorld->removeCollisionObject( _btCollisionObject );
delete _btRigidBody;
_SIO2object->_btRigidBody = NULL;
break;
}
else if( _btSoftBody == _SIO2object->_btSoftBody && _btSoftBody) ///<<<<<< fixed
{
_SIO2physic->_btSoftRigidDynamicsWorld->removeSoftBody( _btSoftBody );
_SIO2physic->_btSoftRigidDynamicsWorld->removeCollisionObject( _btCollisionObject );
delete _btSoftBody;
_SIO2object->_btSoftBody = NULL;
break;
}
++i;
}
}
sw- Posts : 73
Join date : 2008-10-12
Permissions in this forum:
You cannot reply to topics in this forum
|
|