#include "register_types.h" #include #include "Checksum.hpp" #include "GameSingleton.hpp" #include "LoadLocalisation.hpp" #include "MapMesh.hpp" using namespace godot; using namespace OpenVic; static Checksum* _checksum; static LoadLocalisation* _load_localisation; static GameSingleton* _map_singleton; void initialize_openvic_types(ModuleInitializationLevel p_level) { if (p_level != MODULE_INITIALIZATION_LEVEL_SCENE) { return; } ClassDB::register_class(); _checksum = memnew(Checksum); Engine::get_singleton()->register_singleton("Checksum", Checksum::get_singleton()); ClassDB::register_class(); _load_localisation = memnew(LoadLocalisation); Engine::get_singleton()->register_singleton("LoadLocalisation", LoadLocalisation::get_singleton()); ClassDB::register_class(); _map_singleton = memnew(GameSingleton); Engine::get_singleton()->register_singleton("GameSingleton", GameSingleton::get_singleton()); ClassDB::register_class(); } void uninitialize_openvic_types(ModuleInitializationLevel p_level) { if (p_level != MODULE_INITIALIZATION_LEVEL_SCENE) { return; } Engine::get_singleton()->unregister_singleton("Checksum"); memdelete(_checksum); Engine::get_singleton()->unregister_singleton("LoadLocalisation"); memdelete(_load_localisation); Engine::get_singleton()->unregister_singleton("GameSingleton"); memdelete(_map_singleton); } extern "C" { // Initialization. GDExtensionBool GDE_EXPORT openvic_library_init(GDExtensionInterfaceGetProcAddress p_get_proc_address, GDExtensionClassLibraryPtr p_library, GDExtensionInitialization* r_initialization) { GDExtensionBinding::InitObject init_obj(p_get_proc_address, p_library, r_initialization); init_obj.register_initializer(initialize_openvic_types); init_obj.register_terminator(uninitialize_openvic_types); init_obj.set_minimum_library_initialization_level(MODULE_INITIALIZATION_LEVEL_SCENE); return init_obj.init(); } }