More improvements to the bindings.

This commit is contained in:
Relintai 2019-11-10 22:32:36 +01:00
parent 7075da44eb
commit 0f00761468
12 changed files with 300 additions and 1 deletions

View File

@ -222,6 +222,45 @@ void BiomeData::set_voxel_surfaces(const Vector<Variant> &voxel_surfaces) {
}
}
//// Liquid Surfaces ////
Ref<VoxelSurface> BiomeData::get_liquid_voxel_surface(const int index) const {
ERR_FAIL_INDEX_V(index, _liquid_voxel_surfaces.size(), Ref<VoxelSurface>());
return _liquid_voxel_surfaces.get(index);
}
void BiomeData::set_liquid_voxel_surface(const int index, const Ref<VoxelSurface> voxel_surface) {
ERR_FAIL_INDEX(index, _liquid_voxel_surfaces.size());
_liquid_voxel_surfaces.set(index, voxel_surface);
}
void BiomeData::add_liquid_voxel_surface(const Ref<VoxelSurface> voxel_surface) {
_liquid_voxel_surfaces.push_back(voxel_surface);
}
void BiomeData::remove_liquid_voxel_surface(const int index) {
ERR_FAIL_INDEX(index, _liquid_voxel_surfaces.size());
_liquid_voxel_surfaces.remove(index);
}
int BiomeData::get_liquid_voxel_surface_count() const {
return _liquid_voxel_surfaces.size();
}
Vector<Variant> BiomeData::get_liquid_voxel_surfaces() {
Vector<Variant> r;
for (int i = 0; i < _liquid_voxel_surfaces.size(); i++) {
r.push_back(_liquid_voxel_surfaces[i].get_ref_ptr());
}
return r;
}
void BiomeData::set_liquid_voxel_surfaces(const Vector<Variant> &voxel_surfaces) {
_liquid_voxel_surfaces.clear();
for (int i = 0; i < voxel_surfaces.size(); i++) {
Ref<EnvironmentData> voxel_surface = Ref<EnvironmentData>(voxel_surfaces[i]);
_liquid_voxel_surfaces.push_back(voxel_surface);
}
}
BiomeData::BiomeData() {
}
@ -229,6 +268,10 @@ BiomeData::~BiomeData() {
_dungeon_datas.clear();
_prop_datas.clear();
_entity_datas.clear();
_environment_datas.clear();
_voxel_surfaces.clear();
_liquid_voxel_surfaces.clear();
}
void BiomeData::_bind_methods() {
@ -298,4 +341,15 @@ void BiomeData::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_voxel_surfaces"), &BiomeData::get_voxel_surfaces);
ClassDB::bind_method(D_METHOD("set_voxel_surfaces", "voxel_surfaces"), &BiomeData::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");
//Liquid Surfaces
ClassDB::bind_method(D_METHOD("get_liquid_voxel_surface", "index"), &BiomeData::get_liquid_voxel_surface);
ClassDB::bind_method(D_METHOD("set_liquid_voxel_surface", "index", "data"), &BiomeData::set_liquid_voxel_surface);
ClassDB::bind_method(D_METHOD("add_liquid_voxel_surface", "voxel_surface"), &BiomeData::add_liquid_voxel_surface);
ClassDB::bind_method(D_METHOD("remove_liquid_voxel_surface", "index"), &BiomeData::remove_liquid_voxel_surface);
ClassDB::bind_method(D_METHOD("get_liquid_voxel_surface_count"), &BiomeData::get_liquid_voxel_surface_count);
ClassDB::bind_method(D_METHOD("get_liquid_voxel_surfaces"), &BiomeData::get_liquid_voxel_surfaces);
ClassDB::bind_method(D_METHOD("set_liquid_voxel_surfaces", "voxel_surfaces"), &BiomeData::set_liquid_voxel_surfaces);
ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "liquid_voxel_surfaces", PROPERTY_HINT_NONE, "17/17:VoxelSurface", PROPERTY_USAGE_DEFAULT, "VoxelSurface"), "set_liquid_voxel_surfaces", "get_liquid_voxel_surfaces");
}

