From: <axl...@us...> - 2009-10-17 01:34:32
|
Revision: 573 http://hgengine.svn.sourceforge.net/hgengine/?rev=573&view=rev Author: axlecrusher Date: 2009-10-17 01:34:21 +0000 (Sat, 17 Oct 2009) Log Message: ----------- make it more difficult to modify message data in the message handlers Modified Paths: -------------- Mercury2/modules/Terrain.cpp Mercury2/modules/Terrain.h Mercury2/src/Camera.cpp Mercury2/src/Camera.h Mercury2/src/MercuryMessageManager.cpp Mercury2/src/MessageHandler.h Modified: Mercury2/modules/Terrain.cpp =================================================================== --- Mercury2/modules/Terrain.cpp 2009-10-16 22:56:32 UTC (rev 572) +++ Mercury2/modules/Terrain.cpp 2009-10-17 01:34:21 UTC (rev 573) @@ -170,14 +170,14 @@ UNREGISTER_FOR_MESSAGE("QueryTerrainPoint"); } -void TerrainAssetInstance::HandleMessage(const MString& message, const MessageData* data) +void TerrainAssetInstance::HandleMessage(const MString& message, const MessageData& data) { if (message == "QueryTerrainPoint") { - VertexDataMessage* v = (VertexDataMessage*)data; + const VertexDataMessage& v( dynamic_cast<const VertexDataMessage&>(data) ); //compute local space position - MercuryVertex local = v->Vertex * m_parentNode->GetGlobalMatrix(); + MercuryVertex local = v.Vertex * m_parentNode->GetGlobalMatrix(); local[3] = 1; //no W Terrain* t = (Terrain*)m_asset.Ptr(); Modified: Mercury2/modules/Terrain.h =================================================================== --- Mercury2/modules/Terrain.h 2009-10-16 22:56:32 UTC (rev 572) +++ Mercury2/modules/Terrain.h 2009-10-17 01:34:21 UTC (rev 573) @@ -38,7 +38,7 @@ public: TerrainAssetInstance(MercuryAsset* asset, MercuryNode* parentNode); ~TerrainAssetInstance(); - virtual void HandleMessage(const MString& message, const MessageData* data); + virtual void HandleMessage(const MString& message, const MessageData& data); private: CLASS_HELPERS( MercuryAssetInstance ); }; Modified: Mercury2/src/Camera.cpp =================================================================== --- Mercury2/src/Camera.cpp 2009-10-16 22:56:32 UTC (rev 572) +++ Mercury2/src/Camera.cpp 2009-10-17 01:34:21 UTC (rev 573) @@ -79,14 +79,14 @@ // EYE.Print(); } -void CameraNode::HandleMessage(const MString& message, const MessageData* data) +void CameraNode::HandleMessage(const MString& message, const MessageData& data) { if (message == INPUTEVENT_MOUSE) { - MouseInput* m = (MouseInput*)data; + const MouseInput& m( dynamic_cast<const MouseInput&>( data ) ); - m_y += m->dy/1200.0f; - m_x += m->dx/1200.0f; + m_y += m.dy/1200.0f; + m_x += m.dx/1200.0f; m_y = Clamp((-Q_PI/2.0f)+0.00001f, (Q_PI/2.0f)-0.00001f, m_y); @@ -106,8 +106,8 @@ else if (message == "SetCameraPosition") { // LOG.Write("SetCamPosition"); - VertexDataMessage* m = (VertexDataMessage*)data; - SetPosition(m->Vertex); + const VertexDataMessage& m( dynamic_cast<const VertexDataMessage&>( data ) ); + SetPosition(m.Vertex); // Update(0); // ComputeMatrix(); // m->Vertex.Print(); Modified: Mercury2/src/Camera.h =================================================================== --- Mercury2/src/Camera.h 2009-10-16 22:56:32 UTC (rev 572) +++ Mercury2/src/Camera.h 2009-10-17 01:34:21 UTC (rev 573) @@ -9,7 +9,7 @@ public: CameraNode(); virtual void ComputeMatrix(); - virtual void HandleMessage(const MString& message, const MessageData* data); + virtual void HandleMessage(const MString& message, const MessageData& data); virtual void Update(float dTime); virtual void PreRender(const MercuryMatrix& matrix); virtual void Render(const MercuryMatrix& matrix); Modified: Mercury2/src/MercuryMessageManager.cpp =================================================================== --- Mercury2/src/MercuryMessageManager.cpp 2009-10-16 22:56:32 UTC (rev 572) +++ Mercury2/src/MercuryMessageManager.cpp 2009-10-17 01:34:21 UTC (rev 573) @@ -68,7 +68,7 @@ std::list< MessageHandler* >::iterator recipients = ref->begin(); for (; recipients != ref->end(); ++recipients) - (*recipients)->HandleMessage(message.message, message.data); + (*recipients)->HandleMessage(message.message, *(message.data) ); } } Modified: Mercury2/src/MessageHandler.h =================================================================== --- Mercury2/src/MessageHandler.h 2009-10-16 22:56:32 UTC (rev 572) +++ Mercury2/src/MessageHandler.h 2009-10-17 01:34:21 UTC (rev 573) @@ -25,7 +25,7 @@ { public: virtual ~MessageHandler() {}; - virtual void HandleMessage(const MString& message, const MessageData* data) {}; + virtual void HandleMessage(const MString& message, const MessageData& data) {}; }; #endif This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |