From fe8612b35f4117d7ee3897909cfb5c4a5e2b9a81 Mon Sep 17 00:00:00 2001 From: Player Name Date: Sun, 28 Jun 2026 20:59:33 +0200 Subject: [PATCH] map chunk render debug --- .../game/world/update/MapChunkRenderer.kt | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/Server/src/main/core/game/world/update/MapChunkRenderer.kt b/Server/src/main/core/game/world/update/MapChunkRenderer.kt index ff26864e6..4d3e747af 100644 --- a/Server/src/main/core/game/world/update/MapChunkRenderer.kt +++ b/Server/src/main/core/game/world/update/MapChunkRenderer.kt @@ -1,5 +1,6 @@ package core.game.world.update +import core.api.log import core.game.node.entity.player.Player import core.game.world.map.Location import core.game.world.map.RegionChunk @@ -7,6 +8,7 @@ import core.game.world.map.build.DynamicRegion import core.net.packet.PacketRepository import core.net.packet.context.ClearChunkContext import core.net.packet.out.ClearRegionChunk +import core.tools.Log import java.util.* /** @@ -33,20 +35,45 @@ object MapChunkRenderer { // pushes the viewport edge to drift+6 chunks from the anchor, off-window, so edge items never render. val anchor = player.playerFlags.lastSceneGraph ?: player.location val center = Location.create(anchor.x, anchor.y, player.location.z) + + log(MapChunkRenderer::class.java, Log.FINE, + "anchor=${anchor} center=${center} " + + "anchorChunk=(${anchor.absChunkX},${anchor.absChunkY}) " + + "anchorOffset=(${anchor.chunkOffsetX},${anchor.chunkOffsetY}) " + + "playerLoc=${player.location}") + val itemChunkX = 392 + val itemChunkY = 476 + var itemChunkSamples = 0 + for (dcx in -buildAreaDepth..+buildAreaDepth) { val addX = ArrayList() for (dcy in -buildAreaDepth..+buildAreaDepth) { val newloc = center.transform(dcx * 8, dcy * 8, 0) addX.add(newloc.chunk) + if (newloc.absChunkX == itemChunkX && newloc.absChunkY == itemChunkY) { + itemChunkSamples++ + if (true) { + log(MapChunkRenderer::class.java, Log.FINE, + "item chunk sampled at grid[$dcx+6][$dcy+6] newloc=${newloc}") + } + } } current.add(addX) } + if (true) { + log(MapChunkRenderer::class.java, Log.FINE, "itemChunkSamples=$itemChunkSamples") + } var sizeX = last.size for (x in 0 until sizeX) { val sizeY: Int = last[x].size for (y in 0 until sizeY) { val previous = last[x][y] ?: continue + val isItemChunk = previous.currentBase.absChunkX == itemChunkX && previous.currentBase.absChunkY == itemChunkY + if (isItemChunk) { + log(MapChunkRenderer::class.java, Log.FINE, + "last has item chunk at [$x][$y], containsChunk=${containsChunk(current, previous)}") + } if (containsChunk(current, previous)) { updated.add(previous) continue @@ -63,6 +90,12 @@ object MapChunkRenderer { val sizeY: Int = current[x].size for (y in 0 until sizeY) { val chunk = current[x][y] + val isItemChunk = chunk.currentBase.absChunkX == itemChunkX && chunk.currentBase.absChunkY == itemChunkY + if (isItemChunk) { + log(MapChunkRenderer::class.java, Log.FINE, + "item chunk at grid[$x][$y] -> ${if (updated.contains(chunk)) "UPDATE" else "SYNCHRONIZE"} " + + "(inLast=${updated.contains(chunk)}) ") + } if (updated.contains(chunk)) { chunk.update(player) } else {