From 4995e06f8795702c6430a675aea78000cb1441f9 Mon Sep 17 00:00:00 2001 From: austin Date: Tue, 3 Dec 2024 18:26:23 -0500 Subject: [PATCH] fix homogenous flagging on cell managers --- docs/src/progress/renderertodo.md | 1 + .../client/block/cells/ClientBlockCellManager.java | 8 ++++++-- .../client/terrain/cells/ClientDrawCellManager.java | 8 ++++++-- .../client/terrain/foliage/FoliageCellManager.java | 8 ++++++-- .../server/character/PlayerCharacterCreation.java | 4 ++-- .../server/terrain/manager/ServerTerrainManager.java | 2 +- 6 files changed, 22 insertions(+), 9 deletions(-) diff --git a/docs/src/progress/renderertodo.md b/docs/src/progress/renderertodo.md index 021425f3..c1f06ae5 100644 --- a/docs/src/progress/renderertodo.md +++ b/docs/src/progress/renderertodo.md @@ -1233,6 +1233,7 @@ Fix single player loading Spawn player in center of single player world Elevation fix + use correct voxel generation in SP worlds Fix cache key collision bug +Fix homogenous flagging on cell managers diff --git a/src/main/java/electrosphere/client/block/cells/ClientBlockCellManager.java b/src/main/java/electrosphere/client/block/cells/ClientBlockCellManager.java index 45be49e2..3625236c 100644 --- a/src/main/java/electrosphere/client/block/cells/ClientBlockCellManager.java +++ b/src/main/java/electrosphere/client/block/cells/ClientBlockCellManager.java @@ -171,7 +171,12 @@ public class ClientBlockCellManager { if(evaluationMap.containsKey(node)){ return false; } - if(node.getData().hasGenerated() && node.getData().isHomogenous()){ + if(node.getData().hasGenerated() && + ( + node.getData().isHomogenous() || + this.getMinDistance(playerPos, node, distCache) > SIXTEENTH_RES_DIST + ) + ){ return false; } if(node.isLeaf()){ @@ -447,7 +452,6 @@ public class ClientBlockCellManager { */ private void flagAsMeta(WorldOctTreeNode node){ node.getData().setHasGenerated(true); - node.getData().setHomogenous(true); } /** diff --git a/src/main/java/electrosphere/client/terrain/cells/ClientDrawCellManager.java b/src/main/java/electrosphere/client/terrain/cells/ClientDrawCellManager.java index f36bc2dd..73388cc6 100644 --- a/src/main/java/electrosphere/client/terrain/cells/ClientDrawCellManager.java +++ b/src/main/java/electrosphere/client/terrain/cells/ClientDrawCellManager.java @@ -201,7 +201,12 @@ public class ClientDrawCellManager { if(evaluationMap.containsKey(node)){ return false; } - if(node.getData().hasGenerated() && node.getData().isHomogenous()){ + if(node.getData().hasGenerated() && + ( + node.getData().isHomogenous() || + this.getMinDistance(playerPos, node, distCache) > SIXTEENTH_RES_DIST + ) + ){ return false; } if(node.isLeaf()){ @@ -582,7 +587,6 @@ public class ClientDrawCellManager { */ private void flagAsMeta(WorldOctTreeNode node){ node.getData().setHasGenerated(true); - node.getData().setHomogenous(true); } /** diff --git a/src/main/java/electrosphere/client/terrain/foliage/FoliageCellManager.java b/src/main/java/electrosphere/client/terrain/foliage/FoliageCellManager.java index a2dca0c9..55910b65 100644 --- a/src/main/java/electrosphere/client/terrain/foliage/FoliageCellManager.java +++ b/src/main/java/electrosphere/client/terrain/foliage/FoliageCellManager.java @@ -207,7 +207,12 @@ public class FoliageCellManager { if(evaluationMap.containsKey(node)){ return false; } - if(node.getData().hasGenerated() && node.getData().isHomogenous()){ + if(node.getData().hasGenerated() && + ( + node.getData().isHomogenous() || + this.getMinDistance(absVoxelPos, node, distCache) > SIXTEENTH_RES_DIST + ) + ){ return false; } if(node.isLeaf()){ @@ -504,7 +509,6 @@ public class FoliageCellManager { */ private void flagAsMeta(WorldOctTreeNode node){ node.getData().setHasGenerated(true); - node.getData().setHomogenous(true); } /** diff --git a/src/main/java/electrosphere/server/character/PlayerCharacterCreation.java b/src/main/java/electrosphere/server/character/PlayerCharacterCreation.java index 88df092f..5ba2dbd3 100644 --- a/src/main/java/electrosphere/server/character/PlayerCharacterCreation.java +++ b/src/main/java/electrosphere/server/character/PlayerCharacterCreation.java @@ -39,7 +39,7 @@ public class PlayerCharacterCreation { // //attach entity to player object LoggerInterface.loggerEngine.INFO("Spawned entity for player. Entity id: " + newPlayerEntity.getId() + " Player id: " + playerObject.getId()); - attachEntityToPlayerObject(newPlayerEntity,playerObject,connectionHandler); + PlayerCharacterCreation.attachEntityToPlayerObject(newPlayerEntity,playerObject,connectionHandler); playerObject.setWorldPos(new Vector3i( realm.getServerWorldData().convertRealToChunkSpace(spawnPoint.x), realm.getServerWorldData().convertRealToChunkSpace(spawnPoint.y), @@ -73,7 +73,7 @@ public class PlayerCharacterCreation { Player player = serverConnectionHandler.getPlayer(); player.setPlayerEntity(entity); //custom player btrees - addPlayerServerBTrees(entity); + PlayerCharacterCreation.addPlayerServerBTrees(entity); } /** diff --git a/src/main/java/electrosphere/server/terrain/manager/ServerTerrainManager.java b/src/main/java/electrosphere/server/terrain/manager/ServerTerrainManager.java index 78f8dd88..70805d82 100644 --- a/src/main/java/electrosphere/server/terrain/manager/ServerTerrainManager.java +++ b/src/main/java/electrosphere/server/terrain/manager/ServerTerrainManager.java @@ -29,7 +29,7 @@ public class ServerTerrainManager { /** * The number of threads for chunk generation */ - public static final int GENERATION_THREAD_POOL_SIZE = 1; + public static final int GENERATION_THREAD_POOL_SIZE = 2; /** * Full world discrete size