summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--SConstruct4
-rw-r--r--scene/main/node.cpp14
-rw-r--r--scene/main/node.h3
-rw-r--r--tools/editor/scene_tree_editor.cpp16
4 files changed, 31 insertions, 6 deletions
diff --git a/SConstruct b/SConstruct
index 691536c956..01b1f2ce8e 100644
--- a/SConstruct
+++ b/SConstruct
@@ -144,6 +144,7 @@ opts.Add('unix_global_settings_path', 'unix-specific path to system-wide setting
opts.Add('disable_3d', 'Disable 3D nodes for smaller executable (yes/no)', "no")
opts.Add('disable_advanced_gui', 'Disable advance 3D gui nodes and behaviors (yes/no)', "no")
opts.Add('colored', 'Enable colored output for the compilation (yes/no)', 'no')
+opts.Add('deprecated','Enable deprecated features (yes/no)','yes')
opts.Add('extra_suffix', 'Custom extra suffix added to the base filename of all generated binary files.', '')
opts.Add('vsproj', 'Generate Visual Studio Project. (yes/no)', 'no')
@@ -179,6 +180,9 @@ if (env_base['target']=='debug'):
env_base.Append(CPPFLAGS=['-DDEBUG_MEMORY_ALLOC']);
env_base.Append(CPPFLAGS=['-DSCI_NAMESPACE'])
+if (env_base['deprecated']!='no'):
+ env_base.Append(CPPFLAGS=['-DENABLE_DEPRECATED']);
+
env_base.platforms = {}
diff --git a/scene/main/node.cpp b/scene/main/node.cpp
index 11b400d4a9..bea6e75aef 100644
--- a/scene/main/node.cpp
+++ b/scene/main/node.cpp
@@ -2085,6 +2085,15 @@ bool Node::is_owned_by_parent() const {
return data.parent_owned;
}
+void Node::set_display_folded(bool p_folded) {
+ data.display_folded=p_folded;
+}
+
+bool Node::is_displayed_folded() const {
+
+ return data.display_folded;
+}
+
void Node::_bind_methods() {
ObjectTypeDB::bind_method(_MD("_add_child_below_node","node:Node","child_node:Node","legible_unique_name"),&Node::add_child_below_node,DEFVAL(false));
@@ -2140,6 +2149,8 @@ void Node::_bind_methods() {
ObjectTypeDB::bind_method(_MD("can_process"),&Node::can_process);
ObjectTypeDB::bind_method(_MD("print_stray_nodes"),&Node::_print_stray_nodes);
ObjectTypeDB::bind_method(_MD("get_position_in_parent"),&Node::get_position_in_parent);
+ ObjectTypeDB::bind_method(_MD("set_display_folded","fold"),&Node::set_display_folded);
+ ObjectTypeDB::bind_method(_MD("is_displayed_folded"),&Node::is_displayed_folded);
ObjectTypeDB::bind_method(_MD("get_tree:SceneTree"),&Node::get_tree);
@@ -2194,6 +2205,7 @@ void Node::_bind_methods() {
//ADD_PROPERTYNZ( PropertyInfo( Variant::BOOL, "process/input" ), _SCS("set_process_input"),_SCS("is_processing_input" ) );
//ADD_PROPERTYNZ( PropertyInfo( Variant::BOOL, "process/unhandled_input" ), _SCS("set_process_unhandled_input"),_SCS("is_processing_unhandled_input" ) );
ADD_PROPERTYNZ( PropertyInfo( Variant::INT, "process/pause_mode",PROPERTY_HINT_ENUM,"Inherit,Stop,Process" ), _SCS("set_pause_mode"),_SCS("get_pause_mode" ) );
+ ADD_PROPERTYNZ( PropertyInfo( Variant::BOOL, "editor/display_folded",PROPERTY_HINT_NONE,"",PROPERTY_USAGE_NOEDITOR ), _SCS("set_display_folded"),_SCS("is_displayed_folded" ) );
BIND_VMETHOD( MethodInfo("_process",PropertyInfo(Variant::REAL,"delta")) );
BIND_VMETHOD( MethodInfo("_fixed_process",PropertyInfo(Variant::REAL,"delta")) );
@@ -2231,6 +2243,7 @@ Node::Node() {
data.in_constructor=true;
data.viewport=NULL;
data.use_placeholder=false;
+ data.display_folded=false;
}
Node::~Node() {
@@ -2240,6 +2253,7 @@ Node::~Node() {
data.owned.clear();
data.children.clear();
+
ERR_FAIL_COND(data.parent);
ERR_FAIL_COND(data.children.size());
diff --git a/scene/main/node.h b/scene/main/node.h
index 88334f32f0..dcc3829d15 100644
--- a/scene/main/node.h
+++ b/scene/main/node.h
@@ -111,6 +111,7 @@ private:
bool in_constructor;
bool use_placeholder;
+ bool display_folded;
} data;
@@ -325,6 +326,8 @@ public:
void update_configuration_warning();
+ void set_display_folded(bool p_folded);
+ bool is_displayed_folded() const;
/* CANVAS */
Node();
diff --git a/tools/editor/scene_tree_editor.cpp b/tools/editor/scene_tree_editor.cpp
index a155f0c0cf..f174bc2f1b 100644
--- a/tools/editor/scene_tree_editor.cpp
+++ b/tools/editor/scene_tree_editor.cpp
@@ -302,8 +302,15 @@ bool SceneTreeEditor::_add_nodes(Node *p_node,TreeItem *p_parent) {
item->set_selectable(0,true);
if (can_rename) {
-
- bool collapsed = p_node->has_meta("_editor_collapsed") ? (bool)p_node->get_meta("_editor_collapsed") : false;
+#ifdef ENABLE_DEPRECATED
+ if (p_node->has_meta("_editor_collapsed")) {
+ //remove previous way of storing folding, which did not get along with scene inheritance and instancing
+ if ((bool)p_node->get_meta("_editor_collapsed"))
+ p_node->set_display_folded(true);
+ p_node->set_meta("_editor_collapsed",Variant());
+ }
+#endif
+ bool collapsed = p_node->is_displayed_folded();
if (collapsed)
item->set_collapsed(true);
}
@@ -896,10 +903,7 @@ void SceneTreeEditor::_cell_collapsed(Object *p_obj) {
Node *n=get_node(np);
ERR_FAIL_COND(!n);
- if (collapsed)
- n->set_meta("_editor_collapsed",true);
- else
- n->set_meta("_editor_collapsed",Variant());
+ n->set_display_folded(collapsed);
}