mirror of
https://foundry.openuru.org/gitblit/r/CWE-ou-minkata.git
synced 2025-07-14 10:37:41 -04:00
Really fix those bizarre panic links
Looks like Cyan never actually stopped simulating, so we simulate through adding objects to the scene and positioning them. This is a bad thing(TM), so now we suspend/resume the simulation on plAgeLoadedMsg.
This commit is contained in:
@ -56,6 +56,7 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com
|
||||
#include "pnSceneObject/plCoordinateInterface.h"
|
||||
#include "pnNetCommon/plSDLTypes.h"
|
||||
#include "plMessage/plCollideMsg.h"
|
||||
#include "plMessage/plAgeLoadedMsg.h"
|
||||
|
||||
#include "plModifier/plDetectorLog.h"
|
||||
|
||||
@ -358,6 +359,7 @@ void plSimulationMgr::Init()
|
||||
{
|
||||
gTheInstance->RegisterAs(kSimulationMgr_KEY);
|
||||
gTheInstance->GetKey()->RefObject();
|
||||
plgDispatch::Dispatch()->RegisterForExactType(plAgeLoadedMsg::Index(), gTheInstance->GetKey());
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -377,6 +379,7 @@ void plSimulationMgr::Shutdown()
|
||||
// UnRef to match our Ref in Init(). Unless something strange is
|
||||
// going on, this should destroy the instance and set gTheInstance to nil.
|
||||
// gTheInstance->GetKey()->UnRefObject();
|
||||
plgDispatch::Dispatch()->UnRegisterForExactType(plAgeLoadedMsg::Index(), gTheInstance->GetKey());
|
||||
gTheInstance->UnRegister(); // this will destroy the instance
|
||||
gTheInstance = nil;
|
||||
}
|
||||
@ -756,6 +759,13 @@ void plSimulationMgr::ISendUpdates()
|
||||
|
||||
hsBool plSimulationMgr::MsgReceive(plMessage *msg)
|
||||
{
|
||||
// Suspend/resume the simulation based on whether or not we're in an age...
|
||||
if (plAgeLoadedMsg* aMsg = plAgeLoadedMsg::ConvertNoRef(msg))
|
||||
{
|
||||
fSuspended = !aMsg->fLoaded;
|
||||
return true;
|
||||
}
|
||||
|
||||
return hsKeyedObject::MsgReceive(msg);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user