mirror of
https://github.com/Relintai/godot_voxel.git
synced 2025-01-27 08:29:19 +01:00
Comments
This commit is contained in:
parent
b24a0d4140
commit
9363f54e8d
@ -285,6 +285,8 @@ void VoxelTerrain::reset_updater() {
|
|||||||
params.smooth_surface = _smooth_meshing_enabled;
|
params.smooth_surface = _smooth_meshing_enabled;
|
||||||
|
|
||||||
_block_updater = memnew(VoxelMeshUpdater(_library, params));
|
_block_updater = memnew(VoxelMeshUpdater(_library, params));
|
||||||
|
|
||||||
|
// TODO Revert any pending update states!
|
||||||
}
|
}
|
||||||
|
|
||||||
inline int get_border_index(int x, int max) {
|
inline int get_border_index(int x, int max) {
|
||||||
@ -447,6 +449,8 @@ void VoxelTerrain::make_area_dirty(Rect3i box) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
|
||||||
struct EnterWorldAction {
|
struct EnterWorldAction {
|
||||||
World *world;
|
World *world;
|
||||||
EnterWorldAction(World *w) :
|
EnterWorldAction(World *w) :
|
||||||
@ -471,6 +475,8 @@ struct SetVisibilityAction {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
} // namespace
|
||||||
|
|
||||||
void VoxelTerrain::_notification(int p_what) {
|
void VoxelTerrain::_notification(int p_what) {
|
||||||
|
|
||||||
switch (p_what) {
|
switch (p_what) {
|
||||||
@ -820,7 +826,6 @@ void VoxelTerrain::_process() {
|
|||||||
CRASH_COND(surface.size() != Mesh::ARRAY_MAX);
|
CRASH_COND(surface.size() != Mesh::ARRAY_MAX);
|
||||||
mesh->add_surface_from_arrays(ob.blocky_surfaces.primitive_type, surface);
|
mesh->add_surface_from_arrays(ob.blocky_surfaces.primitive_type, surface);
|
||||||
mesh->surface_set_material(surface_index, _materials[i]);
|
mesh->surface_set_material(surface_index, _materials[i]);
|
||||||
|
|
||||||
++surface_index;
|
++surface_index;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -832,10 +837,8 @@ void VoxelTerrain::_process() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
CRASH_COND(surface.size() != Mesh::ARRAY_MAX);
|
CRASH_COND(surface.size() != Mesh::ARRAY_MAX);
|
||||||
// TODO Problem here, the mesher could be configured to output wireframe! Need to output some MeshData struct instead
|
|
||||||
mesh->add_surface_from_arrays(ob.smooth_surfaces.primitive_type, surface);
|
mesh->add_surface_from_arrays(ob.smooth_surfaces.primitive_type, surface);
|
||||||
mesh->surface_set_material(surface_index, _materials[i]);
|
mesh->surface_set_material(surface_index, _materials[i]);
|
||||||
// No material supported yet
|
|
||||||
++surface_index;
|
++surface_index;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -14,17 +14,17 @@ class VoxelMap;
|
|||||||
class VoxelLibrary;
|
class VoxelLibrary;
|
||||||
|
|
||||||
// Infinite paged terrain made of voxel blocks.
|
// Infinite paged terrain made of voxel blocks.
|
||||||
// Voxels are polygonized around the viewer.
|
// Voxels are polygonized around the viewer by distance in a large cubic space.
|
||||||
// Data is streamed using a VoxelProvider.
|
// Data is streamed using a VoxelProvider.
|
||||||
class VoxelTerrain : public Spatial {
|
class VoxelTerrain : public Spatial {
|
||||||
GDCLASS(VoxelTerrain, Spatial)
|
GDCLASS(VoxelTerrain, Spatial)
|
||||||
public:
|
public:
|
||||||
enum BlockDirtyState {
|
enum BlockDirtyState {
|
||||||
BLOCK_NONE,
|
BLOCK_NONE, // There is no block
|
||||||
BLOCK_LOAD,
|
BLOCK_LOAD, // The block is loading
|
||||||
BLOCK_UPDATE_NOT_SENT,
|
BLOCK_UPDATE_NOT_SENT, // The block needs an update but wasn't sent yet
|
||||||
BLOCK_UPDATE_SENT,
|
BLOCK_UPDATE_SENT, // The block needs an update which was sent
|
||||||
BLOCK_IDLE
|
BLOCK_IDLE // The block is up to date
|
||||||
};
|
};
|
||||||
|
|
||||||
VoxelTerrain();
|
VoxelTerrain();
|
||||||
|
Loading…
Reference in New Issue
Block a user