aboutsummaryrefslogtreecommitdiff
path: root/src/client/clientmap.cpp
diff options
context:
space:
mode:
authorparadust7 <102263465+paradust7@users.noreply.github.com>2022-05-21 15:11:49 -0700
committerGitHub <noreply@github.com>2022-05-22 00:11:49 +0200
commit2742fef458c3626476193c9e2d1b9231e042e420 (patch)
treef7682c0a9e2a97578bc44fe344f29fe86bcf233c /src/client/clientmap.cpp
parentbc59fcf5c5cc44ea18e93f64aca9c20be71c1b07 (diff)
downloadminetest-2742fef458c3626476193c9e2d1b9231e042e420.tar.xz
Fixes needed to use irrArray backed by std::vector (#12263)
Diffstat (limited to 'src/client/clientmap.cpp')
-rw-r--r--src/client/clientmap.cpp39
1 files changed, 19 insertions, 20 deletions
diff --git a/src/client/clientmap.cpp b/src/client/clientmap.cpp
index 46cb115aa..98e3f40d3 100644
--- a/src/client/clientmap.cpp
+++ b/src/client/clientmap.cpp
@@ -449,15 +449,7 @@ void ClientMap::renderMap(video::IVideoDriver* driver, s32 pass)
drawcall_count += draw_order.size();
for (auto &descriptor : draw_order) {
- scene::IMeshBuffer *buf;
-
- if (descriptor.m_use_partial_buffer) {
- descriptor.m_partial_buffer->beforeDraw();
- buf = descriptor.m_partial_buffer->getBuffer();
- }
- else {
- buf = descriptor.m_buffer;
- }
+ scene::IMeshBuffer *buf = descriptor.getBuffer();
// Check and abort if the machine is swapping a lot
if (draw.getTimerTime() > 2000) {
@@ -501,7 +493,7 @@ void ClientMap::renderMap(video::IVideoDriver* driver, s32 pass)
m.setTranslation(block_wpos - offset);
driver->setTransform(video::ETS_WORLD, m);
- driver->drawMeshBuffer(buf);
+ descriptor.draw(driver);
vertex_count += buf->getIndexCount();
}
@@ -812,15 +804,7 @@ void ClientMap::renderMapShadows(video::IVideoDriver *driver,
drawcall_count += draw_order.size();
for (auto &descriptor : draw_order) {
- scene::IMeshBuffer *buf;
-
- if (descriptor.m_use_partial_buffer) {
- descriptor.m_partial_buffer->beforeDraw();
- buf = descriptor.m_partial_buffer->getBuffer();
- }
- else {
- buf = descriptor.m_buffer;
- }
+ scene::IMeshBuffer *buf = descriptor.getBuffer();
// Check and abort if the machine is swapping a lot
if (draw.getTimerTime() > 1000) {
@@ -845,7 +829,7 @@ void ClientMap::renderMapShadows(video::IVideoDriver *driver,
m.setTranslation(block_wpos - offset);
driver->setTransform(video::ETS_WORLD, m);
- driver->drawMeshBuffer(buf);
+ descriptor.draw(driver);
vertex_count += buf->getIndexCount();
}
@@ -966,3 +950,18 @@ void ClientMap::updateTransparentMeshBuffers()
m_needs_update_transparent_meshes = false;
}
+scene::IMeshBuffer* ClientMap::DrawDescriptor::getBuffer()
+{
+ return m_use_partial_buffer ? m_partial_buffer->getBuffer() : m_buffer;
+}
+
+void ClientMap::DrawDescriptor::draw(video::IVideoDriver* driver)
+{
+ if (m_use_partial_buffer) {
+ m_partial_buffer->beforeDraw();
+ driver->drawMeshBuffer(m_partial_buffer->getBuffer());
+ m_partial_buffer->afterDraw();
+ } else {
+ driver->drawMeshBuffer(m_buffer);
+ }
+}