#include "terraingen.h" #include #include namespace godot { TerrainGen::TerrainGen() : core(NULL), geoMorphRegistry(NULL) {} TerrainGen::~TerrainGen() { delete core; delete geoMorphRegistry; } void TerrainGen::_init() { geoMorphRegistry = new geoworld::DefaultGMRegistry(); } void TerrainGen::_register_methods() { register_property("Configuration", &TerrainGen::set_config, &TerrainGen::get_config, String()); register_property("OutputFile", &TerrainGen::outputFile, "default.pgw"); register_property("TileSize", &TerrainGen::tileDim, 128); register_property("Width", &TerrainGen::width, 4000); register_property("Height", &TerrainGen::height, 4000); register_property("Depth", &TerrainGen::depth, 20000); register_method("build", &TerrainGen::build); } String TerrainGen::get_config() { return config; } void TerrainGen::set_config(String config) { delete this->core; try { this->core = new TerrainGeneratorCore(config.utf8().get_data(), this->geoMorphRegistry); } catch (std::exception * ex) { this->core = NULL; LOG(mars::Log::Fatal) << "Caught exception: " << ex->what(); } } void TerrainGen::build() { std::string outputFile = this->outputFile.utf8().get_data(); this->core->generate(outputFile, tileDim, width, height, depth); } }