world visibility graph: check correct chunk position

chunkPosition.x could already have been changed during the check and this random regions just disappear.

Hell, one day I will rewrite this whole part and write tests...
This commit is contained in:
Moritz Zwerger 2025-02-09 21:04:59 +01:00
parent 1486cd9cf8
commit 25d4ab6fdc
No known key found for this signature in database
GPG Key ID: 5CAD791931B09AC4

View File

@ -254,7 +254,7 @@ class WorldVisibilityGraph(
val positionX = chunkPosition.x
val positionY = chunkPosition.y
if (directionX <= 0 && (section?.occlusion?.isOccluded(inverted, Directions.WEST) != true) && chunkPosition.x > chunkMin.x) {
if (directionX <= 0 && (section?.occlusion?.isOccluded(inverted, Directions.WEST) != true) && positionX > chunkMin.x) {
chunkPosition.x = positionX - 1; chunkPosition.y = positionY // + WEST
val nextChunk = chunk.neighbours[ChunkNeighbours.WEST]
if (nextChunk != null) {
@ -266,7 +266,7 @@ class WorldVisibilityGraph(
}
}
if (directionX >= 0 && (section?.occlusion?.isOccluded(inverted, Directions.EAST) != true) && chunkPosition.x < chunkMax.x) {
if (directionX >= 0 && (section?.occlusion?.isOccluded(inverted, Directions.EAST) != true) && positionX < chunkMax.x) {
chunkPosition.x = positionX + 1; chunkPosition.y = positionY // + EAST
val nextChunk = chunk.neighbours[ChunkNeighbours.EAST]
if (nextChunk != null) {
@ -293,7 +293,7 @@ class WorldVisibilityGraph(
}
}
if (directionZ <= 0 && (section?.occlusion?.isOccluded(inverted, Directions.NORTH) != true) && chunkPosition.y > chunkMin.y) {
if (directionZ <= 0 && (section?.occlusion?.isOccluded(inverted, Directions.NORTH) != true) && positionY > chunkMin.y) {
chunkPosition.x = positionX; chunkPosition.y = positionY - 1 // + NORTH
val nextChunk = chunk.neighbours[ChunkNeighbours.NORTH]
if (nextChunk != null) {
@ -305,7 +305,7 @@ class WorldVisibilityGraph(
}
}
if (directionZ >= 0 && (section?.occlusion?.isOccluded(inverted, Directions.SOUTH) != true) && chunkPosition.y < chunkMax.y) {
if (directionZ >= 0 && (section?.occlusion?.isOccluded(inverted, Directions.SOUTH) != true) && positionY < chunkMax.y) {
chunkPosition.x = positionX; chunkPosition.y = positionY + 1 // + SOUTH
val nextChunk = chunk.neighbours[ChunkNeighbours.SOUTH]
if (nextChunk != null) {