summaryrefslogtreecommitdiff
path: root/src/clouds.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/clouds.cpp')
-rw-r--r--src/clouds.cpp21
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);