Use the new immediate build mode in TerrainWorld's set_voxel_at_world_data_position().

This commit is contained in:
Relintai 2025-02-06 17:22:42 +01:00
parent 6be11c2bff
commit c13a4d08a5
2 changed files with 17 additions and 7 deletions

View File

@ -898,7 +898,7 @@ uint8_t TerrainWorld::get_voxel_at_world_data_position(const Vector2i &world_dat
return 0;
}
void TerrainWorld::set_voxel_at_world_data_position(const Vector2i &world_data_position, const uint8_t data, const int channel_index, const bool rebuild, const bool allow_creating_chunks) {
void TerrainWorld::set_voxel_at_world_data_position(const Vector2i &world_data_position, const uint8_t data, const int channel_index, const bool p_immediate_build, const bool allow_creating_chunks) {
// TODO rework this so it works directly with ints.
Vector2 pos = world_data_position;
@ -931,7 +931,9 @@ void TerrainWorld::set_voxel_at_world_data_position(const Vector2i &world_data_p
if (chunk.is_valid()) {
chunk->set_voxel(data, get_chunk_size_x(), bz, channel_index);
if (rebuild) {
if (p_immediate_build) {
chunk->build_immediate();
} else {
chunk->build();
}
}
@ -947,7 +949,9 @@ void TerrainWorld::set_voxel_at_world_data_position(const Vector2i &world_data_p
if (chunk.is_valid()) {
chunk->set_voxel(data, bx, get_chunk_size_z(), channel_index);
if (rebuild) {
if (p_immediate_build) {
chunk->build_immediate();
} else {
chunk->build();
}
}
@ -965,7 +969,9 @@ void TerrainWorld::set_voxel_at_world_data_position(const Vector2i &world_data_p
if (chunk.is_valid()) {
chunk->set_voxel(data, -1, bz, channel_index);
if (rebuild) {
if (p_immediate_build) {
chunk->build_immediate();
} else {
chunk->build();
}
}
@ -981,7 +987,9 @@ void TerrainWorld::set_voxel_at_world_data_position(const Vector2i &world_data_p
if (chunk.is_valid()) {
chunk->set_voxel(data, bx, -1, channel_index);
if (rebuild) {
if (p_immediate_build) {
chunk->build_immediate();
} else {
chunk->build();
}
}
@ -997,7 +1005,9 @@ void TerrainWorld::set_voxel_at_world_data_position(const Vector2i &world_data_p
if (chunk.is_valid()) {
chunk->set_voxel(data, bx, bz, channel_index);
if (rebuild) {
if (p_immediate_build) {
chunk->build_immediate();
} else {
chunk->build();
}
}

View File

@ -195,7 +195,7 @@ public:
Vector2i world_position_to_world_data_position(const Vector3 &world_position);
uint8_t get_voxel_at_world_data_position(const Vector2i &world_data_position, const int channel_index);
void set_voxel_at_world_data_position(const Vector2i &world_data_position, const uint8_t data, const int channel_index, const bool rebuild = true, const bool allow_creating_chunks = true);
void set_voxel_at_world_data_position(const Vector2i &world_data_position, const uint8_t data, const int channel_index, const bool p_immediate_build = true, const bool allow_creating_chunks = true);
Ref<TerrainChunk> get_chunk_at_world_data_position(const Vector2i &world_data_position);
Ref<TerrainChunk> get_or_create_chunk_at_world_data_position(const Vector2i &world_data_position);