From 54b5e4cf249949bac65c83673f72df10c1d1007e Mon Sep 17 00:00:00 2001 From: Adam Johnson Date: Mon, 6 Feb 2012 21:44:13 -0500 Subject: [PATCH] Fix Gira basket explosions Tweak the GZ marker detector region fix to only wake up kinematic detector regions... waking up regular dynamic actors before we position them causes bad things to happen. --- Sources/Plasma/PubUtilLib/plPhysX/plPXPhysical.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Sources/Plasma/PubUtilLib/plPhysX/plPXPhysical.cpp b/Sources/Plasma/PubUtilLib/plPhysX/plPXPhysical.cpp index 37fb721f..17a95259 100644 --- a/Sources/Plasma/PubUtilLib/plPhysX/plPXPhysical.cpp +++ b/Sources/Plasma/PubUtilLib/plPhysX/plPXPhysical.cpp @@ -827,7 +827,12 @@ void plPXPhysical::ApplyHitForce() void plPXPhysical::ISetTransformGlobal(const hsMatrix44& l2w) { hsAssert(fActor->isDynamic(), "Shouldn't move a static actor"); - fActor->wakeUp(); + + // If we wake up normal dynamic actors, they might explode. + // However, kinematics won't update if they are asleep. Thankfully, kinematics don't + // explode, move, or cause spontaneous nuclear warfare. + if (fActor->readBodyFlag(NX_BF_KINEMATIC)) + fActor->wakeUp(); NxMat34 mat;