[Dependency] private readonly AtmosphereSystem _atmosphereSystem = default!;
[Dependency] private readonly IConfigurationManager _cfg = default!;
[Dependency] private readonly NodeContainerSystem _nodeContainer = default!;
+ [Dependency] private readonly SharedTransformSystem _transform = default!;
float tileLoss;
return;
}
+ // make sure that the tile the device is on isn't blocked by a wall or something similar.
+ var xform = Transform(uid);
+ if (_transform.TryGetGridTilePosition(uid, out var tile))
+ {
+ // TryGetGridTilePosition() already returns false if GridUid is null, but the null checker isn't smart enough yet
+ if (xform.GridUid != null && _atmosphereSystem.IsTileAirBlocked(xform.GridUid.Value, tile))
+ {
+ return;
+ }
+ }
+
var dt = args.dt;
// Let n = moles(inlet) - moles(outlet), really a Δn