mirror of
				https://github.com/luanti-org/luanti.git
				synced 2025-11-04 09:15:29 +01:00 
			
		
		
		
	Update clouds enable_3d_clouds when setting changed
This commit is contained in:
		@@ -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<f32>(-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="<<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");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -83,9 +83,12 @@ public:
 | 
			
		||||
			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;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user