From 1630f0ad3518422c3be76f6289f4b1d3e724907d Mon Sep 17 00:00:00 2001 From: volzhs Date: Wed, 30 Sep 2015 21:55:31 +0900 Subject: fix miss bind for Node::find_node --- scene/main/node.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'scene/main/node.cpp') diff --git a/scene/main/node.cpp b/scene/main/node.cpp index 8336ce35f6..5c7e420c7b 100644 --- a/scene/main/node.cpp +++ b/scene/main/node.cpp @@ -1931,7 +1931,7 @@ void Node::_bind_methods() { ObjectTypeDB::bind_method(_MD("has_node","path"),&Node::has_node); ObjectTypeDB::bind_method(_MD("get_node:Node","path"),&Node::get_node); ObjectTypeDB::bind_method(_MD("get_parent:Parent"),&Node::get_parent); - ObjectTypeDB::bind_method(_MD("find_node:Node","mask","recursive","owned"),&Node::get_node,DEFVAL(true),DEFVAL(true)); + ObjectTypeDB::bind_method(_MD("find_node:Node","mask","recursive","owned"),&Node::find_node,DEFVAL(true),DEFVAL(true)); ObjectTypeDB::bind_method(_MD("has_node_and_resource","path"),&Node::has_node_and_resource); ObjectTypeDB::bind_method(_MD("get_node_and_resource","path"),&Node::_get_node_and_resource); -- cgit v1.2.3 From 422929e87fbe91be1efedf1fe3a9a71d61e58b40 Mon Sep 17 00:00:00 2001 From: reduz Date: Sat, 10 Oct 2015 09:09:09 -0300 Subject: Large improvements on scene packing and management -Ability to edit and keep changes of instanced scenes and sub-scenes -Ability to inherit from other scenes --- scene/main/node.cpp | 64 +++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 62 insertions(+), 2 deletions(-) (limited to 'scene/main/node.cpp') diff --git a/scene/main/node.cpp b/scene/main/node.cpp index 8336ce35f6..b02e9c5645 100644 --- a/scene/main/node.cpp +++ b/scene/main/node.cpp @@ -841,6 +841,20 @@ Node *Node::get_child(int p_index) const { return data.children[p_index]; } + +Node *Node::_get_child_by_name(const StringName& p_name) const { + + int cc=data.children.size(); + Node* const* cd=data.children.ptr(); + + for(int i=0;idata.name==p_name) + return cd[i]; + } + + return NULL; +} + Node *Node::_get_node(const NodePath& p_path) const { ERR_FAIL_COND_V( !data.inside_tree && p_path.is_absolute(), NULL ); @@ -906,8 +920,10 @@ Node *Node::_get_node(const NodePath& p_path) const { Node *Node::get_node(const NodePath& p_path) const { Node *node = _get_node(p_path); - ERR_EXPLAIN("Node not found: "+p_path); - ERR_FAIL_COND_V(!node,NULL); + if (!node) { + ERR_EXPLAIN("Node not found: "+p_path); + ERR_FAIL_COND_V(!node,NULL); + } return node; } @@ -1332,7 +1348,29 @@ String Node::get_filename() const { return data.filename; } +void Node::set_editable_instance(Node* p_node,bool p_editable) { + + ERR_FAIL_NULL(p_node); + ERR_FAIL_COND(!is_a_parent_of(p_node)); + NodePath p = get_path_to(p_node); + if (!p_editable) + data.editable_instances.erase(p); + else + data.editable_instances[p]=true; +} + +bool Node::is_editable_instance(Node *p_node) const { + + if (!p_node) + return false; //easier, null is never editable :) + ERR_FAIL_COND_V(!is_a_parent_of(p_node),false); + NodePath p = get_path_to(p_node); + return data.editable_instances.has(p); +} + + +#if 0 void Node::generate_instance_state() { @@ -1383,6 +1421,28 @@ Dictionary Node::get_instance_state() const { return data.instance_state; } +#endif + +void Node::set_scene_instance_state(const Ref& p_state) { + + data.instance_state=p_state; +} + +Ref Node::get_scene_instance_state() const{ + + return data.instance_state; +} + +void Node::set_scene_inherited_state(const Ref& p_state) { + + data.inherited_state=p_state; +} + +Ref Node::get_scene_inherited_state() const{ + + return data.inherited_state; +} + Vector Node::get_instance_groups() const { return data.instance_groups; -- cgit v1.2.3 From 078a474135b47adb3cbdf414c737b77ee17fe596 Mon Sep 17 00:00:00 2001 From: reduz Date: Fri, 16 Oct 2015 19:11:23 -0300 Subject: -fixes and more fixes to new scene system, seems stable now.. BUT DONT TRUST ME IT MAY STILL BREAK, USE WITH CARE!! --- scene/main/node.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'scene/main/node.cpp') diff --git a/scene/main/node.cpp b/scene/main/node.cpp index b02e9c5645..dd4587c19f 100644 --- a/scene/main/node.cpp +++ b/scene/main/node.cpp @@ -1052,6 +1052,7 @@ void Node::get_owned_by(Node *p_by,List *p_owned) { void Node::_set_owner_nocheck(Node* p_owner) { + ERR_FAIL_COND(data.owner); data.owner=p_owner; data.owner->data.owned.push_back( this ); data.OW = data.owner->data.owned.back(); @@ -1443,13 +1444,14 @@ Ref Node::get_scene_inherited_state() const{ return data.inherited_state; } -Vector Node::get_instance_groups() const { +void Node::set_scene_instance_load_placeholder(bool p_enable) { - return data.instance_groups; + data.use_placeholder=p_enable; } -Vector Node::get_instance_connections() const{ - return data.instance_connections; +bool Node::get_scene_instance_load_placeholder() const{ + + return data.use_placeholder; } int Node::get_position_in_parent() const { @@ -2109,6 +2111,7 @@ Node::Node() { data.parent_owned=false; data.in_constructor=true; data.viewport=NULL; + data.use_placeholder=false; } Node::~Node() { @@ -2125,3 +2128,4 @@ Node::~Node() { } +//////////////////////////////// -- cgit v1.2.3