Zbadałem temat. Dla SpeedCtrlType=Time skok o 10km jest hardkodowany. Wtedy chyba nie było VelStep, bo to dopiero pod Pesy weszło. Warto by podmienić w sumie.
if (ScndCtrlPosNo == 4 && SpeedCtrlTypeTime)
{
SpeedCtrlUnit.IsActive = ( SpeedCtrlValue > 0 );
switch (ScndCtrlPos) {
case 0:
NewSpeed = 0;
SpeedCtrlValue = 0;
SpeedCtrlTimer = 10;
break;
case 1:
if (SpeedCtrlTimer > SpeedCtrlDelay) {
SpeedCtrlTimer = 0;
NewSpeed -= 10;
if (NewSpeed < 0) NewSpeed = 0;
}
else
SpeedCtrlTimer += dt;
break;
case 2:
SpeedCtrlTimer = 10;
SpeedCtrlValue = NewSpeed;
break;
case 3:
if (SpeedCtrlTimer > SpeedCtrlDelay) {
SpeedCtrlTimer = 0;
NewSpeed += 10;
if (NewSpeed > Vmax) NewSpeed = Vmax;
}
else
SpeedCtrlTimer += dt;
break;
case 4:
NewSpeed = Vmax;
SpeedCtrlValue = Vmax;
SpeedCtrlTimer = 10;
break;
}
}
Dla sterowników z dźwignią liniową, skok to Vmax/ilośc pozycji dźwigni, czyli MaxVel/SCPN.