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;
|
||||
}
|
||||
|
||||
/**
|
||||
* 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)
|
||||
{
|
||||
if(!atmosphere.ProcessingPaused)
|
||||
@@ -336,7 +353,7 @@ namespace Content.Server.Atmos.EntitySystems
|
||||
var number = 0;
|
||||
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;
|
||||
|
||||
if (number++ < LagCheckIterations) continue;
|
||||
|
||||
Reference in New Issue
Block a user