mirror of
https://github.com/Relintai/terraman.git
synced 2025-04-23 21:43:23 +02:00
Change the terrain mesh indexes to prop mesh indexes in the prop job. Also query for the prop mesh cache.
This commit is contained in:
parent
2fd0eac8cc
commit
2ba4bc79c4
@ -326,12 +326,12 @@ void TerraPropJob::phase_prop() {
|
|||||||
temp_mesh_arr = fqms->get_arrays();
|
temp_mesh_arr = fqms->get_arrays();
|
||||||
|
|
||||||
VisualServer::get_singleton()->mesh_add_surface_from_arrays(
|
VisualServer::get_singleton()->mesh_add_surface_from_arrays(
|
||||||
chunk->mesh_rid_get_index(TerraChunkDefault::MESH_INDEX_TERRARIN, TerraChunkDefault::MESH_TYPE_INDEX_MESH, i),
|
chunk->mesh_rid_get_index(TerraChunkDefault::MESH_INDEX_PROP, TerraChunkDefault::MESH_TYPE_INDEX_MESH, i),
|
||||||
VisualServer::PRIMITIVE_TRIANGLES, temp_mesh_arr);
|
VisualServer::PRIMITIVE_TRIANGLES, temp_mesh_arr);
|
||||||
|
|
||||||
if (chunk->get_library()->prop_material_lod_get(i).is_valid())
|
if (chunk->get_library()->prop_material_lod_get(i).is_valid())
|
||||||
VisualServer::get_singleton()->mesh_surface_set_material(
|
VisualServer::get_singleton()->mesh_surface_set_material(
|
||||||
chunk->mesh_rid_get_index(TerraChunkDefault::MESH_INDEX_TERRARIN, TerraChunkDefault::MESH_TYPE_INDEX_MESH, i), 0,
|
chunk->mesh_rid_get_index(TerraChunkDefault::MESH_INDEX_PROP, TerraChunkDefault::MESH_TYPE_INDEX_MESH, i), 0,
|
||||||
chunk->get_library()->prop_material_lod_get(i)->get_rid());
|
chunk->get_library()->prop_material_lod_get(i)->get_rid());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -410,14 +410,14 @@ void TerraPropJob::step_type_normal() {
|
|||||||
|
|
||||||
temp_mesh_arr = _prop_mesher->build_mesh();
|
temp_mesh_arr = _prop_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_PROP, 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);
|
||||||
|
|
||||||
Ref<Material> lmat;
|
Ref<Material> lmat;
|
||||||
|
|
||||||
if (chunk->material_cache_key_has()) {
|
if (chunk->prop_material_cache_key_has()) {
|
||||||
lmat = chunk->get_library()->prop_material_cache_get(_chunk->material_cache_key_get())->material_lod_get(_current_mesh);
|
lmat = chunk->get_library()->prop_material_cache_get(_chunk->prop_material_cache_key_get())->material_lod_get(_current_mesh);
|
||||||
} else {
|
} else {
|
||||||
lmat = chunk->get_library()->prop_material_lod_get(_current_mesh);
|
lmat = chunk->get_library()->prop_material_lod_get(_current_mesh);
|
||||||
}
|
}
|
||||||
@ -447,16 +447,16 @@ void TerraPropJob::step_type_normal_lod() {
|
|||||||
|
|
||||||
temp_mesh_arr = _prop_mesher->build_mesh();
|
temp_mesh_arr = _prop_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_PROP, 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);
|
||||||
|
|
||||||
Ref<Material> lmat;
|
Ref<Material> lmat;
|
||||||
|
|
||||||
if (chunk->material_cache_key_has()) {
|
if (chunk->prop_material_cache_key_has()) {
|
||||||
lmat = chunk->get_library()->material_cache_get(_chunk->material_cache_key_get())->material_lod_get(_current_mesh);
|
lmat = chunk->get_library()->prop_material_cache_get(_chunk->prop_material_cache_key_get())->material_lod_get(_current_mesh);
|
||||||
} else {
|
} else {
|
||||||
lmat = chunk->get_library()->material_lod_get(_current_mesh);
|
lmat = chunk->get_library()->prop_material_lod_get(_current_mesh);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (lmat.is_valid()) {
|
if (lmat.is_valid()) {
|
||||||
@ -469,7 +469,7 @@ void TerraPropJob::step_type_normal_lod() {
|
|||||||
void TerraPropJob::step_type_drop_uv2() {
|
void TerraPropJob::step_type_drop_uv2() {
|
||||||
Ref<TerraChunkDefault> chunk = _chunk;
|
Ref<TerraChunkDefault> chunk = _chunk;
|
||||||
|
|
||||||
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_PROP, TerraChunkDefault::MESH_TYPE_INDEX_MESH, _current_mesh);
|
||||||
|
|
||||||
temp_mesh_arr[VisualServer::ARRAY_TEX_UV2] = Variant();
|
temp_mesh_arr[VisualServer::ARRAY_TEX_UV2] = Variant();
|
||||||
|
|
||||||
@ -477,10 +477,10 @@ void TerraPropJob::step_type_drop_uv2() {
|
|||||||
|
|
||||||
Ref<Material> lmat;
|
Ref<Material> lmat;
|
||||||
|
|
||||||
if (chunk->material_cache_key_has()) {
|
if (chunk->prop_material_cache_key_has()) {
|
||||||
lmat = chunk->get_library()->material_cache_get(_chunk->material_cache_key_get())->material_lod_get(_current_mesh);
|
lmat = chunk->get_library()->prop_material_cache_get(_chunk->prop_material_cache_key_get())->material_lod_get(_current_mesh);
|
||||||
} else {
|
} else {
|
||||||
lmat = chunk->get_library()->material_lod_get(_current_mesh);
|
lmat = chunk->get_library()->prop_material_lod_get(_current_mesh);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (lmat.is_valid()) {
|
if (lmat.is_valid()) {
|
||||||
@ -495,16 +495,16 @@ void TerraPropJob::step_type_merge_verts() {
|
|||||||
temp_mesh_arr = temp_mesh_arr2;
|
temp_mesh_arr = temp_mesh_arr2;
|
||||||
|
|
||||||
Ref<TerraChunkDefault> chunk = _chunk;
|
Ref<TerraChunkDefault> chunk = _chunk;
|
||||||
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_PROP, TerraChunkDefault::MESH_TYPE_INDEX_MESH, _current_mesh);
|
||||||
|
|
||||||
VisualServer::get_singleton()->mesh_add_surface_from_arrays(mesh_rid, VisualServer::PRIMITIVE_TRIANGLES, temp_mesh_arr);
|
VisualServer::get_singleton()->mesh_add_surface_from_arrays(mesh_rid, VisualServer::PRIMITIVE_TRIANGLES, temp_mesh_arr);
|
||||||
|
|
||||||
Ref<Material> lmat;
|
Ref<Material> lmat;
|
||||||
|
|
||||||
if (chunk->material_cache_key_has()) {
|
if (chunk->prop_material_cache_key_has()) {
|
||||||
lmat = chunk->get_library()->material_cache_get(_chunk->material_cache_key_get())->material_lod_get(_current_mesh);
|
lmat = chunk->get_library()->prop_material_cache_get(_chunk->prop_material_cache_key_get())->material_lod_get(_current_mesh);
|
||||||
} else {
|
} else {
|
||||||
lmat = chunk->get_library()->material_lod_get(_current_mesh);
|
lmat = chunk->get_library()->prop_material_lod_get(_current_mesh);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (lmat.is_valid()) {
|
if (lmat.is_valid()) {
|
||||||
@ -531,16 +531,16 @@ void TerraPropJob::step_type_bake_texture() {
|
|||||||
temp_mesh_arr = bake_mesh_array_uv(temp_mesh_arr, tex);
|
temp_mesh_arr = bake_mesh_array_uv(temp_mesh_arr, tex);
|
||||||
temp_mesh_arr[VisualServer::ARRAY_TEX_UV] = Variant();
|
temp_mesh_arr[VisualServer::ARRAY_TEX_UV] = Variant();
|
||||||
|
|
||||||
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_PROP, TerraChunkDefault::MESH_TYPE_INDEX_MESH, _current_mesh);
|
||||||
|
|
||||||
VisualServer::get_singleton()->mesh_add_surface_from_arrays(mesh_rid, VisualServer::PRIMITIVE_TRIANGLES, temp_mesh_arr);
|
VisualServer::get_singleton()->mesh_add_surface_from_arrays(mesh_rid, VisualServer::PRIMITIVE_TRIANGLES, temp_mesh_arr);
|
||||||
|
|
||||||
Ref<Material> lmat;
|
Ref<Material> lmat;
|
||||||
|
|
||||||
if (chunk->material_cache_key_has()) {
|
if (chunk->prop_material_cache_key_has()) {
|
||||||
lmat = chunk->get_library()->material_cache_get(_chunk->material_cache_key_get())->material_lod_get(_current_mesh);
|
lmat = chunk->get_library()->prop_material_cache_get(_chunk->prop_material_cache_key_get())->material_lod_get(_current_mesh);
|
||||||
} else {
|
} else {
|
||||||
lmat = chunk->get_library()->material_lod_get(_current_mesh);
|
lmat = chunk->get_library()->prop_material_lod_get(_current_mesh);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (lmat.is_valid()) {
|
if (lmat.is_valid()) {
|
||||||
@ -566,16 +566,16 @@ void TerraPropJob::step_type_simplify_mesh() {
|
|||||||
fqms->simplify_mesh(temp_mesh_arr.size() * step->get_simplification_step_ratio(), step->get_simplification_agressiveness());
|
fqms->simplify_mesh(temp_mesh_arr.size() * step->get_simplification_step_ratio(), step->get_simplification_agressiveness());
|
||||||
temp_mesh_arr = fqms->get_arrays();
|
temp_mesh_arr = fqms->get_arrays();
|
||||||
|
|
||||||
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_PROP, TerraChunkDefault::MESH_TYPE_INDEX_MESH, _current_mesh);
|
||||||
|
|
||||||
VisualServer::get_singleton()->mesh_add_surface_from_arrays(mesh_rid, VisualServer::PRIMITIVE_TRIANGLES, temp_mesh_arr);
|
VisualServer::get_singleton()->mesh_add_surface_from_arrays(mesh_rid, VisualServer::PRIMITIVE_TRIANGLES, temp_mesh_arr);
|
||||||
|
|
||||||
Ref<Material> lmat;
|
Ref<Material> lmat;
|
||||||
|
|
||||||
if (chunk->material_cache_key_has()) {
|
if (chunk->prop_material_cache_key_has()) {
|
||||||
lmat = chunk->get_library()->material_cache_get(_chunk->material_cache_key_get())->material_lod_get(_current_mesh);
|
lmat = chunk->get_library()->prop_material_cache_get(_chunk->prop_material_cache_key_get())->material_lod_get(_current_mesh);
|
||||||
} else {
|
} else {
|
||||||
lmat = chunk->get_library()->material_lod_get(_current_mesh);
|
lmat = chunk->get_library()->prop_material_lod_get(_current_mesh);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (lmat.is_valid()) {
|
if (lmat.is_valid()) {
|
||||||
|
Loading…
Reference in New Issue
Block a user