mirror of
https://github.com/PolyhedralDev/Terra.git
synced 2025-07-03 16:35:50 +00:00
implement NoiseLocator
This commit is contained in:
parent
cefa4369f2
commit
1522e6b57d
@ -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;
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user