Account for game ticks when applying the frame limiter.
This commit is contained in:
@@ -774,6 +774,7 @@ namespace OpenRA
|
|||||||
var nextLogic = RunTime;
|
var nextLogic = RunTime;
|
||||||
var nextRender = RunTime;
|
var nextRender = RunTime;
|
||||||
var forcedNextRender = RunTime;
|
var forcedNextRender = RunTime;
|
||||||
|
var renderBeforeNextTick = false;
|
||||||
|
|
||||||
while (state == RunStatus.Running)
|
while (state == RunStatus.Running)
|
||||||
{
|
{
|
||||||
@@ -802,9 +803,9 @@ namespace OpenRA
|
|||||||
var nextUpdate = Math.Min(nextLogic, nextRender);
|
var nextUpdate = Math.Min(nextLogic, nextRender);
|
||||||
if (now >= nextUpdate)
|
if (now >= nextUpdate)
|
||||||
{
|
{
|
||||||
var forceRender = now >= forcedNextRender;
|
var forceRender = renderBeforeNextTick || now >= forcedNextRender;
|
||||||
|
|
||||||
if (now >= nextLogic)
|
if (now >= nextLogic && !renderBeforeNextTick)
|
||||||
{
|
{
|
||||||
nextLogic += logicInterval;
|
nextLogic += logicInterval;
|
||||||
|
|
||||||
@@ -812,7 +813,7 @@ namespace OpenRA
|
|||||||
|
|
||||||
// Force at least one render per tick during regular gameplay
|
// Force at least one render per tick during regular gameplay
|
||||||
if (OrderManager.World != null && !OrderManager.World.IsLoadingGameSave && !OrderManager.World.IsReplay)
|
if (OrderManager.World != null && !OrderManager.World.IsLoadingGameSave && !OrderManager.World.IsReplay)
|
||||||
forceRender = true;
|
renderBeforeNextTick = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
var haveSomeTimeUntilNextLogic = now < nextLogic;
|
var haveSomeTimeUntilNextLogic = now < nextLogic;
|
||||||
@@ -831,6 +832,7 @@ namespace OpenRA
|
|||||||
forcedNextRender = now + maxRenderInterval;
|
forcedNextRender = now + maxRenderInterval;
|
||||||
|
|
||||||
RenderTick();
|
RenderTick();
|
||||||
|
renderBeforeNextTick = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
Reference in New Issue
Block a user