From c858913a2f6b3d7cdfa58ad076bd3a15555f735d Mon Sep 17 00:00:00 2001 From: Vyacheslav Ivanov Date: Fri, 2 Aug 2024 06:07:50 +0300 Subject: [PATCH] fix: optimization: PVS-Studio warning V807 Created references to avoid using repeated expressions, improving performance across multiple instances. Reported by: PVS-Studio Signed-off-by: Vyacheslav Ivanov --- src/content/ContentLoader.cpp | 7 ++++--- src/files/WorldConverter.cpp | 7 ++++--- src/logic/ChunksController.cpp | 11 ++++++----- src/logic/LevelController.cpp | 7 ++++--- 4 files changed, 18 insertions(+), 14 deletions(-) diff --git a/src/content/ContentLoader.cpp b/src/content/ContentLoader.cpp index 448754a2..3f214b6f 100644 --- a/src/content/ContentLoader.cpp +++ b/src/content/ContentLoader.cpp @@ -176,9 +176,10 @@ void ContentLoader::loadBlock(Block& def, const std::string& name, const fs::pat def.hitboxes.resize(boxarr->size()); for (uint i = 0; i < boxarr->size(); i++) { auto box = boxarr->list(i); - def.hitboxes[i].a = glm::vec3(box->num(0), box->num(1), box->num(2)); - def.hitboxes[i].b = glm::vec3(box->num(3), box->num(4), box->num(5)); - def.hitboxes[i].b += def.hitboxes[i].a; + auto& hitboxesIndex = def.hitboxes[i]; + hitboxesIndex.a = glm::vec3(box->num(0), box->num(1), box->num(2)); + hitboxesIndex.b = glm::vec3(box->num(3), box->num(4), box->num(5)); + hitboxesIndex.b += hitboxesIndex.a; } } else if ((boxarr = root->list("hitbox"))){ AABB aabb; diff --git a/src/files/WorldConverter.cpp b/src/files/WorldConverter.cpp index 1f0b7ad2..006d031b 100644 --- a/src/files/WorldConverter.cpp +++ b/src/files/WorldConverter.cpp @@ -73,11 +73,12 @@ std::shared_ptr WorldConverter::startTask( [=](){return std::make_shared(converter);}, [=](int&) {} ); - while (!converter->tasks.empty()) { - const convert_task& task = converter->tasks.front(); + auto& converterTasks = converter->tasks; + while (!converterTasks.empty()) { + const convert_task& task = converterTasks.front(); auto ptr = std::make_shared(task); pool->enqueueJob(ptr); - converter->tasks.pop(); + converterTasks.pop(); } pool->setOnComplete([=]() { converter->write(); diff --git a/src/logic/ChunksController.cpp b/src/logic/ChunksController.cpp index f4c9aea7..ae39208a 100644 --- a/src/logic/ChunksController.cpp +++ b/src/logic/ChunksController.cpp @@ -113,21 +113,22 @@ bool ChunksController::buildLights(const std::shared_ptr& chunk) { void ChunksController::createChunk(int x, int z) { auto chunk = level->chunksStorage->create(x, z); chunks->putChunk(chunk); + auto& chunkFlags = chunk->flags; - if (!chunk->flags.loaded) { + if (!chunkFlags.loaded) { generator->generate( chunk->voxels, x, z, level->getWorld()->getSeed() ); - chunk->flags.unsaved = true; + chunkFlags.unsaved = true; } chunk->updateHeights(); - if (!chunk->flags.loadedLights) { + if (!chunkFlags.loadedLights) { Lighting::prebuildSkyLight( chunk.get(), level->content->getIndices() ); } - chunk->flags.loaded = true; - chunk->flags.ready = true; + chunkFlags.loaded = true; + chunkFlags.ready = true; } diff --git a/src/logic/LevelController.cpp b/src/logic/LevelController.cpp index ffb53590..053eb15e 100644 --- a/src/logic/LevelController.cpp +++ b/src/logic/LevelController.cpp @@ -47,11 +47,12 @@ void LevelController::update(float delta, bool input, bool pause) { player->postUpdate(delta, input, pause); // erease null pointers - level->objects.erase( + auto& objects = level->objects; + objects.erase( std::remove_if( - level->objects.begin(), level->objects.end(), + objects.begin(), objects.end(), [](auto obj) { return obj == nullptr; }), - level->objects.end() + objects.end() ); }