mirror of
https://github.com/Relintai/world_generator.git
synced 2024-11-12 10:15:07 +01:00
Merged PlanetData into Planet.
This commit is contained in:
parent
59dde526b9
commit
733f754783
1
SCsub
1
SCsub
@ -31,7 +31,6 @@ sources = [
|
|||||||
"data/dungeon_corridor_data.cpp",
|
"data/dungeon_corridor_data.cpp",
|
||||||
"data/dungeon_data.cpp",
|
"data/dungeon_data.cpp",
|
||||||
"data/biome_data.cpp",
|
"data/biome_data.cpp",
|
||||||
"data/planet_data.cpp",
|
|
||||||
"data/world_generator_prop_data.cpp",
|
"data/world_generator_prop_data.cpp",
|
||||||
|
|
||||||
"world_generator.cpp",
|
"world_generator.cpp",
|
||||||
|
@ -10,7 +10,6 @@ def get_doc_classes():
|
|||||||
"DungeonCorridorData",
|
"DungeonCorridorData",
|
||||||
"DungeonData",
|
"DungeonData",
|
||||||
"DungeonRoomData",
|
"DungeonRoomData",
|
||||||
"PlanetData",
|
|
||||||
"WorldGeneratorPropData",
|
"WorldGeneratorPropData",
|
||||||
"BiomeData",
|
"BiomeData",
|
||||||
|
|
||||||
|
@ -1,289 +0,0 @@
|
|||||||
/*
|
|
||||||
Copyright (c) 2019-2020 Péter Magyar
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in all
|
|
||||||
copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
SOFTWARE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "planet_data.h"
|
|
||||||
|
|
||||||
#include "core/version.h"
|
|
||||||
|
|
||||||
#include "../main/planet.h"
|
|
||||||
|
|
||||||
int PlanetData::get_id() const {
|
|
||||||
return _id;
|
|
||||||
}
|
|
||||||
void PlanetData::set_id(const int value) {
|
|
||||||
_id = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
Ref<Planet> PlanetData::get_planet() {
|
|
||||||
return _planet;
|
|
||||||
}
|
|
||||||
void PlanetData::set_planet(const Ref<Planet> &planet) {
|
|
||||||
_planet = planet;
|
|
||||||
}
|
|
||||||
|
|
||||||
Vector2 PlanetData::get_level_range() {
|
|
||||||
return _level_range;
|
|
||||||
}
|
|
||||||
void PlanetData::set_level_range(Vector2 value) {
|
|
||||||
_level_range = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef FASTNOISE_PRESENT
|
|
||||||
Ref<FastnoiseNoiseParams> PlanetData::get_humidity_noise_params() {
|
|
||||||
return _humidity_noise_params;
|
|
||||||
}
|
|
||||||
void PlanetData::set_humidity_noise_params(Ref<FastnoiseNoiseParams> value) {
|
|
||||||
_humidity_noise_params = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
Ref<FastnoiseNoiseParams> PlanetData::get_temperature_noise_params() {
|
|
||||||
return _temperature_noise_params;
|
|
||||||
}
|
|
||||||
void PlanetData::set_temperature_noise_params(Ref<FastnoiseNoiseParams> value) {
|
|
||||||
_temperature_noise_params = value;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
//Biomes
|
|
||||||
Ref<BiomeData> PlanetData::get_biome_data(const int index) const {
|
|
||||||
ERR_FAIL_INDEX_V(index, _biome_datas.size(), Ref<BiomeData>());
|
|
||||||
|
|
||||||
return _biome_datas.get(index);
|
|
||||||
}
|
|
||||||
void PlanetData::set_biome_data(const int index, const Ref<BiomeData> biome_data) {
|
|
||||||
ERR_FAIL_INDEX(index, _biome_datas.size());
|
|
||||||
|
|
||||||
_biome_datas.set(index, biome_data);
|
|
||||||
}
|
|
||||||
void PlanetData::add_biome_data(const Ref<BiomeData> biome_data) {
|
|
||||||
_biome_datas.push_back(biome_data);
|
|
||||||
}
|
|
||||||
void PlanetData::remove_biome_data(const int index) {
|
|
||||||
ERR_FAIL_INDEX(index, _biome_datas.size());
|
|
||||||
|
|
||||||
_biome_datas.remove(index);
|
|
||||||
}
|
|
||||||
int PlanetData::get_biome_data_count() const {
|
|
||||||
return _biome_datas.size();
|
|
||||||
}
|
|
||||||
|
|
||||||
Vector<Variant> PlanetData::get_biome_datas() {
|
|
||||||
Vector<Variant> r;
|
|
||||||
for (int i = 0; i < _biome_datas.size(); i++) {
|
|
||||||
#if VERSION_MAJOR < 4
|
|
||||||
r.push_back(_biome_datas[i].get_ref_ptr());
|
|
||||||
#else
|
|
||||||
r.push_back(_biome_datas[i]);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
return r;
|
|
||||||
}
|
|
||||||
void PlanetData::set_biome_datas(const Vector<Variant> &biome_datas) {
|
|
||||||
_biome_datas.clear();
|
|
||||||
for (int i = 0; i < biome_datas.size(); i++) {
|
|
||||||
Ref<BiomeData> biome_data = Ref<BiomeData>(biome_datas[i]);
|
|
||||||
|
|
||||||
_biome_datas.push_back(biome_data);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef VOXELMAN_PRESENT
|
|
||||||
//Environments
|
|
||||||
Ref<EnvironmentData> PlanetData::get_environment_data(const int index) const {
|
|
||||||
ERR_FAIL_INDEX_V(index, _environment_datas.size(), Ref<EnvironmentData>());
|
|
||||||
|
|
||||||
return _environment_datas.get(index);
|
|
||||||
}
|
|
||||||
void PlanetData::set_environment_data(const int index, const Ref<EnvironmentData> environment_data) {
|
|
||||||
ERR_FAIL_INDEX(index, _environment_datas.size());
|
|
||||||
|
|
||||||
_environment_datas.set(index, environment_data);
|
|
||||||
}
|
|
||||||
void PlanetData::add_environment_data(const Ref<EnvironmentData> environment_data) {
|
|
||||||
_environment_datas.push_back(environment_data);
|
|
||||||
}
|
|
||||||
void PlanetData::remove_environment_data(const int index) {
|
|
||||||
ERR_FAIL_INDEX(index, _environment_datas.size());
|
|
||||||
|
|
||||||
_environment_datas.remove(index);
|
|
||||||
}
|
|
||||||
int PlanetData::get_environment_data_count() const {
|
|
||||||
return _environment_datas.size();
|
|
||||||
}
|
|
||||||
|
|
||||||
Vector<Variant> PlanetData::get_environment_datas() {
|
|
||||||
Vector<Variant> r;
|
|
||||||
for (int i = 0; i < _environment_datas.size(); i++) {
|
|
||||||
#if VERSION_MAJOR < 4
|
|
||||||
r.push_back(_environment_datas[i].get_ref_ptr());
|
|
||||||
#else
|
|
||||||
r.push_back(_environment_datas[i]);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
return r;
|
|
||||||
}
|
|
||||||
void PlanetData::set_environment_datas(const Vector<Variant> &environment_datas) {
|
|
||||||
_environment_datas.clear();
|
|
||||||
for (int i = 0; i < environment_datas.size(); i++) {
|
|
||||||
Ref<EnvironmentData> environment_data = Ref<EnvironmentData>(environment_datas[i]);
|
|
||||||
|
|
||||||
_environment_datas.push_back(environment_data);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//// Surfaces ////
|
|
||||||
Ref<VoxelSurface> PlanetData::get_voxel_surface(const int index) const {
|
|
||||||
ERR_FAIL_INDEX_V(index, _voxel_surfaces.size(), Ref<VoxelSurface>());
|
|
||||||
|
|
||||||
return _voxel_surfaces.get(index);
|
|
||||||
}
|
|
||||||
void PlanetData::set_voxel_surface(const int index, const Ref<VoxelSurface> voxel_surface) {
|
|
||||||
ERR_FAIL_INDEX(index, _voxel_surfaces.size());
|
|
||||||
|
|
||||||
_voxel_surfaces.set(index, voxel_surface);
|
|
||||||
}
|
|
||||||
void PlanetData::add_voxel_surface(const Ref<VoxelSurface> voxel_surface) {
|
|
||||||
_voxel_surfaces.push_back(voxel_surface);
|
|
||||||
}
|
|
||||||
void PlanetData::remove_voxel_surface(const int index) {
|
|
||||||
ERR_FAIL_INDEX(index, _voxel_surfaces.size());
|
|
||||||
|
|
||||||
_voxel_surfaces.remove(index);
|
|
||||||
}
|
|
||||||
int PlanetData::get_voxel_surface_count() const {
|
|
||||||
return _voxel_surfaces.size();
|
|
||||||
}
|
|
||||||
|
|
||||||
Vector<Variant> PlanetData::get_voxel_surfaces() {
|
|
||||||
Vector<Variant> r;
|
|
||||||
for (int i = 0; i < _voxel_surfaces.size(); i++) {
|
|
||||||
#if VERSION_MAJOR < 4
|
|
||||||
r.push_back(_voxel_surfaces[i].get_ref_ptr());
|
|
||||||
#else
|
|
||||||
r.push_back(_voxel_surfaces[i]);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
return r;
|
|
||||||
}
|
|
||||||
void PlanetData::set_voxel_surfaces(const Vector<Variant> &voxel_surfaces) {
|
|
||||||
_voxel_surfaces.clear();
|
|
||||||
for (int i = 0; i < voxel_surfaces.size(); i++) {
|
|
||||||
Ref<EnvironmentData> voxel_surface = Ref<EnvironmentData>(voxel_surfaces[i]);
|
|
||||||
|
|
||||||
_voxel_surfaces.push_back(voxel_surface);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
Ref<Planet> PlanetData::instance() {
|
|
||||||
Ref<Planet> planet;
|
|
||||||
|
|
||||||
if (!_planet.is_valid()) {
|
|
||||||
planet.instance();
|
|
||||||
} else {
|
|
||||||
planet = _planet->duplicate();
|
|
||||||
}
|
|
||||||
|
|
||||||
planet->set_data(Ref<PlanetData>(this));
|
|
||||||
|
|
||||||
return planet;
|
|
||||||
}
|
|
||||||
|
|
||||||
PlanetData::PlanetData() {
|
|
||||||
_id = 0;
|
|
||||||
}
|
|
||||||
PlanetData::~PlanetData() {
|
|
||||||
#ifdef FASTNOISE_PRESENT
|
|
||||||
_humidity_noise_params.unref();
|
|
||||||
_temperature_noise_params.unref();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
_biome_datas.clear();
|
|
||||||
|
|
||||||
#ifdef VOXELMAN_PRESENT
|
|
||||||
_environment_datas.clear();
|
|
||||||
_voxel_surfaces.clear();
|
|
||||||
_liquid_voxel_surfaces.clear();
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
void PlanetData::_bind_methods() {
|
|
||||||
ClassDB::bind_method(D_METHOD("get_id"), &PlanetData::get_id);
|
|
||||||
ClassDB::bind_method(D_METHOD("set_id", "value"), &PlanetData::set_id);
|
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "id"), "set_id", "get_id");
|
|
||||||
|
|
||||||
ClassDB::bind_method(D_METHOD("get_planet"), &PlanetData::get_planet);
|
|
||||||
ClassDB::bind_method(D_METHOD("set_planet", "value"), &PlanetData::set_planet);
|
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "planet", PROPERTY_HINT_RESOURCE_TYPE, "Planet"), "set_planet", "get_planet");
|
|
||||||
|
|
||||||
ClassDB::bind_method(D_METHOD("get_level_range"), &PlanetData::get_level_range);
|
|
||||||
ClassDB::bind_method(D_METHOD("set_level_range", "value"), &PlanetData::set_level_range);
|
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "level_range"), "set_level_range", "get_level_range");
|
|
||||||
|
|
||||||
#ifdef FASTNOISE_PRESENT
|
|
||||||
ClassDB::bind_method(D_METHOD("get_humidity_noise_params"), &PlanetData::get_humidity_noise_params);
|
|
||||||
ClassDB::bind_method(D_METHOD("set_humidity_noise_params", "value"), &PlanetData::set_humidity_noise_params);
|
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "humidity_noise_params", PROPERTY_HINT_RESOURCE_TYPE, "FastnoiseNoiseParams"), "set_humidity_noise_params", "get_humidity_noise_params");
|
|
||||||
|
|
||||||
ClassDB::bind_method(D_METHOD("get_temperature_noise_params"), &PlanetData::get_temperature_noise_params);
|
|
||||||
ClassDB::bind_method(D_METHOD("set_temperature_noise_params", "value"), &PlanetData::set_temperature_noise_params);
|
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "temperature_noise_params", PROPERTY_HINT_RESOURCE_TYPE, "FastnoiseNoiseParams"), "set_temperature_noise_params", "get_temperature_noise_params");
|
|
||||||
#endif
|
|
||||||
|
|
||||||
//Biomes
|
|
||||||
ClassDB::bind_method(D_METHOD("get_biome_data", "index"), &PlanetData::get_biome_data);
|
|
||||||
ClassDB::bind_method(D_METHOD("set_biome_data", "index", "data"), &PlanetData::set_biome_data);
|
|
||||||
ClassDB::bind_method(D_METHOD("add_biome_data", "biome_data"), &PlanetData::add_biome_data);
|
|
||||||
ClassDB::bind_method(D_METHOD("remove_biome_data", "index"), &PlanetData::remove_biome_data);
|
|
||||||
ClassDB::bind_method(D_METHOD("get_biome_data_count"), &PlanetData::get_biome_data_count);
|
|
||||||
|
|
||||||
ClassDB::bind_method(D_METHOD("get_biome_datas"), &PlanetData::get_biome_datas);
|
|
||||||
ClassDB::bind_method(D_METHOD("set_biome_datas", "biome_datas"), &PlanetData::set_biome_datas);
|
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "biome_datas", PROPERTY_HINT_NONE, "17/17:BiomeData", PROPERTY_USAGE_DEFAULT, "BiomeData"), "set_biome_datas", "get_biome_datas");
|
|
||||||
|
|
||||||
#ifdef VOXELMAN_PRESENT
|
|
||||||
//Environments
|
|
||||||
ClassDB::bind_method(D_METHOD("get_environment_data", "index"), &PlanetData::get_environment_data);
|
|
||||||
ClassDB::bind_method(D_METHOD("set_environment_data", "index", "data"), &PlanetData::set_environment_data);
|
|
||||||
ClassDB::bind_method(D_METHOD("add_environment_data", "environment_data"), &PlanetData::add_environment_data);
|
|
||||||
ClassDB::bind_method(D_METHOD("remove_environment_data", "index"), &PlanetData::remove_environment_data);
|
|
||||||
ClassDB::bind_method(D_METHOD("get_environment_data_count"), &PlanetData::get_environment_data_count);
|
|
||||||
|
|
||||||
ClassDB::bind_method(D_METHOD("get_environment_datas"), &PlanetData::get_environment_datas);
|
|
||||||
ClassDB::bind_method(D_METHOD("set_environment_datas", "environment_datas"), &PlanetData::set_environment_datas);
|
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "environment_datas", PROPERTY_HINT_NONE, "17/17:EnvironmentData", PROPERTY_USAGE_DEFAULT, "EnvironmentData"), "set_environment_datas", "get_environment_datas");
|
|
||||||
|
|
||||||
//Surfaces
|
|
||||||
ClassDB::bind_method(D_METHOD("get_voxel_surface", "index"), &PlanetData::get_voxel_surface);
|
|
||||||
ClassDB::bind_method(D_METHOD("set_voxel_surface", "index", "data"), &PlanetData::set_voxel_surface);
|
|
||||||
ClassDB::bind_method(D_METHOD("add_voxel_surface", "voxel_surface"), &PlanetData::add_voxel_surface);
|
|
||||||
ClassDB::bind_method(D_METHOD("remove_voxel_surface", "index"), &PlanetData::remove_voxel_surface);
|
|
||||||
ClassDB::bind_method(D_METHOD("get_voxel_surface_count"), &PlanetData::get_voxel_surface_count);
|
|
||||||
|
|
||||||
ClassDB::bind_method(D_METHOD("get_voxel_surfaces"), &PlanetData::get_voxel_surfaces);
|
|
||||||
ClassDB::bind_method(D_METHOD("set_voxel_surfaces", "voxel_surfaces"), &PlanetData::set_voxel_surfaces);
|
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "voxel_surfaces", PROPERTY_HINT_NONE, "17/17:VoxelSurface", PROPERTY_USAGE_DEFAULT, "VoxelSurface"), "set_voxel_surfaces", "get_voxel_surfaces");
|
|
||||||
#endif
|
|
||||||
|
|
||||||
ClassDB::bind_method(D_METHOD("instance"), &PlanetData::instance);
|
|
||||||
}
|
|
@ -1,127 +0,0 @@
|
|||||||
/*
|
|
||||||
Copyright (c) 2019-2020 Péter Magyar
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in all
|
|
||||||
copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
SOFTWARE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef biome_data_H
|
|
||||||
#define biome_data_H
|
|
||||||
|
|
||||||
#include "core/resource.h"
|
|
||||||
#include "core/script_language.h"
|
|
||||||
#include "core/ustring.h"
|
|
||||||
|
|
||||||
#ifdef FASTNOISE_PRESENT
|
|
||||||
#include "../../fastnoise/fastnoise_noise_params.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "../data/biome_data.h"
|
|
||||||
#include "../main/planet.h"
|
|
||||||
|
|
||||||
#ifdef VOXELMAN_PRESENT
|
|
||||||
#include "../../voxelman/library/voxel_surface.h"
|
|
||||||
#include "../../voxelman/world/environment_data.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
class Planet;
|
|
||||||
|
|
||||||
class PlanetData : public Resource {
|
|
||||||
GDCLASS(PlanetData, Resource);
|
|
||||||
|
|
||||||
public:
|
|
||||||
int get_id() const;
|
|
||||||
void set_id(const int value);
|
|
||||||
|
|
||||||
Ref<Planet> get_planet();
|
|
||||||
void set_planet(const Ref<Planet> &planet);
|
|
||||||
|
|
||||||
Vector2 get_level_range();
|
|
||||||
void set_level_range(Vector2 value);
|
|
||||||
|
|
||||||
#ifdef FASTNOISE_PRESENT
|
|
||||||
Ref<FastnoiseNoiseParams> get_humidity_noise_params();
|
|
||||||
void set_humidity_noise_params(Ref<FastnoiseNoiseParams> value);
|
|
||||||
|
|
||||||
Ref<FastnoiseNoiseParams> get_temperature_noise_params();
|
|
||||||
void set_temperature_noise_params(Ref<FastnoiseNoiseParams> value);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
//Biomes
|
|
||||||
Ref<BiomeData> get_biome_data(const int index) const;
|
|
||||||
void set_biome_data(const int index, const Ref<BiomeData> biome_data);
|
|
||||||
void add_biome_data(const Ref<BiomeData> biome_data);
|
|
||||||
void remove_biome_data(const int index);
|
|
||||||
int get_biome_data_count() const;
|
|
||||||
|
|
||||||
Vector<Variant> get_biome_datas();
|
|
||||||
void set_biome_datas(const Vector<Variant> &biome_datas);
|
|
||||||
|
|
||||||
#ifdef VOXELMAN_PRESENT
|
|
||||||
//Environments
|
|
||||||
Ref<EnvironmentData> get_environment_data(const int index) const;
|
|
||||||
void set_environment_data(const int index, const Ref<EnvironmentData> environment_data);
|
|
||||||
void add_environment_data(const Ref<EnvironmentData> environment_data);
|
|
||||||
void remove_environment_data(const int index);
|
|
||||||
int get_environment_data_count() const;
|
|
||||||
|
|
||||||
Vector<Variant> get_environment_datas();
|
|
||||||
void set_environment_datas(const Vector<Variant> &environment_datas);
|
|
||||||
|
|
||||||
//Surfaces
|
|
||||||
Ref<VoxelSurface> get_voxel_surface(const int index) const;
|
|
||||||
void set_voxel_surface(const int index, const Ref<VoxelSurface> voxel_surface);
|
|
||||||
void add_voxel_surface(const Ref<VoxelSurface> voxel_surface);
|
|
||||||
void remove_voxel_surface(const int index);
|
|
||||||
int get_voxel_surface_count() const;
|
|
||||||
|
|
||||||
Vector<Variant> get_voxel_surfaces();
|
|
||||||
void set_voxel_surfaces(const Vector<Variant> &voxel_surfaces);
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
Ref<Planet> instance();
|
|
||||||
|
|
||||||
PlanetData();
|
|
||||||
~PlanetData();
|
|
||||||
|
|
||||||
protected:
|
|
||||||
static void _bind_methods();
|
|
||||||
|
|
||||||
private:
|
|
||||||
int _id;
|
|
||||||
|
|
||||||
Ref<Planet> _planet;
|
|
||||||
|
|
||||||
Vector2 _level_range;
|
|
||||||
|
|
||||||
#ifdef FASTNOISE_PRESENT
|
|
||||||
Ref<FastnoiseNoiseParams> _humidity_noise_params;
|
|
||||||
Ref<FastnoiseNoiseParams> _temperature_noise_params;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
Vector<Ref<BiomeData> > _biome_datas;
|
|
||||||
|
|
||||||
#ifdef VOXELMAN_PRESENT
|
|
||||||
Vector<Ref<EnvironmentData> > _environment_datas;
|
|
||||||
Vector<Ref<VoxelSurface> > _voxel_surfaces;
|
|
||||||
Vector<Ref<VoxelSurface> > _liquid_voxel_surfaces;
|
|
||||||
#endif
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif
|
|
210
main/planet.cpp
210
main/planet.cpp
@ -22,6 +22,15 @@ SOFTWARE.
|
|||||||
|
|
||||||
#include "planet.h"
|
#include "planet.h"
|
||||||
|
|
||||||
|
#include "core/version.h"
|
||||||
|
|
||||||
|
int Planet::get_id() const {
|
||||||
|
return _id;
|
||||||
|
}
|
||||||
|
void Planet::set_id(const int value) {
|
||||||
|
_id = value;
|
||||||
|
}
|
||||||
|
|
||||||
int Planet::get_current_seed() {
|
int Planet::get_current_seed() {
|
||||||
return _current_seed;
|
return _current_seed;
|
||||||
}
|
}
|
||||||
@ -36,6 +45,22 @@ void Planet::set_level_range(Vector2 value) {
|
|||||||
_level_range = value;
|
_level_range = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef FASTNOISE_PRESENT
|
||||||
|
Ref<FastnoiseNoiseParams> Planet::get_humidity_noise_params() {
|
||||||
|
return _humidity_noise_params;
|
||||||
|
}
|
||||||
|
void Planet::set_humidity_noise_params(Ref<FastnoiseNoiseParams> value) {
|
||||||
|
_humidity_noise_params = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
Ref<FastnoiseNoiseParams> Planet::get_temperature_noise_params() {
|
||||||
|
return _temperature_noise_params;
|
||||||
|
}
|
||||||
|
void Planet::set_temperature_noise_params(Ref<FastnoiseNoiseParams> value) {
|
||||||
|
_temperature_noise_params = value;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef VOXELMAN_PRESENT
|
#ifdef VOXELMAN_PRESENT
|
||||||
Ref<EnvironmentData> Planet::get_environment() {
|
Ref<EnvironmentData> Planet::get_environment() {
|
||||||
return _environment;
|
return _environment;
|
||||||
@ -45,13 +70,6 @@ void Planet::set_environment(Ref<EnvironmentData> value) {
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
Ref<PlanetData> Planet::get_data() {
|
|
||||||
return _data;
|
|
||||||
}
|
|
||||||
void Planet::set_data(Ref<PlanetData> value) {
|
|
||||||
_data = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
Ref<Biome> Planet::get_biome(const int index) const {
|
Ref<Biome> Planet::get_biome(const int index) const {
|
||||||
ERR_FAIL_INDEX_V(index, _biomes.size(), Ref<Biome>());
|
ERR_FAIL_INDEX_V(index, _biomes.size(), Ref<Biome>());
|
||||||
|
|
||||||
@ -75,6 +93,26 @@ int Planet::get_biome_count() const {
|
|||||||
return _biomes.size();
|
return _biomes.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Vector<Variant> Planet::get_biomes() {
|
||||||
|
Vector<Variant> r;
|
||||||
|
for (int i = 0; i < _biomes.size(); i++) {
|
||||||
|
#if VERSION_MAJOR < 4
|
||||||
|
r.push_back(_biomes[i].get_ref_ptr());
|
||||||
|
#else
|
||||||
|
r.push_back(_biomes[i]);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
void Planet::set_biomes(const Vector<Variant> &biomes) {
|
||||||
|
_biomes.clear();
|
||||||
|
for (int i = 0; i < biomes.size(); i++) {
|
||||||
|
Ref<Biome> biome_data = Ref<Biome>(biomes[i]);
|
||||||
|
|
||||||
|
_biomes.push_back(biome_data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//// Dungeons ////
|
//// Dungeons ////
|
||||||
Ref<Dungeon> Planet::get_dungeon(const int index) const {
|
Ref<Dungeon> Planet::get_dungeon(const int index) const {
|
||||||
ERR_FAIL_INDEX_V(index, _dungeons.size(), Ref<Dungeon>());
|
ERR_FAIL_INDEX_V(index, _dungeons.size(), Ref<Dungeon>());
|
||||||
@ -98,10 +136,96 @@ int Planet::get_dungeon_count() const {
|
|||||||
return _dungeons.size();
|
return _dungeons.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Planet::setup() {
|
#ifdef VOXELMAN_PRESENT
|
||||||
if (!_data.is_valid())
|
//Environments
|
||||||
return;
|
Ref<EnvironmentData> Planet::get_environment_data(const int index) const {
|
||||||
|
ERR_FAIL_INDEX_V(index, _environment_datas.size(), Ref<EnvironmentData>());
|
||||||
|
|
||||||
|
return _environment_datas.get(index);
|
||||||
|
}
|
||||||
|
void Planet::set_environment_data(const int index, const Ref<EnvironmentData> environment_data) {
|
||||||
|
ERR_FAIL_INDEX(index, _environment_datas.size());
|
||||||
|
|
||||||
|
_environment_datas.set(index, environment_data);
|
||||||
|
}
|
||||||
|
void Planet::add_environment_data(const Ref<EnvironmentData> environment_data) {
|
||||||
|
_environment_datas.push_back(environment_data);
|
||||||
|
}
|
||||||
|
void Planet::remove_environment_data(const int index) {
|
||||||
|
ERR_FAIL_INDEX(index, _environment_datas.size());
|
||||||
|
|
||||||
|
_environment_datas.remove(index);
|
||||||
|
}
|
||||||
|
int Planet::get_environment_data_count() const {
|
||||||
|
return _environment_datas.size();
|
||||||
|
}
|
||||||
|
|
||||||
|
Vector<Variant> Planet::get_environment_datas() {
|
||||||
|
Vector<Variant> r;
|
||||||
|
for (int i = 0; i < _environment_datas.size(); i++) {
|
||||||
|
#if VERSION_MAJOR < 4
|
||||||
|
r.push_back(_environment_datas[i].get_ref_ptr());
|
||||||
|
#else
|
||||||
|
r.push_back(_environment_datas[i]);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
void Planet::set_environment_datas(const Vector<Variant> &environment_datas) {
|
||||||
|
_environment_datas.clear();
|
||||||
|
for (int i = 0; i < environment_datas.size(); i++) {
|
||||||
|
Ref<EnvironmentData> environment_data = Ref<EnvironmentData>(environment_datas[i]);
|
||||||
|
|
||||||
|
_environment_datas.push_back(environment_data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//// Surfaces ////
|
||||||
|
Ref<VoxelSurface> Planet::get_voxel_surface(const int index) const {
|
||||||
|
ERR_FAIL_INDEX_V(index, _voxel_surfaces.size(), Ref<VoxelSurface>());
|
||||||
|
|
||||||
|
return _voxel_surfaces.get(index);
|
||||||
|
}
|
||||||
|
void Planet::set_voxel_surface(const int index, const Ref<VoxelSurface> voxel_surface) {
|
||||||
|
ERR_FAIL_INDEX(index, _voxel_surfaces.size());
|
||||||
|
|
||||||
|
_voxel_surfaces.set(index, voxel_surface);
|
||||||
|
}
|
||||||
|
void Planet::add_voxel_surface(const Ref<VoxelSurface> voxel_surface) {
|
||||||
|
_voxel_surfaces.push_back(voxel_surface);
|
||||||
|
}
|
||||||
|
void Planet::remove_voxel_surface(const int index) {
|
||||||
|
ERR_FAIL_INDEX(index, _voxel_surfaces.size());
|
||||||
|
|
||||||
|
_voxel_surfaces.remove(index);
|
||||||
|
}
|
||||||
|
int Planet::get_voxel_surface_count() const {
|
||||||
|
return _voxel_surfaces.size();
|
||||||
|
}
|
||||||
|
|
||||||
|
Vector<Variant> Planet::get_voxel_surfaces() {
|
||||||
|
Vector<Variant> r;
|
||||||
|
for (int i = 0; i < _voxel_surfaces.size(); i++) {
|
||||||
|
#if VERSION_MAJOR < 4
|
||||||
|
r.push_back(_voxel_surfaces[i].get_ref_ptr());
|
||||||
|
#else
|
||||||
|
r.push_back(_voxel_surfaces[i]);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
void Planet::set_voxel_surfaces(const Vector<Variant> &voxel_surfaces) {
|
||||||
|
_voxel_surfaces.clear();
|
||||||
|
for (int i = 0; i < voxel_surfaces.size(); i++) {
|
||||||
|
Ref<EnvironmentData> voxel_surface = Ref<EnvironmentData>(voxel_surfaces[i]);
|
||||||
|
|
||||||
|
_voxel_surfaces.push_back(voxel_surface);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
void Planet::setup() {
|
||||||
if (has_method("_setup")) {
|
if (has_method("_setup")) {
|
||||||
call("_setup");
|
call("_setup");
|
||||||
}
|
}
|
||||||
@ -111,17 +235,14 @@ void Planet::setup() {
|
|||||||
void Planet::setup_library(Ref<VoxelmanLibrary> library) {
|
void Planet::setup_library(Ref<VoxelmanLibrary> library) {
|
||||||
ERR_FAIL_COND(!library.is_valid());
|
ERR_FAIL_COND(!library.is_valid());
|
||||||
|
|
||||||
if (!_data.is_valid())
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (has_method("_setup_library")) {
|
if (has_method("_setup_library")) {
|
||||||
call("_setup_library", library);
|
call("_setup_library", library);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Planet::_setup_library(Ref<VoxelmanLibrary> library) {
|
void Planet::_setup_library(Ref<VoxelmanLibrary> library) {
|
||||||
for (int i = 0; i < _data->get_voxel_surface_count(); ++i) {
|
for (int i = 0; i < get_voxel_surface_count(); ++i) {
|
||||||
Ref<VoxelSurface> s = _data->get_voxel_surface(i);
|
Ref<VoxelSurface> s = get_voxel_surface(i);
|
||||||
|
|
||||||
if (s.is_valid()) {
|
if (s.is_valid()) {
|
||||||
library->add_voxel_surface(s);
|
library->add_voxel_surface(s);
|
||||||
@ -179,6 +300,7 @@ Ref<Image> Planet::generate_map() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Planet::Planet() {
|
Planet::Planet() {
|
||||||
|
_id = 0;
|
||||||
_current_seed = 0;
|
_current_seed = 0;
|
||||||
}
|
}
|
||||||
Planet::~Planet() {
|
Planet::~Planet() {
|
||||||
@ -188,7 +310,17 @@ Planet::~Planet() {
|
|||||||
|
|
||||||
_biomes.clear();
|
_biomes.clear();
|
||||||
_dungeons.clear();
|
_dungeons.clear();
|
||||||
_data.unref();
|
|
||||||
|
#ifdef FASTNOISE_PRESENT
|
||||||
|
_humidity_noise_params.unref();
|
||||||
|
_temperature_noise_params.unref();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef VOXELMAN_PRESENT
|
||||||
|
_environment_datas.clear();
|
||||||
|
_voxel_surfaces.clear();
|
||||||
|
_liquid_voxel_surfaces.clear();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void Planet::_bind_methods() {
|
void Planet::_bind_methods() {
|
||||||
@ -213,6 +345,10 @@ void Planet::_bind_methods() {
|
|||||||
|
|
||||||
ClassDB::bind_method(D_METHOD("setup_library", "library"), &Planet::setup_library);
|
ClassDB::bind_method(D_METHOD("setup_library", "library"), &Planet::setup_library);
|
||||||
|
|
||||||
|
ClassDB::bind_method(D_METHOD("get_id"), &Planet::get_id);
|
||||||
|
ClassDB::bind_method(D_METHOD("set_id", "value"), &Planet::set_id);
|
||||||
|
ADD_PROPERTY(PropertyInfo(Variant::INT, "id"), "set_id", "get_id");
|
||||||
|
|
||||||
ClassDB::bind_method(D_METHOD("get_current_seed"), &Planet::get_current_seed);
|
ClassDB::bind_method(D_METHOD("get_current_seed"), &Planet::get_current_seed);
|
||||||
ClassDB::bind_method(D_METHOD("set_current_seed", "value"), &Planet::set_current_seed);
|
ClassDB::bind_method(D_METHOD("set_current_seed", "value"), &Planet::set_current_seed);
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "current_seed"), "set_current_seed", "get_current_seed");
|
ADD_PROPERTY(PropertyInfo(Variant::INT, "current_seed"), "set_current_seed", "get_current_seed");
|
||||||
@ -221,16 +357,22 @@ void Planet::_bind_methods() {
|
|||||||
ClassDB::bind_method(D_METHOD("set_level_range", "value"), &Planet::set_level_range);
|
ClassDB::bind_method(D_METHOD("set_level_range", "value"), &Planet::set_level_range);
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "level_range"), "set_level_range", "get_level_range");
|
ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "level_range"), "set_level_range", "get_level_range");
|
||||||
|
|
||||||
|
#ifdef FASTNOISE_PRESENT
|
||||||
|
ClassDB::bind_method(D_METHOD("get_humidity_noise_params"), &Planet::get_humidity_noise_params);
|
||||||
|
ClassDB::bind_method(D_METHOD("set_humidity_noise_params", "value"), &Planet::set_humidity_noise_params);
|
||||||
|
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "humidity_noise_params", PROPERTY_HINT_RESOURCE_TYPE, "FastnoiseNoiseParams"), "set_humidity_noise_params", "get_humidity_noise_params");
|
||||||
|
|
||||||
|
ClassDB::bind_method(D_METHOD("get_temperature_noise_params"), &Planet::get_temperature_noise_params);
|
||||||
|
ClassDB::bind_method(D_METHOD("set_temperature_noise_params", "value"), &Planet::set_temperature_noise_params);
|
||||||
|
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "temperature_noise_params", PROPERTY_HINT_RESOURCE_TYPE, "FastnoiseNoiseParams"), "set_temperature_noise_params", "get_temperature_noise_params");
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef VOXELMAN_PRESENT
|
#ifdef VOXELMAN_PRESENT
|
||||||
ClassDB::bind_method(D_METHOD("get_environment"), &Planet::get_environment);
|
ClassDB::bind_method(D_METHOD("get_environment"), &Planet::get_environment);
|
||||||
ClassDB::bind_method(D_METHOD("set_environment", "value"), &Planet::set_environment);
|
ClassDB::bind_method(D_METHOD("set_environment", "value"), &Planet::set_environment);
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "environment", PROPERTY_HINT_RESOURCE_TYPE, "EnvironmentData"), "set_environment", "get_environment");
|
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "environment", PROPERTY_HINT_RESOURCE_TYPE, "EnvironmentData"), "set_environment", "get_environment");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
ClassDB::bind_method(D_METHOD("get_data"), &Planet::get_data);
|
|
||||||
ClassDB::bind_method(D_METHOD("set_data", "value"), &Planet::set_data);
|
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "data", PROPERTY_HINT_RESOURCE_TYPE, "PlanetData", 0), "set_data", "get_data");
|
|
||||||
|
|
||||||
//biomes
|
//biomes
|
||||||
ClassDB::bind_method(D_METHOD("get_biome", "index"), &Planet::get_biome);
|
ClassDB::bind_method(D_METHOD("get_biome", "index"), &Planet::get_biome);
|
||||||
ClassDB::bind_method(D_METHOD("set_biome", "index", "data"), &Planet::set_biome);
|
ClassDB::bind_method(D_METHOD("set_biome", "index", "data"), &Planet::set_biome);
|
||||||
@ -238,6 +380,10 @@ void Planet::_bind_methods() {
|
|||||||
ClassDB::bind_method(D_METHOD("remove_biome", "index"), &Planet::remove_biome);
|
ClassDB::bind_method(D_METHOD("remove_biome", "index"), &Planet::remove_biome);
|
||||||
ClassDB::bind_method(D_METHOD("get_biome_count"), &Planet::get_biome_count);
|
ClassDB::bind_method(D_METHOD("get_biome_count"), &Planet::get_biome_count);
|
||||||
|
|
||||||
|
ClassDB::bind_method(D_METHOD("get_biomes"), &Planet::get_biomes);
|
||||||
|
ClassDB::bind_method(D_METHOD("set_biomes", "biomes"), &Planet::set_biomes);
|
||||||
|
ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "biomes", PROPERTY_HINT_NONE, "17/17:Biome", PROPERTY_USAGE_DEFAULT, "Biome"), "set_biomes", "get_biomes");
|
||||||
|
|
||||||
//Dungeons
|
//Dungeons
|
||||||
ClassDB::bind_method(D_METHOD("get_dungeon", "index"), &Planet::get_dungeon);
|
ClassDB::bind_method(D_METHOD("get_dungeon", "index"), &Planet::get_dungeon);
|
||||||
ClassDB::bind_method(D_METHOD("set_dungeon", "index", "data"), &Planet::set_dungeon);
|
ClassDB::bind_method(D_METHOD("set_dungeon", "index", "data"), &Planet::set_dungeon);
|
||||||
@ -245,6 +391,30 @@ void Planet::_bind_methods() {
|
|||||||
ClassDB::bind_method(D_METHOD("remove_dungeon", "index"), &Planet::remove_dungeon);
|
ClassDB::bind_method(D_METHOD("remove_dungeon", "index"), &Planet::remove_dungeon);
|
||||||
ClassDB::bind_method(D_METHOD("get_dungeon_count"), &Planet::get_dungeon_count);
|
ClassDB::bind_method(D_METHOD("get_dungeon_count"), &Planet::get_dungeon_count);
|
||||||
|
|
||||||
|
#ifdef VOXELMAN_PRESENT
|
||||||
|
//Environments
|
||||||
|
ClassDB::bind_method(D_METHOD("get_environment_data", "index"), &Planet::get_environment_data);
|
||||||
|
ClassDB::bind_method(D_METHOD("set_environment_data", "index", "data"), &Planet::set_environment_data);
|
||||||
|
ClassDB::bind_method(D_METHOD("add_environment_data", "environment_data"), &Planet::add_environment_data);
|
||||||
|
ClassDB::bind_method(D_METHOD("remove_environment_data", "index"), &Planet::remove_environment_data);
|
||||||
|
ClassDB::bind_method(D_METHOD("get_environment_data_count"), &Planet::get_environment_data_count);
|
||||||
|
|
||||||
|
ClassDB::bind_method(D_METHOD("get_environment_datas"), &Planet::get_environment_datas);
|
||||||
|
ClassDB::bind_method(D_METHOD("set_environment_datas", "environment_datas"), &Planet::set_environment_datas);
|
||||||
|
ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "environment_datas", PROPERTY_HINT_NONE, "17/17:EnvironmentData", PROPERTY_USAGE_DEFAULT, "EnvironmentData"), "set_environment_datas", "get_environment_datas");
|
||||||
|
|
||||||
|
//Surfaces
|
||||||
|
ClassDB::bind_method(D_METHOD("get_voxel_surface", "index"), &Planet::get_voxel_surface);
|
||||||
|
ClassDB::bind_method(D_METHOD("set_voxel_surface", "index", "data"), &Planet::set_voxel_surface);
|
||||||
|
ClassDB::bind_method(D_METHOD("add_voxel_surface", "voxel_surface"), &Planet::add_voxel_surface);
|
||||||
|
ClassDB::bind_method(D_METHOD("remove_voxel_surface", "index"), &Planet::remove_voxel_surface);
|
||||||
|
ClassDB::bind_method(D_METHOD("get_voxel_surface_count"), &Planet::get_voxel_surface_count);
|
||||||
|
|
||||||
|
ClassDB::bind_method(D_METHOD("get_voxel_surfaces"), &Planet::get_voxel_surfaces);
|
||||||
|
ClassDB::bind_method(D_METHOD("set_voxel_surfaces", "voxel_surfaces"), &Planet::set_voxel_surfaces);
|
||||||
|
ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "voxel_surfaces", PROPERTY_HINT_NONE, "17/17:VoxelSurface", PROPERTY_USAGE_DEFAULT, "VoxelSurface"), "set_voxel_surfaces", "get_voxel_surfaces");
|
||||||
|
#endif
|
||||||
|
|
||||||
BIND_VMETHOD(MethodInfo(PropertyInfo(Variant::OBJECT, "image", PROPERTY_HINT_RESOURCE_TYPE, "Image"), "_generate_map"));
|
BIND_VMETHOD(MethodInfo(PropertyInfo(Variant::OBJECT, "image", PROPERTY_HINT_RESOURCE_TYPE, "Image"), "_generate_map"));
|
||||||
|
|
||||||
ClassDB::bind_method(D_METHOD("generate_map"), &Planet::generate_map);
|
ClassDB::bind_method(D_METHOD("generate_map"), &Planet::generate_map);
|
||||||
|
@ -30,7 +30,9 @@ SOFTWARE.
|
|||||||
#include "biome.h"
|
#include "biome.h"
|
||||||
#include "dungeon.h"
|
#include "dungeon.h"
|
||||||
|
|
||||||
#include "../data/planet_data.h"
|
#ifdef FASTNOISE_PRESENT
|
||||||
|
#include "../../fastnoise/fastnoise_noise_params.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef VOXELMAN_PRESENT
|
#ifdef VOXELMAN_PRESENT
|
||||||
#include "../../voxelman/library/voxel_surface.h"
|
#include "../../voxelman/library/voxel_surface.h"
|
||||||
@ -39,27 +41,33 @@ SOFTWARE.
|
|||||||
#include "../../voxelman/world/voxel_chunk.h"
|
#include "../../voxelman/world/voxel_chunk.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
class PlanetData;
|
|
||||||
|
|
||||||
class Planet : public Resource {
|
class Planet : public Resource {
|
||||||
GDCLASS(Planet, Resource);
|
GDCLASS(Planet, Resource);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
int get_id() const;
|
||||||
|
void set_id(const int value);
|
||||||
|
|
||||||
int get_current_seed();
|
int get_current_seed();
|
||||||
void set_current_seed(int value);
|
void set_current_seed(int value);
|
||||||
|
|
||||||
Vector2 get_level_range();
|
Vector2 get_level_range();
|
||||||
void set_level_range(Vector2 value);
|
void set_level_range(Vector2 value);
|
||||||
|
|
||||||
|
#ifdef FASTNOISE_PRESENT
|
||||||
|
Ref<FastnoiseNoiseParams> get_humidity_noise_params();
|
||||||
|
void set_humidity_noise_params(Ref<FastnoiseNoiseParams> value);
|
||||||
|
|
||||||
|
Ref<FastnoiseNoiseParams> get_temperature_noise_params();
|
||||||
|
void set_temperature_noise_params(Ref<FastnoiseNoiseParams> value);
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef VOXELMAN_PRESENT
|
#ifdef VOXELMAN_PRESENT
|
||||||
//Environment
|
//Environment
|
||||||
Ref<EnvironmentData> get_environment();
|
Ref<EnvironmentData> get_environment();
|
||||||
void set_environment(Ref<EnvironmentData> value);
|
void set_environment(Ref<EnvironmentData> value);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
Ref<PlanetData> get_data();
|
|
||||||
void set_data(Ref<PlanetData> value);
|
|
||||||
|
|
||||||
//Biomes
|
//Biomes
|
||||||
Ref<Biome> get_biome(const int index) const;
|
Ref<Biome> get_biome(const int index) const;
|
||||||
void set_biome(const int index, const Ref<Biome> biome);
|
void set_biome(const int index, const Ref<Biome> biome);
|
||||||
@ -67,6 +75,9 @@ public:
|
|||||||
void remove_biome(const int index);
|
void remove_biome(const int index);
|
||||||
int get_biome_count() const;
|
int get_biome_count() const;
|
||||||
|
|
||||||
|
Vector<Variant> get_biomes();
|
||||||
|
void set_biomes(const Vector<Variant> &biome_datas);
|
||||||
|
|
||||||
//Dungeons
|
//Dungeons
|
||||||
Ref<Dungeon> get_dungeon(const int index) const;
|
Ref<Dungeon> get_dungeon(const int index) const;
|
||||||
void set_dungeon(const int index, const Ref<Dungeon> dungeon);
|
void set_dungeon(const int index, const Ref<Dungeon> dungeon);
|
||||||
@ -74,6 +85,29 @@ public:
|
|||||||
void remove_dungeon(const int index);
|
void remove_dungeon(const int index);
|
||||||
int get_dungeon_count() const;
|
int get_dungeon_count() const;
|
||||||
|
|
||||||
|
#ifdef VOXELMAN_PRESENT
|
||||||
|
//Environments
|
||||||
|
Ref<EnvironmentData> get_environment_data(const int index) const;
|
||||||
|
void set_environment_data(const int index, const Ref<EnvironmentData> environment_data);
|
||||||
|
void add_environment_data(const Ref<EnvironmentData> environment_data);
|
||||||
|
void remove_environment_data(const int index);
|
||||||
|
int get_environment_data_count() const;
|
||||||
|
|
||||||
|
Vector<Variant> get_environment_datas();
|
||||||
|
void set_environment_datas(const Vector<Variant> &environment_datas);
|
||||||
|
|
||||||
|
//Surfaces
|
||||||
|
Ref<VoxelSurface> get_voxel_surface(const int index) const;
|
||||||
|
void set_voxel_surface(const int index, const Ref<VoxelSurface> voxel_surface);
|
||||||
|
void add_voxel_surface(const Ref<VoxelSurface> voxel_surface);
|
||||||
|
void remove_voxel_surface(const int index);
|
||||||
|
int get_voxel_surface_count() const;
|
||||||
|
|
||||||
|
Vector<Variant> get_voxel_surfaces();
|
||||||
|
void set_voxel_surfaces(const Vector<Variant> &voxel_surfaces);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
void setup();
|
void setup();
|
||||||
|
|
||||||
#ifdef VOXELMAN_PRESENT
|
#ifdef VOXELMAN_PRESENT
|
||||||
@ -95,6 +129,8 @@ protected:
|
|||||||
static void _bind_methods();
|
static void _bind_methods();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
int _id;
|
||||||
|
|
||||||
int _current_seed;
|
int _current_seed;
|
||||||
Vector2 _level_range;
|
Vector2 _level_range;
|
||||||
|
|
||||||
@ -102,9 +138,19 @@ private:
|
|||||||
Ref<EnvironmentData> _environment;
|
Ref<EnvironmentData> _environment;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
Ref<PlanetData> _data;
|
|
||||||
Vector<Ref<Biome> > _biomes;
|
Vector<Ref<Biome> > _biomes;
|
||||||
Vector<Ref<Dungeon> > _dungeons;
|
Vector<Ref<Dungeon> > _dungeons;
|
||||||
|
|
||||||
|
#ifdef FASTNOISE_PRESENT
|
||||||
|
Ref<FastnoiseNoiseParams> _humidity_noise_params;
|
||||||
|
Ref<FastnoiseNoiseParams> _temperature_noise_params;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef VOXELMAN_PRESENT
|
||||||
|
Vector<Ref<EnvironmentData> > _environment_datas;
|
||||||
|
Vector<Ref<VoxelSurface> > _voxel_surfaces;
|
||||||
|
Vector<Ref<VoxelSurface> > _liquid_voxel_surfaces;
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -26,7 +26,6 @@ SOFTWARE.
|
|||||||
#include "data/dungeon_corridor_data.h"
|
#include "data/dungeon_corridor_data.h"
|
||||||
#include "data/dungeon_data.h"
|
#include "data/dungeon_data.h"
|
||||||
#include "data/dungeon_room_data.h"
|
#include "data/dungeon_room_data.h"
|
||||||
#include "data/planet_data.h"
|
|
||||||
#include "data/world_generator_prop_data.h"
|
#include "data/world_generator_prop_data.h"
|
||||||
|
|
||||||
#include "main/biome.h"
|
#include "main/biome.h"
|
||||||
@ -42,7 +41,6 @@ void register_world_generator_types() {
|
|||||||
ClassDB::register_class<DungeonCorridorData>();
|
ClassDB::register_class<DungeonCorridorData>();
|
||||||
ClassDB::register_class<DungeonData>();
|
ClassDB::register_class<DungeonData>();
|
||||||
ClassDB::register_class<BiomeData>();
|
ClassDB::register_class<BiomeData>();
|
||||||
ClassDB::register_class<PlanetData>();
|
|
||||||
ClassDB::register_class<WorldGeneratorPropData>();
|
ClassDB::register_class<WorldGeneratorPropData>();
|
||||||
|
|
||||||
ClassDB::register_class<DungeonRoom>();
|
ClassDB::register_class<DungeonRoom>();
|
||||||
|
@ -24,17 +24,17 @@ SOFTWARE.
|
|||||||
|
|
||||||
#include "core/version.h"
|
#include "core/version.h"
|
||||||
|
|
||||||
Ref<PlanetData> WorldGenerator::get_planet_data(const int index) const {
|
Ref<Planet> WorldGenerator::get_planet_data(const int index) const {
|
||||||
ERR_FAIL_INDEX_V(index, _planet_datas.size(), Ref<PlanetData>());
|
ERR_FAIL_INDEX_V(index, _planet_datas.size(), Ref<Planet>());
|
||||||
|
|
||||||
return _planet_datas.get(index);
|
return _planet_datas.get(index);
|
||||||
}
|
}
|
||||||
void WorldGenerator::set_planet_data(const int index, const Ref<PlanetData> planet_data) {
|
void WorldGenerator::set_planet_data(const int index, const Ref<Planet> planet_data) {
|
||||||
ERR_FAIL_INDEX(index, _planet_datas.size());
|
ERR_FAIL_INDEX(index, _planet_datas.size());
|
||||||
|
|
||||||
_planet_datas.set(index, planet_data);
|
_planet_datas.set(index, planet_data);
|
||||||
}
|
}
|
||||||
void WorldGenerator::add_planet_data(const Ref<PlanetData> planet_data) {
|
void WorldGenerator::add_planet_data(const Ref<Planet> planet_data) {
|
||||||
_planet_datas.push_back(planet_data);
|
_planet_datas.push_back(planet_data);
|
||||||
}
|
}
|
||||||
void WorldGenerator::remove_planet_data(const int index) {
|
void WorldGenerator::remove_planet_data(const int index) {
|
||||||
@ -61,7 +61,7 @@ Vector<Variant> WorldGenerator::get_planet_datas() {
|
|||||||
void WorldGenerator::set_planet_datas(const Vector<Variant> &planet_datas) {
|
void WorldGenerator::set_planet_datas(const Vector<Variant> &planet_datas) {
|
||||||
_planet_datas.clear();
|
_planet_datas.clear();
|
||||||
for (int i = 0; i < planet_datas.size(); i++) {
|
for (int i = 0; i < planet_datas.size(); i++) {
|
||||||
Ref<PlanetData> planet_data = Ref<PlanetData>(planet_datas[i]);
|
Ref<Planet> planet_data = Ref<Planet>(planet_datas[i]);
|
||||||
|
|
||||||
_planet_datas.push_back(planet_data);
|
_planet_datas.push_back(planet_data);
|
||||||
}
|
}
|
||||||
@ -95,5 +95,5 @@ void WorldGenerator::_bind_methods() {
|
|||||||
|
|
||||||
ClassDB::bind_method(D_METHOD("get_planet_datas"), &WorldGenerator::get_planet_datas);
|
ClassDB::bind_method(D_METHOD("get_planet_datas"), &WorldGenerator::get_planet_datas);
|
||||||
ClassDB::bind_method(D_METHOD("set_planet_datas", "planet_datas"), &WorldGenerator::set_planet_datas);
|
ClassDB::bind_method(D_METHOD("set_planet_datas", "planet_datas"), &WorldGenerator::set_planet_datas);
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "planet_datas", PROPERTY_HINT_NONE, "17/17:PlanetData", PROPERTY_USAGE_DEFAULT, "PlanetData"), "set_planet_datas", "get_planet_datas");
|
ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "planet_datas", PROPERTY_HINT_NONE, "17/17:Planet", PROPERTY_USAGE_DEFAULT, "Planet"), "set_planet_datas", "get_planet_datas");
|
||||||
}
|
}
|
||||||
|
@ -26,17 +26,15 @@ SOFTWARE.
|
|||||||
#include "core/resource.h"
|
#include "core/resource.h"
|
||||||
#include "core/vector.h"
|
#include "core/vector.h"
|
||||||
|
|
||||||
#include "data/planet_data.h"
|
|
||||||
|
|
||||||
#include "main/planet.h"
|
#include "main/planet.h"
|
||||||
|
|
||||||
class WorldGenerator : public Resource {
|
class WorldGenerator : public Resource {
|
||||||
GDCLASS(WorldGenerator, Resource);
|
GDCLASS(WorldGenerator, Resource);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
Ref<PlanetData> get_planet_data(const int index) const;
|
Ref<Planet> get_planet_data(const int index) const;
|
||||||
void set_planet_data(const int index, const Ref<PlanetData> planet_data);
|
void set_planet_data(const int index, const Ref<Planet> planet_data);
|
||||||
void add_planet_data(const Ref<PlanetData> planet_data);
|
void add_planet_data(const Ref<Planet> planet_data);
|
||||||
void remove_planet_data(const int index);
|
void remove_planet_data(const int index);
|
||||||
|
|
||||||
int get_planet_data_count() const;
|
int get_planet_data_count() const;
|
||||||
@ -53,7 +51,7 @@ protected:
|
|||||||
static void _bind_methods();
|
static void _bind_methods();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Vector<Ref<PlanetData> > _planet_datas;
|
Vector<Ref<Planet> > _planet_datas;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user