summaryrefslogtreecommitdiffstats
path: root/core/object/class_db.cpp
diff options
context:
space:
mode:
authorDaylily-Zeleen <daylily-zeleen@foxmail.com>2022-12-20 11:36:25 +0800
committerDaylily-Zeleen <daylily-zeleen@foxmail.com>2023-09-04 10:18:20 +0800
commit41ffe5461fb4760fe102936dfcfa224d8c08b076 (patch)
treeaa8619a28ecbae8f99d4c0a35eb9654e586884e5 /core/object/class_db.cpp
parentfa3428ff25bc577d2a3433090478a6d615567056 (diff)
downloadredot-engine-41ffe5461fb4760fe102936dfcfa224d8c08b076.tar.gz
Allow GDExtension to register unexposed class.
Diffstat (limited to 'core/object/class_db.cpp')
-rw-r--r--core/object/class_db.cpp9
1 files changed, 8 insertions, 1 deletions
diff --git a/core/object/class_db.cpp b/core/object/class_db.cpp
index e9fd8ad583..9cefd3999d 100644
--- a/core/object/class_db.cpp
+++ b/core/object/class_db.cpp
@@ -1674,7 +1674,14 @@ void ClassDB::register_extension_class(ObjectGDExtension *p_extension) {
c.inherits = parent->name;
c.class_ptr = parent->class_ptr;
c.inherits_ptr = parent;
- c.exposed = true;
+ c.exposed = p_extension->is_exposed;
+ if (c.exposed) {
+ // The parent classes should be exposed if it has an exposed child class.
+ while (parent && !parent->exposed) {
+ parent->exposed = true;
+ parent = classes.getptr(parent->name);
+ }
+ }
classes[p_extension->class_name] = c;
}