@@ -267,6 +267,7 @@ void GDExtension::_register_extension_class(GDExtensionClassLibraryPtr p_library
267267 };
268268
269269 const ClassCreationDeprecatedInfo legacy = {
270+ false ,
270271 p_extension_funcs->notification_func , // GDExtensionClassNotification notification_func;
271272 p_extension_funcs->free_property_list_func , // GDExtensionClassFreePropertyList free_property_list_func;
272273 p_extension_funcs->create_instance_func , // GDExtensionClassCreateInstance create_instance_func;
@@ -281,7 +282,7 @@ void GDExtension::_register_extension_class2(GDExtensionClassLibraryPtr p_librar
281282 const GDExtensionClassCreationInfo5 class_info5 = {
282283 p_extension_funcs->is_virtual , // GDExtensionBool is_virtual;
283284 p_extension_funcs->is_abstract , // GDExtensionBool is_abstract;
284- true , // GDExtensionBool is_exposed;
285+ p_extension_funcs-> is_exposed , // GDExtensionBool is_exposed;
285286 false , // GDExtensionBool is_runtime;
286287 nullptr , // GDExtensionConstStringPtr icon_path;
287288 p_extension_funcs->set_func , // GDExtensionClassSet set_func;
@@ -305,6 +306,7 @@ void GDExtension::_register_extension_class2(GDExtensionClassLibraryPtr p_librar
305306 };
306307
307308 const ClassCreationDeprecatedInfo legacy = {
309+ !p_extension_funcs->is_exposed , // bool legacy_unexposed_class;
308310 nullptr , // GDExtensionClassNotification notification_func;
309311 p_extension_funcs->free_property_list_func , // GDExtensionClassFreePropertyList free_property_list_func;
310312 p_extension_funcs->create_instance_func , // GDExtensionClassCreateInstance create_instance_func;
@@ -319,7 +321,7 @@ void GDExtension::_register_extension_class3(GDExtensionClassLibraryPtr p_librar
319321 const GDExtensionClassCreationInfo5 class_info5 = {
320322 p_extension_funcs->is_virtual , // GDExtensionBool is_virtual;
321323 p_extension_funcs->is_abstract , // GDExtensionBool is_abstract;
322- true , // GDExtensionBool is_exposed;
324+ p_extension_funcs-> is_exposed , // GDExtensionBool is_exposed;
323325 p_extension_funcs->is_runtime , // GDExtensionBool is_runtime;
324326 nullptr , // GDExtensionConstStringPtr icon_path;
325327 p_extension_funcs->set_func , // GDExtensionClassSet set_func;
@@ -343,6 +345,7 @@ void GDExtension::_register_extension_class3(GDExtensionClassLibraryPtr p_librar
343345 };
344346
345347 const ClassCreationDeprecatedInfo legacy = {
348+ !p_extension_funcs->is_exposed , // bool legacy_unexposed_class;
346349 nullptr , // GDExtensionClassNotification notification_func;
347350 nullptr , // GDExtensionClassFreePropertyList free_property_list_func;
348351 p_extension_funcs->create_instance_func , // GDExtensionClassCreateInstance2 create_instance_func;
@@ -355,9 +358,16 @@ void GDExtension::_register_extension_class3(GDExtensionClassLibraryPtr p_librar
355358
356359void GDExtension::_register_extension_class4 (GDExtensionClassLibraryPtr p_library, GDExtensionConstStringNamePtr p_class_name, GDExtensionConstStringNamePtr p_parent_class_name, const GDExtensionClassCreationInfo4 *p_extension_funcs) {
357360 GDExtensionClassCreationInfo5 class_info5 = *p_extension_funcs;
358- // Force classes to be exposed, because the behavior of unexposed classes changed in an incompatible (albeit, minor) way.
359- class_info5.is_exposed = true ;
360- _register_extension_class_internal (p_library, p_class_name, p_parent_class_name, &class_info5);
361+ const ClassCreationDeprecatedInfo legacy = {
362+ !p_extension_funcs->is_exposed , // bool legacy_unexposed_class;
363+ nullptr , // GDExtensionClassNotification notification_func;
364+ nullptr , // GDExtensionClassFreePropertyList free_property_list_func;
365+ nullptr , // GDExtensionClassCreateInstance2 create_instance_func;
366+ nullptr , // GDExtensionClassGetRID get_rid;
367+ nullptr , // GDExtensionClassGetVirtual get_virtual_func;
368+ nullptr , // GDExtensionClassGetVirtual get_virtual_func;
369+ };
370+ _register_extension_class_internal (p_library, p_class_name, p_parent_class_name, &class_info5, &legacy);
361371}
362372#endif // DISABLE_DEPRECATED
363373
@@ -447,6 +457,7 @@ void GDExtension::_register_extension_class_internal(GDExtensionClassLibraryPtr
447457 extension->gdextension .validate_property = p_extension_funcs->validate_property_func ;
448458#ifndef DISABLE_DEPRECATED
449459 if (p_deprecated_funcs) {
460+ extension->gdextension .legacy_unexposed_class = p_deprecated_funcs->legacy_unexposed_class ;
450461 extension->gdextension .notification = p_deprecated_funcs->notification_func ;
451462 extension->gdextension .free_property_list = p_deprecated_funcs->free_property_list_func ;
452463 extension->gdextension .create_instance = p_deprecated_funcs->create_instance_func ;
0 commit comments