From 5b9f7e0d8b8ee1fb42bd6d3e14a3d5b7d4cdf1e8 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 31 Mar 2026 09:21:19 +0000 Subject: [PATCH] fix: add explicit guards before sceneMapI/J computation in GetSceneIDFromPosition Agent-Logs-Url: https://github.com/DarkflameUniverse/DarkflameServer/sessions/e331a9a3-fb6b-4574-9456-2a94e4ecdd33 Co-authored-by: aronwk-aaron <26027722+aronwk-aaron@users.noreply.github.com> --- dZoneManager/dZoneManager.cpp | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/dZoneManager/dZoneManager.cpp b/dZoneManager/dZoneManager.cpp index 54905de2..0483e6da 100644 --- a/dZoneManager/dZoneManager.cpp +++ b/dZoneManager/dZoneManager.cpp @@ -332,11 +332,19 @@ LWOSCENEID dZoneManager::GetSceneIDFromPosition(const NiPoint3& position) const heightJ >= 0.0f && heightJ < static_cast(chunk.height)) { // Map heightmap position to scene map position (same as GenerateTerrainMesh) - const float sceneMapI = (heightI / static_cast(chunk.width - 1)) * static_cast(chunk.colorMapResolution - 1); - const float sceneMapJ = (heightJ / static_cast(chunk.height - 1)) * static_cast(chunk.colorMapResolution - 1); - - const uint32_t sceneI = std::min(static_cast(sceneMapI), chunk.colorMapResolution - 1); - const uint32_t sceneJ = std::min(static_cast(sceneMapJ), chunk.colorMapResolution - 1); + const float sceneMapI = (chunk.width > 1) + ? (heightI / static_cast(chunk.width - 1)) * static_cast(chunk.colorMapResolution - 1) + : 0.0f; + const float sceneMapJ = (chunk.height > 1) + ? (heightJ / static_cast(chunk.height - 1)) * static_cast(chunk.colorMapResolution - 1) + : 0.0f; + + const uint32_t sceneI = (chunk.colorMapResolution > 0) + ? std::min(static_cast(sceneMapI), chunk.colorMapResolution - 1) + : 0; + const uint32_t sceneJ = (chunk.colorMapResolution > 0) + ? std::min(static_cast(sceneMapJ), chunk.colorMapResolution - 1) + : 0; // Scene map uses the same indexing pattern as heightmap: row * width + col const uint32_t sceneIndex = sceneI * chunk.colorMapResolution + sceneJ;