@@ -47,10 +47,10 @@ GDExtensionInterfaceGetProcAddress gdextension_interface_get_proc_address = null
47
47
GDExtensionClassLibraryPtr library = nullptr ;
48
48
void *token = nullptr ;
49
49
50
- GDExtensionGodotVersion godot_version = { 0 , 0 , 0 , nullptr };
50
+ GDExtensionGodotVersion2 godot_version = {};
51
51
52
52
// All of the GDExtension interface functions.
53
- GDExtensionInterfaceGetGodotVersion gdextension_interface_get_godot_version = nullptr ;
53
+ GDExtensionInterfaceGetGodotVersion2 gdextension_interface_get_godot_version2 = nullptr ;
54
54
GDExtensionInterfaceMemAlloc gdextension_interface_mem_alloc = nullptr ;
55
55
GDExtensionInterfaceMemRealloc gdextension_interface_mem_realloc = nullptr ;
56
56
GDExtensionInterfaceMemFree gdextension_interface_mem_free = nullptr ;
@@ -162,7 +162,6 @@ GDExtensionInterfacePackedVector4ArrayOperatorIndex gdextension_interface_packed
162
162
GDExtensionInterfacePackedVector4ArrayOperatorIndexConst gdextension_interface_packed_vector4_array_operator_index_const = nullptr ;
163
163
GDExtensionInterfaceArrayOperatorIndex gdextension_interface_array_operator_index = nullptr ;
164
164
GDExtensionInterfaceArrayOperatorIndexConst gdextension_interface_array_operator_index_const = nullptr ;
165
- GDExtensionInterfaceArrayRef gdextension_interface_array_ref = nullptr ;
166
165
GDExtensionInterfaceArraySetTyped gdextension_interface_array_set_typed = nullptr ;
167
166
GDExtensionInterfaceDictionaryOperatorIndex gdextension_interface_dictionary_operator_index = nullptr ;
168
167
GDExtensionInterfaceDictionaryOperatorIndexConst gdextension_interface_dictionary_operator_index_const = nullptr ;
@@ -211,6 +210,7 @@ GDExtensionsInterfaceEditorHelpLoadXmlFromUtf8Chars gdextension_interface_editor
211
210
GDExtensionsInterfaceEditorHelpLoadXmlFromUtf8CharsAndLen gdextension_interface_editor_help_load_xml_from_utf8_chars_and_len = nullptr ;
212
211
GDExtensionInterfaceImagePtrw gdextension_interface_image_ptrw = nullptr ;
213
212
GDExtensionInterfaceImagePtr gdextension_interface_image_ptr = nullptr ;
213
+ GDExtensionInterfaceRegisterMainLoopCallbacks gdextension_interface_register_main_loop_callbacks = nullptr ;
214
214
215
215
struct DocData {
216
216
const char *hash = nullptr ;
@@ -308,8 +308,8 @@ GDExtensionBool GDExtensionBinding::init(GDExtensionInterfaceGetProcAddress p_ge
308
308
internal::library = p_library;
309
309
internal::token = p_library;
310
310
311
- LOAD_PROC_ADDRESS (get_godot_version, GDExtensionInterfaceGetGodotVersion );
312
- internal::gdextension_interface_get_godot_version (&internal::godot_version);
311
+ LOAD_PROC_ADDRESS (get_godot_version2, GDExtensionInterfaceGetGodotVersion2 );
312
+ internal::gdextension_interface_get_godot_version2 (&internal::godot_version);
313
313
314
314
// Check that godot-cpp was compiled using an extension_api.json older or at the
315
315
// same version as the Godot that is loading it.
@@ -447,7 +447,6 @@ GDExtensionBool GDExtensionBinding::init(GDExtensionInterfaceGetProcAddress p_ge
447
447
LOAD_PROC_ADDRESS (packed_vector4_array_operator_index_const, GDExtensionInterfacePackedVector4ArrayOperatorIndexConst);
448
448
LOAD_PROC_ADDRESS (array_operator_index, GDExtensionInterfaceArrayOperatorIndex);
449
449
LOAD_PROC_ADDRESS (array_operator_index_const, GDExtensionInterfaceArrayOperatorIndexConst);
450
- LOAD_PROC_ADDRESS (array_ref, GDExtensionInterfaceArrayRef);
451
450
LOAD_PROC_ADDRESS (array_set_typed, GDExtensionInterfaceArraySetTyped);
452
451
LOAD_PROC_ADDRESS (dictionary_operator_index, GDExtensionInterfaceDictionaryOperatorIndex);
453
452
LOAD_PROC_ADDRESS (dictionary_operator_index_const, GDExtensionInterfaceDictionaryOperatorIndexConst);
@@ -496,6 +495,7 @@ GDExtensionBool GDExtensionBinding::init(GDExtensionInterfaceGetProcAddress p_ge
496
495
LOAD_PROC_ADDRESS (editor_help_load_xml_from_utf8_chars_and_len, GDExtensionsInterfaceEditorHelpLoadXmlFromUtf8CharsAndLen);
497
496
LOAD_PROC_ADDRESS (image_ptrw, GDExtensionInterfaceImagePtrw);
498
497
LOAD_PROC_ADDRESS (image_ptr, GDExtensionInterfaceImagePtr);
498
+ LOAD_PROC_ADDRESS (register_main_loop_callbacks, GDExtensionInterfaceRegisterMainLoopCallbacks);
499
499
500
500
r_initialization->initialize = initialize_level;
501
501
r_initialization->deinitialize = deinitialize_level;
@@ -526,6 +526,10 @@ void GDExtensionBinding::initialize_level(void *p_userdata, GDExtensionInitializ
526
526
}
527
527
level_initialized[p_level]++;
528
528
529
+ if ((ModuleInitializationLevel)p_level == MODULE_INITIALIZATION_LEVEL_CORE && init_data && init_data->has_main_loop_callbacks ()) {
530
+ internal::gdextension_interface_register_main_loop_callbacks (internal::library, &init_data->main_loop_callbacks );
531
+ }
532
+
529
533
if ((ModuleInitializationLevel)p_level == MODULE_INITIALIZATION_LEVEL_EDITOR) {
530
534
internal::gdextension_interface_editor_register_get_classes_used_callback (internal::library, &ClassDB::_editor_get_classes_used_callback);
531
535
@@ -596,6 +600,18 @@ void GDExtensionBinding::InitObject::set_minimum_library_initialization_level(Mo
596
600
init_data->minimum_initialization_level = static_cast <GDExtensionInitializationLevel>(p_level);
597
601
}
598
602
603
+ void GDExtensionBinding::InitObject::register_startup_callback (GDExtensionMainLoopStartupCallback p_callback) const {
604
+ init_data->main_loop_callbacks .startup_func = p_callback;
605
+ }
606
+
607
+ void GDExtensionBinding::InitObject::register_frame_callback (GDExtensionMainLoopFrameCallback p_callback) const {
608
+ init_data->main_loop_callbacks .frame_func = p_callback;
609
+ }
610
+
611
+ void GDExtensionBinding::InitObject::register_shutdown_callback (GDExtensionMainLoopShutdownCallback p_callback) const {
612
+ init_data->main_loop_callbacks .shutdown_func = p_callback;
613
+ }
614
+
599
615
GDExtensionBool GDExtensionBinding::InitObject::init () const {
600
616
return GDExtensionBinding::init (get_proc_address, library, init_data, initialization);
601
617
}
0 commit comments