diff options
Diffstat (limited to 'tools/editor/editor_data.cpp')
-rw-r--r-- | tools/editor/editor_data.cpp | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/tools/editor/editor_data.cpp b/tools/editor/editor_data.cpp index c872b1c3ca..aa10d6c86f 100644 --- a/tools/editor/editor_data.cpp +++ b/tools/editor/editor_data.cpp @@ -791,6 +791,8 @@ void EditorSelection::_node_removed(Node *p_node) { void EditorSelection::add_node(Node *p_node) { + ERR_FAIL_NULL(p_node); + if (selection.has(p_node)) return; @@ -814,6 +816,8 @@ void EditorSelection::add_node(Node *p_node) { void EditorSelection::remove_node(Node *p_node) { + ERR_FAIL_NULL(p_node); + if (!selection.has(p_node)) return; @@ -832,12 +836,25 @@ bool EditorSelection::is_selected(Node * p_node) const { } +Array EditorSelection::_get_selected_nodes() { + + Array ret; + + for (List<Node*>::Element *E=selected_node_list.front();E;E=E->next()) { + + ret.push_back(E->get()); + } + + return ret; +} void EditorSelection::_bind_methods() { ObjectTypeDB::bind_method(_MD("_node_removed"),&EditorSelection::_node_removed); ObjectTypeDB::bind_method(_MD("clear"),&EditorSelection::clear); - ObjectTypeDB::bind_method(_MD("add_node"),&EditorSelection::add_node); + ObjectTypeDB::bind_method(_MD("add_node","node"),&EditorSelection::add_node); + ObjectTypeDB::bind_method(_MD("remove_node","node"),&EditorSelection::remove_node); + ObjectTypeDB::bind_method(_MD("get_selected_nodes"),&EditorSelection::_get_selected_nodes); ADD_SIGNAL( MethodInfo("selection_changed") ); } |