From a5d5ad64ff97201e2ccf83c1d79008190906ebcd Mon Sep 17 00:00:00 2001 From: Stanislaw Halik Date: Sun, 9 Apr 2023 22:46:17 +0200 Subject: move scenery draw scratch buffers to central place --- src/chunk-scenery.cpp | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'src/chunk-scenery.cpp') diff --git a/src/chunk-scenery.cpp b/src/chunk-scenery.cpp index f2c1c80a..bbb26709 100644 --- a/src/chunk-scenery.cpp +++ b/src/chunk-scenery.cpp @@ -9,9 +9,12 @@ namespace floormat { -auto chunk::ensure_scenery_mesh(Array&& array) noexcept -> scenery_mesh_tuple +auto chunk::ensure_scenery_mesh() noexcept -> scenery_mesh_tuple { - return ensure_scenery_mesh(static_cast&>(array)); + Array array; + std::vector> scenery_vertexes; + std::vector> scenery_indexes; + return ensure_scenery_mesh({array, scenery_vertexes, scenery_indexes}); } bool chunk::topo_sort_data::intersects(const topo_sort_data& o) const @@ -124,12 +127,15 @@ auto chunk::make_topo_sort_data(entity& e, uint32_t mesh_idx) -> topo_sort_data return data; } -auto chunk::ensure_scenery_mesh(Array& array) noexcept -> scenery_mesh_tuple +auto chunk::ensure_scenery_mesh(scenery_scratch_buffers buffers) noexcept -> scenery_mesh_tuple { fm_assert(_entities_sorted); if (_scenery_modified) { + auto& scenery_vertexes = buffers.scenery_vertexes; + auto& scenery_indexes = buffers.scenery_indexes; + _scenery_modified = false; const auto count = fm_begin( @@ -173,6 +179,7 @@ auto chunk::ensure_scenery_mesh(Array& array) noexcept -> sce } const auto size = _entities.size(); + auto& array = buffers.array; ensure_scenery_draw_array(array); uint32_t j = 0; for (uint32_t i = 0; const auto& e : _entities) -- cgit v1.2.3