summaryrefslogtreecommitdiffstats
path: root/core/object/class_db.cpp
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2024-08-30 09:59:05 +0200
committerRémi Verschelde <rverschelde@gmail.com>2024-08-30 09:59:05 +0200
commitf0ee0bdd376c7d32adb83754e4ae5899dba37f91 (patch)
treef83a92ae6141090d673aadf61cc2d229f1de3ffd /core/object/class_db.cpp
parentb310e5e064ab44d594e1aca148e3ca41af3fb15a (diff)
parentef6f873938a7482962ca25e7b167eb5255718f3f (diff)
downloadredot-engine-f0ee0bdd376c7d32adb83754e4ae5899dba37f91.tar.gz
Merge pull request #93972 from Hilderin/fix-editor-needs-restart-after-adding-gdextensions
Fix editor needs restart after adding GDExtensions
Diffstat (limited to 'core/object/class_db.cpp')
-rw-r--r--core/object/class_db.cpp16
1 files changed, 16 insertions, 0 deletions
diff --git a/core/object/class_db.cpp b/core/object/class_db.cpp
index 5c793a676f..c929b29ee9 100644
--- a/core/object/class_db.cpp
+++ b/core/object/class_db.cpp
@@ -271,6 +271,22 @@ void ClassDB::get_extensions_class_list(List<StringName> *p_classes) {
p_classes->sort_custom<StringName::AlphCompare>();
}
+
+void ClassDB::get_extension_class_list(const Ref<GDExtension> &p_extension, List<StringName> *p_classes) {
+ OBJTYPE_RLOCK;
+
+ for (const KeyValue<StringName, ClassInfo> &E : classes) {
+ if (E.value.api != API_EXTENSION && E.value.api != API_EDITOR_EXTENSION) {
+ continue;
+ }
+ if (!E.value.gdextension || E.value.gdextension->library != p_extension.ptr()) {
+ continue;
+ }
+ p_classes->push_back(E.key);
+ }
+
+ p_classes->sort_custom<StringName::AlphCompare>();
+}
#endif
void ClassDB::get_inheriters_from_class(const StringName &p_class, List<StringName> *p_classes) {