From 125cf588bbd2348336fdbf4ec14197dcf96636a7 Mon Sep 17 00:00:00 2001 From: Kelsi Date: Thu, 5 Feb 2026 17:26:18 -0800 Subject: [PATCH] Add pre-computed WMO floor cache and improve save logging - Add initial floor cache for faster collision on first run - Log absolute path when saving cache for debugging --- cache/wmo_floor_cache.bin | Bin 0 -> 1912 bytes src/core/application.cpp | 6 +++++- src/rendering/wmo_renderer.cpp | 9 ++++++++- 3 files changed, 13 insertions(+), 2 deletions(-) create mode 100644 cache/wmo_floor_cache.bin diff --git a/cache/wmo_floor_cache.bin b/cache/wmo_floor_cache.bin new file mode 100644 index 0000000000000000000000000000000000000000..f5ded321a5608078b4e233c77593325490f2457b GIT binary patch literal 1912 zcmYk7TWC~g6opf)Rq*&DMZ*K<-1Xecd?0@aG zFIm;HF8fMdUEO~9<>xK=++ zsXeu?sI{ZHqa5pOprLapadU-(w#L^Z?IX1`{N>&I633IC=|$Dg46MFwGeC{)S8O)$ zu&^yrKjG)A<|iJO2h2}q=7$Z5dWfI(Uq-4KJzYcQC-a$cq3S`~tV8y$7u@|Y(t4@o z<7YOv_|Ub*t0(x7eH^HMe8_J0njcR3O|Lyg|AD__ttEi-YEku&zu~m$K|}gdsCm$K zcs$ge>iqm`?^Y$AlHRdL@Yl;8G26V=_9W20vqyKX2igm~O;j_$J!TaZ+WrH zASENQXqyK)L%_@3wqgF3^b`4s+cvAQ37;IW+DklLP-pW9W6ZO6&kf8M*L z60hA){DG5t;&ra@r*@aX#mS-i$-Aw461}}><_>TxD)5KwUHt4nW}Xwz{b8Q-Zu3Ul zP5ROzGr&D0f71o?0Z)eI&J)LnN#9$I=)5Jjk=x5{yz{x$LcOiy7Kfku%I8#QAkB7~_8UJMt@$O;cP-9hU$Iq8J#2e(c^ZyHPcMW>& zJ9=tw(YuMC%tLZE3WwU6r9Qcb+getWMORenderer()) { - renderer->getWMORenderer()->saveFloorCache("cache/wmo_floor_cache.bin"); + size_t cacheSize = renderer->getWMORenderer()->getFloorCacheSize(); + if (cacheSize > 0) { + LOG_INFO("Saving WMO floor cache (", cacheSize, " entries)..."); + renderer->getWMORenderer()->saveFloorCache("cache/wmo_floor_cache.bin"); + } } // Stop renderer first: terrain streaming workers may still be reading via diff --git a/src/rendering/wmo_renderer.cpp b/src/rendering/wmo_renderer.cpp index 0e59109b..bab6553c 100644 --- a/src/rendering/wmo_renderer.cpp +++ b/src/rendering/wmo_renderer.cpp @@ -517,8 +517,15 @@ void WMORenderer::resetQueryStats() { bool WMORenderer::saveFloorCache(const std::string& filepath) const { // Create directory if needed std::filesystem::path path(filepath); + std::filesystem::path absPath = std::filesystem::absolute(path); + core::Logger::getInstance().info("Saving floor cache to: ", absPath.string()); + if (path.has_parent_path()) { - std::filesystem::create_directories(path.parent_path()); + std::error_code ec; + std::filesystem::create_directories(path.parent_path(), ec); + if (ec) { + core::Logger::getInstance().error("Failed to create cache directory: ", ec.message()); + } } std::ofstream file(filepath, std::ios::binary);