View File

@ -76,6 +76,16 @@ public:
Vector<Variant> get_voxel_surfaces();
void set_voxel_surfaces(const Vector<Variant> &voxel_surfaces);
//Liquid Surfaces
Ref<VoxelSurface> get_liquid_voxel_surface(const int index) const;
void set_liquid_voxel_surface(const int index, const Ref<VoxelSurface> voxel_surface);
void add_liquid_voxel_surface(const Ref<VoxelSurface> voxel_surface);
void remove_liquid_voxel_surface(const int index);
int get_liquid_voxel_surface_count() const;
Vector<Variant> get_liquid_voxel_surfaces();
void set_liquid_voxel_surfaces(const Vector<Variant> &voxel_surfaces);
BiomeData();
~BiomeData();
@ -93,6 +103,7 @@ private:
Vector<Ref<EntityData> > _entity_datas;
Vector<Ref<EnvironmentData> > _environment_datas;
Vector<Ref<VoxelSurface> > _voxel_surfaces;
Vector<Ref<VoxelSurface> > _liquid_voxel_surfaces;
};
#endif

View File

@ -303,6 +303,45 @@ void DungeonData::set_voxel_surfaces(const Vector<Variant> &voxel_surfaces) {
}
}
//// Liquid Surfaces ////
Ref<VoxelSurface> DungeonData::get_liquid_voxel_surface(const int index) const {
ERR_FAIL_INDEX_V(index, _liquid_voxel_surfaces.size(), Ref<VoxelSurface>());
return _liquid_voxel_surfaces.get(index);
}
void DungeonData::set_liquid_voxel_surface(const int index, const Ref<VoxelSurface> voxel_surface) {
ERR_FAIL_INDEX(index, _liquid_voxel_surfaces.size());
_liquid_voxel_surfaces.set(index, voxel_surface);
}
void DungeonData::add_liquid_voxel_surface(const Ref<VoxelSurface> voxel_surface) {
_liquid_voxel_surfaces.push_back(voxel_surface);
}
void DungeonData::remove_liquid_voxel_surface(const int index) {
ERR_FAIL_INDEX(index, _liquid_voxel_surfaces.size());
_liquid_voxel_surfaces.remove(index);
}
int DungeonData::get_liquid_voxel_surface_count() const {
return _liquid_voxel_surfaces.size();
}
Vector<Variant> DungeonData::get_liquid_voxel_surfaces() {
Vector<Variant> r;
for (int i = 0; i < _liquid_voxel_surfaces.size(); i++) {
r.push_back(_liquid_voxel_surfaces[i].get_ref_ptr());
}
return r;
}
void DungeonData::set_liquid_voxel_surfaces(const Vector<Variant> &voxel_surfaces) {
_liquid_voxel_surfaces.clear();
for (int i = 0; i < voxel_surfaces.size(); i++) {
Ref<EnvironmentData> voxel_surface = Ref<EnvironmentData>(voxel_surfaces[i]);
_liquid_voxel_surfaces.push_back(voxel_surface);
}
}
//Environments
Ref<EnvironmentData> DungeonData::get_environment_data(const int index) const {
ERR_FAIL_INDEX_V(index, _environment_datas.size(), Ref<EnvironmentData>());
@ -362,6 +401,10 @@ DungeonData::~DungeonData() {
_dungeon_end_room_datas.clear();
_dungeon_corridor_datas.clear();
_entity_datas.clear();
_entity_datas.clear();
_voxel_surfaces.clear();
_liquid_voxel_surfaces.clear();
}
void DungeonData::_bind_methods() {
@ -480,4 +523,15 @@ void DungeonData::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_voxel_surfaces"), &DungeonData::get_voxel_surfaces);
ClassDB::bind_method(D_METHOD("set_voxel_surfaces", "voxel_surfaces"), &DungeonData::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");
//Liquid Surfaces
ClassDB::bind_method(D_METHOD("get_liquid_voxel_surface", "index"), &DungeonData::get_liquid_voxel_surface);
ClassDB::bind_method(D_METHOD("set_liquid_voxel_surface", "index", "data"), &DungeonData::set_liquid_voxel_surface);
ClassDB::bind_method(D_METHOD("add_liquid_voxel_surface", "voxel_surface"), &DungeonData::add_liquid_voxel_surface);
ClassDB::bind_method(D_METHOD("remove_liquid_voxel_surface", "index"), &DungeonData::remove_liquid_voxel_surface);
ClassDB::bind_method(D_METHOD("get_liquid_voxel_surface_count"), &DungeonData::get_liquid_voxel_surface_count);
ClassDB::bind_method(D_METHOD("get_liquid_voxel_surfaces"), &DungeonData::get_liquid_voxel_surfaces);
ClassDB::bind_method(D_METHOD("set_liquid_voxel_surfaces", "voxel_surfaces"), &DungeonData::set_liquid_voxel_surfaces);
ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "liquid_voxel_surfaces", PROPERTY_HINT_NONE, "17/17:VoxelSurface", PROPERTY_USAGE_DEFAULT, "VoxelSurface"), "set_liquid_voxel_surfaces", "get_liquid_voxel_surfaces");
}

