diff options
Diffstat (limited to 'src/clouds.cpp')
-rw-r--r-- | src/clouds.cpp | 21 |
1 files changed, 10 insertions, 11 deletions
diff --git a/src/clouds.cpp b/src/clouds.cpp index dc08d1ac0..dd6a2dcbd 100644 --- a/src/clouds.cpp +++ b/src/clouds.cpp @@ -17,6 +17,7 @@ with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ +#include "client/renderingengine.h" #include "clouds.h" #include "noise.h" #include "constants.h" @@ -36,14 +37,12 @@ static void cloud_3d_setting_changed(const std::string &settingname, void *data) ((Clouds *)data)->readSettings(); } -Clouds::Clouds( - scene::ISceneNode* parent, - scene::ISceneManager* mgr, +Clouds::Clouds(scene::ISceneManager* mgr, s32 id, u32 seed, s16 cloudheight ): - scene::ISceneNode(parent, mgr, id), + scene::ISceneNode(mgr->getRootSceneNode(), mgr, id), m_seed(seed) { m_material.setFlag(video::EMF_LIGHTING, false); @@ -101,22 +100,22 @@ void Clouds::render() return; ScopeProfiler sp(g_profiler, "Rendering of clouds, avg", SPT_AVG); - + int num_faces_to_draw = m_enable_3d ? 6 : 1; - + m_material.setFlag(video::EMF_BACK_FACE_CULLING, m_enable_3d); driver->setTransform(video::ETS_WORLD, AbsoluteTransformation); driver->setMaterial(m_material); - + /* Clouds move from Z+ towards Z- */ static const float cloud_size = BS * 64.0f; - + const float cloud_full_radius = cloud_size * m_cloud_radius_i; - + // Position of cloud noise origin from the camera v2f cloud_origin_from_camera_f = m_origin - m_camera_pos; // The center point of drawing in the noise @@ -164,7 +163,7 @@ void Clouds::render() bool fog_rangefog = false; driver->getFog(fog_color, fog_type, fog_start, fog_end, fog_density, fog_pixelfog, fog_rangefog); - + // Set our own fog driver->setFog(fog_color, fog_type, cloud_full_radius * 0.5, cloud_full_radius*1.2, fog_density, fog_pixelfog, fog_rangefog); @@ -340,7 +339,7 @@ void Clouds::render() } delete[] grid; - + // Restore fog settings driver->setFog(fog_color, fog_type, fog_start, fog_end, fog_density, fog_pixelfog, fog_rangefog); |