Skip to content

Commit 4ece2b9

Browse files
committedJul 9, 2015
Update clouds enable_3d_clouds when setting changed
1 parent 13e100e commit 4ece2b9

File tree

2 files changed

+22
-6
lines changed

2 files changed

+22
-6
lines changed
 

Diff for: ‎src/clouds.cpp

+19-6
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,11 @@ class Clouds;
3030
Clouds *g_menuclouds = NULL;
3131
irr::scene::ISceneManager *g_menucloudsmgr = NULL;
3232

33+
static void cloud_3d_setting_changed(const std::string settingname, void *data)
34+
{
35+
((Clouds *)data)->readSettings();
36+
}
37+
3338
Clouds::Clouds(
3439
scene::ISceneNode* parent,
3540
scene::ISceneManager* mgr,
@@ -52,12 +57,10 @@ Clouds::Clouds(
5257
//m_material.MaterialType = video::EMT_TRANSPARENT_VERTEX_ALPHA;
5358
m_material.MaterialType = video::EMT_TRANSPARENT_ALPHA_CHANNEL;
5459

55-
m_cloud_y = BS * (cloudheight ? cloudheight :
56-
g_settings->getS16("cloud_height"));
57-
58-
m_cloud_radius_i = g_settings->getU16("cloud_radius");
59-
60-
m_enable_3d = g_settings->getBool("enable_3d_clouds");
60+
m_passed_cloud_y = cloudheight;
61+
readSettings();
62+
g_settings->registerChangedCallback("enable_3d_clouds",
63+
&cloud_3d_setting_changed, this);
6164

6265
m_box = core::aabbox3d<f32>(-BS*1000000,m_cloud_y-BS,-BS*1000000,
6366
BS*1000000,m_cloud_y+BS,BS*1000000);
@@ -66,6 +69,8 @@ Clouds::Clouds(
6669

6770
Clouds::~Clouds()
6871
{
72+
g_settings->deregisterChangedCallback("enable_3d_clouds",
73+
&cloud_3d_setting_changed, this);
6974
}
7075

7176
void Clouds::OnRegisterSceneNode()
@@ -351,3 +356,11 @@ void Clouds::update(v2f camera_p, video::SColorf color)
351356
//dstream<<"m_brightness="<<m_brightness<<std::endl;
352357
}
353358

359+
void Clouds::readSettings()
360+
{
361+
m_cloud_y = BS * (m_passed_cloud_y ? m_passed_cloud_y :
362+
g_settings->getS16("cloud_height"));
363+
m_cloud_radius_i = g_settings->getU16("cloud_radius");
364+
m_enable_3d = g_settings->getBool("enable_3d_clouds");
365+
}
366+

Diff for: ‎src/clouds.h

+3
Original file line numberDiff line numberDiff line change
@@ -83,9 +83,12 @@ class Clouds : public scene::ISceneNode
8383
BS * 1000000, m_cloud_y + BS - BS * camera_offset.Y, BS * 1000000);
8484
}
8585

86+
void readSettings();
87+
8688
private:
8789
video::SMaterial m_material;
8890
core::aabbox3d<f32> m_box;
91+
s16 m_passed_cloud_y;
8992
float m_cloud_y;
9093
u16 m_cloud_radius_i;
9194
bool m_enable_3d;

0 commit comments

Comments
 (0)
Please sign in to comment.