diff options
Diffstat (limited to 'extension/src/register_types.cpp')
-rw-r--r-- | extension/src/register_types.cpp | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/extension/src/register_types.cpp b/extension/src/register_types.cpp new file mode 100644 index 0000000..775e6c3 --- /dev/null +++ b/extension/src/register_types.cpp @@ -0,0 +1,51 @@ +#include "register_types.h" +#include <gdextension_interface.h> +#include <godot_cpp/core/class_db.hpp> +#include <godot_cpp/core/defs.hpp> +#include <godot_cpp/godot.hpp> +#include <godot_cpp/classes/engine.hpp> + +#include "TestSingleton.hpp" + +using namespace godot; +using namespace OpenVic2; + +static TestSingleton *_test_singleton; + +void initialize_openvic2_types(ModuleInitializationLevel p_level) +{ + if (p_level != MODULE_INITIALIZATION_LEVEL_SCENE) { + return; + } + + ClassDB::register_class<TestSingleton>(); + + _test_singleton = memnew(TestSingleton); + Engine::get_singleton()->register_singleton("TestSingleton", TestSingleton::get_singleton()); +} + +void uninitialize_openvic2_types(ModuleInitializationLevel p_level) { + if (p_level != MODULE_INITIALIZATION_LEVEL_SCENE) { + return; + } + + Engine::get_singleton()->unregister_singleton("TestSingleton"); + memdelete(_test_singleton); +} + +extern "C" +{ + + // Initialization. + + GDExtensionBool GDE_EXPORT openvic2_library_init(const GDExtensionInterface *p_interface, const GDExtensionClassLibraryPtr p_library, GDExtensionInitialization *r_initialization) + { + GDExtensionBinding::InitObject init_obj(p_interface, p_library, r_initialization); + + init_obj.register_initializer(initialize_openvic2_types); + init_obj.register_terminator(uninitialize_openvic2_types); + init_obj.set_minimum_library_initialization_level(MODULE_INITIALIZATION_LEVEL_SCENE); + + return init_obj.init(); + } +}
\ No newline at end of file |