From 4ece2b9e32b5948628a20dece54ecfb369a17757 Mon Sep 17 00:00:00 2001 From: est31 Date: Thu, 9 Jul 2015 08:07:59 +0200 Subject: Update clouds enable_3d_clouds when setting changed --- src/clouds.cpp | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) (limited to 'src/clouds.cpp') diff --git a/src/clouds.cpp b/src/clouds.cpp index a42e588aa..e213d118f 100644 --- a/src/clouds.cpp +++ b/src/clouds.cpp @@ -30,6 +30,11 @@ class Clouds; Clouds *g_menuclouds = NULL; irr::scene::ISceneManager *g_menucloudsmgr = NULL; +static void cloud_3d_setting_changed(const std::string settingname, void *data) +{ + ((Clouds *)data)->readSettings(); +} + Clouds::Clouds( scene::ISceneNode* parent, scene::ISceneManager* mgr, @@ -52,12 +57,10 @@ Clouds::Clouds( //m_material.MaterialType = video::EMT_TRANSPARENT_VERTEX_ALPHA; m_material.MaterialType = video::EMT_TRANSPARENT_ALPHA_CHANNEL; - m_cloud_y = BS * (cloudheight ? cloudheight : - g_settings->getS16("cloud_height")); - - m_cloud_radius_i = g_settings->getU16("cloud_radius"); - - m_enable_3d = g_settings->getBool("enable_3d_clouds"); + m_passed_cloud_y = cloudheight; + readSettings(); + g_settings->registerChangedCallback("enable_3d_clouds", + &cloud_3d_setting_changed, this); m_box = core::aabbox3d(-BS*1000000,m_cloud_y-BS,-BS*1000000, BS*1000000,m_cloud_y+BS,BS*1000000); @@ -66,6 +69,8 @@ Clouds::Clouds( Clouds::~Clouds() { + g_settings->deregisterChangedCallback("enable_3d_clouds", + &cloud_3d_setting_changed, this); } void Clouds::OnRegisterSceneNode() @@ -351,3 +356,11 @@ void Clouds::update(v2f camera_p, video::SColorf color) //dstream<<"m_brightness="<getS16("cloud_height")); + m_cloud_radius_i = g_settings->getU16("cloud_radius"); + m_enable_3d = g_settings->getBool("enable_3d_clouds"); +} + -- cgit v1.2.3