Added get_open_scenes_roots

- Modified doc/classes/EditorInterface.xml
- Modified editor/editor_interface.cpp
- Modified editor/editor_interface.h
This commit is contained in:
Cyclone 2024-10-05 07:39:10 +03:30
parent db66bd35af
commit 5d72926100
3 changed files with 22 additions and 0 deletions

View file

@ -156,6 +156,12 @@
Returns an [Array] with the file paths of the currently opened scenes. Returns an [Array] with the file paths of the currently opened scenes.
</description> </description>
</method> </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"> <method name="get_playing_scene" qualifiers="const">
<return type="String" /> <return type="String" />
<description> <description>

View file

@ -466,6 +466,20 @@ PackedStringArray EditorInterface::get_open_scenes() const {
return ret; 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() { Error EditorInterface::save_scene() {
if (!get_edited_scene_root()) { if (!get_edited_scene_root()) {
return ERR_CANT_CREATE; return ERR_CANT_CREATE;
@ -616,6 +630,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("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"), &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("get_edited_scene_root"), &EditorInterface::get_edited_scene_root);
ClassDB::bind_method(D_METHOD("save_scene"), &EditorInterface::save_scene); ClassDB::bind_method(D_METHOD("save_scene"), &EditorInterface::save_scene);

View file

@ -162,6 +162,7 @@ public:
void reload_scene_from_path(const String &scene_path); void reload_scene_from_path(const String &scene_path);
PackedStringArray get_open_scenes() const; PackedStringArray get_open_scenes() const;
Array get_open_scenes_roots() const;
Node *get_edited_scene_root() const; Node *get_edited_scene_root() const;
Error save_scene(); Error save_scene();