From b3d8651db99cfb05f4c92f2c0fb335a2ecccd066 Mon Sep 17 00:00:00 2001 From: Kelsi Date: Wed, 11 Mar 2026 11:36:06 -0700 Subject: [PATCH] refactor: consolidate duplicate environment variable utility functions Move envSizeMBOrDefault and envSizeOrDefault from 4 separate rendering modules (character_renderer, m2_renderer, terrain_renderer, wmo_renderer) into shared vk_utils.hpp header as inline functions. Use the most robust version which includes overflow checking for MB-to-bytes conversion. This eliminates 7 identical local function definitions and improves consistency across all rendering modules. --- include/rendering/vk_utils.hpp | 22 ++++++++++++++++++++++ src/rendering/character_renderer.cpp | 19 ------------------- src/rendering/m2_renderer.cpp | 18 ------------------ src/rendering/terrain_renderer.cpp | 11 ----------- src/rendering/wmo_renderer.cpp | 17 ----------------- 5 files changed, 22 insertions(+), 65 deletions(-) diff --git a/include/rendering/vk_utils.hpp b/include/rendering/vk_utils.hpp index 40847ad1..22631cc0 100644 --- a/include/rendering/vk_utils.hpp +++ b/include/rendering/vk_utils.hpp @@ -3,6 +3,8 @@ #include #include #include +#include +#include namespace wowee { namespace rendering { @@ -56,5 +58,25 @@ inline bool vkCheck(VkResult result, [[maybe_unused]] const char* msg) { return true; } +// Environment variable utility functions +inline size_t envSizeMBOrDefault(const char* name, size_t defMb) { + const char* v = std::getenv(name); + if (!v || !*v) return defMb; + char* end = nullptr; + unsigned long long mb = std::strtoull(v, &end, 10); + if (end == v || mb == 0) return defMb; + if (mb > (std::numeric_limits::max() / (1024ull * 1024ull))) return defMb; + return static_cast(mb); +} + +inline size_t envSizeOrDefault(const char* name, size_t defValue) { + const char* v = std::getenv(name); + if (!v || !*v) return defValue; + char* end = nullptr; + unsigned long long n = std::strtoull(v, &end, 10); + if (end == v || n == 0) return defValue; + return static_cast(n); +} + } // namespace rendering } // namespace wowee diff --git a/src/rendering/character_renderer.cpp b/src/rendering/character_renderer.cpp index c4d930b4..1c25ddb6 100644 --- a/src/rendering/character_renderer.cpp +++ b/src/rendering/character_renderer.cpp @@ -46,25 +46,6 @@ namespace wowee { namespace rendering { namespace { -size_t envSizeMBOrDefault(const char* name, size_t defMb) { - const char* v = std::getenv(name); - if (!v || !*v) return defMb; - char* end = nullptr; - unsigned long long mb = std::strtoull(v, &end, 10); - if (end == v || mb == 0) return defMb; - if (mb > (std::numeric_limits::max() / (1024ull * 1024ull))) return defMb; - return static_cast(mb); -} - -size_t envSizeOrDefault(const char* name, size_t defValue) { - const char* v = std::getenv(name); - if (!v || !*v) return defValue; - char* end = nullptr; - unsigned long long n = std::strtoull(v, &end, 10); - if (end == v || n == 0) return defValue; - return static_cast(n); -} - size_t approxTextureBytesWithMips(int w, int h) { if (w <= 0 || h <= 0) return 0; size_t base = static_cast(w) * static_cast(h) * 4ull; diff --git a/src/rendering/m2_renderer.cpp b/src/rendering/m2_renderer.cpp index b39b8f8c..99bef457 100644 --- a/src/rendering/m2_renderer.cpp +++ b/src/rendering/m2_renderer.cpp @@ -40,24 +40,6 @@ bool envFlagEnabled(const char* key, bool defaultValue) { return !(v == "0" || v == "false" || v == "off" || v == "no"); } -size_t envSizeMBOrDefault(const char* name, size_t defMb) { - const char* raw = std::getenv(name); - if (!raw || !*raw) return defMb; - char* end = nullptr; - unsigned long long mb = std::strtoull(raw, &end, 10); - if (end == raw || mb == 0) return defMb; - return static_cast(mb); -} - -size_t envSizeOrDefault(const char* name, size_t defValue) { - const char* raw = std::getenv(name); - if (!raw || !*raw) return defValue; - char* end = nullptr; - unsigned long long v = std::strtoull(raw, &end, 10); - if (end == raw || v == 0) return defValue; - return static_cast(v); -} - static constexpr uint32_t kParticleFlagRandomized = 0x40; static constexpr uint32_t kParticleFlagTiled = 0x80; diff --git a/src/rendering/terrain_renderer.cpp b/src/rendering/terrain_renderer.cpp index 8ed7ba65..62a5c3f8 100644 --- a/src/rendering/terrain_renderer.cpp +++ b/src/rendering/terrain_renderer.cpp @@ -20,17 +20,6 @@ namespace wowee { namespace rendering { -namespace { -size_t envSizeMBOrDefault(const char* name, size_t defMb) { - const char* raw = std::getenv(name); - if (!raw || !*raw) return defMb; - char* end = nullptr; - unsigned long long mb = std::strtoull(raw, &end, 10); - if (end == raw || mb == 0) return defMb; - return static_cast(mb); -} -} // namespace - // Matches set 1 binding 7 in terrain.frag.glsl struct TerrainParamsUBO { int32_t layerCount; diff --git a/src/rendering/wmo_renderer.cpp b/src/rendering/wmo_renderer.cpp index ab08f2a3..8767965f 100644 --- a/src/rendering/wmo_renderer.cpp +++ b/src/rendering/wmo_renderer.cpp @@ -29,23 +29,6 @@ namespace wowee { namespace rendering { namespace { -size_t envSizeMBOrDefault(const char* name, size_t defMb) { - const char* raw = std::getenv(name); - if (!raw || !*raw) return defMb; - char* end = nullptr; - unsigned long long mb = std::strtoull(raw, &end, 10); - if (end == raw || mb == 0) return defMb; - return static_cast(mb); -} - -size_t envSizeOrDefault(const char* name, size_t defValue) { - const char* raw = std::getenv(name); - if (!raw || !*raw) return defValue; - char* end = nullptr; - unsigned long long v = std::strtoull(raw, &end, 10); - if (end == raw || v == 0) return defValue; - return static_cast(v); -} } // namespace // Thread-local scratch buffers for collision queries (allows concurrent getFloorHeight/checkWallCollision calls)