void CCmpPathfinder::HandleMessage(const CMessage& msg, bool UNUSED(global)) { switch (msg.GetType()) { case MT_RenderSubmit: { const CMessageRenderSubmit& msgData = static_cast<const CMessageRenderSubmit&> (msg); RenderSubmit(msgData.collector); break; } case MT_TerrainChanged: m_TerrainDirty = true; MinimalTerrainUpdate(); break; case MT_WaterChanged: case MT_ObstructionMapShapeChanged: m_TerrainDirty = true; UpdateGrid(); m_PreserveUpdateInformations = true; break; case MT_TurnStart: m_SameTurnMovesCount = 0; break; } }
virtual void HandleMessage(const CMessage& msg, bool UNUSED(global)) { switch (msg.GetType()) { case MT_OwnershipChanged: { const CMessageOwnershipChanged& msgData = static_cast<const CMessageOwnershipChanged&> (msg); MakeDirtyIfRelevantEntity(msgData.entity); break; } case MT_PositionChanged: { const CMessagePositionChanged& msgData = static_cast<const CMessagePositionChanged&> (msg); MakeDirtyIfRelevantEntity(msgData.entity); break; } case MT_ValueModification: { const CMessageValueModification& msgData = static_cast<const CMessageValueModification&> (msg); if (msgData.component == L"TerritoryInfluence") MakeDirty(); break; } case MT_ObstructionMapShapeChanged: case MT_TerrainChanged: case MT_WaterChanged: { // also recalculate the cost grid to support atlas changes SAFE_DELETE(m_CostGrid); MakeDirty(); break; } case MT_Update: { if (m_TriggerEvent) { m_TriggerEvent = false; CMessageTerritoriesChanged msg; GetSimContext().GetComponentManager().BroadcastMessage(msg); } break; } case MT_Interpolate: { const CMessageInterpolate& msgData = static_cast<const CMessageInterpolate&> (msg); Interpolate(msgData.deltaSimTime, msgData.offset); break; } case MT_RenderSubmit: { const CMessageRenderSubmit& msgData = static_cast<const CMessageRenderSubmit&> (msg); RenderSubmit(msgData.collector); break; } } }
virtual void HandleMessage(const CMessage& msg, bool UNUSED(global)) { // Quick exit for running in non-graphical mode if (m_Unit == NULL) return; switch (msg.GetType()) { case MT_Update_Final: { const CMessageUpdate_Final& msgData = static_cast<const CMessageUpdate_Final&> (msg); Update(msgData.turnLength); break; } case MT_Interpolate: { const CMessageInterpolate& msgData = static_cast<const CMessageInterpolate&> (msg); Interpolate(msgData.deltaSimTime, msgData.offset); break; } case MT_RenderSubmit: { const CMessageRenderSubmit& msgData = static_cast<const CMessageRenderSubmit&> (msg); RenderSubmit(msgData.collector, msgData.frustum, msgData.culling); break; } case MT_OwnershipChanged: { const CMessageOwnershipChanged& msgData = static_cast<const CMessageOwnershipChanged&> (msg); m_Unit->GetModel().SetPlayerID(msgData.to); break; } case MT_TerrainChanged: { const CMessageTerrainChanged& msgData = static_cast<const CMessageTerrainChanged&> (msg); m_Unit->GetModel().SetTerrainDirty(msgData.i0, msgData.j0, msgData.i1, msgData.j1); // Terrain has changed, so we need to interpolate again m_NeedsInterpolation = true; break; } case MT_PositionChanged: { // The position was changed, so we need to interpolate again m_PositionChanged = true; m_NeedsInterpolation = true; break; } case MT_TurnStart: { // Check whether we need to reinterpolate during this turn m_NeedsInterpolation = m_PositionChanged || m_NeedsInterpolation; m_PositionChanged = false; break; } } }
virtual void HandleMessage(const CMessage& msg, bool UNUSED(global)) { switch (msg.GetType()) { case MT_OwnershipChanged: { const CMessageOwnershipChanged& msgData = static_cast<const CMessageOwnershipChanged&> (msg); MakeDirtyIfRelevantEntity(msgData.entity); break; } case MT_PositionChanged: { const CMessagePositionChanged& msgData = static_cast<const CMessagePositionChanged&> (msg); MakeDirtyIfRelevantEntity(msgData.entity); break; } case MT_TechnologyModification: { const CMessageTechnologyModification& msgData = static_cast<const CMessageTechnologyModification&> (msg); if (msgData.component == L"TerritoryInfluence") MakeDirty(); break; } case MT_TerrainChanged: { MakeDirty(); break; } case MT_Update: { if (m_TriggerEvent) { m_TriggerEvent = false; CMessageTerritoriesChanged msg; GetSimContext().GetComponentManager().BroadcastMessage(msg); } break; } case MT_Interpolate: { const CMessageInterpolate& msgData = static_cast<const CMessageInterpolate&> (msg); Interpolate(msgData.deltaSimTime, msgData.offset); break; } case MT_RenderSubmit: { const CMessageRenderSubmit& msgData = static_cast<const CMessageRenderSubmit&> (msg); RenderSubmit(msgData.collector); break; } } }
virtual void HandleMessage(const CMessage& msg, bool UNUSED(global)) { switch (msg.GetType()) { case MT_Interpolate: { const CMessageInterpolate& msgData = static_cast<const CMessageInterpolate&> (msg); Interpolate(msgData.deltaSimTime, msgData.offset); break; } case MT_RenderSubmit: { const CMessageRenderSubmit& msgData = static_cast<const CMessageRenderSubmit&> (msg); RenderSubmit(msgData.collector); break; } } }
virtual void HandleMessage(const CMessage& msg, bool UNUSED(global)) { // Quick exit for running in non-graphical mode if (m_Unit == NULL) return; switch (msg.GetType()) { case MT_Update_Final: { const CMessageUpdate_Final& msgData = static_cast<const CMessageUpdate_Final&> (msg); Update(msgData.turnLength); break; } case MT_Interpolate: { const CMessageInterpolate& msgData = static_cast<const CMessageInterpolate&> (msg); Interpolate(msgData.deltaSimTime, msgData.offset); break; } case MT_RenderSubmit: { const CMessageRenderSubmit& msgData = static_cast<const CMessageRenderSubmit&> (msg); RenderSubmit(msgData.collector, msgData.frustum, msgData.culling); break; } case MT_OwnershipChanged: { const CMessageOwnershipChanged& msgData = static_cast<const CMessageOwnershipChanged&> (msg); m_Unit->GetModel().SetPlayerID(msgData.to); break; } case MT_TerrainChanged: { const CMessageTerrainChanged& msgData = static_cast<const CMessageTerrainChanged&> (msg); m_Unit->GetModel().SetTerrainDirty(msgData.i0, msgData.j0, msgData.i1, msgData.j1); break; } } }
void CCmpPathfinder::HandleMessage(const CMessage& msg, bool UNUSED(global)) { switch (msg.GetType()) { case MT_RenderSubmit: { const CMessageRenderSubmit& msgData = static_cast<const CMessageRenderSubmit&> (msg); RenderSubmit(msgData.collector); break; } case MT_TerrainChanged: { // TODO: we ought to only bother updating the dirtied region m_TerrainDirty = true; break; } case MT_TurnStart: { m_SameTurnMovesCount = 0; break; } } }
virtual void HandleMessage(const CMessage& msg, bool UNUSED(global)) { switch (msg.GetType()) { case MT_Interpolate: { if (m_Overlay.m_Color.a > 0) { float offset = static_cast<const CMessageInterpolate&> (msg).offset; ConstructShape(offset); } break; } case MT_RenderSubmit: { if (m_Overlay.m_Color.a > 0) { const CMessageRenderSubmit& msgData = static_cast<const CMessageRenderSubmit&> (msg); RenderSubmit(msgData.collector); } break; } } }
virtual void HandleMessage(const CMessage& msg, bool UNUSED(global)) { switch (msg.GetType()) { case MT_Update_MotionFormation: { if (m_FormationController) { fixed dt = static_cast<const CMessageUpdate_MotionFormation&> (msg).turnLength; Move(dt); } break; } case MT_Update_MotionUnit: { if (!m_FormationController) { fixed dt = static_cast<const CMessageUpdate_MotionUnit&> (msg).turnLength; Move(dt); } break; } case MT_RenderSubmit: { const CMessageRenderSubmit& msgData = static_cast<const CMessageRenderSubmit&> (msg); RenderSubmit(msgData.collector); break; } case MT_PathResult: { const CMessagePathResult& msgData = static_cast<const CMessagePathResult&> (msg); PathResult(msgData.ticket, msgData.path); break; } } }