Skip to content

Commit

Permalink
cleanup forest build distance handling
Browse files Browse the repository at this point in the history
  • Loading branch information
douira committed Nov 14, 2024
1 parent ba79561 commit 96c957f
Show file tree
Hide file tree
Showing 6 changed files with 11 additions and 23 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -18,15 +18,10 @@ public void calculateReduced() {

@Override
public void traverse(SectionTree.VisibleSectionVisitor visitor, Viewport viewport, float distanceLimit) {
TraversableForest.super.traverse(visitor, viewport, distanceLimit);
}

@Override
public void traverse(SectionTree.VisibleSectionVisitor visitor, Viewport viewport, float distanceLimit, float buildDistance) {
// no sorting is necessary because we assume the camera will never be closer to the secondary tree than the main tree
this.mainTree.traverse(visitor, viewport, distanceLimit, buildDistance);
this.mainTree.traverse(visitor, viewport, distanceLimit, this.buildDistance);
if (this.secondaryTree != null) {
this.secondaryTree.traverse(visitor, viewport, distanceLimit, buildDistance);
this.secondaryTree.traverse(visitor, viewport, distanceLimit, this.buildDistance);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ public void calculateReduced() {
}

@Override
public void traverse(SectionTree.VisibleSectionVisitor visitor, Viewport viewport, float distanceLimit, float buildDistance) {
public void traverse(SectionTree.VisibleSectionVisitor visitor, Viewport viewport, float distanceLimit) {
var transform = viewport.getTransform();
var cameraSectionX = transform.intX >> 4;
var cameraSectionY = transform.intY >> 4;
Expand Down Expand Up @@ -50,5 +50,4 @@ public void traverse(SectionTree.VisibleSectionVisitor visitor, Viewport viewpor
}
}
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,5 @@ protected BaseForest(int baseOffsetX, int baseOffsetY, int baseOffsetZ, float bu
this.buildDistance = buildDistance;
}

@Override
public float getBuildDistance() {
return this.buildDistance;
}

protected abstract T makeTree(int offsetX, int offsetY, int offsetZ);
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,18 @@ public abstract class BaseMultiForest<T extends Tree> extends BaseForest<T> {

protected T lastTree;

public BaseMultiForest(int baseOffsetX, int baseOffsetY, int baseOffsetZ, float buildDistance) {
public BaseMultiForest(int baseOffsetX, int baseOffsetY, int baseOffsetZ,float buildDistance) {
super(baseOffsetX, baseOffsetY, baseOffsetZ, buildDistance);

this.forestDim = (int) Math.ceil((buildDistance / 8.0 + 1) / 64.0);
this.forestDim = forestDimFromBuildDistance(buildDistance);
this.trees = this.makeTrees(this.forestDim * this.forestDim * this.forestDim);
}

public static int forestDimFromBuildDistance(float buildDistance) {
// / 16 (block to chunk) * 2 (radius to diameter) + 1 (center chunk) / 64 (chunks per tree)
return (int) Math.ceil((buildDistance / 8.0 + 1) / 64.0);
}

protected int getTreeIndex(int localX, int localY, int localZ) {
var treeX = localX >> 6;
var treeY = localY >> 6;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,5 @@
public interface Forest {
void add(int x, int y, int z);

float getBuildDistance();

int getPresence(int x, int y, int z);
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,7 @@
public interface TraversableForest extends Forest {
void calculateReduced();

default void traverse(SectionTree.VisibleSectionVisitor visitor, Viewport viewport, float distanceLimit) {
this.traverse(visitor, viewport, distanceLimit, this.getBuildDistance());
}

void traverse(SectionTree.VisibleSectionVisitor visitor, Viewport viewport, float distanceLimit, float buildDistance);
void traverse(SectionTree.VisibleSectionVisitor visitor, Viewport viewport, float distanceLimit);

static TraversableForest createTraversableForest(int baseOffsetX, int baseOffsetY, int baseOffsetZ, float buildDistance, Level level) {
if (BaseBiForest.checkApplicable(buildDistance, level)) {
Expand Down

0 comments on commit 96c957f

Please sign in to comment.