Fixes (for now)

This commit is contained in:
Daniel Mills
2020-01-17 00:11:35 -05:00
parent 05eb0b20be
commit 165517608d
12 changed files with 174 additions and 177 deletions

View File

@@ -14,6 +14,7 @@ import ninja.bytecode.shuriken.collections.GMap;
import ninja.bytecode.shuriken.execution.J;
import ninja.bytecode.shuriken.json.JSONArray;
import ninja.bytecode.shuriken.json.JSONObject;
import ninja.bytecode.shuriken.logging.L;
import ninja.bytecode.shuriken.math.CNG;
import ninja.bytecode.shuriken.math.M;
import ninja.bytecode.shuriken.math.RNG;
@@ -26,17 +27,17 @@ public class IrisBiome
//@builder
private static final IrisBiome OCEAN = new IrisBiome("Ocean", Biome.OCEAN)
.height(-0.2)
.height(-0.4)
.coreBiome()
.surface(MB.of(Material.SAND), MB.of(Material.SAND), MB.of(Material.SAND), MB.of(Material.CLAY), MB.of(Material.GRAVEL))
.simplexSurface();
private static final IrisBiome FROZEN_OCEAN = new IrisBiome("Frozen Ocean", Biome.FROZEN_OCEAN)
.height(-0.16)
.height(-0.4)
.coreBiome()
.surface(MB.of(Material.SAND), MB.of(Material.SAND), MB.of(Material.SAND), MB.of(Material.CLAY), MB.of(Material.GRAVEL))
.simplexSurface();
private static final IrisBiome DEEP_OCEAN = new IrisBiome("Deep Ocean", Biome.DEEP_OCEAN)
.height(-0.4)
.height(-0.6)
.coreBiome()
.surface(MB.of(Material.SAND), MB.of(Material.CLAY), MB.of(Material.GRAVEL))
.simplexSurface();
@@ -176,6 +177,57 @@ public class IrisBiome
fromJSON(o, true);
}
public void seal(RNG rng)
{
if(simplexScatter)
{
poly = new PolygonGenerator.EnumPolygonGenerator<MB>(rng, 0.125, 2, getSurface().toArray(new MB[getSurface().size()]), (g) ->
{
return g.scale(0.09 * surfaceScale).fractureWith(new CNG(rng.nextParallelRNG(56), 1D, 2).scale(0.0955), 55);
});
}
else
{
poly = new PolygonGenerator.EnumPolygonGenerator<MB>(rng, 15.05, 2, getSurface().toArray(new MB[getSurface().size()]), (g) ->
{
return g.scale(surfaceScale).fractureWith(new CNG(rng.nextParallelRNG(55), 1D, 2).scale(0.0155), 224);
});
}
if(simplexScatterSub)
{
polySub = new PolygonGenerator.EnumPolygonGenerator<MB>(rng, 0.125, 2, getDirt().toArray(new MB[getDirt().size()]), (g) ->
{
return g.scale(0.06 * subSurfaceScale).fractureWith(new CNG(rng.nextParallelRNG(526), 1D, 2).scale(0.0955), 55);
});
}
else
{
polySub = new PolygonGenerator.EnumPolygonGenerator<MB>(rng, 15.05, 2, getDirt().toArray(new MB[getDirt().size()]), (g) ->
{
return g.scale(subSurfaceScale).fractureWith(new CNG(rng.nextParallelRNG(515), 1D, 2).scale(0.0155), 224);
});
}
if(simplexScatterRock)
{
polyRock = new PolygonGenerator.EnumPolygonGenerator<MB>(rng, 0.125, 2, getRock().toArray(new MB[getRock().size()]), (g) ->
{
return g.scale(0.08 * rockScale).fractureWith(new CNG(rng.nextParallelRNG(562), 1D, 2).scale(0.0955), 55);
});
}
else
{
polyRock = new PolygonGenerator.EnumPolygonGenerator<MB>(rng, 15.05, 2, getRock().toArray(new MB[getRock().size()]), (g) ->
{
return g.scale(rockScale).fractureWith(new CNG(rng.nextParallelRNG(551), 1D, 2).scale(0.0155), 224);
});
}
}
public void fromJSON(JSONObject o, boolean chain)
{
name = o.getString("name");
@@ -462,29 +514,19 @@ public class IrisBiome
{
double wx = x + 1000D;
double wz = z + 1000D;
if(polySub == null)
{
L.w(getName() + " is not sealed!");
}
if(simplexScatter)
{
if(poly == null)
{
poly = new PolygonGenerator.EnumPolygonGenerator<MB>(rng, 0.125, 2, getSurface().toArray(new MB[getSurface().size()]), (g) ->
{
return g.scale(0.09 * surfaceScale).fractureWith(new CNG(rng.nextParallelRNG(56), 1D, 2).scale(0.0955), 55);
});
}
return poly.getChoice(wx / 3, wz / 3);
}
if(scatterSurface)
{
if(poly == null)
{
poly = new PolygonGenerator.EnumPolygonGenerator<MB>(rng, 15.05, 2, getSurface().toArray(new MB[getSurface().size()]), (g) ->
{
return g.scale(surfaceScale).fractureWith(new CNG(rng.nextParallelRNG(55), 1D, 2).scale(0.0155), 224);
});
}
return poly.getChoice(wx * 0.2D, wz * 0.2D);
}
@@ -495,29 +537,19 @@ public class IrisBiome
{
double wx = x + 1000D;
double wz = z + 1000D;
if(polySub == null)
{
L.w(getName() + " is not sealed!");
}
if(simplexScatterSub)
{
if(polySub == null)
{
polySub = new PolygonGenerator.EnumPolygonGenerator<MB>(rng, 0.125, 2, getDirt().toArray(new MB[getDirt().size()]), (g) ->
{
return g.scale(0.06 * subSurfaceScale).fractureWith(new CNG(rng.nextParallelRNG(526), 1D, 2).scale(0.0955), 55);
});
}
return polySub.getChoice(wx / 3, i / 3, wz / 3);
}
if(scatterSurfaceSub)
{
if(polySub == null)
{
polySub = new PolygonGenerator.EnumPolygonGenerator<MB>(rng, 15.05, 2, getDirt().toArray(new MB[getDirt().size()]), (g) ->
{
return g.scale(subSurfaceScale).fractureWith(new CNG(rng.nextParallelRNG(515), 1D, 2).scale(0.0155), 224);
});
}
return polySub.getChoice(wx * 0.2D, i / 3, wz * 0.2D);
}
@@ -528,29 +560,19 @@ public class IrisBiome
{
double wx = x + 1000D;
double wz = z + 1000D;
if(polySub == null)
{
L.w(getName() + " is not sealed!");
}
if(simplexScatterRock)
{
if(polyRock == null)
{
polyRock = new PolygonGenerator.EnumPolygonGenerator<MB>(rng, 0.125, 2, getRock().toArray(new MB[getRock().size()]), (g) ->
{
return g.scale(0.08 * rockScale).fractureWith(new CNG(rng.nextParallelRNG(562), 1D, 2).scale(0.0955), 55);
});
}
return polyRock.getChoice(wx / 3, i / 3, wz / 3);
}
if(scatterSurfaceRock)
{
if(polyRock == null)
{
polyRock = new PolygonGenerator.EnumPolygonGenerator<MB>(rng, 15.05, 2, getRock().toArray(new MB[getRock().size()]), (g) ->
{
return g.scale(rockScale).fractureWith(new CNG(rng.nextParallelRNG(551), 1D, 2).scale(0.0155), 224);
});
}
return polyRock.getChoice(wx * 0.2D, i * 0.2D, wz * 0.2D);
}
@@ -824,5 +846,4 @@ public class IrisBiome
return false;
return true;
}
}

View File

@@ -68,26 +68,14 @@ public class IrisDimension
private GList<IrisBiome> biomesFromArray(JSONArray a) throws JSONException, IOException
{
GList<IrisBiome> b = new GList<>();
TaskExecutor ex = new TaskExecutor(Iris.settings.performance.compilerThreads, Iris.settings.performance.compilerPriority, "Iris Loader");
TaskGroup g = ex.startWork();
ReentrantLock lock = new ReentrantLock();
for(int i = 0; i < a.length(); i++)
{
int ii = i;
g.queue(() ->
{
IrisBiome bb = Iris.getController(PackController.class).loadBiome(a.getString(ii));
lock.lock();
Iris.getController(PackController.class).registerBiome(a.getString(ii), bb);
b.add(bb);
lock.unlock();
});
IrisBiome bb = Iris.getController(PackController.class).loadBiome(a.getString(ii));
Iris.getController(PackController.class).registerBiome(a.getString(ii), bb);
b.add(bb);
}
g.execute();
ex.close();
return b;
}