Cache DisableCCD locally in physics backend

#2768
This commit is contained in:
Wojtek Figat
2024-07-18 12:39:15 +02:00
parent fc3d15c544
commit 529de24da4

View File

@@ -569,6 +569,7 @@ namespace
Array<PxBase*> DeleteObjects;
bool _queriesHitTriggers = true;
bool _enableCCD = true;
PhysicsCombineMode _frictionCombineMode = PhysicsCombineMode::Average;
PhysicsCombineMode _restitutionCombineMode = PhysicsCombineMode::Average;
@@ -671,8 +672,6 @@ PxFilterFlags FilterShader(
{
const bool maskTest = (filterData0.word0 & filterData1.word1) && (filterData1.word0 & filterData0.word1);
auto& settings = *PhysicsSettings::Get();
// Let triggers through
if (PxFilterObjectIsTrigger(attributes0) || PxFilterObjectIsTrigger(attributes1))
{
@@ -704,7 +703,7 @@ PxFilterFlags FilterShader(
pairFlags |= PxPairFlag::eNOTIFY_TOUCH_LOST;
pairFlags |= PxPairFlag::ePOST_SOLVER_VELOCITY;
pairFlags |= PxPairFlag::eNOTIFY_CONTACT_POINTS;
if (!settings.DisableCCD)
if (_enableCCD)
pairFlags |= PxPairFlag::eDETECT_CCD_CONTACT;
return PxFilterFlag::eDEFAULT;
}
@@ -1229,6 +1228,7 @@ void PhysicsBackend::Shutdown()
void PhysicsBackend::ApplySettings(const PhysicsSettings& settings)
{
_queriesHitTriggers = settings.QueriesHitTriggers;
_enableCCD = !settings.DisableCCD;
_frictionCombineMode = settings.FrictionCombineMode;
_restitutionCombineMode = settings.RestitutionCombineMode;