/// <summary>
 /// erstellt eine Kopie einer vorhandenen Motor-Steuerung
 /// </summary>
 /// <param name="motor">ursprünglicher Motor</param>
 public EngineSimulator(EngineSimulator motor)
 {
     gas             = motor.gas;
     gasMuss         = motor.gasMuss;
     latenzMotor     = new Latenz(motor.latenzMotor);
     latenzSteuerung = new Latenz(motor.latenzSteuerung);
     upmIst          = motor.upmIst;
     upmMax          = motor.upmMax;
     upmSoll         = motor.upmSoll;
 }
        static double RpmLast(double throttle, int count, EngineSimulator engine)
        {
            throttle *= 0.01;
            var temp = new EngineSimulator(engine);

            for (int i = 0; i < count; i++)
            {
                temp.Rechne(throttle);
            }
            return(temp.upmIst);
        }
        double NextCalc(double currentRpm, double targetRpm)
        {
            var temp = new EngineSimulator(engine);

            for (int i = 0; i < 120; i++)
            {
                temp.Rechne(currentRpm < targetRpm ? 1.0 : 0.0);
            }

            double nextIstDrehzahl = temp.upmIst;

            return(nextIstDrehzahl < targetRpm ? 100 : 0);
        }