Build a GDExtension with MarshConnector Node

This commit is contained in:
Marek S. Łukasiewicz 2025-01-28 12:47:14 +01:00
parent 2ab1ee403e
commit 3066bdacc9
10 changed files with 323698 additions and 4 deletions

20
src/marshconnector.cpp Normal file
View file

@ -0,0 +1,20 @@
#include "marshconnector.h"
#include <godot_cpp/core/class_db.hpp>
using namespace godot;
void MarshConnector::_bind_methods() {
}
MarshConnector::MarshConnector() {
// Initialize any variables here.
time_passed = 0.0;
}
MarshConnector::~MarshConnector() {
// Add your cleanup here.
}
void MarshConnector::_process(double delta) {
time_passed += delta;
}

26
src/marshconnector.h Normal file
View file

@ -0,0 +1,26 @@
#ifndef MARSHCONNECTOR_H
#define MARSHCONNECTOR_H
#include <godot_cpp/classes/node.hpp>
namespace godot {
class MarshConnector : public Node{
GDCLASS(MarshConnector, Node)
private:
double time_passed;
protected:
static void _bind_methods();
public:
MarshConnector();
~MarshConnector();
void _process(double delta) override;
};
}
#endif // MARSHCONNECTOR_H

36
src/register_types.cpp Normal file
View file

@ -0,0 +1,36 @@
#include "register_types.h"
#include "marshconnector.h"
#include <gdextension_interface.h>
#include <godot_cpp/core/defs.hpp>
#include <godot_cpp/godot.hpp>
using namespace godot;
void initialize_marsh_module(ModuleInitializationLevel p_level) {
if (p_level != MODULE_INITIALIZATION_LEVEL_SCENE) {
return;
}
GDREGISTER_CLASS(MarshConnector);
}
void uninitialize_marsh_module(ModuleInitializationLevel p_level) {
if (p_level != MODULE_INITIALIZATION_LEVEL_SCENE) {
return;
}
}
extern "C" {
// Initialization.
GDExtensionBool GDE_EXPORT marsh_library_init(GDExtensionInterfaceGetProcAddress p_get_proc_address, const GDExtensionClassLibraryPtr p_library, GDExtensionInitialization *r_initialization) {
godot::GDExtensionBinding::InitObject init_obj(p_get_proc_address, p_library, r_initialization);
init_obj.register_initializer(initialize_marsh_module);
init_obj.register_terminator(uninitialize_marsh_module);
init_obj.set_minimum_library_initialization_level(MODULE_INITIALIZATION_LEVEL_SCENE);
return init_obj.init();
}
}

11
src/register_types.h Normal file
View file

@ -0,0 +1,11 @@
#ifndef GDEXAMPLE_REGISTER_TYPES_H
#define GDEXAMPLE_REGISTER_TYPES_H
#include <godot_cpp/core/class_db.hpp>
using namespace godot;
void initialize_example_module(ModuleInitializationLevel p_level);
void uninitialize_example_module(ModuleInitializationLevel p_level);
#endif // GDEXAMPLE_REGISTER_TYPES_H