void FPhysSubstepTask::SetKinematicTarget_AssumesLocked(FBodyInstance* Body, const FTransform& TM) { #if WITH_PHYSX TM.DiagnosticCheckNaN_All(); //We only interpolate kinematic actors if (!Body->IsNonKinematic()) { FKinematicTarget KinmaticTarget(Body, TM); FPhysTarget & TargetState = PhysTargetBuffers[External].FindOrAdd(Body); TargetState.bKinematicTarget = true; TargetState.KinematicTarget = KinmaticTarget; } #endif }
void FPhysSubstepTask::SetKinematicTarget(FBodyInstance * Body, const FTransform & TM) { check(Body); TM.DiagnosticCheckNaN_All(); PxRigidDynamic * PRigidDynamic = Body->GetPxRigidDynamic(); SCOPED_SCENE_READ_LOCK(PRigidDynamic->getScene()); //We only interpolate kinematic actors if (!IsRigidDynamicNonKinematic(PRigidDynamic)) { FKinematicTarget KinmaticTarget(Body, TM); FPhysTarget & TargetState = PhysTargetBuffers[External].FindOrAdd(Body); TargetState.bKinematicTarget = true; TargetState.KinematicTarget = KinmaticTarget; } }