Skip to content

Commit 47cad8a

Browse files
committed
refactor, cleanup, and perf improvements
1 parent 4ad2db3 commit 47cad8a

File tree

98 files changed

+177
-304
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

98 files changed

+177
-304
lines changed

common/src/main/java/com/dfsek/terra/CommandHandler.java

Lines changed: 0 additions & 4 deletions
This file was deleted.

common/src/main/java/com/dfsek/terra/TerraProfiler.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ public TerraProfiler(World w) {
1313
.addMeasurement(new Measurement(10000000, DataType.PERIOD_MILLISECONDS), "TreeTime")
1414
.addMeasurement(new Measurement(1500000, DataType.PERIOD_MILLISECONDS), "OreTime")
1515
.addMeasurement(new Measurement(5000000, DataType.PERIOD_MILLISECONDS), "CaveTime")
16-
.addMeasurement(new Measurement(1500000, DataType.PERIOD_MILLISECONDS), "StructureTime")
17-
.addMeasurement(new Measurement(1500000, DataType.PERIOD_MILLISECONDS), "ElevationTime");
16+
.addMeasurement(new Measurement(1500000, DataType.PERIOD_MILLISECONDS), "StructureTime");
1817
}
1918
}

common/src/main/java/com/dfsek/terra/api/GenericLoaders.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.dfsek.terra.api;
22

33
import com.dfsek.tectonic.loading.TypeRegistry;
4+
import com.dfsek.terra.api.math.GridSpawn;
45
import com.dfsek.terra.api.math.ProbabilityCollection;
56
import com.dfsek.terra.api.math.Range;
67
import com.dfsek.terra.api.platform.TerraPlugin;
@@ -22,14 +23,13 @@
2223
import com.dfsek.terra.config.loaders.palette.PaletteHolderLoader;
2324
import com.dfsek.terra.config.loaders.palette.PaletteLayerLoader;
2425
import com.dfsek.terra.generation.config.NoiseBuilder;
25-
import com.dfsek.terra.generation.items.flora.FloraLayer;
26-
import com.dfsek.terra.generation.items.flora.TerraFlora;
27-
import com.dfsek.terra.generation.items.ores.Ore;
28-
import com.dfsek.terra.generation.items.ores.OreConfig;
29-
import com.dfsek.terra.generation.items.ores.OreHolder;
30-
import com.dfsek.terra.generation.items.tree.TreeLayer;
3126
import com.dfsek.terra.image.ImageLoader;
32-
import com.dfsek.terra.procgen.GridSpawn;
27+
import com.dfsek.terra.population.items.flora.FloraLayer;
28+
import com.dfsek.terra.population.items.flora.TerraFlora;
29+
import com.dfsek.terra.population.items.ores.Ore;
30+
import com.dfsek.terra.population.items.ores.OreConfig;
31+
import com.dfsek.terra.population.items.ores.OreHolder;
32+
import com.dfsek.terra.population.items.tree.TreeLayer;
3333
import com.dfsek.terra.util.MaterialSet;
3434

