actually register overridden vars

This commit is contained in:
dfsek
2021-01-27 20:06:40 -07:00
parent dfec463765
commit 2fb30322ff
2 changed files with 6 additions and 9 deletions
@@ -48,16 +48,12 @@ public class GeneratorBuilder {
private double blendWeight; private double blendWeight;
private Map<String, Double> variables = new HashMap<>();
public WorldGenerator build(long seed) { public WorldGenerator build(long seed) {
synchronized(gens) { synchronized(gens) {
return gens.computeIfAbsent(seed, k -> { return gens.computeIfAbsent(seed, k -> {
NoiseSampler noise; NoiseSampler noise;
NoiseSampler elevation; NoiseSampler elevation;
NoiseSampler carving; NoiseSampler carving;
Scope biomeScope = new Scope().withParent(varScope);
variables.forEach((id, val) -> biomeScope.create(id).setValue(val));
try { try {
noise = new ExpressionSampler(noiseEquation, varScope, seed, noiseBuilderMap); noise = new ExpressionSampler(noiseEquation, varScope, seed, noiseBuilderMap);
elevation = elevationEquation == null ? new ConstantSampler(0) : new ExpressionSampler(elevationEquation, varScope, seed, noiseBuilderMap); elevation = elevationEquation == null ? new ConstantSampler(0) : new ExpressionSampler(elevationEquation, varScope, seed, noiseBuilderMap);
@@ -70,10 +66,6 @@ public class GeneratorBuilder {
} }
} }
public void setVariables(Map<String, Double> variables) {
this.variables = variables;
}
public void setBlendWeight(double blendWeight) { public void setBlendWeight(double blendWeight) {
this.blendWeight = blendWeight; this.blendWeight = blendWeight;
} }
@@ -6,6 +6,7 @@ import com.dfsek.terra.biome.UserDefinedBiome;
import com.dfsek.terra.config.builder.GeneratorBuilder; import com.dfsek.terra.config.builder.GeneratorBuilder;
import com.dfsek.terra.config.pack.ConfigPack; import com.dfsek.terra.config.pack.ConfigPack;
import com.dfsek.terra.config.templates.BiomeTemplate; import com.dfsek.terra.config.templates.BiomeTemplate;
import parsii.eval.Scope;
public class BiomeFactory implements TerraFactory<BiomeTemplate, TerraBiome> { public class BiomeFactory implements TerraFactory<BiomeTemplate, TerraBiome> {
private final ConfigPack pack; private final ConfigPack pack;
@@ -23,7 +24,11 @@ public class BiomeFactory implements TerraFactory<BiomeTemplate, TerraBiome> {
generatorBuilder.setNoiseBuilderMap(template.getPack().getTemplate().getNoiseBuilderMap()); generatorBuilder.setNoiseBuilderMap(template.getPack().getTemplate().getNoiseBuilderMap());
generatorBuilder.setPalettes(template.getPalette()); generatorBuilder.setPalettes(template.getPalette());
generatorBuilder.setSlantPalettes(template.getSlantPalette()); generatorBuilder.setSlantPalettes(template.getSlantPalette());
generatorBuilder.setVarScope(pack.getVarScope());
Scope vars = new Scope().withParent(pack.getVarScope());
template.getVariables().forEach((id, val) -> vars.create(id).setValue(val));
generatorBuilder.setVarScope(vars);
generatorBuilder.setInterpolateElevation(template.interpolateElevation()); generatorBuilder.setInterpolateElevation(template.interpolateElevation());
generatorBuilder.setNoise2d(template.isNoise2d()); generatorBuilder.setNoise2d(template.isNoise2d());
generatorBuilder.setBase(template.getNoise2dBase()); generatorBuilder.setBase(template.getNoise2dBase());