From 727f84d7f8d2bc9ae7b4f8af18f2b71560e8dede Mon Sep 17 00:00:00 2001 From: auria Date: Sun, 11 Sep 2011 15:46:47 +0000 Subject: [PATCH] Fixed water creating visible polygons, thanks to Hybrid for the weld tip. Jperg, maybe you can check my memory management makes sense (I think I'm getting the hang of it but I'm still not sure I know what I'm doing) git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/trunk@9797 178a84e3-b1eb-0310-8ba1-8eac791a3b58 --- src/graphics/irr_driver.cpp | 3 ++- src/tracks/track.cpp | 7 +++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/graphics/irr_driver.cpp b/src/graphics/irr_driver.cpp index d5389e3f4..3ca6bcd1e 100644 --- a/src/graphics/irr_driver.cpp +++ b/src/graphics/irr_driver.cpp @@ -556,7 +556,8 @@ scene::ISceneNode* IrrDriver::addWaterNode(scene::IMesh *mesh, float wave_length) { mesh->setMaterialFlag(EMF_GOURAUD_SHADING, true); - scene::ISceneNode* out = m_scene_manager->addWaterSurfaceSceneNode(mesh, + scene::IMesh* welded_mesh = m_scene_manager->getMeshManipulator()->createMeshWelded(mesh); + scene::ISceneNode* out = m_scene_manager->addWaterSurfaceSceneNode(welded_mesh, wave_height, wave_speed, wave_length); out->getMaterial(0).setFlag(EMF_GOURAUD_SHADING, true); diff --git a/src/tracks/track.cpp b/src/tracks/track.cpp index abb30c1a3..ac54ff07b 100644 --- a/src/tracks/track.cpp +++ b/src/tracks/track.cpp @@ -1022,6 +1022,13 @@ void Track::createWater(const XMLNode &node) wave_height, wave_speed, wave_length); + + // 'addWaterNode' welds the mesh so keep both the original and the welded copy + mesh->grab(); + irr_driver->grabAllTextures(mesh); + m_all_cached_meshes.push_back(mesh); + + mesh = ((scene::IMeshSceneNode*)scene_node)->getMesh(); } else {