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;