Changeset View
Changeset View
Standalone View
Standalone View
ps/trunk/source/simulation2/components/CCmpWaterManager.cpp
Show First 20 Lines • Show All 61 Lines • ▼ Show 20 Lines | virtual void Serialize(ISerializer& serialize) | ||||
serialize.NumberFixed_Unbounded("height", m_WaterHeight); | serialize.NumberFixed_Unbounded("height", m_WaterHeight); | ||||
} | } | ||||
virtual void Deserialize(const CParamNode& paramNode, IDeserializer& deserialize) | virtual void Deserialize(const CParamNode& paramNode, IDeserializer& deserialize) | ||||
{ | { | ||||
Init(paramNode); | Init(paramNode); | ||||
deserialize.NumberFixed_Unbounded("height", m_WaterHeight); | deserialize.NumberFixed_Unbounded("height", m_WaterHeight); | ||||
RecomputeWaterData(); | |||||
} | } | ||||
virtual void HandleMessage(const CMessage& msg, bool UNUSED(global)) | virtual void HandleMessage(const CMessage& msg, bool UNUSED(global)) | ||||
{ | { | ||||
switch (msg.GetType()) | switch (msg.GetType()) | ||||
{ | { | ||||
case MT_Interpolate: | case MT_Interpolate: | ||||
{ | { | ||||
Show All 14 Lines | switch (msg.GetType()) | ||||
} | } | ||||
} | } | ||||
} | } | ||||
virtual void RecomputeWaterData() | virtual void RecomputeWaterData() | ||||
{ | { | ||||
if (CRenderer::IsInitialised()) | if (CRenderer::IsInitialised()) | ||||
{ | { | ||||
g_Renderer.GetWaterManager()->RecomputeBlurredNormalMap(); | g_Renderer.GetWaterManager()->RecomputeWaterData(); | ||||
g_Renderer.GetWaterManager()->RecomputeDistanceHeightmap(); | g_Renderer.GetWaterManager()->m_WaterHeight = m_WaterHeight.ToFloat(); | ||||
g_Renderer.GetWaterManager()->RecomputeWindStrength(); | |||||
g_Renderer.GetWaterManager()->CreateWaveMeshes(); | |||||
} | } | ||||
// Tell the terrain it'll need to recompute its cached render data | // Tell the terrain it'll need to recompute its cached render data | ||||
GetSimContext().GetTerrain().MakeDirty(RENDERDATA_UPDATE_VERTICES); | GetSimContext().GetTerrain().MakeDirty(RENDERDATA_UPDATE_VERTICES); | ||||
} | } | ||||
virtual void SetWaterLevel(entity_pos_t h) | virtual void SetWaterLevel(entity_pos_t h) | ||||
{ | { | ||||
if (m_WaterHeight == h) | if (m_WaterHeight == h) | ||||
return; | return; | ||||
m_WaterHeight = h; | m_WaterHeight = h; | ||||
// Tell the terrain it'll need to recompute its cached render data | RecomputeWaterData(); | ||||
GetSimContext().GetTerrain().MakeDirty(RENDERDATA_UPDATE_VERTICES); | |||||
if (CRenderer::IsInitialised()) | |||||
g_Renderer.GetWaterManager()->m_WaterHeight = h.ToFloat(); | |||||
CMessageWaterChanged msg; | CMessageWaterChanged msg; | ||||
GetSimContext().GetComponentManager().BroadcastMessage(msg); | GetSimContext().GetComponentManager().BroadcastMessage(msg); | ||||
} | } | ||||
virtual entity_pos_t GetWaterLevel(entity_pos_t UNUSED(x), entity_pos_t UNUSED(z)) const | virtual entity_pos_t GetWaterLevel(entity_pos_t UNUSED(x), entity_pos_t UNUSED(z)) const | ||||
{ | { | ||||
return m_WaterHeight; | return m_WaterHeight; | ||||
Show All 9 Lines |
Wildfire Games · Phabricator