register_types.cpp 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. /* godot-cpp integration testing project.
  2. *
  3. * This is free and unencumbered software released into the public domain.
  4. */
  5. #include "register_types.h"
  6. #include <godot/gdextension_interface.h>
  7. #include <godot_cpp/core/class_db.hpp>
  8. #include <godot_cpp/core/defs.hpp>
  9. #include <godot_cpp/godot.hpp>
  10. #include "example.h"
  11. #include "tests.h"
  12. using namespace godot;
  13. void initialize_example_module(ModuleInitializationLevel p_level) {
  14. if (p_level != MODULE_INITIALIZATION_LEVEL_SCENE) {
  15. return;
  16. }
  17. ClassDB::register_class<ExampleRef>();
  18. ClassDB::register_class<ExampleMin>();
  19. ClassDB::register_class<Example>();
  20. ClassDB::register_class<ExampleVirtual>(true);
  21. ClassDB::register_abstract_class<ExampleAbstract>();
  22. }
  23. void uninitialize_example_module(ModuleInitializationLevel p_level) {
  24. if (p_level != MODULE_INITIALIZATION_LEVEL_SCENE) {
  25. return;
  26. }
  27. }
  28. extern "C" {
  29. // Initialization.
  30. GDExtensionBool GDE_EXPORT example_library_init(const GDExtensionInterface *p_interface, GDExtensionClassLibraryPtr p_library, GDExtensionInitialization *r_initialization) {
  31. godot::GDExtensionBinding::InitObject init_obj(p_interface, p_library, r_initialization);
  32. init_obj.register_initializer(initialize_example_module);
  33. init_obj.register_terminator(uninitialize_example_module);
  34. init_obj.set_minimum_library_initialization_level(MODULE_INITIALIZATION_LEVEL_SCENE);
  35. return init_obj.init();
  36. }
  37. }