Browse Source

Allow PXPhysicals to change scene nodes (cherry picked from H'uru 1b6f315186)

If this isn't done, the client will crash on exit when markers have been
loaded at some point in the game
hoikas/scenenodes-1
Adam Johnson 5 years ago committed by rarified
parent
commit
50855e48ed
  1. 13
      MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPhysX/plPXPhysical.cpp

13
MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPhysX/plPXPhysical.cpp

@ -999,7 +999,18 @@ plKey plPXPhysical::GetSceneNode() const
void plPXPhysical::SetSceneNode(plKey newNode) void plPXPhysical::SetSceneNode(plKey newNode)
{ {
// Not Supported plKey oldNode = GetSceneNode();
if (oldNode == newNode)
return;
// If we don't do this, we get leaked keys and a crash on exit with certain clones
// Note this has nothing do to with the world that the physical is in
if (newNode) {
plNodeRefMsg* refMsg = new plNodeRefMsg(newNode, plNodeRefMsg::kOnRequest, -1, plNodeRefMsg::kPhysical);
hsgResMgr::ResMgr()->SendRef(GetKey(), refMsg, plRefFlags::kActiveRef);
}
if (oldNode)
oldNode->Release(GetKey());
} }
///////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////

Loading…
Cancel
Save