implement NoiseLocator

This commit is contained in:
dfsek 2021-07-28 09:12:22 -07:00
parent cefa4369f2
commit 1522e6b57d

View File

@ -0,0 +1,31 @@
package com.dfsek.terra.addons.feature.locator.locators;
import com.dfsek.terra.api.noise.NoiseSampler;
import com.dfsek.terra.api.structure.feature.BinaryColumn;
import com.dfsek.terra.api.structure.feature.Locator;
import com.dfsek.terra.api.world.Column;
import net.jafama.FastMath;
import java.util.List;
public class NoiseLocator implements Locator {
private final List<NoiseSampler> samplers;
public NoiseLocator(List<NoiseSampler> samplers) {
this.samplers = samplers;
}
@Override
public BinaryColumn getSuitableCoordinates(Column column) {
BinaryColumn results = new BinaryColumn(column.getMinY(), column.getMaxY());
long seed = column.getWorld().getSeed();
samplers.forEach(sampler -> {
int y = FastMath.floorToInt(sampler.getNoiseSeeded(seed, column.getX(), column.getX()));
if(y >= column.getMaxY() || y < column.getMinY()) return;
results.set(y);
});
return results;
}
}