52 lines
1.1 KiB
Java
52 lines
1.1 KiB
Java
package net.minecraft.util;
|
|
|
|
import it.unimi.dsi.fastutil.floats.Float2FloatFunction;
|
|
import java.util.function.Function;
|
|
|
|
public interface ToFloatFunction<C> {
|
|
ToFloatFunction<Float> IDENTITY = createUnlimited(f -> f);
|
|
|
|
float apply(C object);
|
|
|
|
float minValue();
|
|
|
|
float maxValue();
|
|
|
|
static ToFloatFunction<Float> createUnlimited(Float2FloatFunction wrapped) {
|
|
return new ToFloatFunction<Float>() {
|
|
public float apply(Float float_) {
|
|
return wrapped.apply(float_);
|
|
}
|
|
|
|
@Override
|
|
public float minValue() {
|
|
return Float.NEGATIVE_INFINITY;
|
|
}
|
|
|
|
@Override
|
|
public float maxValue() {
|
|
return Float.POSITIVE_INFINITY;
|
|
}
|
|
};
|
|
}
|
|
|
|
default <C2> ToFloatFunction<C2> comap(Function<C2, C> converter) {
|
|
final ToFloatFunction<C> toFloatFunction = this;
|
|
return new ToFloatFunction<C2>() {
|
|
@Override
|
|
public float apply(C2 object) {
|
|
return toFloatFunction.apply((C)converter.apply(object));
|
|
}
|
|
|
|
@Override
|
|
public float minValue() {
|
|
return toFloatFunction.minValue();
|
|
}
|
|
|
|
@Override
|
|
public float maxValue() {
|
|
return toFloatFunction.maxValue();
|
|
}
|
|
};
|
|
}
|
|
}
|