From 2fd3abbb1436518eb8e76043d156475218001b12 Mon Sep 17 00:00:00 2001 From: cyberpwn Date: Sun, 12 Sep 2021 08:08:18 -0400 Subject: [PATCH] Remove base noise features --- .../iris/engine/jigsaw/PlannedStructure.java | 29 ++-------------- .../components/MantleObjectComponent.java | 33 ++++--------------- .../volmit/iris/engine/object/IrisObject.java | 2 +- .../engine/object/IrisObjectPlacement.java | 23 ++----------- .../iris/engine/object/ObjectPlaceMode.java | 6 +--- 5 files changed, 14 insertions(+), 79 deletions(-) diff --git a/src/main/java/com/volmit/iris/engine/jigsaw/PlannedStructure.java b/src/main/java/com/volmit/iris/engine/jigsaw/PlannedStructure.java index 4e33c90aa..76bbc4d0d 100644 --- a/src/main/java/com/volmit/iris/engine/jigsaw/PlannedStructure.java +++ b/src/main/java/com/volmit/iris/engine/jigsaw/PlannedStructure.java @@ -90,11 +90,7 @@ public class PlannedStructure { int startHeight = pieces.get(0).getPosition().getY(); for (PlannedPiece i : pieces) { - if (i.getPiece().getPlacementOptions().usesFeatures()) { - place(i, startHeight, options, placer, e); - } else { - post.accept(() -> place(i, startHeight, options, placer, e)); - } + place(i, startHeight, options, placer, e); } } @@ -130,32 +126,13 @@ public class PlannedStructure { height += offset + (v.getH() / 2); - if (options.getMode().equals(ObjectPlaceMode.PAINT) || options.isVacuum()) { + if (options.getMode().equals(ObjectPlaceMode.PAINT)) { height = -1; } int id = rng.i(0, Integer.MAX_VALUE); - int h = vo.place(xx, height, zz, placer, options, rng, (b) + vo.place(xx, height, zz, placer, options, rng, (b) -> e.set(b.getX(), b.getY(), b.getZ(), v.getLoadKey() + "@" + id), null, getData()); - - if (options.isVacuum()) { - double a = Math.max(v.getW(), v.getD()); - IrisFeature f = new IrisFeature(); - f.setConvergeToHeight(h - (v.getH() >> 1) - 1); - f.setBlockRadius(a); - f.setInterpolationRadius(a / 4); - f.setInterpolator(InterpolationMethod.BILINEAR_STARCAST_9); - f.setStrength(1D); - e.set(xx, 0, zz, new IrisFeaturePositional(xx, zz, f)); - } - - if (options.getAddFeatures().isNotEmpty()) { - for (IrisFeaturePotential j : options.getAddFeatures()) { - if (rngf.nextInt(j.getRarity()) == 0) { - e.set(xx, 0, zz, new IrisFeaturePositional(xx, zz, j.getZone())); - } - } - } } public void place(World world) { diff --git a/src/main/java/com/volmit/iris/engine/mantle/components/MantleObjectComponent.java b/src/main/java/com/volmit/iris/engine/mantle/components/MantleObjectComponent.java index 10b2c22e0..080c08eb2 100644 --- a/src/main/java/com/volmit/iris/engine/mantle/components/MantleObjectComponent.java +++ b/src/main/java/com/volmit/iris/engine/mantle/components/MantleObjectComponent.java @@ -43,21 +43,21 @@ public class MantleObjectComponent extends IrisMantleComponent { } @Override - public void generateLayer(MantleWriter writer, int x, int z, Consumer post) { + public void generateLayer(MantleWriter writer, int x, int z) { RNG rng = new RNG(Cache.key(x, z) + seed()); int xxx = 8 + (x << 4); int zzz = 8 + (z << 4); IrisRegion region = getComplex().getRegionStream().get(xxx, zzz); IrisBiome biome = getComplex().getTrueBiomeStreamNoFeatures().get(xxx, zzz); - placeObjects(writer, rng, x, z, biome, region, post); + placeObjects(writer, rng, x, z, biome, region); } @ChunkCoordinates - private void placeObjects(MantleWriter writer, RNG rng, int x, int z, IrisBiome biome, IrisRegion region, Consumer post) { + private void placeObjects(MantleWriter writer, RNG rng, int x, int z, IrisBiome biome, IrisRegion region) { for (IrisObjectPlacement i : biome.getSurfaceObjects()) { if (rng.chance(i.getChance() + rng.d(-0.005, 0.005)) && rng.chance(getComplex().getObjectChanceStream().get(x << 4, z << 4))) { try { - placeObject(writer, rng, x << 4, z << 4, i, post); + placeObject(writer, rng, x << 4, z << 4, i); } catch (Throwable e) { Iris.reportError(e); Iris.error("Failed to place objects in the following biome: " + biome.getName()); @@ -71,7 +71,7 @@ public class MantleObjectComponent extends IrisMantleComponent { for (IrisObjectPlacement i : region.getSurfaceObjects()) { if (rng.chance(i.getChance() + rng.d(-0.005, 0.005)) && rng.chance(getComplex().getObjectChanceStream().get(x << 4, z << 4))) { try { - placeObject(writer, rng, x << 4, z << 4, i, post); + placeObject(writer, rng, x << 4, z << 4, i); } catch (Throwable e) { Iris.reportError(e); Iris.error("Failed to place objects in the following region: " + region.getName()); @@ -84,7 +84,7 @@ public class MantleObjectComponent extends IrisMantleComponent { } @BlockCoordinates - private void placeObject(MantleWriter writer, RNG rng, int x, int z, IrisObjectPlacement objectPlacement, Consumer post) { + private void placeObject(MantleWriter writer, RNG rng, int x, int z, IrisObjectPlacement objectPlacement) { for (int i = 0; i < objectPlacement.getDensity(); i++) { IrisObject v = objectPlacement.getScale().get(rng, objectPlacement.getObject(getComplex(), rng)); if (v == null) { @@ -93,28 +93,9 @@ public class MantleObjectComponent extends IrisMantleComponent { int xx = rng.i(x, x + 15); int zz = rng.i(z, z + 15); int id = rng.i(0, Integer.MAX_VALUE); - - int h = v.place(xx, -1, zz, writer, objectPlacement, rng, + v.place(xx, -1, zz, writer, objectPlacement, rng, (b) -> writer.setData(b.getX(), b.getY(), b.getZ(), v.getLoadKey() + "@" + id), null, getData()); - if (objectPlacement.usesFeatures() && h >= 0) { - if (objectPlacement.isVacuum()) { - double a = Math.max(v.getW(), v.getD()); - IrisFeature f = new IrisFeature(); - f.setConvergeToHeight(h); - f.setBlockRadius(a); - f.setInterpolationRadius(objectPlacement.getVacuumInterpolationRadius()); - f.setInterpolator(objectPlacement.getVacuumInterpolationMethod()); - f.setStrength(1D); - writer.setData(xx, 0, zz, new IrisFeaturePositional(xx, zz, f)); - } - - for (IrisFeaturePotential j : objectPlacement.getAddFeatures()) { - if (j.hasZone(rng, xx >> 4, zz >> 4)) { - writer.setData(xx, 0, zz, new IrisFeaturePositional(xx, zz, j.getZone())); - } - } - } } } } diff --git a/src/main/java/com/volmit/iris/engine/object/IrisObject.java b/src/main/java/com/volmit/iris/engine/object/IrisObject.java index 5ef9175c5..b236d7f77 100644 --- a/src/main/java/com/volmit/iris/engine/object/IrisObject.java +++ b/src/main/java/com/volmit/iris/engine/object/IrisObject.java @@ -528,7 +528,7 @@ public class IrisObject extends IrisRegistrant { } } } - } else if (config.getMode().equals(ObjectPlaceMode.FAST_MAX_HEIGHT) || config.getMode().equals(ObjectPlaceMode.VACUUM) || config.getMode().equals(ObjectPlaceMode.FAST_STILT)) { + } else if (config.getMode().equals(ObjectPlaceMode.FAST_MAX_HEIGHT) || config.getMode().equals(ObjectPlaceMode.FAST_STILT)) { BlockVector offset = new BlockVector(config.getTranslate().getX(), config.getTranslate().getY(), config.getTranslate().getZ()); BlockVector rotatedDimensions = config.getRotation().rotate(new BlockVector(getW(), getH(), getD()), spinx, spiny, spinz).clone(); diff --git a/src/main/java/com/volmit/iris/engine/object/IrisObjectPlacement.java b/src/main/java/com/volmit/iris/engine/object/IrisObjectPlacement.java index 87b96369a..bc8300641 100644 --- a/src/main/java/com/volmit/iris/engine/object/IrisObjectPlacement.java +++ b/src/main/java/com/volmit/iris/engine/object/IrisObjectPlacement.java @@ -63,9 +63,7 @@ public class IrisObjectPlacement { private IrisObjectRotation rotation = new IrisObjectRotation(); @Desc("Limit the max height or min height of placement.") private IrisObjectLimit clamp = new IrisObjectLimit(); - @ArrayType(min = 1, type = IrisFeaturePotential.class) - @Desc("Place additional noise features in the object's place location") - private KList addFeatures = new KList<>(); + @MinNumber(0) @MaxNumber(1) @Desc("The maximum layer level of a snow filter overtop of this placement. Set to 0 to disable. Max of 1.") @@ -89,15 +87,7 @@ public class IrisObjectPlacement { @MinNumber(-1) @Desc("When bore is enabled, lower min-y of the cuboid it removes") private int boreExtendMinY = 0; - @MaxNumber(64) - @MinNumber(4) - @Desc("When vacuum is enabled, define the interpolation radius") - private int vacuumInterpolationRadius = 16; - @MaxNumber(64) - @MinNumber(4) - @Desc("When vacuum is enabled, define the interpolation method") - private InterpolationMethod vacuumInterpolationMethod = InterpolationMethod.BILINEAR_STARCAST_9; - @Desc("If set to true, objects will place on the terrain height, ignoring the water surface.") + @Desc("If set to true, objects will place on the terrain height, ignoring the water surface.") private boolean underwater = false; @Desc("If set to true, objects will place in carvings (such as underground) or under an overhang.") private CarvingMode carvingSupport = CarvingMode.SURFACE_ONLY; @@ -146,7 +136,6 @@ public class IrisObjectPlacement { p.setWarp(warp); p.setBore(bore); p.setMeld(meld); - p.setAddFeatures(addFeatures.copy()); p.setWaterloggable(waterloggable); p.setOnwater(onwater); p.setSmartBore(smartBore); @@ -193,14 +182,6 @@ public class IrisObjectPlacement { return g.getData().getObjectLoader().load(place.get(random.nextInt(place.size()))); } - public boolean isVacuum() { - return getMode().equals(ObjectPlaceMode.VACUUM); - } - - public boolean usesFeatures() { - return isVacuum() || getAddFeatures().isNotEmpty(); - } - public boolean matches(IrisTreeSize size, TreeType type) { for (IrisTree i : getTrees()) { if (i.matches(size, type)) { diff --git a/src/main/java/com/volmit/iris/engine/object/ObjectPlaceMode.java b/src/main/java/com/volmit/iris/engine/object/ObjectPlaceMode.java index caf2f278e..3c1e251dc 100644 --- a/src/main/java/com/volmit/iris/engine/object/ObjectPlaceMode.java +++ b/src/main/java/com/volmit/iris/engine/object/ObjectPlaceMode.java @@ -52,9 +52,5 @@ public enum ObjectPlaceMode { @Desc("Samples the height of the terrain at every x,z position of your object and pushes it down to the surface. It's pretty much like a melt function over the terrain.") - PAINT, - - @Desc("Applies multiple terrain features into the parallax layer before this object places to distort the height, essentially vacuuming the terrain's heightmap closer to the bottom of this object. Uses MAX_HEIGHT to place") - - VACUUM + PAINT }