Added voxel_to_mesh_block_position

master
Marc Gilleron 2021-04-05 03:44:52 +01:00
parent befe0cc7e1
commit 19af22fb2b
2 changed files with 11 additions and 0 deletions

View File

@ -600,6 +600,14 @@ Vector3 VoxelLodTerrain::voxel_to_data_block_position(Vector3 vpos, int lod_inde
return bpos.to_vec3();
}
Vector3 VoxelLodTerrain::voxel_to_mesh_block_position(Vector3 vpos, int lod_index) const {
ERR_FAIL_COND_V(lod_index < 0, Vector3());
ERR_FAIL_COND_V(lod_index >= get_lod_count(), Vector3());
const Lod &lod = _lods[lod_index];
Vector3i bpos = lod.mesh_map.voxel_to_block(Vector3i(vpos)) >> lod_index;
return bpos.to_vec3();
}
void VoxelLodTerrain::set_process_mode(ProcessMode mode) {
_process_mode = mode;
set_process(_process_mode == PROCESS_MODE_IDLE);
@ -2400,6 +2408,8 @@ void VoxelLodTerrain::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_statistics"), &VoxelLodTerrain::_b_get_statistics);
ClassDB::bind_method(D_METHOD("voxel_to_data_block_position", "lod_index"),
&VoxelLodTerrain::voxel_to_data_block_position);
ClassDB::bind_method(D_METHOD("voxel_to_mesh_block_position", "lod_index"),
&VoxelLodTerrain::voxel_to_mesh_block_position);
ClassDB::bind_method(D_METHOD("get_voxel_tool"), &VoxelLodTerrain::get_voxel_tool);
ClassDB::bind_method(D_METHOD("save_modified_blocks"), &VoxelLodTerrain::_b_save_modified_blocks);

View File

@ -60,6 +60,7 @@ public:
int get_mesh_block_region_extent() const;
Vector3 voxel_to_data_block_position(Vector3 vpos, int lod_index) const;
Vector3 voxel_to_mesh_block_position(Vector3 vpos, int lod_index) const;
unsigned int get_data_block_size_pow2() const;
unsigned int get_data_block_size() const;