View File

@ -116,6 +116,16 @@ public:
Vector<Variant> get_voxel_surfaces();
void set_voxel_surfaces(const Vector<Variant> &voxel_surfaces);
//Liquid Surfaces
Ref<VoxelSurface> get_liquid_voxel_surface(const int index) const;
void set_liquid_voxel_surface(const int index, const Ref<VoxelSurface> voxel_surface);
void add_liquid_voxel_surface(const Ref<VoxelSurface> voxel_surface);
void remove_liquid_voxel_surface(const int index);
int get_liquid_voxel_surface_count() const;
Vector<Variant> get_liquid_voxel_surfaces();
void set_liquid_voxel_surfaces(const Vector<Variant> &voxel_surfaces);
DungeonData();
~DungeonData();
@ -144,6 +154,7 @@ private:
Vector<Ref<DungeonRoomData> > _dungeon_corridor_datas;
Vector<Ref<EntityData> > _entity_datas;
Vector<Ref<VoxelSurface> > _voxel_surfaces;
Vector<Ref<VoxelSurface> > _liquid_voxel_surfaces;
};
#endif

View File

@ -207,6 +207,45 @@ void DungeonRoomData::set_voxel_surfaces(const Vector<Variant> &voxel_surfaces)
}
}
//// Liquid Surfaces ////
Ref<VoxelSurface> DungeonRoomData::get_liquid_voxel_surface(const int index) const {
ERR_FAIL_INDEX_V(index, _liquid_voxel_surfaces.size(), Ref<VoxelSurface>());
return _liquid_voxel_surfaces.get(index);
}
void DungeonRoomData::set_liquid_voxel_surface(const int index, const Ref<VoxelSurface> voxel_surface) {
ERR_FAIL_INDEX(index, _liquid_voxel_surfaces.size());
_liquid_voxel_surfaces.set(index, voxel_surface);
}
void DungeonRoomData::add_liquid_voxel_surface(const Ref<VoxelSurface> voxel_surface) {
_liquid_voxel_surfaces.push_back(voxel_surface);
}
void DungeonRoomData::remove_liquid_voxel_surface(const int index) {
ERR_FAIL_INDEX(index, _liquid_voxel_surfaces.size());
_liquid_voxel_surfaces.remove(index);
}
int DungeonRoomData::get_liquid_voxel_surface_count() const {
return _liquid_voxel_surfaces.size();
}
Vector<Variant> DungeonRoomData::get_liquid_voxel_surfaces() {
Vector<Variant> r;
for (int i = 0; i < _liquid_voxel_surfaces.size(); i++) {
r.push_back(_liquid_voxel_surfaces[i].get_ref_ptr());
}
return r;
}
void DungeonRoomData::set_liquid_voxel_surfaces(const Vector<Variant> &voxel_surfaces) {
_liquid_voxel_surfaces.clear();
for (int i = 0; i < voxel_surfaces.size(); i++) {
Ref<EnvironmentData> voxel_surface = Ref<EnvironmentData>(voxel_surfaces[i]);
_liquid_voxel_surfaces.push_back(voxel_surface);
}
}
DungeonRoomData::DungeonRoomData() {
_min_sizex = 0;
_min_sizey = 0;
@ -217,7 +256,11 @@ DungeonRoomData::DungeonRoomData() {
_max_sizez = 0;
}
DungeonRoomData::~DungeonRoomData() {
_prop_datas.clear();
_entity_datas.clear();
_environment_datas.clear();
_voxel_surfaces.clear();
_liquid_voxel_surfaces.clear();
}
void DungeonRoomData::_bind_methods() {
@ -294,4 +337,15 @@ void DungeonRoomData::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_voxel_surfaces"), &DungeonRoomData::get_voxel_surfaces);
ClassDB::bind_method(D_METHOD("set_voxel_surfaces", "voxel_surfaces"), &DungeonRoomData::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");
//Liquid Surfaces
ClassDB::bind_method(D_METHOD("get_liquid_voxel_surface", "index"), &DungeonRoomData::get_liquid_voxel_surface);
ClassDB::bind_method(D_METHOD("set_liquid_voxel_surface", "index", "data"), &DungeonRoomData::set_liquid_voxel_surface);
ClassDB::bind_method(D_METHOD("add_liquid_voxel_surface", "voxel_surface"), &DungeonRoomData::add_liquid_voxel_surface);
ClassDB::bind_method(D_METHOD("remove_liquid_voxel_surface", "index"), &DungeonRoomData::remove_liquid_voxel_surface);
ClassDB::bind_method(D_METHOD("get_liquid_voxel_surface_count"), &DungeonRoomData::get_liquid_voxel_surface_count);
ClassDB::bind_method(D_METHOD("get_liquid_voxel_surfaces"), &DungeonRoomData::get_liquid_voxel_surfaces);
ClassDB::bind_method(D_METHOD("set_liquid_voxel_surfaces", "voxel_surfaces"), &DungeonRoomData::set_liquid_voxel_surfaces);
ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "liquid_voxel_surfaces", PROPERTY_HINT_NONE, "17/17:VoxelSurface", PROPERTY_USAGE_DEFAULT, "VoxelSurface"), "set_liquid_voxel_surfaces", "get_liquid_voxel_surfaces");
}

