fix passive vents (#18457)

* fix passive vents

* fix indent
This commit is contained in:
Ilya246 2023-07-31 09:40:31 +04:00 committed by GitHub
parent 385e8438d2
commit e35d1bd0b8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 7 additions and 21 deletions

View File

@ -35,29 +35,15 @@ namespace Content.Server.Atmos.Piping.Unary.EntitySystems
if (!_nodeContainer.TryGetNode(nodeContainer, vent.InletName, out PipeNode? inlet))
return;
var environmentPressure = environment.Pressure;
var pressureDelta = MathF.Abs(environmentPressure - inlet.Air.Pressure);
var inletAir = inlet.Air.RemoveRatio(1f);
var envAir = environment.RemoveRatio(1f);
if ((environment.Temperature > 0 || inlet.Air.Temperature > 0) && pressureDelta > 0.5f)
{
if (environmentPressure < inlet.Air.Pressure)
{
var airTemperature = environment.Temperature > 0 ? environment.Temperature : inlet.Air.Temperature;
var transferMoles = pressureDelta * environment.Volume / (airTemperature * Atmospherics.R);
var removed = inlet.Air.Remove(transferMoles);
_atmosphereSystem.Merge(environment, removed);
}
else
{
var airTemperature = inlet.Air.Temperature > 0 ? inlet.Air.Temperature : environment.Temperature;
var outputVolume = inlet.Air.Volume;
var transferMoles = (pressureDelta * outputVolume) / (airTemperature * Atmospherics.R);
transferMoles = MathF.Min(transferMoles, environment.TotalMoles * inlet.Air.Volume / environment.Volume);
var removed = environment.Remove(transferMoles);
_atmosphereSystem.Merge(inlet.Air, removed);
}
}
var mergeAir = new GasMixture(inletAir.Volume + envAir.Volume);
_atmosphereSystem.Merge(mergeAir, inletAir);
_atmosphereSystem.Merge(mergeAir, envAir);
_atmosphereSystem.Merge(inlet.Air, mergeAir.RemoveVolume(inletAir.Volume));
_atmosphereSystem.Merge(environment, mergeAir);
}
}
}