summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2024-03-01 14:56:12 +0100
committerRémi Verschelde <rverschelde@gmail.com>2024-03-01 14:56:12 +0100
commit0618bff3940a596114cc4fc1bdc302f0b218bfea (patch)
tree1b6a834132df5bba1de33fe710fade246381c296
parentc1377920cdf919e7316e43f5039c46ac91fd96e0 (diff)
parent920dff34452a1beec08e0d9bc7f0343d21154c62 (diff)
downloadredot-engine-0618bff3940a596114cc4fc1bdc302f0b218bfea.tar.gz
Merge pull request #86777 from Mickeon/autocomplete-classdb
Add autocompletion for ClassDB & AudioServer
-rw-r--r--core/core_bind.cpp24
-rw-r--r--core/core_bind.h4
-rw-r--r--servers/audio_server.cpp13
-rw-r--r--servers/audio_server.h4
4 files changed, 45 insertions, 0 deletions
diff --git a/core/core_bind.cpp b/core/core_bind.cpp
index b5098fc4d2..a0df1b6240 100644
--- a/core/core_bind.cpp
+++ b/core/core_bind.cpp
@@ -1519,6 +1519,30 @@ bool ClassDB::is_class_enabled(const StringName &p_class) const {
return ::ClassDB::is_class_enabled(p_class);
}
+#ifdef TOOLS_ENABLED
+void ClassDB::get_argument_options(const StringName &p_function, int p_idx, List<String> *r_options) const {
+ const String pf = p_function;
+ bool first_argument_is_class = false;
+ if (p_idx == 0) {
+ first_argument_is_class = (pf == "get_inheriters_from_class" || pf == "get_parent_class" ||
+ pf == "class_exists" || pf == "can_instantiate" || pf == "instantiate" ||
+ pf == "class_has_signal" || pf == "class_get_signal" || pf == "class_get_signal_list" ||
+ pf == "class_get_property_list" || pf == "class_get_property" || pf == "class_set_property" ||
+ pf == "class_has_method" || pf == "class_get_method_list" ||
+ pf == "class_get_integer_constant_list" || pf == "class_has_integer_constant" || pf == "class_get_integer_constant" ||
+ pf == "class_has_enum" || pf == "class_get_enum_list" || pf == "class_get_enum_constants" || pf == "class_get_integer_constant_enum" ||
+ pf == "is_class_enabled");
+ }
+ if (first_argument_is_class || pf == "is_parent_class") {
+ for (const String &E : get_class_list()) {
+ r_options->push_back(E.quote());
+ }
+ }
+
+ Object::get_argument_options(p_function, p_idx, r_options);
+}
+#endif
+
void ClassDB::_bind_methods() {
::ClassDB::bind_method(D_METHOD("get_class_list"), &ClassDB::get_class_list);
::ClassDB::bind_method(D_METHOD("get_inheriters_from_class", "class"), &ClassDB::get_inheriters_from_class);
diff --git a/core/core_bind.h b/core/core_bind.h
index d5b8151f1e..64ab4dd7e2 100644
--- a/core/core_bind.h
+++ b/core/core_bind.h
@@ -460,6 +460,10 @@ public:
bool is_class_enabled(const StringName &p_class) const;
+#ifdef TOOLS_ENABLED
+ virtual void get_argument_options(const StringName &p_function, int p_idx, List<String> *r_options) const override;
+#endif
+
ClassDB() {}
~ClassDB() {}
};
diff --git a/servers/audio_server.cpp b/servers/audio_server.cpp
index 69a66a7d62..820e0bbeb6 100644
--- a/servers/audio_server.cpp
+++ b/servers/audio_server.cpp
@@ -1692,6 +1692,19 @@ void AudioServer::set_enable_tagging_used_audio_streams(bool p_enable) {
tag_used_audio_streams = p_enable;
}
+#ifdef TOOLS_ENABLED
+void AudioServer::get_argument_options(const StringName &p_function, int p_idx, List<String> *r_options) const {
+ const String pf = p_function;
+ if ((p_idx == 0 && pf == "get_bus_index") || (p_idx == 1 && pf == "set_bus_send")) {
+ for (const AudioServer::Bus *E : buses) {
+ r_options->push_back(String(E->name).quote());
+ }
+ }
+
+ Object::get_argument_options(p_function, p_idx, r_options);
+}
+#endif
+
void AudioServer::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_bus_count", "amount"), &AudioServer::set_bus_count);
ClassDB::bind_method(D_METHOD("get_bus_count"), &AudioServer::get_bus_count);
diff --git a/servers/audio_server.h b/servers/audio_server.h
index a7b764d1a5..7dd81beabe 100644
--- a/servers/audio_server.h
+++ b/servers/audio_server.h
@@ -436,6 +436,10 @@ public:
void set_enable_tagging_used_audio_streams(bool p_enable);
+#ifdef TOOLS_ENABLED
+ virtual void get_argument_options(const StringName &p_function, int p_idx, List<String> *r_options) const override;
+#endif
+
AudioServer();
virtual ~AudioServer();
};