mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-04-29 08:15:44 +00:00
Fix for Issue #96 for DAE updating crash
This commit is contained in:
parent
9ed0f467d8
commit
89ad23a925
4 changed files with 22 additions and 2 deletions
|
|
@ -53,7 +53,8 @@ void PxPlayer::_releaseController()
|
|||
if ( mController )
|
||||
{
|
||||
mController->getActor()->userData = NULL;
|
||||
mWorld->releaseController( *mController );
|
||||
mWorld->getStaticChangedSignal().remove( this, &PxPlayer::_onStaticChanged );
|
||||
mWorld->releaseController( *mController );
|
||||
mController = NULL;
|
||||
}
|
||||
}
|
||||
|
|
@ -99,6 +100,8 @@ void PxPlayer::init( const char *type,
|
|||
//mOriginOffset = 1.0f;
|
||||
}
|
||||
|
||||
mWorld->getStaticChangedSignal().notify( this, &PxPlayer::_onStaticChanged );
|
||||
|
||||
// Put the kinematic actor on group 29.
|
||||
NxActor *kineActor = mController->getActor();
|
||||
kineActor->setGroup( 29 );
|
||||
|
|
@ -110,6 +113,11 @@ void PxPlayer::init( const char *type,
|
|||
kineActor->userData = &mUserData;
|
||||
}
|
||||
|
||||
void PxPlayer::_onStaticChanged()
|
||||
{
|
||||
mController->reportSceneChanged();
|
||||
}
|
||||
|
||||
void PxPlayer::_onPhysicsReset( PhysicsResetEvent reset )
|
||||
{
|
||||
// The PhysX controller will crash out if it doesn't clear its
|
||||
|
|
|
|||
|
|
@ -71,6 +71,8 @@ protected:
|
|||
|
||||
void _onPhysicsReset( PhysicsResetEvent reset );
|
||||
|
||||
void _onStaticChanged();
|
||||
|
||||
public:
|
||||
|
||||
PxPlayer();
|
||||
|
|
|
|||
|
|
@ -569,9 +569,11 @@ void PxWorld::_releaseQueues()
|
|||
mReleaseJointQueue.clear();
|
||||
|
||||
// Now release any actors still pending in the queue.
|
||||
bool staticChanged = false;
|
||||
for ( S32 i = 0; i < mReleaseActorQueue.size(); i++ )
|
||||
{
|
||||
NxActor *currActor = mReleaseActorQueue[i];
|
||||
NxActor *currActor = mReleaseActorQueue[i];
|
||||
staticChanged |= !currActor->isDynamic();
|
||||
mScene->releaseActor( *currActor );
|
||||
}
|
||||
|
||||
|
|
@ -618,6 +620,9 @@ void PxWorld::_releaseQueues()
|
|||
mScene->releaseFluid( *currFluid );
|
||||
}
|
||||
mReleaseFluidQueue.clear();
|
||||
|
||||
if ( staticChanged )
|
||||
mStaticChangedSignal.trigger();
|
||||
}
|
||||
|
||||
void PxWorld::setEnabled( bool enabled )
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue