diff --git a/modules/terraman/world/terrain_world.cpp b/modules/terraman/world/terrain_world.cpp index 88699d18a..cd05a4200 100644 --- a/modules/terraman/world/terrain_world.cpp +++ b/modules/terraman/world/terrain_world.cpp @@ -818,6 +818,15 @@ void TerrainWorld::set_voxel_at_world_position(const Vector3 &world_position, co chunk->build(); } } + + if (bx == 0 && bz == 0) { + Ref chunk = chunk_get_or_create(x - 1, z - 1); + chunk->set_voxel(data, get_chunk_size_x(), get_chunk_size_z(), channel_index); + + if (rebuild) { + chunk->build(); + } + } } if (get_data_margin_start() > 0) { @@ -958,6 +967,24 @@ void TerrainWorld::set_voxel_at_world_data_position(const Vector2i &world_data_p } } } + + if (bx == 0 && bz == 0) { + if (allow_creating_chunks) { + chunk = chunk_get_or_create(x - 1, z - 1); + } else { + chunk = chunk_get(x - 1, z - 1); + } + + if (chunk.is_valid()) { + chunk->set_voxel(data, get_chunk_size_x(), get_chunk_size_z(), channel_index); + + if (p_immediate_build) { + chunk->build_immediate(); + } else { + chunk->build(); + } + } + } } if (get_data_margin_start() > 0) { @@ -1095,6 +1122,20 @@ void TerrainWorld::set_voxels_at_world_data_position(const Array &p_data, const chunks_to_rebuild.insert(chunk); } } + + if (bx == 0 && bz == 0) { + if (p_allow_creating_chunks) { + chunk = chunk_get_or_create(x - 1, z - 1); + } else { + chunk = chunk_get(x - 1, z - 1); + } + + if (chunk.is_valid()) { + chunk->set_voxel(value, get_chunk_size_x(), get_chunk_size_z(), p_channel_index); + + chunks_to_rebuild.insert(chunk); + } + } } if (get_data_margin_start() > 0) {