|
|
@ -56,6 +56,7 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com |
|
|
|
#include "../pnMessage/plRefMsg.h" |
|
|
|
#include "../pnMessage/plRefMsg.h" |
|
|
|
#include "../pnMessage/plEnableMsg.h" |
|
|
|
#include "../pnMessage/plEnableMsg.h" |
|
|
|
#include "../pfMessage/pfGameGUIMsg.h" |
|
|
|
#include "../pfMessage/pfGameGUIMsg.h" |
|
|
|
|
|
|
|
#include "../plMessage/plDeviceRecreateMsg.h" |
|
|
|
#include "../pnSceneObject/plDrawInterface.h" |
|
|
|
#include "../pnSceneObject/plDrawInterface.h" |
|
|
|
#include "../pnSceneObject/plCoordinateInterface.h" |
|
|
|
#include "../pnSceneObject/plCoordinateInterface.h" |
|
|
|
#include "../pnSceneObject/plAudioInterface.h" |
|
|
|
#include "../pnSceneObject/plAudioInterface.h" |
|
|
@ -584,14 +585,16 @@ plProfile_CreateTimer("Gui", "RenderSetup", GUITime); |
|
|
|
hsBool pfGUIControlMod::MsgReceive( plMessage *msg ) |
|
|
|
hsBool pfGUIControlMod::MsgReceive( plMessage *msg ) |
|
|
|
{ |
|
|
|
{ |
|
|
|
plRenderMsg* rend = plRenderMsg::ConvertNoRef( msg ); |
|
|
|
plRenderMsg* rend = plRenderMsg::ConvertNoRef( msg ); |
|
|
|
|
|
|
|
plDeviceRecreateMsg* device = plDeviceRecreateMsg::ConvertNoRef(msg); |
|
|
|
|
|
|
|
if (rend || device) { |
|
|
|
|
|
|
|
plPipeline* pipe = rend ? rend->Pipeline() : device->Pipeline(); |
|
|
|
|
|
|
|
|
|
|
|
if( rend ) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
plProfile_BeginLap(GUITime, this->GetKey()->GetUoid().GetObjectName()); |
|
|
|
plProfile_BeginLap(GUITime, this->GetKey()->GetUoid().GetObjectName()); |
|
|
|
// Only need it once
|
|
|
|
ISetUpDynTextMap(pipe); |
|
|
|
if( ISetUpDynTextMap( rend->Pipeline() ) ) |
|
|
|
|
|
|
|
plgDispatch::Dispatch()->UnRegisterForExactType( plRenderMsg::Index(), GetKey() ); |
|
|
|
|
|
|
|
plProfile_EndLap(GUITime, this->GetKey()->GetUoid().GetObjectName()); |
|
|
|
plProfile_EndLap(GUITime, this->GetKey()->GetUoid().GetObjectName()); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (rend) |
|
|
|
|
|
|
|
plgDispatch::Dispatch()->UnRegisterForExactType(plRenderMsg::Index(), GetKey()); |
|
|
|
return true; |
|
|
|
return true; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -603,12 +606,16 @@ hsBool pfGUIControlMod::MsgReceive( plMessage *msg ) |
|
|
|
if( refMsg->GetContext() & ( plRefMsg::kOnCreate | plRefMsg::kOnRequest | plRefMsg::kOnReplace ) ) |
|
|
|
if( refMsg->GetContext() & ( plRefMsg::kOnCreate | plRefMsg::kOnRequest | plRefMsg::kOnReplace ) ) |
|
|
|
{ |
|
|
|
{ |
|
|
|
fDynTextMap = plDynamicTextMap::ConvertNoRef( refMsg->GetRef() ); |
|
|
|
fDynTextMap = plDynamicTextMap::ConvertNoRef( refMsg->GetRef() ); |
|
|
|
// Register for a render msg so we can leech the material when we finally
|
|
|
|
|
|
|
|
// have a pipeline to work with
|
|
|
|
// These tell us when we need to (re-)initialize the DTM
|
|
|
|
plgDispatch::Dispatch()->RegisterForExactType( plRenderMsg::Index(), GetKey() ); |
|
|
|
plgDispatch::Dispatch()->RegisterForExactType( plRenderMsg::Index(), GetKey() ); |
|
|
|
|
|
|
|
plgDispatch::Dispatch()->RegisterForExactType( plDeviceRecreateMsg::Index(), GetKey() ); |
|
|
|
} |
|
|
|
} |
|
|
|
else |
|
|
|
else |
|
|
|
|
|
|
|
{ |
|
|
|
fDynTextMap = nil; |
|
|
|
fDynTextMap = nil; |
|
|
|
|
|
|
|
plgDispatch::Dispatch()->UnRegisterForExactType( plDeviceRecreateMsg::Index(), GetKey() ); |
|
|
|
|
|
|
|
} |
|
|
|
return true; |
|
|
|
return true; |
|
|
|
} |
|
|
|
} |
|
|
|
else if( refMsg->fType == kRefDynTextLayer ) |
|
|
|
else if( refMsg->fType == kRefDynTextLayer ) |
|
|
|