public VehicleDriveControls GetControlFromDeltas(AxisDeltas axisDeltas, VehicleDriveControls currentState, float deltaTime) { float resultingAxis1Value = AxisValue(currentState.Axis1, axisDeltas.Delta1, Axis1RateOfChange, deltaTime); float resultingAxis2Value = AxisValue(currentState.Axis2, axisDeltas.Delta2, Axis2RateOfChange, deltaTime); float resultingAxis3Value = AxisValue(currentState.Axis3, axisDeltas.Delta3, Axis3RateOfChange, deltaTime); return(new VehicleDriveControls(resultingAxis1Value, resultingAxis2Value, resultingAxis3Value)); }
private static AxisDeltas[] GenerateDeltas(float axis1RateOfChange, float axis2RateOfChange, float axis3RateOfChange) { int deltaCount = 0; for (short axis1Delta = -1; axis1Delta < 2; ++axis1Delta) { if ((axis1Delta != 0) && (axis1RateOfChange == 0f)) { continue; } for (short axis2Delta = -1; axis2Delta < 2; ++axis2Delta) { if ((axis2Delta != 0) && (axis2RateOfChange == 0f)) { continue; } for (short axis3Delta = -1; axis3Delta < 2; ++axis3Delta) { if ((axis3Delta != 0) && (axis3RateOfChange == 0f)) { continue; } ++deltaCount; } } } AxisDeltas[] deltas = new AxisDeltas[deltaCount]; deltaCount = 0; for (short axis1Delta = -1; axis1Delta < 2; ++axis1Delta) { if ((axis1Delta != 0) && (axis1RateOfChange == 0f)) { continue; } for (short axis2Delta = -1; axis2Delta < 2; ++axis2Delta) { if ((axis2Delta != 0) && (axis2RateOfChange == 0f)) { continue; } for (short axis3Delta = -1; axis3Delta < 2; ++axis3Delta) { if ((axis3Delta != 0) && (axis3RateOfChange == 0f)) { continue; } deltas[deltaCount] = new AxisDeltas(axis1Delta, axis2Delta, axis3Delta); ++deltaCount; } } } return(deltas); }