3535
public class GenericLoaders implements LoaderRegistrar {
@@ -51,7 +51,7 @@ public void register(TypeRegistry registry) {
5151
.registerLoader(Ore.Type.class, (t, o, l) -> Ore.Type.valueOf((String) o))
5252
.registerLoader(OreConfig.class, new OreConfigLoader())
5353
.registerLoader(NoiseBuilder.class, new NoiseBuilderLoader())
54-
.registerLoader(TreeLayer.class, new TreeLayerLoader(main))
54+
.registerLoader(TreeLayer.class, new TreeLayerLoader())
5555
.registerLoader(MaterialSet.class, new MaterialSetLoader())
5656
.registerLoader(OreHolder.class, new OreHolderLoader())
5757
.registerLoader(ImageLoader.class, new ImageLoaderLoader())

common/src/main/java/com/dfsek/terra/api/lang/Language.java renamed to common/src/main/java/com/dfsek/terra/api/language/Language.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.dfsek.terra.api.lang;
1+
package com.dfsek.terra.api.language;
22

33

44
import com.dfsek.tectonic.config.Configuration;

common/src/main/java/com/dfsek/terra/api/lang/Message.java renamed to common/src/main/java/com/dfsek/terra/api/language/Message.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.dfsek.terra.api.lang;
1+
package com.dfsek.terra.api.language;
22

33

44
import com.dfsek.terra.api.platform.CommandSender;

common/src/main/java/com/dfsek/terra/api/lang/MultiLineMessage.java renamed to common/src/main/java/com/dfsek/terra/api/language/MultiLineMessage.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.dfsek.terra.api.lang;
1+
package com.dfsek.terra.api.language;
22

33
import com.dfsek.terra.api.platform.CommandSender;
44

common/src/main/java/com/dfsek/terra/api/lang/SingleLineMessage.java renamed to common/src/main/java/com/dfsek/terra/api/language/SingleLineMessage.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.dfsek.terra.api.lang;
1+
package com.dfsek.terra.api.language;
22

33

44
import com.dfsek.terra.api.platform.CommandSender;

common/src/main/java/com/dfsek/terra/procgen/GridSpawn.java renamed to common/src/main/java/com/dfsek/terra/api/math/GridSpawn.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
1-
package com.dfsek.terra.procgen;
1+
package com.dfsek.terra.api.math;
22

3-
import com.dfsek.terra.api.math.MathUtil;
43
import com.dfsek.terra.api.math.vector.Vector3;
54
import com.dfsek.terra.api.util.FastRandom;
65
import com.dfsek.terra.api.util.GlueList;

common/src/main/java/com/dfsek/terra/api/math/MathUtil.java

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.dfsek.terra.api.math;
22

33
import com.dfsek.terra.api.util.FastRandom;
4+
import com.dfsek.terra.generation.math.Sampler;
45
import net.jafama.FastMath;
56

67
import java.util.Random;
@@ -9,7 +10,14 @@
910
* Utility class for mathematical functions.
1011
*/
1112
public final class MathUtil {
12-
private static final double EPSILON = 0.1E-5;
13+
/**
14+
* Epsilon for fuzzy floating point comparisons.
15+
*/
16+
public static final double EPSILON = 1.0E-5;
17+
/**
18+
* Derivative constant.
19+
*/
20+
private static final double DERIVATIVE_DIST = 0.55;
1321

1422
/**
1523
* Gets the standard deviation of an array of doubles.
@@ -68,4 +76,17 @@ public static long hashToLong(String s) {
6876
public static boolean equals(double a, double b) {
6977
return a == b || FastMath.abs(a - b) < EPSILON;
7078
}
79+
80+
public static double derivative(Sampler sampler, double x, double y, double z) {
81+
double baseSample = sampler.sample(x, y, z);
82+
83+
double xVal1 = (sampler.sample(x + DERIVATIVE_DIST, y, z) - baseSample) / DERIVATIVE_DIST;
84+
double xVal2 = (sampler.sample(x - DERIVATIVE_DIST, y, z) - baseSample) / DERIVATIVE_DIST;
85+
double zVal1 = (sampler.sample(x, y, z + DERIVATIVE_DIST) - baseSample) / DERIVATIVE_DIST;
86+
double zVal2 = (sampler.sample(x, y, z - DERIVATIVE_DIST) - baseSample) / DERIVATIVE_DIST;
87+
double yVal1 = (sampler.sample(x, y + DERIVATIVE_DIST, z) - baseSample) / DERIVATIVE_DIST;
88+
double yVal2 = (sampler.sample(x, y - DERIVATIVE_DIST, z) - baseSample) / DERIVATIVE_DIST;
89+
90+
return Math.sqrt(((xVal2 - xVal1) * (xVal2 - xVal1)) + ((zVal2 - zVal1) * (zVal2 - zVal1)) + ((yVal2 - yVal1) * (yVal2 - yVal1)));
91+
}
7192
}

common/src/main/java/com/dfsek/terra/api/math/ProbabilityCollection.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.dfsek.terra.api.math;
22

3+
import com.dfsek.terra.api.math.noise.FastNoiseLite;
34
import com.dfsek.terra.api.world.biome.NormalizationUtil;
45

56
import java.util.HashSet;

common/src/main/java/com/dfsek/terra/api/math/FastNoiseLite.java renamed to common/src/main/java/com/dfsek/terra/api/math/noise/FastNoiseLite.java

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.dfsek.terra.api.math;// MIT License
1+
package com.dfsek.terra.api.math.noise;// MIT License
22

33
import net.jafama.FastMath;
44

@@ -58,6 +58,7 @@ of this software and associated documentation files(the "Software"), to deal
5858
/ *FNLdouble* / double
5959
6060
*/
61+
@SuppressWarnings("ManualMinMaxCalculation")
6162
public class FastNoiseLite {
6263
private static final double[] Gradients2D = {
6364
0.130526192220052f, 0.99144486137381f, 0.38268343236509f, 0.923879532511287f, 0.608761429008721f, 0.793353340291235f,
@@ -328,14 +329,14 @@ public class FastNoiseLite {
328329
private TransformType3D mWarpTransformType3D = TransformType3D.DefaultOpenSimplex2;
329330
private double mDomainWarpAmp = 1.0f;
330331

331-
private static final com.dfsek.terra.api.math.FastNoiseLite CELLULAR_LOOKUP_DEFAULT = new com.dfsek.terra.api.math.FastNoiseLite();
332-
private com.dfsek.terra.api.math.FastNoiseLite cellularNoiseLookup = CELLULAR_LOOKUP_DEFAULT;
332+
private static final FastNoiseLite CELLULAR_LOOKUP_DEFAULT = new FastNoiseLite();
333+
private FastNoiseLite cellularNoiseLookup = CELLULAR_LOOKUP_DEFAULT;
333334

334-
public com.dfsek.terra.api.math.FastNoiseLite getCellularNoiseLookup() {
335+
public FastNoiseLite getCellularNoiseLookup() {
335336
return cellularNoiseLookup;
336337
}
337338

338-
public void setCellularNoiseLookup(com.dfsek.terra.api.math.FastNoiseLite cellularNoiseLookup) {
339+
public void setCellularNoiseLookup(FastNoiseLite cellularNoiseLookup) {
339340
this.cellularNoiseLookup = cellularNoiseLookup;
340341
}
341342

@@ -1442,7 +1443,6 @@ private double SingleCellular(int seed, /*FNLdouble*/ double x, /*FNLdouble*/ do
14421443

14431444
if (mCellularDistanceFunction == CellularDistanceFunction.Euclidean && mCellularReturnType != CellularReturnType.CellValue) {
14441445
distance0 = FastSqrt(distance0);
1445-
//noinspection ConstantConditions
14461446
if (mCellularReturnType != CellularReturnType.CellValue) {
14471447
distance1 = FastSqrt(distance1);
14481448
}
@@ -1593,8 +1593,6 @@ private double SingleCellular(int seed, /*FNLdouble*/ double x, /*FNLdouble*/ do
15931593

15941594
if (mCellularDistanceFunction == CellularDistanceFunction.Euclidean && mCellularReturnType != CellularReturnType.CellValue) {
15951595
distance0 = FastSqrt(distance0);
1596-
1597-
//noinspection ConstantConditions
15981596
if (mCellularReturnType != CellularReturnType.CellValue) {
15991597
distance1 = FastSqrt(distance1);
16001598
}

common/src/main/java/com/dfsek/terra/math/NoiseFunction.java renamed to common/src/main/java/com/dfsek/terra/api/math/noise/NoiseFunction.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.dfsek.terra.math;
1+
package com.dfsek.terra.api.math.noise;
22

33
import parsii.eval.Function;
44

common/src/main/java/com/dfsek/terra/math/NoiseFunction2.java renamed to common/src/main/java/com/dfsek/terra/api/math/noise/NoiseFunction2.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
1-
package com.dfsek.terra.math;
1+
package com.dfsek.terra.api.math.noise;
22

3-
import com.dfsek.terra.api.math.FastNoiseLite;
43
import com.dfsek.terra.generation.config.NoiseBuilder;
54
import com.dfsek.terra.util.hash.HashMapDoubleDouble;
65
import parsii.eval.Expression;

common/src/main/java/com/dfsek/terra/math/NoiseFunction3.java renamed to common/src/main/java/com/dfsek/terra/api/math/noise/NoiseFunction3.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
1-
package com.dfsek.terra.math;
1+
package com.dfsek.terra.api.math.noise;
22

3-
import com.dfsek.terra.api.math.FastNoiseLite;
43
import com.dfsek.terra.generation.config.NoiseBuilder;
54
import parsii.eval.Expression;
65

common/src/main/java/com/dfsek/terra/math/BlankFunction.java renamed to common/src/main/java/com/dfsek/terra/api/math/parsii/BlankFunction.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.dfsek.terra.math;
1+
package com.dfsek.terra.api.math.parsii;
22

33
import parsii.eval.Expression;
44
import parsii.eval.Function;

common/src/main/java/com/dfsek/terra/math/RandomFunction.java renamed to common/src/main/java/com/dfsek/terra/api/math/parsii/RandomFunction.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.dfsek.terra.math;
1+
package com.dfsek.terra.api.math.parsii;
22

33
import com.dfsek.terra.api.util.FastRandom;
44
import parsii.eval.Expression;

common/src/main/java/com/dfsek/terra/procgen/pixel/Distribution.java renamed to common/src/main/java/com/dfsek/terra/api/math/pixel/Distribution.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.dfsek.terra.procgen.pixel;
1+
package com.dfsek.terra.api.math.pixel;
22

33
public class Distribution {
44
public Distribution(Rectangle bound, int numPoints, double minRad) {

common/src/main/java/com/dfsek/terra/procgen/pixel/Polygon.java renamed to common/src/main/java/com/dfsek/terra/api/math/pixel/Polygon.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.dfsek.terra.procgen.pixel;
1+
package com.dfsek.terra.api.math.pixel;
22

33
import com.dfsek.terra.api.math.vector.Vector2;
44

common/src/main/java/com/dfsek/terra/procgen/pixel/Rectangle.java renamed to common/src/main/java/com/dfsek/terra/api/math/pixel/Rectangle.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.dfsek.terra.procgen.pixel;
1+
package com.dfsek.terra.api.math.pixel;
22

33
import com.dfsek.terra.api.math.vector.Vector2;
44
import net.jafama.FastMath;

common/src/main/java/com/dfsek/terra/api/math/vector/Location.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,6 @@ public Vector3 toVector() {
163163

164164
@Override
165165
public String toString() {
166-
return "(" + getX() + ", " + getY() + ", " + getZ() + ")";
166+
return "[" + world + ": (" + getX() + ", " + getY() + ", " + getZ() + ")]";
167167
}
168168
}

common/src/main/java/com/dfsek/terra/api/math/vector/Vector2.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.dfsek.terra.api.math.vector;
22

3+
import com.dfsek.terra.api.math.MathUtil;
34
import net.jafama.FastMath;
45

56
/**
@@ -157,11 +158,9 @@ public int hashCode() {
157158

158159
@Override
159160
public boolean equals(Object obj) {
160-
if(!(obj instanceof Vector2)) {
161-
return false;
162-
}
161+
if(!(obj instanceof Vector2)) return false;
163162
Vector2 other = (Vector2) obj;
164-
return other.x == this.x && other.z == this.z;
163+
return MathUtil.equals(this.x, other.x) && MathUtil.equals(this.z, other.z);
165164
}
166165

167166
@Override

common/src/main/java/com/dfsek/terra/api/math/vector/Vector3.java

Lines changed: 9 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,12 @@
11
package com.dfsek.terra.api.math.vector;
22

3+
import com.dfsek.terra.api.math.MathUtil;
34
import com.dfsek.terra.api.platform.world.World;
45
import net.jafama.FastMath;
56
import org.jetbrains.annotations.NotNull;
67

78
public class Vector3 implements Cloneable {
89

9-
/**
10-
* Threshold for fuzzy equals().
11-
*/
12-
private static final double epsilon = 0.000001;
1310

1411
private double x;
1512
private double y;
@@ -21,15 +18,6 @@ public Vector3(double x, double y, double z) {
2118
this.z = z;
2219
}
2320

24-
/**
25-
* Get the threshold used for equals().
26-
*
27-
* @return The epsilon.
28-
*/
29-
public static double getEpsilon() {
30-
return epsilon;
31-
}
32-
3321
public double getZ() {
3422
return z;
3523
}
@@ -119,7 +107,7 @@ public double length() {
119107
* @return whether the vector is normalised
120108
*/
121109
public boolean isNormalized() {
122-
return Math.abs(this.lengthSquared() - 1) < getEpsilon();
110+
return MathUtil.equals(this.lengthSquared(), 1);
123111
}
124112

125113
/**
@@ -333,12 +321,14 @@ public int hashCode() {
333321
*/
334322
@Override
335323
public boolean equals(Object obj) {
336-
if(!(obj instanceof Vector3)) {
337-
return false;
338-
}
339-
324+
if(!(obj instanceof Vector3)) return false;
340325
Vector3 other = (Vector3) obj;
326+
return MathUtil.equals(x, other.x) && MathUtil.equals(y, other.y) && MathUtil.equals(x, other.z);
327+
}
341328

342-
return Math.abs(x - other.x) < epsilon && Math.abs(y - other.y) < epsilon && Math.abs(z - other.z) < epsilon && (this.getClass().equals(obj.getClass()));
329+
@Override
330+
public String toString() {
331+
return "(" + getX() + ", " + getY() + ", " + getZ() + ")";
343332
}
333+
344334
}

common/src/main/java/com/dfsek/terra/procgen/voxel/Cylinder.java renamed to common/src/main/java/com/dfsek/terra/api/math/voxel/Cylinder.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.dfsek.terra.procgen.voxel;
1+
package com.dfsek.terra.api.math.voxel;
22

33

44
import com.dfsek.terra.api.math.vector.Vector3;

common/src/main/java/com/dfsek/terra/procgen/voxel/DeformedSphere.java renamed to common/src/main/java/com/dfsek/terra/api/math/voxel/DeformedSphere.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
package com.dfsek.terra.procgen.voxel;
1+
package com.dfsek.terra.api.math.voxel;
22

3-
import com.dfsek.terra.api.math.FastNoiseLite;
3+
import com.dfsek.terra.api.math.noise.FastNoiseLite;
44
import com.dfsek.terra.api.math.vector.Vector3;
55

66
public class DeformedSphere extends VoxelGeometry {

common/src/main/java/com/dfsek/terra/procgen/voxel/Sphere.java renamed to common/src/main/java/com/dfsek/terra/api/math/voxel/Sphere.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.dfsek.terra.procgen.voxel;
1+
package com.dfsek.terra.api.math.voxel;
22

33
import com.dfsek.terra.api.math.vector.Vector3;
44

common/src/main/java/com/dfsek/terra/procgen/voxel/Tube.java renamed to common/src/main/java/com/dfsek/terra/api/math/voxel/Tube.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.dfsek.terra.procgen.voxel;
1+
package com.dfsek.terra.api.math.voxel;
22

33
import com.dfsek.terra.api.math.vector.Vector3;
44

common/src/main/java/com/dfsek/terra/procgen/voxel/VoxelGeometry.java renamed to common/src/main/java/com/dfsek/terra/api/math/voxel/VoxelGeometry.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.dfsek.terra.procgen.voxel;
1+
package com.dfsek.terra.api.math.voxel;
22

33
import com.dfsek.terra.api.math.vector.Vector3;
44
import com.dfsek.terra.api.util.GlueList;

common/src/main/java/com/dfsek/terra/api/platform/TerraPlugin.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import com.dfsek.terra.TerraWorld;
44
import com.dfsek.terra.api.LoaderRegistrar;
5-
import com.dfsek.terra.api.lang.Language;
5+
import com.dfsek.terra.api.language.Language;
66
import com.dfsek.terra.api.platform.handle.ItemHandle;
77
import com.dfsek.terra.api.platform.handle.WorldHandle;
88
import com.dfsek.terra.api.platform.world.World;

common/src/main/java/com/dfsek/terra/api/profiler/WorldProfiler.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,7 @@ public class WorldProfiler {
1515
public WorldProfiler(World w) {
1616
if(w.getGenerator().getTerraGenerator() == null)
1717
throw new IllegalArgumentException("Attempted to instantiate profiler on non-Gaea managed world!");
18-
this.addMeasurement(new Measurement(2500000, DataType.PERIOD_MILLISECONDS), "TotalChunkGenTime")
19-
.addMeasurement(new Measurement(2500000, DataType.PERIOD_MILLISECONDS), "ChunkBaseGenTime")
20-
.addMeasurement(new Measurement(2000000, DataType.PERIOD_MILLISECONDS), "BiomeApplyTime")
21-
.addMeasurement(new Measurement(2000000, DataType.PERIOD_MILLISECONDS), "PopulationManagerTime");
18+
this.addMeasurement(new Measurement(2500000, DataType.PERIOD_MILLISECONDS), "TotalChunkGenTime");
2219
isProfiling = false;
2320
this.world = w;
2421
}

0 commit comments

Comments
 (0)