summaryrefslogtreecommitdiff
path: root/servers/rendering/renderer_rd
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2023-02-04 00:40:36 +0100
committerRémi Verschelde <rverschelde@gmail.com>2023-02-04 00:40:36 +0100
commit0b1d516f67a3b2b7dd158b923559f192ec103a85 (patch)
tree3567f34675b59dc72a01189f7b6916099c0e18b1 /servers/rendering/renderer_rd
parenta268dcc7e3796f1e0a5dbffa87ed20179fca0c1c (diff)
parent497f5576c18a7487c54c630bbe1ff4f9171bb08c (diff)
Merge pull request #72684 from clayjohn/mm-update
Fix MultiMesh visible_instance_count being ignored after the first frame
Diffstat (limited to 'servers/rendering/renderer_rd')
-rw-r--r--servers/rendering/renderer_rd/storage_rd/mesh_storage.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/servers/rendering/renderer_rd/storage_rd/mesh_storage.cpp b/servers/rendering/renderer_rd/storage_rd/mesh_storage.cpp
index 6894498af5..96618c3352 100644
--- a/servers/rendering/renderer_rd/storage_rd/mesh_storage.cpp
+++ b/servers/rendering/renderer_rd/storage_rd/mesh_storage.cpp
@@ -1805,8 +1805,12 @@ void MeshStorage::multimesh_set_visible_instances(RID p_multimesh, int p_visible
}
if (multimesh->data_cache.size()) {
- //there is a data cache..
+ // There is a data cache, but we may need to update some sections.
_multimesh_mark_all_dirty(multimesh, false, true);
+ int start = multimesh->visible_instances >= 0 ? multimesh->visible_instances : multimesh->instances;
+ for (int i = start; i < p_visible; i++) {
+ _multimesh_mark_dirty(multimesh, i, true);
+ }
}
multimesh->visible_instances = p_visible;