Merge pull request #26812 from KoBeWi/auto-complete-the-scenes
Add autocomplete support for change_scene()
This commit is contained in:
commit
244088c76d
2 changed files with 34 additions and 0 deletions
|
@ -33,6 +33,7 @@
|
|||
#include "core/io/marshalls.h"
|
||||
#include "core/io/resource_loader.h"
|
||||
#include "core/message_queue.h"
|
||||
#include "core/os/dir_access.h"
|
||||
#include "core/os/keyboard.h"
|
||||
#include "core/os/os.h"
|
||||
#include "core/print_string.h"
|
||||
|
@ -1953,6 +1954,38 @@ bool SceneTree::is_using_font_oversampling() const {
|
|||
return use_font_oversampling;
|
||||
}
|
||||
|
||||
void SceneTree::get_argument_options(const StringName &p_function, int p_idx, List<String> *r_options) const {
|
||||
|
||||
if (p_function == "change_scene") {
|
||||
DirAccessRef dir_access = DirAccess::create(DirAccess::ACCESS_RESOURCES);
|
||||
List<String> directories;
|
||||
directories.push_back(dir_access->get_current_dir());
|
||||
|
||||
while (!directories.empty()) {
|
||||
dir_access->change_dir(directories.back()->get());
|
||||
directories.pop_back();
|
||||
|
||||
dir_access->list_dir_begin();
|
||||
String filename = dir_access->get_next();
|
||||
|
||||
while (filename != "") {
|
||||
if (filename == "." || filename == "..") {
|
||||
filename = dir_access->get_next();
|
||||
continue;
|
||||
}
|
||||
|
||||
if (dir_access->dir_exists(filename)) {
|
||||
directories.push_back(dir_access->get_current_dir().plus_file(filename));
|
||||
} else if (filename.ends_with(".tscn") || filename.ends_with(".scn")) {
|
||||
r_options->push_back("\"" + dir_access->get_current_dir().plus_file(filename) + "\"");
|
||||
}
|
||||
|
||||
filename = dir_access->get_next();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
SceneTree::SceneTree() {
|
||||
|
||||
if (singleton == NULL) singleton = this;
|
||||
|
|
|
@ -408,6 +408,7 @@ public:
|
|||
|
||||
void drop_files(const Vector<String> &p_files, int p_from_screen = 0);
|
||||
void global_menu_action(const Variant &p_id, const Variant &p_meta);
|
||||
void get_argument_options(const StringName &p_function, int p_idx, List<String> *r_options) const;
|
||||
|
||||
//network API
|
||||
|
||||
|
|
Loading…
Reference in a new issue