FontEngine* g_fontengine = NULL;
/** callback to be used on change of font size setting */
-static void font_setting_changed(const std::string, void *userdata) {
+static void font_setting_changed(const std::string) {
g_fontengine->readSettings();
}
bool *m_force_fog_off;
f32 *m_fog_range;
Client *m_client;
- bool m_fogEnabled;
public:
-
- void onSettingsChange(const std::string &name)
- {
- if (name == "enable_fog")
- m_fogEnabled = g_settings->getBool("enable_fog");
- }
-
- static void SettingsCallback(const std::string name, void *userdata)
- {
- reinterpret_cast<GameGlobalShaderConstantSetter*>(userdata)->onSettingsChange(name);
- }
-
GameGlobalShaderConstantSetter(Sky *sky, bool *force_fog_off,
f32 *fog_range, Client *client) :
m_sky(sky),
m_force_fog_off(force_fog_off),
m_fog_range(fog_range),
m_client(client)
- {
- g_settings->registerChangedCallback("enable_fog", SettingsCallback, this);
- }
-
+ {}
~GameGlobalShaderConstantSetter() {}
virtual void onSetConstants(video::IMaterialRendererServices *services,
// Fog distance
float fog_distance = 10000 * BS;
- if (m_fogEnabled && !*m_force_fog_off)
+ if (g_settings->getBool("enable_fog") && !*m_force_fog_off)
fog_distance = *m_fog_range;
services->setPixelShaderConstant("fogDistance", &fog_distance, 1);
void Settings::registerChangedCallback(std::string name,
- setting_changed_callback cbf, void *userdata)
+ setting_changed_callback cbf)
{
- m_callbacks[name].push_back(std::make_pair(cbf,userdata));
+ m_callbacks[name].push_back(cbf);
}
void Settings::doCallbacks(const std::string name)
{
- std::vector<std::pair<setting_changed_callback,void*> > tempvector;
+ std::vector<setting_changed_callback> tempvector;
{
JMutexAutoLock lock(m_mutex);
if (m_callbacks.find(name) != m_callbacks.end())
}
}
- std::vector<std::pair<setting_changed_callback, void*> >::iterator iter;
+ std::vector<setting_changed_callback>::iterator iter;
for (iter = tempvector.begin(); iter != tempvector.end(); iter++)
{
- (iter->first)(name,iter->second);
+ (*iter)(name);
}
}
struct NoiseParams;
/** function type to register a changed callback */
-typedef void (*setting_changed_callback)(const std::string, void *userdata);
+typedef void (*setting_changed_callback)(const std::string);
enum ValueType {
VALUETYPE_STRING,
void clear();
void updateValue(const Settings &other, const std::string &name);
void update(const Settings &other);
- void registerChangedCallback(std::string name, setting_changed_callback cbf, void *userdata = NULL);
+ void registerChangedCallback(std::string name, setting_changed_callback cbf);
private:
std::map<std::string, SettingsEntry> m_settings;
std::map<std::string, SettingsEntry> m_defaults;
- std::map<std::string, std::vector<std::pair<setting_changed_callback,void*> > > m_callbacks;
+ std::map<std::string, std::vector<setting_changed_callback> > m_callbacks;
// All methods that access m_settings/m_defaults directly should lock this.
mutable JMutex m_mutex;
};