void FPhysScene::TermBody_AssumesLocked(FBodyInstance* BodyInstance) { if (PxRigidBody* PRigidBody = BodyInstance->GetPxRigidBody_AssumesLocked()) { #if WITH_SUBSTEPPING FPhysSubstepTask* PhysSubStepper = PhysSubSteppers[SceneType_AssumesLocked(BodyInstance)]; PhysSubStepper->RemoveBodyInstance_AssumesLocked(BodyInstance); #endif } // Remove body from any pending deferred addition / removal for(FDeferredSceneData& Deferred : DeferredSceneData) { int32 FoundIdx = INDEX_NONE; if(Deferred.AddInstances.Find(BodyInstance, FoundIdx)) { Deferred.AddActors.RemoveAtSwap(FoundIdx); Deferred.AddInstances.RemoveAtSwap(FoundIdx); } } #if WITH_PHYSX RemoveActiveBody(BodyInstance, PST_Sync); RemoveActiveBody(BodyInstance, PST_Async); #endif }
void FPhysScene::TermBody(FBodyInstance* BodyInstance) { #if WITH_SUBSTEPPING if (PxRigidBody * PRigidBody = BodyInstance->GetPxRigidBody()) { FPhysSubstepTask * PhysSubStepper = PhysSubSteppers[SceneType(BodyInstance)]; PhysSubStepper->RemoveBodyInstance(BodyInstance); } #endif #if WITH_PHYSX RemoveActiveBody(BodyInstance, PST_Sync); RemoveActiveBody(BodyInstance, PST_Async); #endif }