Make baked colors work on every lod types.

This commit is contained in:
Relintai 2021-04-19 18:15:36 +02:00
parent 0836917f72
commit a3c81f4d0c

View File

@ -194,13 +194,13 @@ void TerraTerrarinJob::phase_terrarin_mesh() {
} }
if ((chunk->get_build_flags() & TerraChunkDefault::BUILD_FLAG_USE_LIGHTING) != 0) { if ((chunk->get_build_flags() & TerraChunkDefault::BUILD_FLAG_USE_LIGHTING) != 0) {
if (should_do()) { //if (should_do()) {
_mesher->bake_colors(_chunk); // _mesher->bake_colors(_chunk);
if (should_return()) { // if (should_return()) {
return; // return;
} // }
} //}
if (should_do()) { if (should_do()) {
if (_liquid_mesher.is_valid()) { if (_liquid_mesher.is_valid()) {
@ -431,10 +431,15 @@ void TerraTerrarinJob::_physics_process(float delta) {
} }
void TerraTerrarinJob::step_type_normal() { void TerraTerrarinJob::step_type_normal() {
temp_mesh_arr = _mesher->build_mesh();
Ref<TerraChunkDefault> chunk = _chunk; Ref<TerraChunkDefault> chunk = _chunk;
//TODO make this automatic in build_mesh
if ((chunk->get_build_flags() & TerraChunkDefault::BUILD_FLAG_USE_LIGHTING) != 0) {
_mesher->bake_colors(_chunk);
}
temp_mesh_arr = _mesher->build_mesh();
RID mesh_rid = chunk->mesh_rid_get_index(TerraChunkDefault::MESH_INDEX_TERRARIN, TerraChunkDefault::MESH_TYPE_INDEX_MESH, _current_mesh); RID mesh_rid = chunk->mesh_rid_get_index(TerraChunkDefault::MESH_INDEX_TERRARIN, TerraChunkDefault::MESH_TYPE_INDEX_MESH, _current_mesh);
VS::get_singleton()->mesh_add_surface_from_arrays(mesh_rid, VisualServer::PRIMITIVE_TRIANGLES, temp_mesh_arr); VS::get_singleton()->mesh_add_surface_from_arrays(mesh_rid, VisualServer::PRIMITIVE_TRIANGLES, temp_mesh_arr);
@ -457,12 +462,18 @@ void TerraTerrarinJob::step_type_normal_lod() {
ERR_FAIL_COND(!step.is_valid()); ERR_FAIL_COND(!step.is_valid());
Ref<TerraChunkDefault> chunk = _chunk;
mesher->set_lod_index(step->get_lod_index()); mesher->set_lod_index(step->get_lod_index());
_mesher->reset(); _mesher->reset();
_mesher->add_chunk(_chunk); _mesher->add_chunk(_chunk);
temp_mesh_arr = _mesher->build_mesh();
Ref<TerraChunkDefault> chunk = _chunk; //TODO make this automatic in build_mesh
if ((chunk->get_build_flags() & TerraChunkDefault::BUILD_FLAG_USE_LIGHTING) != 0) {
_mesher->bake_colors(_chunk);
}
temp_mesh_arr = _mesher->build_mesh();
RID mesh_rid = chunk->mesh_rid_get_index(TerraChunkDefault::MESH_INDEX_TERRARIN, TerraChunkDefault::MESH_TYPE_INDEX_MESH, _current_mesh); RID mesh_rid = chunk->mesh_rid_get_index(TerraChunkDefault::MESH_INDEX_TERRARIN, TerraChunkDefault::MESH_TYPE_INDEX_MESH, _current_mesh);