diff options
author | Daylily-Zeleen <daylily-zeleen@foxmail.com> | 2022-12-20 11:36:25 +0800 |
---|---|---|
committer | Daylily-Zeleen <daylily-zeleen@foxmail.com> | 2023-09-04 10:18:20 +0800 |
commit | 41ffe5461fb4760fe102936dfcfa224d8c08b076 (patch) | |
tree | aa8619a28ecbae8f99d4c0a35eb9654e586884e5 /core/object/class_db.cpp | |
parent | fa3428ff25bc577d2a3433090478a6d615567056 (diff) | |
download | redot-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.cpp | 9 |
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; } |