diff options
author | Rémi Verschelde <remi@verschelde.fr> | 2022-02-05 14:38:56 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-02-05 14:38:56 +0100 |
commit | 69d7d1ec52c610a618265e48f26bd3d4bb1a1083 (patch) | |
tree | a063ad0d7844bcdd36f635b9b40fa7b863682753 /servers/rendering/renderer_scene_cull.cpp | |
parent | dd9426d14b5d37616b54f3e94fc96745f80b3fae (diff) | |
parent | 74adf0bf2e171353c33cd47ed67ec5ee040a284a (diff) | |
download | redot-engine-69d7d1ec52c610a618265e48f26bd3d4bb1a1083.tar.gz |
Merge pull request #57655 from reduz/remove-get-rid-by-index
Remove RID_Owner.get_rid_by_index
Diffstat (limited to 'servers/rendering/renderer_scene_cull.cpp')
-rw-r--r-- | servers/rendering/renderer_scene_cull.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/servers/rendering/renderer_scene_cull.cpp b/servers/rendering/renderer_scene_cull.cpp index 8ded180633..5b2be8e174 100644 --- a/servers/rendering/renderer_scene_cull.cpp +++ b/servers/rendering/renderer_scene_cull.cpp @@ -3871,8 +3871,12 @@ void RendererSceneCull::update_dirty_instances() { void RendererSceneCull::update() { //optimize bvhs - for (uint32_t i = 0; i < scenario_owner.get_rid_count(); i++) { - Scenario *s = scenario_owner.get_ptr_by_index(i); + + uint32_t rid_count = scenario_owner.get_rid_count(); + RID *rids = (RID *)alloca(sizeof(RID) * rid_count); + scenario_owner.fill_owned_buffer(rids); + for (uint32_t i = 0; i < rid_count; i++) { + Scenario *s = scenario_owner.get_or_null(rids[i]); s->indexers[Scenario::INDEXER_GEOMETRY].optimize_incremental(indexer_update_iterations); s->indexers[Scenario::INDEXER_VOLUMES].optimize_incremental(indexer_update_iterations); } |