Skip to content

Commit

Permalink
Correct bug in screen frame rate adjustment
Browse files Browse the repository at this point in the history
  • Loading branch information
peternewell committed Oct 28, 2023
1 parent 2df2ab4 commit 89a0f99
Showing 1 changed file with 14 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -875,27 +875,29 @@ void Integrate(float elapsedClockSeconds)
if (elapsedClockSeconds <= 0) return;
double prevSpeedMpS = AxleSpeedMpS;

var upperSubStepStartingLimit = 120;
var upperSubStepLimit = upperSubStepStartingLimit;
var lowerSubStepLimit = 1;
float upperSubStepStartingLimit = 120;
float tempupperSubStepLimit = upperSubStepStartingLimit;
float lowerSubStepLimit = 1;

var screenFrameUpperLimit = 60;
var screenFrameLowerLimit = 40;
float screenFrameUpperLimit = 60;
float screenFrameLowerLimit = 40;

// Reduces the number of substeps if screen FPS drops
if (ScreenFrameRate >= screenFrameUpperLimit)
if ( (int)ScreenFrameRate >= screenFrameUpperLimit) // Screen FPS > 60, hold substeps @ maximum value
{
upperSubStepLimit = upperSubStepStartingLimit;
tempupperSubStepLimit = upperSubStepStartingLimit;
}
else if (ScreenFrameRate < screenFrameLowerLimit)
else if ((int)ScreenFrameRate < screenFrameLowerLimit) // Screen FPS < 40, hold substeps @ minimum value
{
upperSubStepLimit = upperSubStepStartingLimit * (screenFrameLowerLimit / screenFrameUpperLimit);
tempupperSubStepLimit = upperSubStepStartingLimit * (screenFrameLowerLimit / screenFrameUpperLimit);
}
else
{
upperSubStepLimit = (int) ((ScreenFrameRate / 60) * upperSubStepStartingLimit);
tempupperSubStepLimit = (int) ((ScreenFrameRate / 60) * upperSubStepStartingLimit);
}

var upperSubStepLimit = tempupperSubStepLimit;

// use straight line graph approximation to increase substeps as slipspeed increases towards the threshold speed point
// Points are 1 = (0, upperLimit) and 2 = (threshold, lowerLimit)
var AdhesGrad = ((upperSubStepLimit - lowerSubStepLimit) / (WheelSlipThresholdMpS - 0));
Expand Down Expand Up @@ -933,10 +935,10 @@ void Integrate(float elapsedClockSeconds)
}

if (NumOfSubstepsPS < lowerSubStepLimit)
NumOfSubstepsPS = lowerSubStepLimit;
NumOfSubstepsPS = (int)lowerSubStepLimit;

if (NumOfSubstepsPS > upperSubStepLimit)
NumOfSubstepsPS = upperSubStepLimit;
NumOfSubstepsPS = (int)upperSubStepLimit;

double dt = elapsedClockSeconds / NumOfSubstepsPS;
double hdt = dt / 2;
Expand Down

0 comments on commit 89a0f99

Please sign in to comment.