View File

@ -77,6 +77,16 @@ public:
Vector<Variant> get_voxel_surfaces();
void set_voxel_surfaces(const Vector<Variant> &voxel_surfaces);
//Liquid Surfaces
Ref<VoxelSurface> get_liquid_voxel_surface(const int index) const;
void set_liquid_voxel_surface(const int index, const Ref<VoxelSurface> voxel_surface);
void add_liquid_voxel_surface(const Ref<VoxelSurface> voxel_surface);
void remove_liquid_voxel_surface(const int index);
int get_liquid_voxel_surface_count() const;
Vector<Variant> get_liquid_voxel_surfaces();
void set_liquid_voxel_surfaces(const Vector<Variant> &voxel_surfaces);
DungeonRoomData();
~DungeonRoomData();
@ -98,6 +108,7 @@ private:
Vector<Ref<EntityData> > _entity_datas;
Vector<Ref<EnvironmentData> > _environment_datas;
Vector<Ref<VoxelSurface> > _voxel_surfaces;
Vector<Ref<VoxelSurface> > _liquid_voxel_surfaces;
};
#endif

View File

@ -146,11 +146,56 @@ void PlanetData::set_voxel_surfaces(const Vector<Variant> &voxel_surfaces) {
}
}
//// Liquid Surfaces ////
Ref<VoxelSurface> PlanetData::get_liquid_voxel_surface(const int index) const {
ERR_FAIL_INDEX_V(index, _liquid_voxel_surfaces.size(), Ref<VoxelSurface>());
return _liquid_voxel_surfaces.get(index);
}
void PlanetData::set_liquid_voxel_surface(const int index, const Ref<VoxelSurface> voxel_surface) {
ERR_FAIL_INDEX(index, _liquid_voxel_surfaces.size());
_liquid_voxel_surfaces.set(index, voxel_surface);
}
void PlanetData::add_liquid_voxel_surface(const Ref<VoxelSurface> voxel_surface) {
_liquid_voxel_surfaces.push_back(voxel_surface);
}
void PlanetData::remove_liquid_voxel_surface(const int index) {
ERR_FAIL_INDEX(index, _liquid_voxel_surfaces.size());
_liquid_voxel_surfaces.remove(index);
}
int PlanetData::get_liquid_voxel_surface_count() const {
return _liquid_voxel_surfaces.size();
}
Vector<Variant> PlanetData::get_liquid_voxel_surfaces() {
Vector<Variant> r;
for (int i = 0; i < _liquid_voxel_surfaces.size(); i++) {
r.push_back(_liquid_voxel_surfaces[i].get_ref_ptr());
}
return r;
}
void PlanetData::set_liquid_voxel_surfaces(const Vector<Variant> &voxel_surfaces) {
_liquid_voxel_surfaces.clear();
for (int i = 0; i < voxel_surfaces.size(); i++) {
Ref<EnvironmentData> voxel_surface = Ref<EnvironmentData>(voxel_surfaces[i]);
_liquid_voxel_surfaces.push_back(voxel_surface);
}
}
PlanetData::PlanetData() {
_id = 0;
}
PlanetData::~PlanetData() {
_humidity_noise_params.unref();
_temperature_noise_params.unref();
_biome_datas.clear();
_environment_datas.clear();
_voxel_surfaces.clear();
_liquid_voxel_surfaces.clear();
}
void PlanetData::_bind_methods() {
@ -202,4 +247,15 @@ void PlanetData::_bind_methods() {
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");
//Liquid Surfaces
ClassDB::bind_method(D_METHOD("get_liquid_voxel_surface", "index"), &PlanetData::get_liquid_voxel_surface);
ClassDB::bind_method(D_METHOD("set_liquid_voxel_surface", "index", "data"), &PlanetData::set_liquid_voxel_surface);
ClassDB::bind_method(D_METHOD("add_liquid_voxel_surface", "voxel_surface"), &PlanetData::add_liquid_voxel_surface);
ClassDB::bind_method(D_METHOD("remove_liquid_voxel_surface", "index"), &PlanetData::remove_liquid_voxel_surface);
ClassDB::bind_method(D_METHOD("get_liquid_voxel_surface_count"), &PlanetData::get_liquid_voxel_surface_count);
ClassDB::bind_method(D_METHOD("get_liquid_voxel_surfaces"), &PlanetData::get_liquid_voxel_surfaces);
ClassDB::bind_method(D_METHOD("set_liquid_voxel_surfaces", "voxel_surfaces"), &PlanetData::set_liquid_voxel_surfaces);
ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "liquid_voxel_surfaces", PROPERTY_HINT_NONE, "17/17:VoxelSurface", PROPERTY_USAGE_DEFAULT, "VoxelSurface"), "set_liquid_voxel_surfaces", "get_liquid_voxel_surfaces");
}

