From 8102063850d2510d83156739aefaf6e3aab554ec Mon Sep 17 00:00:00 2001 From: Leonardo Date: Sat, 14 Aug 2021 15:17:03 +0200 Subject: [PATCH] Added the cutTreeAtLevel method --- .../com/seibel/lod/objects/LodQuadTree.java | 27 ++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/seibel/lod/objects/LodQuadTree.java b/src/main/java/com/seibel/lod/objects/LodQuadTree.java index 4e9509eda..536998b26 100644 --- a/src/main/java/com/seibel/lod/objects/LodQuadTree.java +++ b/src/main/java/com/seibel/lod/objects/LodQuadTree.java @@ -328,7 +328,32 @@ public class LodQuadTree children[NS][WE] = new LodQuadTree(this, (byte) (lodNode.detailLevel - 1), new RegionPos(childRegionX, childRegionZ)); } - + + /** + * Delete all the children + */ + public void deleteChildren() + { + children = new LodQuadTree[2][2]; + } + + /** + * Cut the tree at the given target level + */ + public void cutTreeAtLevel(byte targetLevel) { + if (targetLevel <= lodNode.detailLevel) { + deleteChildren(); + } else { + for (int NS = 0; NS <= 1; NS++) { + for (int WE = 0; WE <= 1; WE++) { + if (getChild(NS, WE) != null) { + getChild(NS, WE).cutTreeAtLevel(targetLevel); + } + } + } + } + } + /** * Update this region's data, specifically levelFull and lodNodeData. *