package clientdata.visitors.terrain.layers;
import org.apache.mina.core.buffer.IoBuffer;
import clientdata.visitors.TerrainVisitor;
public class AffectorHeightTerrace extends HeightLayer {
float flat_ratio;
float height_delta;
@Override
public void loadData(IoBuffer buffer) throws Exception {
flat_ratio = buffer.getFloat();
height_delta = buffer.getFloat();
height_val = height_delta;
}
@Override
public float process(float x, float y, float transform_value, float base_value, TerrainVisitor ti) {
if (transform_value == 0)
return base_value;
if (height_delta <= 0)
return base_value;
float var1 = base_value % height_delta;
if (base_value == 0) {
var1 += height_delta;
}
float var2 = base_value - var1;
float var3 = height_delta * flat_ratio + var2;
float var4 = height_delta + var2;
if (base_value > var3) {
var2 = (base_value - var3) / (var4 - var3) * (var4 - var2) + var2;
}
return (var2 - base_value) * transform_value + base_value;
}
}