User defined noise functions

This commit is contained in:
dfsek
2020-11-16 11:15:50 -07:00
parent 9125590a02
commit 022c95a862
12 changed files with 300 additions and 56 deletions

View File

@@ -0,0 +1,7 @@
package com.dfsek.terra.math;
import parsii.eval.Function;
public interface NoiseFunction extends Function {
void setNoise(long seed);
}

View File

@@ -1,15 +1,20 @@
package com.dfsek.terra.math;
import com.dfsek.terra.config.base.ConfigUtil;
import com.dfsek.terra.generation.config.NoiseBuilder;
import org.polydev.gaea.math.FastNoiseLite;
import parsii.eval.Expression;
import parsii.eval.Function;
import java.util.List;
public class NoiseFunction2 implements Function {
public class NoiseFunction2 implements NoiseFunction {
private final Cache cache = new Cache();
private FastNoiseLite gen;
private final NoiseBuilder builder;
public NoiseFunction2(NoiseBuilder builder) {
this.builder = builder;
}
@Override
public int getNumberOfArguments() {
@@ -26,8 +31,9 @@ public class NoiseFunction2 implements Function {
return true;
}
public void setNoise(FastNoiseLite gen) {
this.gen = gen;
@Override
public void setNoise(long seed) {
this.gen = builder.build((int) seed);
}
private final class Cache {

View File

@@ -1,13 +1,18 @@
package com.dfsek.terra.math;
import com.dfsek.terra.generation.config.NoiseBuilder;
import org.polydev.gaea.math.FastNoiseLite;
import parsii.eval.Expression;
import parsii.eval.Function;
import java.util.List;
public class NoiseFunction3 implements Function {
public class NoiseFunction3 implements NoiseFunction {
private FastNoiseLite gen;
private final NoiseBuilder builder;
public NoiseFunction3(NoiseBuilder builder) {
this.builder = builder;
}
@Override
public int getNumberOfArguments() {
@@ -24,7 +29,8 @@ public class NoiseFunction3 implements Function {
return true;
}
public void setNoise(FastNoiseLite gen) {
this.gen = gen;
@Override
public void setNoise(long seed) {
this.gen = builder.build((int) seed);
}
}