mirror of
https://github.com/Relintai/godot_voxel.git
synced 2024-11-19 02:47:18 +01:00
Reorganize all files and rename a few things
This commit is contained in:
parent
c8fbf19814
commit
12a97cca5a
9
SCsub
9
SCsub
@ -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")
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
}
|
}
|
@ -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
|
@ -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 {
|
@ -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>
|
@ -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
|
@ -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]);
|
@ -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 {
|
||||||
|
|
@ -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 {
|
@ -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());
|
@ -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 {
|
@ -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)
|
||||||
|
|
@ -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() {
|
||||||
|
@ -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>
|
@ -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"
|
@ -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) {
|
@ -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;
|
@ -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) {
|
||||||
|
|
@ -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;
|
@ -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];
|
||||||
}
|
}
|
||||||
|
|
@ -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;
|
||||||
};
|
};
|
@ -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) {
|
||||||
|
|
@ -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
|
@ -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);
|
||||||
}
|
}
|
||||||
|
@ -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>
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
Loading…
Reference in New Issue
Block a user