Skip to content

Commit

Permalink
Update clouds enable_3d_clouds when setting changed
Browse files Browse the repository at this point in the history
  • Loading branch information
est31 committed Jul 9, 2015
1 parent 13e100e commit 4ece2b9
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 6 deletions.
25 changes: 19 additions & 6 deletions src/clouds.cpp
Expand Up @@ -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,
Expand All @@ -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<f32>(-BS*1000000,m_cloud_y-BS,-BS*1000000,
BS*1000000,m_cloud_y+BS,BS*1000000);
Expand All @@ -66,6 +69,8 @@ Clouds::Clouds(

Clouds::~Clouds()
{
g_settings->deregisterChangedCallback("enable_3d_clouds",
&cloud_3d_setting_changed, this);
}

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

void Clouds::readSettings()
{
m_cloud_y = BS * (m_passed_cloud_y ? m_passed_cloud_y :
g_settings->getS16("cloud_height"));
m_cloud_radius_i = g_settings->getU16("cloud_radius");
m_enable_3d = g_settings->getBool("enable_3d_clouds");
}

3 changes: 3 additions & 0 deletions src/clouds.h
Expand Up @@ -83,9 +83,12 @@ class Clouds : public scene::ISceneNode
BS * 1000000, m_cloud_y + BS - BS * camera_offset.Y, BS * 1000000);
}

void readSettings();

private:
video::SMaterial m_material;
core::aabbox3d<f32> m_box;
s16 m_passed_cloud_y;
float m_cloud_y;
u16 m_cloud_radius_i;
bool m_enable_3d;
Expand Down

0 comments on commit 4ece2b9

Please sign in to comment.