From 70c040d042cb536e5ce16b0cfff0e0afa39e8ed7 Mon Sep 17 00:00:00 2001 From: Hop311 Date: Thu, 14 Sep 2023 08:52:25 +0100 Subject: Logger::warning, format cleanup + req comments --- extension/src/openvic-extension/register_types.cpp | 63 ++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 extension/src/openvic-extension/register_types.cpp (limited to 'extension/src/openvic-extension/register_types.cpp') diff --git a/extension/src/openvic-extension/register_types.cpp b/extension/src/openvic-extension/register_types.cpp new file mode 100644 index 0000000..273bb85 --- /dev/null +++ b/extension/src/openvic-extension/register_types.cpp @@ -0,0 +1,63 @@ +#include "register_types.hpp" + +#include + +#include "openvic-extension/Checksum.hpp" +#include "openvic-extension/GameSingleton.hpp" +#include "openvic-extension/LoadLocalisation.hpp" +#include "openvic-extension/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(); + } +} -- cgit v1.2.3-56-ga3b1