aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/makamys
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/makamys')
-rw-r--r--src/main/java/makamys/neodymium/renderer/Comparators.java96
-rw-r--r--src/main/java/makamys/neodymium/renderer/NeoRenderer.java92
2 files changed, 98 insertions, 90 deletions
diff --git a/src/main/java/makamys/neodymium/renderer/Comparators.java b/src/main/java/makamys/neodymium/renderer/Comparators.java
new file mode 100644
index 0000000..61dc1bc
--- /dev/null
+++ b/src/main/java/makamys/neodymium/renderer/Comparators.java
@@ -0,0 +1,96 @@
+package makamys.neodymium.renderer;
+
+import java.util.Comparator;
+
+import net.minecraft.entity.Entity;
+import net.minecraft.world.ChunkCoordIntPair;
+
+public class Comparators {
+ public static final MeshDistanceComparator MESH_DISTANCE_COMPARATOR = new MeshDistanceComparator();
+
+ public static class NeoChunkComparator implements Comparator<NeoChunk> {
+ Entity player;
+
+ public NeoChunkComparator(Entity player) {
+ this.player = player;
+ }
+
+ @Override
+ public int compare(NeoChunk p1, NeoChunk p2) {
+ int distSq1 = distSq(p1);
+ int distSq2 = distSq(p2);
+ return distSq1 < distSq2 ? -1 : distSq1 > distSq2 ? 1 : 0;
+ }
+
+ int distSq(NeoChunk p) {
+ return (int)(
+ Math.pow(((p.x * 16) - player.chunkCoordX), 2) +
+ Math.pow(((p.z * 16) - player.chunkCoordZ), 2)
+ );
+ }
+ }
+
+ public static class ChunkCoordDistanceComparator implements Comparator<ChunkCoordIntPair> {
+ double x, y, z;
+
+ public ChunkCoordDistanceComparator(double x, double y, double z) {
+ this.x = x;
+ this.y = y;
+ this.z = z;
+ }
+
+ @Override
+ public int compare(ChunkCoordIntPair p1, ChunkCoordIntPair p2) {
+ int distSq1 = distSq(p1);
+ int distSq2 = distSq(p2);
+ return distSq1 < distSq2 ? -1 : distSq1 > distSq2 ? 1 : 0;
+ }
+
+ int distSq(ChunkCoordIntPair p) {
+ return (int)(
+ Math.pow(((p.chunkXPos * 16) - x), 2) +
+ Math.pow(((p.chunkZPos * 16) - z), 2)
+ );
+ }
+ }
+
+ public static class MeshDistanceComparator implements Comparator<Mesh> {
+ double x, y, z;
+ boolean inverted;
+
+ public Comparator<? super Mesh> setInverted(boolean inverted) {
+ this.inverted = inverted;
+ return this;
+ }
+
+ public MeshDistanceComparator setOrigin(double x, double y, double z) {
+ this.x = x / 16.0;
+ this.y = y / 16.0;
+ this.z = z / 16.0;
+ return this;
+ }
+
+ @Override
+ public int compare(Mesh a, Mesh b) {
+ if(a.pass < b.pass) {
+ return -1;
+ } else if(a.pass > b.pass) {
+ return 1;
+ } else {
+ double distSqA = a.distSq(x, y, z);
+ double distSqB = b.distSq(x, y, z);
+
+ int mult = inverted ? -1 : 1;
+
+ if(distSqA > distSqB) {
+ return 1 * mult;
+ } else if(distSqA < distSqB) {
+ return -1 * mult;
+ } else {
+ return 0;
+ }
+ }
+ }
+
+ }
+}
diff --git a/src/main/java/makamys/neodymium/renderer/NeoRenderer.java b/src/main/java/makamys/neodymium/renderer/NeoRenderer.java
index 3c5dfd6..1caf301 100644
--- a/src/main/java/makamys/neodymium/renderer/NeoRenderer.java
+++ b/src/main/java/makamys/neodymium/renderer/NeoRenderer.java
@@ -49,8 +49,6 @@ import net.minecraft.world.World;
/** The main renderer class. */
public class NeoRenderer {
- private static final MeshDistanceComparator DISTANCE_COMPARATOR = new MeshDistanceComparator();
-
public boolean hasInited = false;
public boolean destroyPending;
public boolean reloadPending;
@@ -184,10 +182,10 @@ public class NeoRenderer {
private void sort(boolean pass0, boolean pass1) {
if(pass0) {
- sentMeshes[0].sort(DISTANCE_COMPARATOR.setOrigin(eyePosX, eyePosY, eyePosZ).setInverted(false));
+ sentMeshes[0].sort(Comparators.MESH_DISTANCE_COMPARATOR.setOrigin(eyePosX, eyePosY, eyePosZ).setInverted(false));
}
if(pass1) {
- sentMeshes[1].sort(DISTANCE_COMPARATOR.setOrigin(eyePosX, eyePosY, eyePosZ).setInverted(true));
+ sentMeshes[1].sort(Comparators.MESH_DISTANCE_COMPARATOR.setOrigin(eyePosX, eyePosY, eyePosZ).setInverted(true));
}
}
@@ -668,92 +666,6 @@ public class NeoRenderer {
return Config.wireframe && CheatHelper.canCheat();
}
- public static class NeoChunkComparator implements Comparator<NeoChunk> {
- Entity player;
-
- public NeoChunkComparator(Entity player) {
- this.player = player;
- }
-
- @Override
- public int compare(NeoChunk p1, NeoChunk p2) {
- int distSq1 = distSq(p1);
- int distSq2 = distSq(p2);
- return distSq1 < distSq2 ? -1 : distSq1 > distSq2 ? 1 : 0;
- }
-
- int distSq(NeoChunk p) {
- return (int)(
- Math.pow(((p.x * 16) - player.chunkCoordX), 2) +
- Math.pow(((p.z * 16) - player.chunkCoordZ), 2)
- );
- }
- }
-
- public static class ChunkCoordDistanceComparator implements Comparator<ChunkCoordIntPair> {
- double x, y, z;
-
- public ChunkCoordDistanceComparator(double x, double y, double z) {
- this.x = x;
- this.y = y;
- this.z = z;
- }
-
- @Override
- public int compare(ChunkCoordIntPair p1, ChunkCoordIntPair p2) {
- int distSq1 = distSq(p1);
- int distSq2 = distSq(p2);
- return distSq1 < distSq2 ? -1 : distSq1 > distSq2 ? 1 : 0;
- }
-
- int distSq(ChunkCoordIntPair p) {
- return (int)(
- Math.pow(((p.chunkXPos * 16) - x), 2) +
- Math.pow(((p.chunkZPos * 16) - z), 2)
- );
- }
- }
-
- public static class MeshDistanceComparator implements Comparator<Mesh> {
- double x, y, z;
- boolean inverted;
-
- public Comparator<? super Mesh> setInverted(boolean inverted) {
- this.inverted = inverted;
- return this;
- }
-
- public MeshDistanceComparator setOrigin(double x, double y, double z) {
- this.x = x / 16.0;
- this.y = y / 16.0;
- this.z = z / 16.0;
- return this;
- }
-
- @Override
- public int compare(Mesh a, Mesh b) {
- if(a.pass < b.pass) {
- return -1;
- } else if(a.pass > b.pass) {
- return 1;
- } else {
- double distSqA = a.distSq(x, y, z);
- double distSqB = b.distSq(x, y, z);
-
- int mult = inverted ? -1 : 1;
-
- if(distSqA > distSqB) {
- return 1 * mult;
- } else if(distSqA < distSqB) {
- return -1 * mult;
- } else {
- return 0;
- }
- }
- }
-
- }
-
public static enum WorldRendererChange {
VISIBLE, INVISIBLE, DELETED
}