diff options
author | Rémi Verschelde <rverschelde@gmail.com> | 2024-08-30 09:59:05 +0200 |
---|---|---|
committer | Rémi Verschelde <rverschelde@gmail.com> | 2024-08-30 09:59:05 +0200 |
commit | f0ee0bdd376c7d32adb83754e4ae5899dba37f91 (patch) | |
tree | f83a92ae6141090d673aadf61cc2d229f1de3ffd /core/object/class_db.cpp | |
parent | b310e5e064ab44d594e1aca148e3ca41af3fb15a (diff) | |
parent | ef6f873938a7482962ca25e7b167eb5255718f3f (diff) | |
download | redot-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.cpp | 16 |
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) { |