Solving seed collisions on generators?

This commit is contained in:
Vatuu 2022-08-26 17:54:56 +02:00
parent 91d60e56df
commit cf85d300f4
No known key found for this signature in database
GPG Key ID: C6F07B79B2ED9150

View File

@ -91,6 +91,14 @@ public class IrisGenerator extends IrisRegistrant {
@Desc("The noise gen for cliff height.") @Desc("The noise gen for cliff height.")
private IrisNoiseGenerator cliffHeightGenerator = new IrisNoiseGenerator(); private IrisNoiseGenerator cliffHeightGenerator = new IrisNoiseGenerator();
boolean seedAdjusted = false;
public long getSeed() {
if(!seedAdjusted)
seed += (long)(cliffHeightMax + cliffHeightMin + (offsetX * offsetZ) - zoom + (multiplicitive ? 82 : 21) * cellPercentSize);
return seed;
}
public double getMax() { public double getMax() {
return opacity; return opacity;
} }
@ -213,24 +221,24 @@ public class IrisGenerator extends IrisRegistrant {
return 0; return 0;
} }
int hc = (int) ((cliffHeightMin * 10) + 10 + cliffHeightMax * seed + offsetX + offsetZ); int hc = (int) ((cliffHeightMin * 10) + 10 + cliffHeightMax * getSeed() + offsetX + offsetZ);
double h = multiplicitive ? 1 : 0; double h = multiplicitive ? 1 : 0;
double tp = 0; double tp = 0;
if(composite.size() == 1) { if(composite.size() == 1) {
if(multiplicitive) { if(multiplicitive) {
h *= composite.get(0).getNoise(seed + superSeed + hc, (rx + offsetX) / zoom, (rz + offsetZ) / zoom, getLoader()); h *= composite.get(0).getNoise(getSeed() + superSeed + hc, (rx + offsetX) / zoom, (rz + offsetZ) / zoom, getLoader());
} else { } else {
tp += composite.get(0).getOpacity(); tp += composite.get(0).getOpacity();
h += composite.get(0).getNoise(seed + superSeed + hc, (rx + offsetX) / zoom, (rz + offsetZ) / zoom, getLoader()); h += composite.get(0).getNoise(getSeed() + superSeed + hc, (rx + offsetX) / zoom, (rz + offsetZ) / zoom, getLoader());
} }
} else { } else {
for(IrisNoiseGenerator i : composite) { for(IrisNoiseGenerator i : composite) {
if(multiplicitive) { if(multiplicitive) {
h *= i.getNoise(seed + superSeed + hc, (rx + offsetX) / zoom, (rz + offsetZ) / zoom, getLoader()); h *= i.getNoise(getSeed() + superSeed + hc, (rx + offsetX) / zoom, (rz + offsetZ) / zoom, getLoader());
} else { } else {
tp += i.getOpacity(); tp += i.getOpacity();
h += i.getNoise(seed + superSeed + hc, (rx + offsetX) / zoom, (rz + offsetZ) / zoom, getLoader()); h += i.getNoise(getSeed() + superSeed + hc, (rx + offsetX) / zoom, (rz + offsetZ) / zoom, getLoader());
} }
} }
} }
@ -248,8 +256,8 @@ public class IrisGenerator extends IrisRegistrant {
} }
public double cell(double rx, double rz, double v, double superSeed) { public double cell(double rx, double rz, double v, double superSeed) {
getCellGenerator(seed + 46222).setShuffle(getCellFractureShuffle()); getCellGenerator(getSeed() + 46222).setShuffle(getCellFractureShuffle());
return getCellGenerator(seed + 46222).getDistance(rx / getCellFractureZoom(), rz / getCellFractureZoom()) > getCellPercentSize() ? (v * getCellFractureHeight()) : v; return getCellGenerator(getSeed() + 46222).getDistance(rx / getCellFractureZoom(), rz / getCellFractureZoom()) > getCellPercentSize() ? (v * getCellFractureHeight()) : v;
} }
private boolean hasCellCracks() { private boolean hasCellCracks() {
@ -257,8 +265,8 @@ public class IrisGenerator extends IrisRegistrant {
} }
public double getCliffHeight(double rx, double rz, double superSeed) { public double getCliffHeight(double rx, double rz, double superSeed) {
int hc = (int) ((cliffHeightMin * 10) + 10 + cliffHeightMax * seed + offsetX + offsetZ); int hc = (int) ((cliffHeightMin * 10) + 10 + cliffHeightMax * getSeed() + offsetX + offsetZ);
double h = cliffHeightGenerator.getNoise((long) (seed + superSeed + hc), (rx + offsetX) / zoom, (rz + offsetZ) / zoom, getLoader()); double h = cliffHeightGenerator.getNoise((long) (getSeed() + superSeed + hc), (rx + offsetX) / zoom, (rz + offsetZ) / zoom, getLoader());
return IrisInterpolation.lerp(cliffHeightMin, cliffHeightMax, h); return IrisInterpolation.lerp(cliffHeightMin, cliffHeightMax, h);
} }