summaryrefslogtreecommitdiff
path: root/scene
diff options
context:
space:
mode:
authorJuan Linietsky <reduzio@gmail.com>2018-11-09 08:16:01 -0300
committerJuan Linietsky <reduzio@gmail.com>2018-11-09 08:16:36 -0300
commit6e5872b70978b4ded3ade769ff46a44de6a6eb02 (patch)
tree35fb3c7df43748b063b5885fef658977d690c5b6 /scene
parent4e1995c29b678d99b3f3ad81f9f2d33124f0afe2 (diff)
Use a more compatible (and certain to work) mechanism to check default value on scene packing.
Diffstat (limited to 'scene')
-rw-r--r--scene/resources/packed_scene.cpp10
1 files changed, 8 insertions, 2 deletions
diff --git a/scene/resources/packed_scene.cpp b/scene/resources/packed_scene.cpp
index 2514cf9876..87483a7da4 100644
--- a/scene/resources/packed_scene.cpp
+++ b/scene/resources/packed_scene.cpp
@@ -490,9 +490,15 @@ Error SceneState::_parse_node(Node *p_owner, Node *p_node, int p_parent_idx, Map
isdefault = bool(Variant::evaluate(Variant::OP_EQUAL, value, default_value));
}
- if (E->get().usage & PROPERTY_USAGE_SCRIPT_DEFAULT_VALUE) {
- isdefault = true; //is script default value
+ Ref<Script> script = p_node->get_script();
+ if (!isdefault && script.is_valid() && script->get_property_default_value(name, default_value)) {
+ isdefault = bool(Variant::evaluate(Variant::OP_EQUAL, value, default_value));
}
+ // the version above makes more sense, because it does not rely on placeholder or usage flag
+ // in the script, just the default value function.
+ // if (E->get().usage & PROPERTY_USAGE_SCRIPT_DEFAULT_VALUE) {
+ // isdefault = true; //is script default value
+ // }
if (pack_state_stack.size()) {
// we are on part of an instanced subscene