This commit is contained in:
Daniel Mills
2021-07-17 00:36:16 -04:00
parent 595ba92f06
commit 6f4363e95b
24 changed files with 352 additions and 564 deletions

View File

@@ -160,8 +160,7 @@ public class IrisEngine extends BlockPopulator implements Engine {
Hunk<BlockData> blocks = vblocks;
switch(getDimension().getTerrainMode())
{
switch (getDimension().getTerrainMode()) {
case NORMAL -> {
getFramework().getEngineParallax().generateParallaxArea(x >> 4, z >> 4);
getFramework().getBiomeActuator().actuate(x, z, vbiomes);

View File

@@ -117,7 +117,7 @@ public class IrisEngineFramework implements EngineFramework {
@Override
public EngineActuator<BlockData> getTerrainActuator() {
return switch (getEngine().getDimension().getTerrainMode()){
return switch (getEngine().getDimension().getTerrainMode()) {
case NORMAL -> getTerrainNormalActuator();
case ISLANDS -> getTerrainIslandActuator();
};

View File

@@ -22,7 +22,6 @@ import com.googlecode.concurrentlinkedhashmap.ConcurrentLinkedHashMap;
import com.volmit.iris.engine.framework.Engine;
import com.volmit.iris.engine.framework.EngineParallaxManager;
import com.volmit.iris.engine.object.IrisFeaturePositional;
import com.volmit.iris.engine.stream.utility.CachedStream2D;
import com.volmit.iris.util.collection.KList;
import com.volmit.iris.util.scheduling.IrisLock;
import lombok.Getter;

View File

@@ -18,13 +18,11 @@
package com.volmit.iris.engine.actuator;
import com.volmit.iris.Iris;
import com.volmit.iris.engine.framework.Engine;
import com.volmit.iris.engine.framework.EngineAssignedActuator;
import com.volmit.iris.engine.hunk.Hunk;
import com.volmit.iris.engine.object.IrisBiome;
import com.volmit.iris.util.collection.KList;
import com.volmit.iris.util.math.M;
import com.volmit.iris.util.math.RNG;
import com.volmit.iris.util.scheduling.PrecisionStopwatch;
import lombok.Getter;
@@ -64,13 +62,11 @@ public class IrisTerrainIslandActuator extends EngineAssignedActuator<BlockData>
realX = (int) modX(xf + x);
realZ = (int) modZ(zf + z);
if(getComplex().getIslandStream().get(realX, realZ))
{
if (getComplex().getIslandStream().get(realX, realZ)) {
surface = getComplex().getIslandHeightStream().get(realX, realZ).intValue();
depth = getComplex().getIslandDepthStream().get(realX, realZ).intValue();
for(i = surface - depth; i < surface; i++)
{
for (i = surface - depth; i < surface; i++) {
h.set(xf, i, zf, BEDROCK);
}
}

View File

@@ -22,7 +22,6 @@ import com.google.common.util.concurrent.AtomicDouble;
import com.google.gson.Gson;
import com.volmit.iris.Iris;
import com.volmit.iris.core.IrisDataManager;
import com.volmit.iris.engine.hunk.storage.AtomicDoubleHunk;
import com.volmit.iris.engine.object.IrisRegistrant;
import com.volmit.iris.util.collection.KList;
import com.volmit.iris.util.collection.KMap;

View File

@@ -31,14 +31,12 @@ import com.volmit.iris.engine.data.DirectWorldWriter;
import com.volmit.iris.engine.data.chunk.TerrainChunk;
import com.volmit.iris.engine.hunk.Hunk;
import com.volmit.iris.engine.object.IrisBiome;
import com.volmit.iris.engine.object.IrisBiomeCustom;
import com.volmit.iris.engine.object.IrisDimension;
import com.volmit.iris.engine.object.IrisPosition;
import com.volmit.iris.engine.parallel.BurstExecutor;
import com.volmit.iris.engine.parallel.MultiBurst;
import com.volmit.iris.util.collection.KList;
import com.volmit.iris.util.collection.KMap;
import com.volmit.iris.util.collection.KSet;
import com.volmit.iris.util.fakenews.FakeWorld;
import com.volmit.iris.util.format.C;
import com.volmit.iris.util.format.Form;
@@ -464,8 +462,7 @@ public class EngineCompositeGenerator extends ChunkGenerator implements IrisAcce
generated++;
ps.end();
if(IrisSettings.get().getGeneral().isDebug())
{
if (IrisSettings.get().getGeneral().isDebug()) {
Iris.debug("Chunk " + C.GREEN + x + "," + z + C.LIGHT_PURPLE + " in " + C.YELLOW + Form.duration(ps.getMillis(), 2) + C.LIGHT_PURPLE + " Rate: " + C.BLUE + Form.f(getGeneratedPerSecond(), 0) + "/s");
}

View File

@@ -199,11 +199,10 @@ public interface EngineParallaxManager extends DataProvider, IObjectPlacer {
IrisLock getFeatureLock();
default void forEachFeature(double x, double z, Consumer<IrisFeaturePositional> f) {
long key = Cache.key(((int)x)>>4, ((int)z) >> 4);
long key = Cache.key(((int) x) >> 4, ((int) z) >> 4);
for(IrisFeaturePositional ipf : getFeatureCache().compute(key, (ke, v) -> {
if(v != null)
{
for (IrisFeaturePositional ipf : getFeatureCache().compute(key, (ke, v) -> {
if (v != null) {
return v;
}
@@ -226,8 +225,7 @@ public interface EngineParallaxManager extends DataProvider, IObjectPlacer {
ParallaxChunkMeta m = getParallaxAccess().getMetaR(i + cx, j + cz);
try {
synchronized (m.getFeatures())
{
synchronized (m.getFeatures()) {
for (IrisFeaturePositional k : m.getFeatures()) {
if (k.shouldFilter(x, z)) {
pos.add(k);
@@ -244,16 +242,14 @@ public interface EngineParallaxManager extends DataProvider, IObjectPlacer {
getFeatureLock().unlock();
return pos;
}))
{
})) {
f.accept(ipf);
}
}
@SuppressWarnings("SynchronizationOnLocalVariableOrMethodParameter")
default void generateParallaxArea(int x, int z) {
if(!getEngine().getDimension().isPlaceObjects())
{
if (!getEngine().getDimension().isPlaceObjects()) {
return;
}

View File

@@ -354,9 +354,8 @@ public class IrisInterpolation {
//@done
}
public static double getTrilinear(int x, int y, int z, double rad, NoiseProvider3 n)
{
return getTrilinear(x,y,z,rad,rad,rad,n);
public static double getTrilinear(int x, int y, int z, double rad, NoiseProvider3 n) {
return getTrilinear(x, y, z, rad, rad, rad, n);
}
public static double getTrilinear(int x, int y, int z, double radx, double rady, double radz, NoiseProvider3 n) {
@@ -387,7 +386,7 @@ public class IrisInterpolation {
}
public static double getTricubic(int x, int y, int z, double rad, NoiseProvider3 n) {
return getTricubic(x,y,z,rad,rad,rad,n);
return getTricubic(x, y, z, rad, rad, rad, n);
}
public static double getTricubic(int x, int y, int z, double radx, double rady, double radz, NoiseProvider3 n) {
@@ -841,19 +840,19 @@ public class IrisInterpolation {
}
public static double getNoise3D(InterpolationMethod3D method, int x, int y, int z, double radx, double rady, double radz, NoiseProvider3 n) {
return switch (method){
case TRILINEAR -> getTrilinear(x,y,z,radx, rady, radz, n);
case TRICUBIC -> getTricubic(x,y,z,radx, rady, radz, n);
case TRIHERMITE -> getTrihermite(x,y,z,radx, rady, radz, n);
return switch (method) {
case TRILINEAR -> getTrilinear(x, y, z, radx, rady, radz, n);
case TRICUBIC -> getTricubic(x, y, z, radx, rady, radz, n);
case TRIHERMITE -> getTrihermite(x, y, z, radx, rady, radz, n);
};
}
public static double getNoise3D(InterpolationMethod3D method, int x, int y, int z, double rad, NoiseProvider3 n) {
return switch (method){
case TRILINEAR -> getTrilinear(x,y,z,rad, rad, rad, n);
case TRICUBIC -> getTricubic(x,y,z,rad, rad, rad, n);
case TRIHERMITE -> getTrihermite(x,y,z,rad, rad, rad, n);
return switch (method) {
case TRILINEAR -> getTrilinear(x, y, z, rad, rad, rad, n);
case TRICUBIC -> getTricubic(x, y, z, rad, rad, rad, n);
case TRIHERMITE -> getTrihermite(x, y, z, rad, rad, rad, n);
};
}

View File

@@ -25,8 +25,6 @@ import com.volmit.iris.engine.framework.EngineAssignedModifier;
import com.volmit.iris.engine.hunk.Hunk;
import com.volmit.iris.engine.object.IrisBiome;
import com.volmit.iris.engine.object.common.CaveResult;
import com.volmit.iris.engine.parallel.BurstExecutor;
import com.volmit.iris.engine.parallel.MultiBurst;
import com.volmit.iris.util.math.RNG;
import com.volmit.iris.util.scheduling.PrecisionStopwatch;
import org.bukkit.Material;

View File

@@ -450,15 +450,13 @@ public class IrisBiome extends IrisRegistrant implements IRare {
int gg = 0;
for(IrisObjectPlacement i : getObjects())
{
for(IrisObject j : data.getObjectLoader().loadAll(i.getPlace()))
{
for (IrisObjectPlacement i : getObjects()) {
for (IrisObject j : data.getObjectLoader().loadAll(i.getPlace())) {
gg = Math.max(gg, j.getH());
}
}
return maxHeight + gg+3;
return maxHeight + gg + 3;
});
}

View File

@@ -49,8 +49,7 @@ public class IrisStyledRange {
return min;
}
if(style.isFlat())
{
if (style.isFlat()) {
return M.lerp(min, max, 0.5);
}

View File

@@ -30,7 +30,6 @@ import lombok.Data;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.function.Function;
@AllArgsConstructor

View File

@@ -65,13 +65,11 @@ public interface ProceduralStream<T> extends ProceduralLayer, Interpolated<T> {
return new FunctionStream<>(f, f2, helper);
}
default ProceduralStream<Boolean> chance(double chance)
{
default ProceduralStream<Boolean> chance(double chance) {
return of((x, z) -> getDouble(x, z) < chance, Interpolated.BOOLEAN);
}
default ProceduralStream<Boolean> seededChance(RNG brng, long rootSeed, double chance)
{
default ProceduralStream<Boolean> seededChance(RNG brng, long rootSeed, double chance) {
RNG rng = brng.nextParallelRNG(rootSeed - 3995L);
return of((x, z) -> {
double ch = getDouble(x, z);
@@ -365,11 +363,10 @@ public interface ProceduralStream<T> extends ProceduralLayer, Interpolated<T> {
return new FittedStream<T>(this, min, max);
}
default ProceduralStream<Double> style(RNG rng, IrisStyledRange range)
{
default ProceduralStream<Double> style(RNG rng, IrisStyledRange range) {
return ProceduralStream.of((x, z) -> {
double d = getDouble(x, z);
return range.get(rng,d, -d);
return range.get(rng, d, -d);
}, Interpolated.DOUBLE);
}

View File

@@ -18,8 +18,8 @@
package com.volmit.iris.engine.stream.interpolation;
import com.volmit.iris.engine.interpolation.IrisInterpolation;
import com.volmit.iris.engine.interpolation.InterpolationMethod;
import com.volmit.iris.engine.interpolation.IrisInterpolation;
import com.volmit.iris.engine.stream.BasicStream;
import com.volmit.iris.engine.stream.ProceduralStream;
import com.volmit.iris.util.function.NoiseProvider;

View File

@@ -24,8 +24,6 @@ import com.volmit.iris.engine.cache.Cache;
import com.volmit.iris.engine.stream.BasicStream;
import com.volmit.iris.engine.stream.ProceduralStream;
import java.util.concurrent.atomic.AtomicInteger;
public class CachedStream2D<T> extends BasicStream<T> implements ProceduralStream<T> {
private final ProceduralStream<T> stream;
private final ConcurrentLinkedHashMap<Long, T> cache;
@@ -52,8 +50,7 @@ public class CachedStream2D<T> extends BasicStream<T> implements ProceduralStrea
@Override
public T get(double x, double z) {
if(IrisComplex.cacheLock.get())
{
if (IrisComplex.cacheLock.get()) {
return stream.get((int) x, (int) z);
}