Add method for real atmos tick rate (#19861)
Atmos takes a variable number of atmos sub-ticks to complete processing depending on the configuration options.
This commit is contained in:
@@ -327,6 +327,23 @@ namespace Content.Server.Atmos.EntitySystems
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* UpdateProcessing() takes a different number of calls to go through all of atmos
|
||||||
|
* processing depending on what options are enabled. This returns the actual effective time
|
||||||
|
* between atmos updates that devices actually experience.
|
||||||
|
*/
|
||||||
|
public float RealAtmosTime()
|
||||||
|
{
|
||||||
|
int num = (int)AtmosphereProcessingState.NumStates;
|
||||||
|
if (!MonstermosEqualization)
|
||||||
|
num--;
|
||||||
|
if (!ExcitedGroups)
|
||||||
|
num--;
|
||||||
|
if (!Superconduction)
|
||||||
|
num--;
|
||||||
|
return num * AtmosTime;
|
||||||
|
}
|
||||||
|
|
||||||
private bool ProcessAtmosDevices(GridAtmosphereComponent atmosphere)
|
private bool ProcessAtmosDevices(GridAtmosphereComponent atmosphere)
|
||||||
{
|
{
|
||||||
if(!atmosphere.ProcessingPaused)
|
if(!atmosphere.ProcessingPaused)
|
||||||
@@ -336,7 +353,7 @@ namespace Content.Server.Atmos.EntitySystems
|
|||||||
var number = 0;
|
var number = 0;
|
||||||
while (atmosphere.CurrentRunAtmosDevices.TryDequeue(out var device))
|
while (atmosphere.CurrentRunAtmosDevices.TryDequeue(out var device))
|
||||||
{
|
{
|
||||||
RaiseLocalEvent(device.Owner, new AtmosDeviceUpdateEvent(AtmosTime * (int)AtmosphereProcessingState.NumStates), false);
|
RaiseLocalEvent(device.Owner, new AtmosDeviceUpdateEvent(RealAtmosTime()), false);
|
||||||
device.LastProcess = time;
|
device.LastProcess = time;
|
||||||
|
|
||||||
if (number++ < LagCheckIterations) continue;
|
if (number++ < LagCheckIterations) continue;
|
||||||
|
|||||||
Reference in New Issue
Block a user