Reorganize all files and rename a few things

This commit is contained in:
Marc Gilleron 2019-04-28 17:58:29 +01:00
parent c8fbf19814
commit 12a97cca5a
44 changed files with 116 additions and 101 deletions

11
SCsub
View File

@ -1,6 +1,11 @@
Import('env') Import('env')
env.add_source_files(env.modules_sources,"*.cpp") env.add_source_files(env.modules_sources, "*.cpp")
env.add_source_files(env.modules_sources,"transvoxel/*.cpp") env.add_source_files(env.modules_sources, "meshers/blocky/*.cpp")
env.add_source_files(env.modules_sources,"dmc/*.cpp") env.add_source_files(env.modules_sources, "meshers/transvoxel/*.cpp")
env.add_source_files(env.modules_sources, "meshers/dmc/*.cpp")
env.add_source_files(env.modules_sources, "providers/*.cpp")
env.add_source_files(env.modules_sources, "util/*.cpp")
env.add_source_files(env.modules_sources, "terrain/*.cpp")
env.add_source_files(env.modules_sources, "math/*.cpp")

View File

@ -1,8 +1,8 @@
#ifndef CUBE_TABLES_H #ifndef CUBE_TABLES_H
#define CUBE_TABLES_H #define CUBE_TABLES_H
#include "math/vector3i.h"
#include <core/math/vector3.h> #include <core/math/vector3.h>
#include "vector3i.h"
namespace Cube { namespace Cube {
@ -71,7 +71,6 @@ extern const unsigned int g_edge_corners[EDGE_COUNT][2];
const unsigned int MOORE_NEIGHBORING_3D_COUNT = 26; const unsigned int MOORE_NEIGHBORING_3D_COUNT = 26;
extern const Vector3i g_moore_neighboring_3d[MOORE_NEIGHBORING_3D_COUNT]; extern const Vector3i g_moore_neighboring_3d[MOORE_NEIGHBORING_3D_COUNT];
} // namespace CubeTables } // namespace Cube
#endif // CUBE_TABLES_H #endif // CUBE_TABLES_H

View File

@ -1,7 +1,7 @@
#include "voxel_mesher.h" #include "voxel_mesher_blocky.h"
#include "cube_tables.h" #include "../../cube_tables.h"
#include "utility.h" #include "../../util/utility.h"
#include "voxel_library.h" #include "../../voxel_library.h"
#include <core/os/os.h> #include <core/os/os.h>
template <typename T> template <typename T>
@ -11,15 +11,15 @@ void raw_copy_to(PoolVector<T> &to, const Vector<T> &from) {
memcpy(w.ptr(), from.ptr(), from.size() * sizeof(T)); memcpy(w.ptr(), from.ptr(), from.size() * sizeof(T));
} }
VoxelMesher::VoxelMesher() : VoxelMesherBlocky::VoxelMesherBlocky() :
_baked_occlusion_darkness(0.8), _baked_occlusion_darkness(0.8),
_bake_occlusion(true) {} _bake_occlusion(true) {}
void VoxelMesher::set_library(Ref<VoxelLibrary> library) { void VoxelMesherBlocky::set_library(Ref<VoxelLibrary> library) {
_library = library; _library = library;
} }
void VoxelMesher::set_occlusion_darkness(float darkness) { void VoxelMesherBlocky::set_occlusion_darkness(float darkness) {
_baked_occlusion_darkness = darkness; _baked_occlusion_darkness = darkness;
if (_baked_occlusion_darkness < 0.0) if (_baked_occlusion_darkness < 0.0)
_baked_occlusion_darkness = 0.0; _baked_occlusion_darkness = 0.0;
@ -27,7 +27,7 @@ void VoxelMesher::set_occlusion_darkness(float darkness) {
_baked_occlusion_darkness = 1.0; _baked_occlusion_darkness = 1.0;
} }
void VoxelMesher::set_occlusion_enabled(bool enable) { void VoxelMesherBlocky::set_occlusion_enabled(bool enable) {
_bake_occlusion = enable; _bake_occlusion = enable;
} }
@ -51,7 +51,7 @@ inline bool is_transparent(const VoxelLibrary &lib, int voxel_id) {
return true; return true;
} }
Ref<ArrayMesh> VoxelMesher::build_mesh(Ref<VoxelBuffer> buffer_ref, unsigned int channel, Array materials, Ref<ArrayMesh> mesh) { Ref<ArrayMesh> VoxelMesherBlocky::build_mesh(Ref<VoxelBuffer> buffer_ref, unsigned int channel, Array materials, Ref<ArrayMesh> mesh) {
ERR_FAIL_COND_V(buffer_ref.is_null(), Ref<ArrayMesh>()); ERR_FAIL_COND_V(buffer_ref.is_null(), Ref<ArrayMesh>());
VoxelBuffer &buffer = **buffer_ref; VoxelBuffer &buffer = **buffer_ref;
@ -75,7 +75,7 @@ Ref<ArrayMesh> VoxelMesher::build_mesh(Ref<VoxelBuffer> buffer_ref, unsigned int
return mesh; return mesh;
} }
Array VoxelMesher::build(const VoxelBuffer &buffer, unsigned int channel, int padding) { Array VoxelMesherBlocky::build(const VoxelBuffer &buffer, unsigned int channel, int padding) {
//uint64_t time_before = OS::get_singleton()->get_ticks_usec(); //uint64_t time_before = OS::get_singleton()->get_ticks_usec();
ERR_FAIL_COND_V(_library.is_null(), Array()); ERR_FAIL_COND_V(_library.is_null(), Array());
@ -418,20 +418,20 @@ Array VoxelMesher::build(const VoxelBuffer &buffer, unsigned int channel, int pa
return surfaces; return surfaces;
} }
void VoxelMesher::_bind_methods() { void VoxelMesherBlocky::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_library", "voxel_library"), &VoxelMesher::set_library); ClassDB::bind_method(D_METHOD("set_library", "voxel_library"), &VoxelMesherBlocky::set_library);
ClassDB::bind_method(D_METHOD("get_library"), &VoxelMesher::get_library); ClassDB::bind_method(D_METHOD("get_library"), &VoxelMesherBlocky::get_library);
ClassDB::bind_method(D_METHOD("set_occlusion_enabled", "enable"), &VoxelMesher::set_occlusion_enabled); ClassDB::bind_method(D_METHOD("set_occlusion_enabled", "enable"), &VoxelMesherBlocky::set_occlusion_enabled);
ClassDB::bind_method(D_METHOD("get_occlusion_enabled"), &VoxelMesher::get_occlusion_enabled); ClassDB::bind_method(D_METHOD("get_occlusion_enabled"), &VoxelMesherBlocky::get_occlusion_enabled);
ClassDB::bind_method(D_METHOD("set_occlusion_darkness", "value"), &VoxelMesher::set_occlusion_darkness); ClassDB::bind_method(D_METHOD("set_occlusion_darkness", "value"), &VoxelMesherBlocky::set_occlusion_darkness);
ClassDB::bind_method(D_METHOD("get_occlusion_darkness"), &VoxelMesher::get_occlusion_darkness); ClassDB::bind_method(D_METHOD("get_occlusion_darkness"), &VoxelMesherBlocky::get_occlusion_darkness);
ClassDB::bind_method(D_METHOD("build_mesh", "voxel_buffer", "channel", "materials", "existing_mesh"), &VoxelMesher::build_mesh); ClassDB::bind_method(D_METHOD("build_mesh", "voxel_buffer", "channel", "materials", "existing_mesh"), &VoxelMesherBlocky::build_mesh);
#ifdef VOXEL_PROFILING #ifdef VOXEL_PROFILING
ClassDB::bind_method(D_METHOD("get_profiling_info"), &VoxelMesher::get_profiling_info); ClassDB::bind_method(D_METHOD("get_profiling_info"), &VoxelMesherBlocky::get_profiling_info);
#endif #endif
} }

View File

@ -1,22 +1,22 @@
#ifndef VOXEL_MESHER #ifndef VOXEL_MESHER_BLOCKY_H
#define VOXEL_MESHER #define VOXEL_MESHER_BLOCKY_H
#include "voxel.h" #include "../../util/zprofiling.h"
#include "voxel_buffer.h" #include "../../voxel.h"
#include "voxel_library.h" #include "../../voxel_buffer.h"
#include "zprofiling.h" #include "../../voxel_library.h"
#include <core/reference.h> #include <core/reference.h>
#include <scene/resources/mesh.h> #include <scene/resources/mesh.h>
// TODO Should be renamed VoxelMesherBlocky or something like that // TODO Should be renamed VoxelMesherBlocky or something like that
class VoxelMesher : public Reference { class VoxelMesherBlocky : public Reference {
GDCLASS(VoxelMesher, Reference) GDCLASS(VoxelMesherBlocky, Reference)
public: public:
static const unsigned int MAX_MATERIALS = 8; // Arbitrary. Tweak if needed. static const unsigned int MAX_MATERIALS = 8; // Arbitrary. Tweak if needed.
static const int MINIMUM_PADDING = 1; static const int MINIMUM_PADDING = 1;
VoxelMesher(); VoxelMesherBlocky();
void set_library(Ref<VoxelLibrary> library); void set_library(Ref<VoxelLibrary> library);
Ref<VoxelLibrary> get_library() const { return _library; } Ref<VoxelLibrary> get_library() const { return _library; }
@ -53,4 +53,4 @@ private:
#endif #endif
}; };
#endif // VOXEL_MESHER #endif // VOXEL_MESHER_BLOCKY_H

View File

@ -1,8 +1,8 @@
#ifndef HERMITE_VALUE_H #ifndef HERMITE_VALUE_H
#define HERMITE_VALUE_H #define HERMITE_VALUE_H
#include "../utility.h" #include "../../util/utility.h"
#include "../voxel_buffer.h" #include "../../voxel_buffer.h"
#include <core/math/vector3.h> #include <core/math/vector3.h>
namespace dmc { namespace dmc {

View File

@ -1,7 +1,7 @@
#ifndef MESH_BUILDER_H #ifndef MESH_BUILDER_H
#define MESH_BUILDER_H #define MESH_BUILDER_H
#include "../utility.h" #include "../../util/utility.h"
#include <core/map.h> #include <core/map.h>
#include <scene/resources/mesh.h> #include <scene/resources/mesh.h>
#include <vector> #include <vector>

View File

@ -1,7 +1,7 @@
#ifndef OCTREE_UTILITY_H #ifndef OCTREE_TABLES_H
#define OCTREE_UTILITY_H #define OCTREE_TABLES_H
namespace OctreeUtility { namespace OctreeTables {
// Corners: Octants: // Corners: Octants:
// //
@ -40,6 +40,6 @@ const int g_octant_position[8][3]{
{ 0, 1, 1 } { 0, 1, 1 }
}; };
} // namespace OctreeUtility } // namespace OctreeTables
#endif // OCTREE_UTILITY_H #endif // OCTREE_TABLES_H

View File

@ -1,8 +1,8 @@
#include "voxel_mesher_dmc.h" #include "voxel_mesher_dmc.h"
#include "../cube_tables.h" #include "../../cube_tables.h"
#include "marching_cubes_tables.h" #include "marching_cubes_tables.h"
#include "mesh_builder.h" #include "mesh_builder.h"
#include "octree_utility.h" #include "octree_tables.h"
#include <core/os/os.h> #include <core/os/os.h>
// Dual marching cubes // Dual marching cubes
@ -184,7 +184,7 @@ private:
for (int i = 0; i < 8; ++i) { for (int i = 0; i < 8; ++i) {
OctreeNode *child = _pool.create(); OctreeNode *child = _pool.create();
const int *v = OctreeUtility::g_octant_position[i]; const int *v = OctreeTables::g_octant_position[i];
child->size = node->size / 2; child->size = node->size / 2;
child->origin = node->origin + Vector3i(v[0], v[1], v[2]) * child->size; child->origin = node->origin + Vector3i(v[0], v[1], v[2]) * child->size;
@ -215,7 +215,7 @@ public:
// Go all the way down, except leaves because we can't reason bottom-up on them // Go all the way down, except leaves because we can't reason bottom-up on them
if (node_size > 2) { if (node_size > 2) {
for (int i = 0; i < 8; ++i) { for (int i = 0; i < 8; ++i) {
const int *dir = OctreeUtility::g_octant_position[i]; const int *dir = OctreeTables::g_octant_position[i];
int child_size = node_size / 2; int child_size = node_size / 2;
children[i] = build(node_origin + child_size * Vector3i(dir[0], dir[1], dir[2]), child_size); children[i] = build(node_origin + child_size * Vector3i(dir[0], dir[1], dir[2]), child_size);
any_node |= children[i] != nullptr; any_node |= children[i] != nullptr;
@ -263,7 +263,7 @@ public:
private: private:
inline OctreeNode *create_child(Vector3i parent_origin, int parent_size, int i) const { inline OctreeNode *create_child(Vector3i parent_origin, int parent_size, int i) const {
const int *dir = OctreeUtility::g_octant_position[i]; const int *dir = OctreeTables::g_octant_position[i];
OctreeNode *child = _pool.create(); OctreeNode *child = _pool.create();
child->size = parent_size / 2; child->size = parent_size / 2;
child->origin = parent_origin + child->size * Vector3i(dir[0], dir[1], dir[2]); child->origin = parent_origin + child->size * Vector3i(dir[0], dir[1], dir[2]);

View File

@ -1,11 +1,11 @@
#ifndef VOXEL_MESHER_DMC_H #ifndef VOXEL_MESHER_DMC_H
#define VOXEL_MESHER_DMC_H #define VOXEL_MESHER_DMC_H
#include "../voxel_buffer.h" #include "../../voxel_buffer.h"
#include "hermite_value.h" #include "hermite_value.h"
#include "mesh_builder.h" #include "mesh_builder.h"
#include "object_pool.h" #include "object_pool.h"
#include "scene/resources/mesh.h" #include <scene/resources/mesh.h>
namespace dmc { namespace dmc {

View File

@ -1,7 +1,7 @@
#ifndef VOXEL_MESHER_SMOOTH_H #ifndef VOXEL_MESHER_SMOOTH_H
#define VOXEL_MESHER_SMOOTH_H #define VOXEL_MESHER_SMOOTH_H
#include "../voxel_buffer.h" #include "../../voxel_buffer.h"
#include <scene/resources/mesh.h> #include <scene/resources/mesh.h>
class VoxelMesherTransvoxel : public Reference { class VoxelMesherTransvoxel : public Reference {

View File

@ -1,5 +1,5 @@
#include "voxel_provider.h" #include "voxel_provider.h"
#include "voxel_map.h" #include <core/script_language.h>
void VoxelProvider::emerge_block(Ref<VoxelBuffer> out_buffer, Vector3i origin_in_voxels) { void VoxelProvider::emerge_block(Ref<VoxelBuffer> out_buffer, Vector3i origin_in_voxels) {
ERR_FAIL_COND(out_buffer.is_null()); ERR_FAIL_COND(out_buffer.is_null());

View File

@ -1,7 +1,7 @@
#ifndef VOXEL_PROVIDER_H #ifndef VOXEL_PROVIDER_H
#define VOXEL_PROVIDER_H #define VOXEL_PROVIDER_H
#include "voxel_buffer.h" #include "../voxel_buffer.h"
#include <core/resource.h> #include <core/resource.h>
class VoxelProvider : public Resource { class VoxelProvider : public Resource {

View File

@ -1,5 +1,4 @@
#include "voxel_provider_test.h" #include "voxel_provider_test.h"
#include "voxel_map.h"
VARIANT_ENUM_CAST(VoxelProviderTest::Mode) VARIANT_ENUM_CAST(VoxelProviderTest::Mode)

View File

@ -1,31 +1,42 @@
#include "register_types.h" #include "register_types.h"
#include "dmc/voxel_mesher_dmc.h" #include "meshers/blocky/voxel_mesher_blocky.h"
#include "transvoxel/voxel_mesher_transvoxel.h" #include "meshers/dmc/voxel_mesher_dmc.h"
#include "voxel_box_mover.h" #include "meshers/transvoxel/voxel_mesher_transvoxel.h"
#include "providers/voxel_provider_image.h"
#include "providers/voxel_provider_test.h"
#include "terrain/voxel_box_mover.h"
#include "terrain/voxel_map.h"
#include "terrain/voxel_terrain.h"
#include "voxel_buffer.h" #include "voxel_buffer.h"
#include "voxel_isosurface_tool.h" #include "voxel_isosurface_tool.h"
#include "voxel_library.h" #include "voxel_library.h"
#include "voxel_map.h"
#include "voxel_mesher.h"
#include "voxel_provider_image.h"
#include "voxel_provider_test.h"
#include "voxel_terrain.h"
void register_voxel_types() { void register_voxel_types() {
ClassDB::register_class<Voxel>(); // Storage
ClassDB::register_class<VoxelBuffer>(); ClassDB::register_class<VoxelBuffer>();
ClassDB::register_class<VoxelMesher>();
ClassDB::register_class<VoxelLibrary>();
ClassDB::register_class<VoxelMap>(); ClassDB::register_class<VoxelMap>();
// Voxel types
ClassDB::register_class<Voxel>();
ClassDB::register_class<VoxelLibrary>();
// Nodes
ClassDB::register_class<VoxelTerrain>(); ClassDB::register_class<VoxelTerrain>();
// Providers
ClassDB::register_class<VoxelProvider>(); ClassDB::register_class<VoxelProvider>();
ClassDB::register_class<VoxelProviderTest>(); ClassDB::register_class<VoxelProviderTest>();
ClassDB::register_class<VoxelProviderImage>(); ClassDB::register_class<VoxelProviderImage>();
ClassDB::register_class<VoxelMesherTransvoxel>();
// Helpers
ClassDB::register_class<VoxelBoxMover>(); ClassDB::register_class<VoxelBoxMover>();
ClassDB::register_class<VoxelMesherDMC>();
ClassDB::register_class<VoxelIsoSurfaceTool>(); ClassDB::register_class<VoxelIsoSurfaceTool>();
// Meshers
ClassDB::register_class<VoxelMesherBlocky>();
ClassDB::register_class<VoxelMesherTransvoxel>();
ClassDB::register_class<VoxelMesherDMC>();
} }
void unregister_voxel_types() { void unregister_voxel_types() {

View File

@ -1,7 +1,7 @@
#ifndef VOXEL_BLOCK_H #ifndef VOXEL_BLOCK_H
#define VOXEL_BLOCK_H #define VOXEL_BLOCK_H
#include "voxel_buffer.h" #include "../voxel_buffer.h"
#include <scene/3d/mesh_instance.h> #include <scene/3d/mesh_instance.h>
#include <scene/3d/physics_body.h> #include <scene/3d/physics_body.h>

View File

@ -1,5 +1,5 @@
#include "voxel_map.h" #include "voxel_map.h"
#include "cube_tables.h" #include "../cube_tables.h"
#include "voxel_block.h" #include "voxel_block.h"
#include "core/os/os.h" #include "core/os/os.h"

View File

@ -1,5 +1,5 @@
#include "voxel_mesh_updater.h" #include "voxel_mesh_updater.h"
#include "utility.h" #include "../util/utility.h"
#include <core/os/os.h> #include <core/os/os.h>
VoxelMeshUpdater::VoxelMeshUpdater(Ref<VoxelLibrary> library, MeshingParams params) { VoxelMeshUpdater::VoxelMeshUpdater(Ref<VoxelLibrary> library, MeshingParams params) {

View File

@ -5,9 +5,9 @@
#include <core/os/thread.h> #include <core/os/thread.h>
#include <core/vector.h> #include <core/vector.h>
#include "dmc/voxel_mesher_dmc.h" #include "../meshers/blocky/voxel_mesher_blocky.h"
#include "voxel_buffer.h" #include "../meshers/dmc/voxel_mesher_dmc.h"
#include "voxel_mesher.h" #include "../voxel_buffer.h"
class VoxelMeshUpdater { class VoxelMeshUpdater {
public: public:
@ -83,7 +83,7 @@ private:
Output _shared_output; Output _shared_output;
Mutex *_output_mutex; Mutex *_output_mutex;
Ref<VoxelMesher> _blocky_mesher; Ref<VoxelMesherBlocky> _blocky_mesher;
Ref<VoxelMesherDMC> _dmc_mesher; Ref<VoxelMesherDMC> _dmc_mesher;
Input _input; Input _input;

View File

@ -1,10 +1,11 @@
#include "voxel_provider_thread.h" #include "voxel_provider_thread.h"
#include "core/os/os.h" #include "../providers/voxel_provider.h"
#include "core/os/semaphore.h" #include "../util/utility.h"
#include "core/os/thread.h"
#include "utility.h"
#include "voxel_map.h" #include "voxel_map.h"
#include "voxel_provider.h"
#include <core/os/os.h>
#include <core/os/semaphore.h>
#include <core/os/thread.h>
VoxelProviderThread::VoxelProviderThread(Ref<VoxelProvider> provider, int block_size_pow2) { VoxelProviderThread::VoxelProviderThread(Ref<VoxelProvider> provider, int block_size_pow2) {

View File

@ -1,8 +1,8 @@
#ifndef VOXEL_PROVIDER_THREAD_H #ifndef VOXEL_PROVIDER_THREAD_H
#define VOXEL_PROVIDER_THREAD_H #define VOXEL_PROVIDER_THREAD_H
#include "core/resource.h" #include "../math/vector3i.h"
#include "vector3i.h" #include <core/resource.h>
class VoxelProvider; class VoxelProvider;
class VoxelBuffer; class VoxelBuffer;

View File

@ -1,10 +1,10 @@
#include "voxel_terrain.h" #include "voxel_terrain.h"
#include "utility.h" #include "../providers/voxel_provider_test.h"
#include "../util/utility.h"
#include "../util/voxel_raycast.h"
#include "voxel_block.h" #include "voxel_block.h"
#include "voxel_map.h" #include "voxel_map.h"
#include "voxel_provider_test.h"
#include "voxel_provider_thread.h" #include "voxel_provider_thread.h"
#include "voxel_raycast.h"
#include <core/engine.h> #include <core/engine.h>
#include <core/os/os.h> #include <core/os/os.h>
@ -41,7 +41,7 @@ bool VoxelTerrain::_set(const StringName &p_name, const Variant &p_value) {
if (p_name.operator String().begins_with("material/")) { if (p_name.operator String().begins_with("material/")) {
int idx = p_name.operator String().get_slicec('/', 1).to_int(); int idx = p_name.operator String().get_slicec('/', 1).to_int();
ERR_FAIL_COND_V(idx >= VoxelMesher::MAX_MATERIALS || idx < 0, false); ERR_FAIL_COND_V(idx >= VoxelMesherBlocky::MAX_MATERIALS || idx < 0, false);
set_material(idx, p_value); set_material(idx, p_value);
return true; return true;
} }
@ -53,7 +53,7 @@ bool VoxelTerrain::_get(const StringName &p_name, Variant &r_ret) const {
if (p_name.operator String().begins_with("material/")) { if (p_name.operator String().begins_with("material/")) {
int idx = p_name.operator String().get_slicec('/', 1).to_int(); int idx = p_name.operator String().get_slicec('/', 1).to_int();
ERR_FAIL_COND_V(idx >= VoxelMesher::MAX_MATERIALS || idx < 0, false); ERR_FAIL_COND_V(idx >= VoxelMesherBlocky::MAX_MATERIALS || idx < 0, false);
r_ret = get_material(idx); r_ret = get_material(idx);
return true; return true;
} }
@ -63,7 +63,7 @@ bool VoxelTerrain::_get(const StringName &p_name, Variant &r_ret) const {
void VoxelTerrain::_get_property_list(List<PropertyInfo> *p_list) const { void VoxelTerrain::_get_property_list(List<PropertyInfo> *p_list) const {
for (int i = 0; i < VoxelMesher::MAX_MATERIALS; ++i) { for (int i = 0; i < VoxelMesherBlocky::MAX_MATERIALS; ++i) {
p_list->push_back(PropertyInfo(Variant::OBJECT, "material/" + itos(i), PROPERTY_HINT_RESOURCE_TYPE, "ShaderMaterial,SpatialMaterial")); p_list->push_back(PropertyInfo(Variant::OBJECT, "material/" + itos(i), PROPERTY_HINT_RESOURCE_TYPE, "ShaderMaterial,SpatialMaterial"));
} }
} }
@ -151,12 +151,12 @@ Spatial *VoxelTerrain::get_viewer(NodePath path) const {
void VoxelTerrain::set_material(int id, Ref<Material> material) { void VoxelTerrain::set_material(int id, Ref<Material> material) {
// TODO Update existing block surfaces // TODO Update existing block surfaces
ERR_FAIL_COND(id < 0 || id >= VoxelMesher::MAX_MATERIALS); ERR_FAIL_COND(id < 0 || id >= VoxelMesherBlocky::MAX_MATERIALS);
_materials[id] = material; _materials[id] = material;
} }
Ref<Material> VoxelTerrain::get_material(int id) const { Ref<Material> VoxelTerrain::get_material(int id) const {
ERR_FAIL_COND_V(id < 0 || id >= VoxelMesher::MAX_MATERIALS, Ref<Material>()); ERR_FAIL_COND_V(id < 0 || id >= VoxelMesherBlocky::MAX_MATERIALS, Ref<Material>());
return _materials[id]; return _materials[id];
} }

View File

@ -1,12 +1,12 @@
#ifndef VOXEL_TERRAIN_H #ifndef VOXEL_TERRAIN_H
#define VOXEL_TERRAIN_H #define VOXEL_TERRAIN_H
#include "rect3i.h" #include "../math/rect3i.h"
#include "vector3i.h" #include "../math/vector3i.h"
#include "../providers/voxel_provider.h"
#include "../util/zprofiling.h"
#include "voxel_mesh_updater.h" #include "voxel_mesh_updater.h"
#include "voxel_provider.h"
#include "voxel_provider_thread.h" #include "voxel_provider_thread.h"
#include "zprofiling.h"
#include <scene/3d/spatial.h> #include <scene/3d/spatial.h>
@ -150,7 +150,7 @@ private:
bool _run_in_editor; bool _run_in_editor;
bool _smooth_meshing_enabled; bool _smooth_meshing_enabled;
Ref<Material> _materials[VoxelMesher::MAX_MATERIALS]; Ref<Material> _materials[VoxelMesherBlocky::MAX_MATERIALS];
Stats _stats; Stats _stats;
}; };

View File

@ -1,7 +1,7 @@
#ifndef HEADER_VOXEL_UTILITY_H #ifndef HEADER_VOXEL_UTILITY_H
#define HEADER_VOXEL_UTILITY_H #define HEADER_VOXEL_UTILITY_H
#include "vector3i.h" #include "../math/vector3i.h"
#include <core/pool_vector.h> #include <core/pool_vector.h>
#include <core/ustring.h> #include <core/ustring.h>
#include <core/vector.h> #include <core/vector.h>
@ -54,7 +54,7 @@ void raw_copy_to(PoolVector<T> &to, const std::vector<T> &from) {
} }
// Trilinear interpolation between corner values of a cube. // Trilinear interpolation between corner values of a cube.
// Cube points respect the same position as in octree_utility.h // Cube points respect the same position as in octree_tables.h
template <typename T> template <typename T>
inline T interpolate(const T v0, const T v1, const T v2, const T v3, const T v4, const T v5, const T v6, const T v7, Vector3 position) { inline T interpolate(const T v0, const T v1, const T v2, const T v3, const T v4, const T v5, const T v6, const T v7, Vector3 position) {

View File

@ -1,4 +1,4 @@
#include "vector3i.h" #include "../math/vector3i.h"
#include <core/math/vector3.h> #include <core/math/vector3.h>
// TODO that could be a template function // TODO that could be a template function

View File

@ -1,6 +1,6 @@
#include "voxel.h" #include "voxel.h"
#include "meshers/blocky/voxel_mesher_blocky.h" // TODO Only required because of MAX_MATERIALS... could be enough inverting that dependency
#include "voxel_library.h" #include "voxel_library.h"
#include "voxel_mesher.h"
#define STRLEN(x) (sizeof(x) / sizeof(x[0])) #define STRLEN(x) (sizeof(x) / sizeof(x[0]))
@ -110,7 +110,7 @@ Ref<Voxel> Voxel::set_color(Color color) {
} }
Ref<Voxel> Voxel::set_material_id(unsigned int id) { Ref<Voxel> Voxel::set_material_id(unsigned int id) {
ERR_FAIL_COND_V(id >= VoxelMesher::MAX_MATERIALS, Ref<Voxel>(this)); ERR_FAIL_COND_V(id >= VoxelMesherBlocky::MAX_MATERIALS, Ref<Voxel>(this));
_material_id = id; _material_id = id;
return Ref<Voxel>(this); return Ref<Voxel>(this);
} }

View File

@ -1,7 +1,7 @@
#ifndef VOXEL_BUFFER_H #ifndef VOXEL_BUFFER_H
#define VOXEL_BUFFER_H #define VOXEL_BUFFER_H
#include "vector3i.h" #include "math/vector3i.h"
#include <core/reference.h> #include <core/reference.h>
#include <core/vector.h> #include <core/vector.h>

View File

@ -1,5 +1,5 @@
#include "voxel_isosurface_tool.h" #include "voxel_isosurface_tool.h"
#include "utility.h" #include "util/utility.h"
VoxelIsoSurfaceTool::VoxelIsoSurfaceTool() { VoxelIsoSurfaceTool::VoxelIsoSurfaceTool() {
_iso_scale = 1.0; _iso_scale = 1.0;