View File

@ -56,6 +56,16 @@ public:
Vector<Variant> get_voxel_surfaces();
void set_voxel_surfaces(const Vector<Variant> &voxel_surfaces);
//Liquid Surfaces
Ref<VoxelSurface> get_liquid_voxel_surface(const int index) const;
void set_liquid_voxel_surface(const int index, const Ref<VoxelSurface> voxel_surface);
void add_liquid_voxel_surface(const Ref<VoxelSurface> voxel_surface);
void remove_liquid_voxel_surface(const int index);
int get_liquid_voxel_surface_count() const;
Vector<Variant> get_liquid_voxel_surfaces();
void set_liquid_voxel_surfaces(const Vector<Variant> &voxel_surfaces);
PlanetData();
~PlanetData();
@ -72,6 +82,7 @@ private:
Vector<Ref<BiomeData> > _biome_datas;
Vector<Ref<EnvironmentData> > _environment_datas;
Vector<Ref<VoxelSurface> > _voxel_surfaces;
Vector<Ref<VoxelSurface> > _liquid_voxel_surfaces;
};
#endif

View File

@ -140,6 +140,14 @@ void Biome::_setup_library(Ref<VoxelmanLibrary> library) {
library->add_voxel_surface(s);
}
}
for (int i = 0; i < _data->get_liquid_voxel_surface_count(); ++i) {
Ref<VoxelSurface> s = _data->get_liquid_voxel_surface(i);
if (s.is_valid()) {
library->add_liquid_voxel_surface(s);
}
}
}
Biome::Biome() {
@ -147,6 +155,7 @@ Biome::Biome() {
}
Biome::~Biome() {
_environment.unref();
_data.unref();
_prop_datas.clear();
_entity_datas.clear();
_dungeons.clear();

View File

@ -225,6 +225,14 @@ void Dungeon::_setup_library(Ref<VoxelmanLibrary> library) {
library->add_voxel_surface(s);
}
}
for (int i = 0; i < _data->get_liquid_voxel_surface_count(); ++i) {
Ref<VoxelSurface> s = _data->get_liquid_voxel_surface(i);
if (s.is_valid()) {
library->add_liquid_voxel_surface(s);
}
}
}
void Dungeon::generate_chunk(VoxelChunk *chunk, bool spawn_mobs) {
@ -265,6 +273,7 @@ Dungeon::Dungeon() {
}
Dungeon::~Dungeon() {
_environment.unref();
_data.unref();
_dungeon_rooms.clear();
_dungeon_start_rooms.clear();
_dungeon_end_rooms.clear();

View File

@ -153,6 +153,14 @@ void DungeonRoom::_setup_library(Ref<VoxelmanLibrary> library) {
library->add_voxel_surface(s);
}
}
for (int i = 0; i < _data->get_liquid_voxel_surface_count(); ++i) {
Ref<VoxelSurface> s = _data->get_liquid_voxel_surface(i);
if (s.is_valid()) {
library->add_liquid_voxel_surface(s);
}
}
}
void DungeonRoom::generate_chunk(VoxelChunk *chunk, bool spawn_mobs) {
@ -186,6 +194,8 @@ DungeonRoom::DungeonRoom() {
}
DungeonRoom::~DungeonRoom() {
_environment.unref();
_data.unref();
_structure.unref();
_prop_datas.clear();
_entity_datas.clear();
}

View File

@ -102,6 +102,14 @@ void Planet::_setup_library(Ref<VoxelmanLibrary> library) {
library->add_voxel_surface(s);
}
}
for (int i = 0; i < _data->get_liquid_voxel_surface_count(); ++i) {
Ref<VoxelSurface> s = _data->get_liquid_voxel_surface(i);
if (s.is_valid()) {
library->add_liquid_voxel_surface(s);
}
}
}
void Planet::generate_chunk(VoxelChunk *chunk, bool spawn_mobs) {
@ -127,6 +135,7 @@ Planet::Planet() {
}
Planet::~Planet() {
_environment.unref();
_data.unref();
_biomes.clear();
_dungeons.clear();
}