Add validation of top level position + MiB if path
This commit is contained in:
@@ -61,10 +61,18 @@ public class VoxyRenderSystem {
|
|||||||
this.worldIn = world;
|
this.worldIn = world;
|
||||||
this.renderer = new RenderService(world, threadPool);
|
this.renderer = new RenderService(world, threadPool);
|
||||||
this.postProcessing = new PostProcessing();
|
this.postProcessing = new PostProcessing();
|
||||||
|
int minSec = MinecraftClient.getInstance().world.getBottomSectionCoord()>>5;
|
||||||
|
int maxSec = (MinecraftClient.getInstance().world.getTopSectionCoord()-1)>>5;
|
||||||
|
|
||||||
|
//Do some very cheeky stuff for MiB
|
||||||
|
if (false) {
|
||||||
|
minSec = -8;
|
||||||
|
maxSec = 7;
|
||||||
|
}
|
||||||
|
|
||||||
this.renderDistanceTracker = new RenderDistanceTracker(20,
|
this.renderDistanceTracker = new RenderDistanceTracker(20,
|
||||||
MinecraftClient.getInstance().world.getBottomSectionCoord()>>5,
|
minSec,
|
||||||
(MinecraftClient.getInstance().world.getTopSectionCoord()-1)>>5,
|
maxSec,
|
||||||
this.renderer::addTopLevelNode,
|
this.renderer::addTopLevelNode,
|
||||||
this.renderer::removeTopLevelNode);
|
this.renderer::removeTopLevelNode);
|
||||||
|
|
||||||
@@ -160,6 +168,7 @@ public class VoxyRenderSystem {
|
|||||||
cameraX -= sector<<14;//10+4
|
cameraX -= sector<<14;//10+4
|
||||||
cameraY += (16+(256-32-sector*30))*16;
|
cameraY += (16+(256-32-sector*30))*16;
|
||||||
}
|
}
|
||||||
|
|
||||||
long startTime = System.nanoTime();
|
long startTime = System.nanoTime();
|
||||||
TimingStatistics.all.start();
|
TimingStatistics.all.start();
|
||||||
TimingStatistics.main.start();
|
TimingStatistics.main.start();
|
||||||
|
|||||||
@@ -123,7 +123,27 @@ public class NodeManager {
|
|||||||
this.geometryManager = geometryManager;
|
this.geometryManager = geometryManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static void assertPosValid(long pos) {
|
||||||
|
int lvl = WorldEngine.getLevel(pos);
|
||||||
|
int x = WorldEngine.getX(pos);
|
||||||
|
int y = WorldEngine.getY(pos);
|
||||||
|
int z = WorldEngine.getZ(pos);
|
||||||
|
if (WorldEngine.getWorldSectionId(lvl, x, y, z) != pos) {
|
||||||
|
throw new IllegalStateException("Reconstructed pos not same as original");
|
||||||
|
}
|
||||||
|
x <<= lvl;
|
||||||
|
y <<= lvl;
|
||||||
|
z <<= lvl;
|
||||||
|
long p2 = WorldEngine.getWorldSectionId(0, x, y, z);
|
||||||
|
if (WorldEngine.getLevel(p2) != 0 || WorldEngine.getX(p2) != x || WorldEngine.getY(p2) != y || WorldEngine.getZ(p2) != z) {
|
||||||
|
throw new IllegalStateException("Position not valid at all levels");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void insertTopLevelNode(long pos) {
|
public void insertTopLevelNode(long pos) {
|
||||||
|
//Verify that pos is actually valid
|
||||||
|
assertPosValid(pos);
|
||||||
|
|
||||||
if ((pos&0xF) != 0) {
|
if ((pos&0xF) != 0) {
|
||||||
throw new IllegalStateException("BAD POS !! YOU DID SOMETHING VERY BAD");
|
throw new IllegalStateException("BAD POS !! YOU DID SOMETHING VERY BAD");
|
||||||
}
|
}
|
||||||
@@ -399,7 +419,7 @@ public class NodeManager {
|
|||||||
// so add the new nodes to it
|
// so add the new nodes to it
|
||||||
int requestId = this.nodeData.getNodeRequest(nodeId);
|
int requestId = this.nodeData.getNodeRequest(nodeId);
|
||||||
var request = this.childRequests.get(requestId);// TODO: do not assume request is childRequest (it will probably always be)
|
var request = this.childRequests.get(requestId);// TODO: do not assume request is childRequest (it will probably always be)
|
||||||
if (request.getPosition() != pos) throw new IllegalStateException("Request is not at pos");
|
if (request.getPosition() != pos) throw new IllegalStateException("Request is not at pos: got " + WorldEngine.pprintPos(pos) + " expected: " + WorldEngine.pprintPos(request.getPosition()));
|
||||||
|
|
||||||
//Add all new children to the request
|
//Add all new children to the request
|
||||||
for (int i = 0; i < 8; i++) {
|
for (int i = 0; i < 8; i++) {
|
||||||
|
|||||||
@@ -277,7 +277,7 @@ public class TestNodeManager {
|
|||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
Logger.INSERT_CLASS = false;
|
Logger.INSERT_CLASS = false;
|
||||||
int ITER_COUNT = 5_000;
|
int ITER_COUNT = 5_000;
|
||||||
int INNER_ITER_COUNT = 100_000;
|
int INNER_ITER_COUNT = 1_000_000;
|
||||||
boolean GEO_REM = true;
|
boolean GEO_REM = true;
|
||||||
|
|
||||||
AtomicInteger finished = new AtomicInteger();
|
AtomicInteger finished = new AtomicInteger();
|
||||||
@@ -285,7 +285,7 @@ public class TestNodeManager {
|
|||||||
|
|
||||||
Logger.SHUTUP = true;
|
Logger.SHUTUP = true;
|
||||||
|
|
||||||
if (false) {
|
if (true) {
|
||||||
for (int q = 0; q < ITER_COUNT; q++) {
|
for (int q = 0; q < ITER_COUNT; q++) {
|
||||||
//Logger.info("Iteration "+ q);
|
//Logger.info("Iteration "+ q);
|
||||||
if (runTest(INNER_ITER_COUNT, q, seenTraces, GEO_REM)) {
|
if (runTest(INNER_ITER_COUNT, q, seenTraces, GEO_REM)) {
|
||||||
@@ -331,8 +331,9 @@ public class TestNodeManager {
|
|||||||
//Fuzzy bruteforce everything
|
//Fuzzy bruteforce everything
|
||||||
for (int x = -R; x<=R; x++) {
|
for (int x = -R; x<=R; x++) {
|
||||||
for (int z = -R; z<=R; z++) {
|
for (int z = -R; z<=R; z++) {
|
||||||
tops.add(WorldEngine.getWorldSectionId(4, x, 0, z));
|
for (int y = -8; y<=7; y++) {
|
||||||
tops.add(WorldEngine.getWorldSectionId(4, x, 1, z));
|
tops.add(WorldEngine.getWorldSectionId(4, x, y, z));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -351,7 +352,7 @@ public class TestNodeManager {
|
|||||||
boolean addRemTLN = r.nextInt(64) == 0;
|
boolean addRemTLN = r.nextInt(64) == 0;
|
||||||
boolean extraBool = r.nextBoolean();
|
boolean extraBool = r.nextBoolean();
|
||||||
if (op == 0 && addRemTLN) {
|
if (op == 0 && addRemTLN) {
|
||||||
pos = WorldEngine.getWorldSectionId(4, r.nextInt(5)-2, r.nextInt(5)-2, r.nextInt(5)-2);
|
pos = WorldEngine.getWorldSectionId(4, r.nextInt(5)-2, r.nextInt(32)-16, r.nextInt(5)-2);
|
||||||
boolean cont = tops.contains(pos);
|
boolean cont = tops.contains(pos);
|
||||||
if (cont&&extraBool&&tops.size()>1) {
|
if (cont&&extraBool&&tops.size()>1) {
|
||||||
extraBool = true;
|
extraBool = true;
|
||||||
|
|||||||
Reference in New Issue
Block a user