OverviewFilesCommitsIssuesDocsReleasesPeers

dc-terrain / src / register_types.cpp

44 lines · cpp ref:
#include "register_types.h"
#include "dc_terrain.h"
#include "dc_terrain_generator.h"
#include "dc_terrain_generator_procnodes.h"
#include "dc_terrain_generator_procnodes_bounded.h"
#include "dc_terrain_utils.h"
#include "dc_level.h"
#include <gdextension_interface.h>
#include <godot_cpp/core/defs.hpp>
#include <godot_cpp/godot.hpp>

using namespace godot;

void initialize_dc_terrain_module(ModuleInitializationLevel p_level) {
    if (p_level != MODULE_INITIALIZATION_LEVEL_SCENE) return;
    GDREGISTER_VIRTUAL_CLASS(DCTerrainGenerator);
    GDREGISTER_CLASS(DCTerrainGeneratorNoise);
    GDREGISTER_CLASS(DCTerrainGeneratorMeshSDF);
    GDREGISTER_CLASS(DCTerrainGeneratorScript);
    GDREGISTER_CLASS(DCTerrainGeneratorGeiss);
    GDREGISTER_CLASS(DCTerrainGeneratorProcNodes);
    GDREGISTER_CLASS(DCTerrainGeneratorProcNodesBounded);
    GDREGISTER_CLASS(DCTerrain);
    GDREGISTER_CLASS(DCTerrainUtils);
    GDREGISTER_CLASS(DCLevel);
}

void uninitialize_dc_terrain_module(ModuleInitializationLevel p_level) {
    if (p_level != MODULE_INITIALIZATION_LEVEL_SCENE) return;
}

extern "C" {
GDExtensionBool GDE_EXPORT dc_terrain_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_dc_terrain_module);
    init_obj.register_terminator(uninitialize_dc_terrain_module);
    init_obj.set_minimum_library_initialization_level(MODULE_INITIALIZATION_LEVEL_SCENE);
    return init_obj.init();
}
}