From 0ae38a59c8f0e66398da0e3c97fd8af2c63b8f97 Mon Sep 17 00:00:00 2001 From: Kelsi Date: Sat, 7 Feb 2026 13:50:30 -0800 Subject: [PATCH] Snap player to terrain after loading to prevent spawning underground --- src/core/application.cpp | 5 +++++ src/rendering/wmo_renderer.cpp | 1 - 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/core/application.cpp b/src/core/application.cpp index 41cad2c0..e8404a8e 100644 --- a/src/core/application.cpp +++ b/src/core/application.cpp @@ -1488,6 +1488,11 @@ void Application::loadOnlineWorldTerrain(uint32_t mapId, float x, float y, float } } + // Snap player to loaded terrain so they don't spawn underground + if (renderer->getCameraController()) { + renderer->getCameraController()->reset(); + } + showProgress("Entering world...", 1.0f); if (loadingScreenOk) { diff --git a/src/rendering/wmo_renderer.cpp b/src/rendering/wmo_renderer.cpp index 2ed33a70..3e3dcea5 100644 --- a/src/rendering/wmo_renderer.cpp +++ b/src/rendering/wmo_renderer.cpp @@ -1586,7 +1586,6 @@ bool WMORenderer::checkWallCollision(const glm::vec3& from, const glm::vec3& to, float triMaxZ = std::max({v0.z, v1.z, v2.z}); float fromDist = glm::dot(localFrom - v0, normal); float toDist = glm::dot(localTo - v0, normal); - bool towardWallMotion = (std::abs(toDist) + 1e-4f < std::abs(fromDist)); // Only collide with walls in player's vertical range if (triMaxZ < localFeetZ + 0.3f) continue;