package clientdata.visitors.terrain.layers;
import org.apache.mina.core.buffer.IoBuffer;
import clientdata.visitors.TerrainVisitor;
public class AffectorHeightConstant extends HeightLayer {
int transform_type;
//float height_val;
@Override
public float process(float x, float z, float transform_value, float base_height, TerrainVisitor ti) {
if(transform_value == 0)
return base_height;
float result;
switch (transform_type)
{
case 1:
result = transform_value * height_val + base_height;
break;
case 2:
result = base_height - transform_value * height_val;
break;
case 3:
result = base_height + (base_height * height_val - base_height) * transform_value;
break;
case 4:
result = 0;
break;
default:
result = (float) ((1.0 - transform_value) * base_height + transform_value * height_val);
}
return result;
}
@Override
public void loadData(IoBuffer buffer) {
transform_type = buffer.getInt();
height_val = buffer.getFloat();
}
}