Skip to content

Commit

Permalink
Merge pull request #908 from Spartan322/4.3-add/get-open-scenes-roots
Browse files Browse the repository at this point in the history
[4.3] Added get_open_scenes_roots to Editor Interface API
  • Loading branch information
Spartan322 authored Dec 29, 2024
2 parents 01c9acd + 4f9971f commit b5348d4
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 0 deletions.
6 changes: 6 additions & 0 deletions doc/classes/EditorInterface.xml
Original file line number Diff line number Diff line change
Expand Up @@ -150,6 +150,12 @@
Returns an [Array] with the file paths of the currently opened scenes.
</description>
</method>
<method name="get_open_scenes_roots" qualifiers="const">
<return type="Array" />
<description>
Returns an [Array] with the root nodes of the currently opened scenes.
</description>
</method>
<method name="get_playing_scene" qualifiers="const">
<return type="String" />
<description>
Expand Down
15 changes: 15 additions & 0 deletions editor/editor_interface.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -437,6 +437,20 @@ PackedStringArray EditorInterface::get_open_scenes() const {
return ret;
}

Array EditorInterface::get_open_scenes_roots() const {
Array ret;
Vector<EditorData::EditedScene> scenes = EditorNode::get_editor_data().get_edited_scenes();

int scns_amount = scenes.size();
for (int idx_scn = 0; idx_scn < scns_amount; idx_scn++) {
if (scenes[idx_scn].root == nullptr) {
continue;
}
ret.push_back(scenes[idx_scn].root);
}
return ret;
}

Error EditorInterface::save_scene() {
if (!get_edited_scene_root()) {
return ERR_CANT_CREATE;
Expand Down Expand Up @@ -585,6 +599,7 @@ void EditorInterface::_bind_methods() {
ClassDB::bind_method(D_METHOD("reload_scene_from_path", "scene_filepath"), &EditorInterface::reload_scene_from_path);

ClassDB::bind_method(D_METHOD("get_open_scenes"), &EditorInterface::get_open_scenes);
ClassDB::bind_method(D_METHOD("get_open_scenes_roots"), &EditorInterface::get_open_scenes_roots);
ClassDB::bind_method(D_METHOD("get_edited_scene_root"), &EditorInterface::get_edited_scene_root);

ClassDB::bind_method(D_METHOD("save_scene"), &EditorInterface::save_scene);
Expand Down
1 change: 1 addition & 0 deletions editor/editor_interface.h
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,7 @@ class EditorInterface : public Object {
void reload_scene_from_path(const String &scene_path);

PackedStringArray get_open_scenes() const;
Array get_open_scenes_roots() const;
Node *get_edited_scene_root() const;

Error save_scene();
Expand Down

0 comments on commit b5348d4

Please sign in to comment.