Fix mesh instance materials not initialized correctly
This fixes a regression from PR #40313 (support for software skinning in MeshInstance). Before, the base mesh was always updated on load even if not skinning was used, which caused mesh instance materials to be reset on the rendering side. Now the base mesh is set only when it has been modified, or when switching software skinning on or off. In this case the mesh instance materials are always updated properly afterwards.
This commit is contained in:
parent
5e4a8abe24
commit
5c831bc8d6
@ -355,9 +355,9 @@ void MeshInstance::_initialize_skinning(bool p_force_reset) {
|
||||
}
|
||||
|
||||
RID render_mesh = software_skinning ? software_skinning->mesh_instance->get_rid() : mesh->get_rid();
|
||||
set_base(render_mesh);
|
||||
if (update_mesh || (render_mesh != get_base())) {
|
||||
set_base(render_mesh);
|
||||
|
||||
if (update_mesh) {
|
||||
// Update instance materials after switching mesh.
|
||||
int surface_count = mesh->get_surface_count();
|
||||
for (int surface_index = 0; surface_index < surface_count; ++surface_index) {
|
||||
|
Loading…
Reference in New Issue
Block a user