check for valid pointer of CcdPhysicsEnvironment before removal
also added additional assignment to motionstate, when 'setposition'/'setorientation' is called.
This commit is contained in:
@@ -104,7 +104,9 @@ void CcdPhysicsController::CreateRigidbody()
|
|||||||
CcdPhysicsController::~CcdPhysicsController()
|
CcdPhysicsController::~CcdPhysicsController()
|
||||||
{
|
{
|
||||||
//will be reference counted, due to sharing
|
//will be reference counted, due to sharing
|
||||||
|
if (m_cci.m_physicsEnv)
|
||||||
m_cci.m_physicsEnv->removeCcdPhysicsController(this);
|
m_cci.m_physicsEnv->removeCcdPhysicsController(this);
|
||||||
|
|
||||||
delete m_MotionState;
|
delete m_MotionState;
|
||||||
delete m_body;
|
delete m_body;
|
||||||
}
|
}
|
||||||
@@ -274,7 +276,7 @@ void CcdPhysicsController::getOrientation(float &quatImag0,float &quatImag1,flo
|
|||||||
void CcdPhysicsController::setOrientation(float quatImag0,float quatImag1,float quatImag2,float quatReal)
|
void CcdPhysicsController::setOrientation(float quatImag0,float quatImag1,float quatImag2,float quatReal)
|
||||||
{
|
{
|
||||||
m_body->activate();
|
m_body->activate();
|
||||||
|
m_MotionState->setWorldOrientation(quatImag0,quatImag1,quatImag2,quatReal);
|
||||||
SimdTransform xform = m_body->getCenterOfMassTransform();
|
SimdTransform xform = m_body->getCenterOfMassTransform();
|
||||||
xform.setRotation(SimdQuaternion(quatImag0,quatImag1,quatImag2,quatReal));
|
xform.setRotation(SimdQuaternion(quatImag0,quatImag1,quatImag2,quatReal));
|
||||||
m_body->setCenterOfMassTransform(xform);
|
m_body->setCenterOfMassTransform(xform);
|
||||||
@@ -284,7 +286,7 @@ void CcdPhysicsController::setOrientation(float quatImag0,float quatImag1,float
|
|||||||
void CcdPhysicsController::setPosition(float posX,float posY,float posZ)
|
void CcdPhysicsController::setPosition(float posX,float posY,float posZ)
|
||||||
{
|
{
|
||||||
m_body->activate();
|
m_body->activate();
|
||||||
|
m_MotionState->setWorldPosition(posX,posY,posZ);
|
||||||
SimdTransform xform = m_body->getCenterOfMassTransform();
|
SimdTransform xform = m_body->getCenterOfMassTransform();
|
||||||
xform.setOrigin(SimdVector3(posX,posY,posZ));
|
xform.setOrigin(SimdVector3(posX,posY,posZ));
|
||||||
m_body->setCenterOfMassTransform(xform);
|
m_body->setCenterOfMassTransform(xform);
|
||||||
|
|||||||
Reference in New Issue
Block a user