mirror of
https://github.com/Relintai/voxelman.git
synced 2025-02-10 16:20:10 +01:00
Added a Cubic chunk and World.
This commit is contained in:
parent
7c95171944
commit
7219d7b2d4
8
SCsub
8
SCsub
@ -54,12 +54,16 @@ sources = [
|
||||
"world/marching_cubes/voxel_chunk_marching_cubes.cpp",
|
||||
"world/marching_cubes/voxel_world_marching_cubes.cpp",
|
||||
|
||||
"meshers/cubic_mesher/voxel_mesher_cubic.cpp",
|
||||
"meshers/cubic_mesher/voxel_cube_points.cpp",
|
||||
"meshers/cubic/voxel_mesher_cubic.cpp",
|
||||
"meshers/cubic/voxel_cube_points.cpp",
|
||||
|
||||
"level_generator/voxelman_level_generator.cpp",
|
||||
"level_generator/voxelman_level_generator_flat.cpp",
|
||||
|
||||
"world/cubic/voxel_chunk_cubic.cpp",
|
||||
"world/cubic/voxel_world_cubic.cpp",
|
||||
|
||||
|
||||
"areas/world_area.cpp",
|
||||
|
||||
"world/voxel_world_editor.cpp",
|
||||
|
@ -49,6 +49,9 @@ def get_doc_classes():
|
||||
"VoxelWorldMarchingCubes",
|
||||
"VoxelChunkMarchingCubes",
|
||||
|
||||
"VoxelMesherCubic",
|
||||
"VoxelWorldCubic",
|
||||
|
||||
"VoxelMesherDefault",
|
||||
"VoxelWorldDefault",
|
||||
"VoxelChunkBlocky",
|
||||
|
@ -49,8 +49,8 @@ SOFTWARE.
|
||||
#include "world/default/voxel_chunk_default.h"
|
||||
#include "world/default/voxel_world_default.h"
|
||||
|
||||
#include "meshers/cubic_mesher/voxel_cube_points.h"
|
||||
#include "meshers/cubic_mesher/voxel_mesher_cubic.h"
|
||||
#include "meshers/cubic/voxel_cube_points.h"
|
||||
#include "meshers/cubic/voxel_mesher_cubic.h"
|
||||
|
||||
#include "level_generator/voxelman_level_generator.h"
|
||||
#include "level_generator/voxelman_level_generator_flat.h"
|
||||
@ -65,6 +65,9 @@ SOFTWARE.
|
||||
#include "world/blocky/voxel_chunk_blocky.h"
|
||||
#include "world/blocky/voxel_world_blocky.h"
|
||||
|
||||
#include "world/cubic/voxel_chunk_cubic.h"
|
||||
#include "world/cubic/voxel_world_cubic.h"
|
||||
|
||||
#include "world/marching_cubes/voxel_chunk_marching_cubes.h"
|
||||
#include "world/marching_cubes/voxel_world_marching_cubes.h"
|
||||
|
||||
@ -109,6 +112,9 @@ void register_voxelman_types() {
|
||||
ClassDB::register_class<VoxelWorldMarchingCubes>();
|
||||
ClassDB::register_class<VoxelChunkMarchingCubes>();
|
||||
|
||||
ClassDB::register_class<VoxelWorldCubic>();
|
||||
ClassDB::register_class<VoxelChunkCubic>();
|
||||
|
||||
ClassDB::register_class<VoxelmanLevelGenerator>();
|
||||
ClassDB::register_class<VoxelmanLevelGeneratorFlat>();
|
||||
|
||||
|
81
world/cubic/voxel_chunk_cubic.cpp
Normal file
81
world/cubic/voxel_chunk_cubic.cpp
Normal file
@ -0,0 +1,81 @@
|
||||
/*
|
||||
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 "voxel_chunk_cubic.h"
|
||||
|
||||
#include "../../meshers/cubic/voxel_mesher_cubic.h"
|
||||
|
||||
#include "../../defines.h"
|
||||
|
||||
VoxelChunkCubic::VoxelChunkCubic() {
|
||||
}
|
||||
|
||||
VoxelChunkCubic::~VoxelChunkCubic() {
|
||||
}
|
||||
|
||||
void VoxelChunkCubic::_setup_channels() {
|
||||
set_channel_count(MAX_DEFAULT_CHANNELS);
|
||||
}
|
||||
|
||||
void VoxelChunkCubic::_create_meshers() {
|
||||
add_mesher(Ref<VoxelMesher>(memnew(VoxelMesherCubic())));
|
||||
//add_liquid_mesher(Ref<VoxelMesher>(memnew(VoxelMesherLiquiCubic())));
|
||||
|
||||
for (int i = 0; i < _meshers.size(); ++i) {
|
||||
Ref<VoxelMesher> mesher = _meshers.get(i);
|
||||
|
||||
ERR_CONTINUE(!mesher.is_valid());
|
||||
|
||||
mesher->set_lod_size(get_lod_size());
|
||||
mesher->set_voxel_scale(get_voxel_scale());
|
||||
|
||||
Ref<VoxelMesherDefault> md = mesher;
|
||||
|
||||
if (md.is_valid()) {
|
||||
md->set_build_flags(get_build_flags());
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
for (int i = 0; i < _liquid_meshers.size(); ++i) {
|
||||
Ref<VoxelMesher> mesher = _liquid_meshers.get(i);
|
||||
|
||||
ERR_CONTINUE(!mesher.is_valid());
|
||||
|
||||
mesher->set_lod_size(get_lod_size());
|
||||
mesher->set_voxel_scale(get_voxel_scale());
|
||||
|
||||
Ref<VoxelMesherDefault> md = mesher;
|
||||
|
||||
if (md.is_valid()) {
|
||||
md->set_build_flags(get_build_flags());
|
||||
}
|
||||
}*/
|
||||
}
|
||||
|
||||
void VoxelChunkCubic::_bind_methods() {
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::POOL_BYTE_ARRAY, "data_channel"), "set_channel_compressed", "get_channel_compressed", 0);
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::POOL_BYTE_ARRAY, "isolevel_channel"), "set_channel_compressed", "get_channel_compressed", 1);
|
||||
|
||||
//ClassDB::bind_method(D_METHOD("get_channel_compressed", "channel_index"), &VoxelChunk::get_channel_compressed);
|
||||
//ClassDB::bind_method(D_METHOD("set_channel_compressed", "channel_index", "array"), &VoxelChunk::set_channel_compressed);
|
||||
}
|
42
world/cubic/voxel_chunk_cubic.h
Normal file
42
world/cubic/voxel_chunk_cubic.h
Normal file
@ -0,0 +1,42 @@
|
||||
/*
|
||||
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 VOXEL_CHUNK_CUBIC_H
|
||||
#define VOXEL_CHUNK_CUBIC_H
|
||||
|
||||
#include "../default/voxel_chunk_default.h"
|
||||
|
||||
class VoxelChunkCubic : public VoxelChunkDefault {
|
||||
GDCLASS(VoxelChunkCubic, VoxelChunkDefault);
|
||||
|
||||
public:
|
||||
VoxelChunkCubic();
|
||||
~VoxelChunkCubic();
|
||||
|
||||
protected:
|
||||
virtual void _setup_channels();
|
||||
virtual void _create_meshers();
|
||||
|
||||
static void _bind_methods();
|
||||
};
|
||||
|
||||
#endif
|
45
world/cubic/voxel_world_cubic.cpp
Normal file
45
world/cubic/voxel_world_cubic.cpp
Normal file
@ -0,0 +1,45 @@
|
||||
/*
|
||||
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 "voxel_world_cubic.h"
|
||||
|
||||
#include "voxel_chunk_cubic.h"
|
||||
|
||||
Ref<VoxelChunk> VoxelWorldCubic::_create_chunk(int x, int y, int z, Ref<VoxelChunk> chunk) {
|
||||
|
||||
if (!chunk.is_valid()) {
|
||||
chunk = Ref<VoxelChunk>(memnew(VoxelChunkCubic));
|
||||
}
|
||||
|
||||
return VoxelWorld::_create_chunk(x, y, z, chunk);
|
||||
}
|
||||
|
||||
VoxelWorldCubic::VoxelWorldCubic() {
|
||||
set_data_margin_start(1);
|
||||
set_data_margin_end(1);
|
||||
}
|
||||
|
||||
VoxelWorldCubic ::~VoxelWorldCubic() {
|
||||
}
|
||||
|
||||
void VoxelWorldCubic::_bind_methods() {
|
||||
}
|
41
world/cubic/voxel_world_cubic.h
Normal file
41
world/cubic/voxel_world_cubic.h
Normal file
@ -0,0 +1,41 @@
|
||||
/*
|
||||
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 VOXEL_WORLD_CUBIC_H
|
||||
#define VOXEL_WORLD_CUBIC_H
|
||||
|
||||
#include "../default/voxel_world_default.h"
|
||||
|
||||
class VoxelWorldCubic : public VoxelWorldDefault {
|
||||
GDCLASS(VoxelWorldCubic, VoxelWorldDefault);
|
||||
|
||||
public:
|
||||
VoxelWorldCubic();
|
||||
~VoxelWorldCubic();
|
||||
|
||||
protected:
|
||||
Ref<VoxelChunk> _create_chunk(int x, int y, int z, Ref<VoxelChunk> p_chunk);
|
||||
|
||||
static void _bind_methods();
|
||||
};
|
||||
|
||||
#endif
|
@ -43,7 +43,6 @@ SOFTWARE.
|
||||
|
||||
#include "../../data/voxel_light.h"
|
||||
|
||||
#include "../../meshers/cubic_mesher/voxel_mesher_cubic.h"
|
||||
#include "../../meshers/voxel_mesher.h"
|
||||
|
||||
#include "../../library/voxel_surface.h"
|
||||
@ -288,7 +287,7 @@ protected:
|
||||
|
||||
ActiveBuildPhaseType _active_build_phase_type;
|
||||
|
||||
Vector<Ref<VoxelLight>> _lights;
|
||||
Vector<Ref<VoxelLight> > _lights;
|
||||
};
|
||||
|
||||
VARIANT_ENUM_CAST(VoxelChunkDefault::DefaultChannels);
|
||||
|
@ -44,7 +44,6 @@ include_pool_vector
|
||||
|
||||
#include "../data/voxel_light.h"
|
||||
|
||||
#include "../meshers/cubic_mesher/voxel_mesher_cubic.h"
|
||||
#include "../meshers/voxel_mesher.h"
|
||||
|
||||
#include "../library/voxel_surface.h"
|
||||
@ -257,11 +256,11 @@ protected:
|
||||
float _voxel_scale;
|
||||
|
||||
Ref<VoxelmanLibrary> _library;
|
||||
Vector<Ref<VoxelMesher>> _meshers;
|
||||
Vector<Ref<VoxelMesher>> _liquid_meshers;
|
||||
Vector<Ref<VoxelMesher> > _meshers;
|
||||
Vector<Ref<VoxelMesher> > _liquid_meshers;
|
||||
|
||||
//mergeable props
|
||||
Vector<Ref<VoxelChunkPropData>> _props;
|
||||
Vector<Ref<VoxelChunkPropData> > _props;
|
||||
|
||||
Transform _transform;
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user