public double Process(double rpm, double boost) {
double input;
switch (Input) {
case ControllerInput.Rpms:
input = rpm;
break;
default:
input = 0d;
break;
}
if (!double.IsNaN(UpLimit) && UpLimit < input) {
input = UpLimit;
}
if (!double.IsNaN(DownLimit) && DownLimit > input) {
input = DownLimit;
}
var value = Lut?.InterpolateLinear(input) ?? 0d;
switch (Combinator) {
case Combinator.Add:
return boost + value;
case Combinator.Mult:
return boost * value;
default:
return boost;
}
}
}