Fixed editor settings disappearing (caused by uninitialized variable).

This commit is contained in:
Daniel J. Ramirez 2017-11-29 21:11:53 -06:00
parent 9725f33ac6
commit 4b80bc3303
2 changed files with 15 additions and 5 deletions

View File

@ -75,10 +75,9 @@ bool EditorSettings::_set(const StringName &p_name, const Variant &p_value, bool
return true; return true;
} }
if (p_value.get_type() == Variant::NIL) if (p_value.get_type() == Variant::NIL) {
props.erase(p_name); props.erase(p_name);
else { } else {
if (props.has(p_name)) if (props.has(p_name))
props[p_name].variant = p_value; props[p_name].variant = p_value;
else else
@ -967,6 +966,8 @@ void EditorSettings::raise_order(const String &p_setting) {
void EditorSettings::set_initial_value(const StringName &p_setting, const Variant &p_value) { void EditorSettings::set_initial_value(const StringName &p_setting, const Variant &p_value) {
_THREAD_SAFE_METHOD_
if (!props.has(p_setting)) if (!props.has(p_setting))
return; return;
props[p_setting].initial = p_value; props[p_setting].initial = p_value;
@ -979,7 +980,8 @@ Variant _EDITOR_DEF(const String &p_setting, const Variant &p_default) {
if (EditorSettings::get_singleton()->has_setting(p_setting)) if (EditorSettings::get_singleton()->has_setting(p_setting))
ret = EditorSettings::get_singleton()->get(p_setting); ret = EditorSettings::get_singleton()->get(p_setting);
else else
EditorSettings::get_singleton()->set(p_setting, p_default); EditorSettings::get_singleton()->set_manually(p_setting, p_default);
if (!EditorSettings::get_singleton()->has_default_value(p_setting)) if (!EditorSettings::get_singleton()->has_default_value(p_setting))
EditorSettings::get_singleton()->set_initial_value(p_setting, p_default); EditorSettings::get_singleton()->set_initial_value(p_setting, p_default);
@ -997,12 +999,15 @@ bool EditorSettings::property_can_revert(const String &p_setting) {
if (!props.has(p_setting)) if (!props.has(p_setting))
return false; return false;
if (!props[p_setting].has_default_value)
return false;
return props[p_setting].initial != props[p_setting].variant; return props[p_setting].initial != props[p_setting].variant;
} }
Variant EditorSettings::property_get_revert(const String &p_setting) { Variant EditorSettings::property_get_revert(const String &p_setting) {
if (!props.has(p_setting)) if (!props.has(p_setting) || !props[p_setting].has_default_value)
return Variant(); return Variant();
return props[p_setting].initial; return props[p_setting].initial;

View File

@ -70,6 +70,8 @@ private:
bool hide_from_editor; bool hide_from_editor;
bool save; bool save;
VariantContainer() { VariantContainer() {
variant = Variant();
initial = Variant();
order = 0; order = 0;
hide_from_editor = false; hide_from_editor = false;
has_default_value = false; has_default_value = false;
@ -77,8 +79,11 @@ private:
} }
VariantContainer(const Variant &p_variant, int p_order) { VariantContainer(const Variant &p_variant, int p_order) {
variant = p_variant; variant = p_variant;
initial = Variant();
order = p_order; order = p_order;
hide_from_editor = false; hide_from_editor = false;
has_default_value = false;
save = false;
} }
}; };