Atmos device performance improvements (#26493)
* Atmos device performance improvements * AtmosDirection perf improvements * Fix errors * Add GasTileOverlayComponent arguments * Make excite no longer invalidate a tile
This commit is contained in:
@@ -1,14 +1,18 @@
|
||||
using Content.Server.Atmos.Components;
|
||||
using Content.Shared.Atmos;
|
||||
using Content.Shared.Atmos.Components;
|
||||
using Robust.Shared.Map.Components;
|
||||
using Robust.Shared.Utility;
|
||||
|
||||
namespace Content.Server.Atmos.EntitySystems
|
||||
{
|
||||
public sealed partial class AtmosphereSystem
|
||||
{
|
||||
private void ProcessCell(GridAtmosphereComponent gridAtmosphere, TileAtmosphere tile, int fireCount, GasTileOverlayComponent visuals)
|
||||
private void ProcessCell(
|
||||
Entity<GridAtmosphereComponent, GasTileOverlayComponent, MapGridComponent, TransformComponent> ent,
|
||||
TileAtmosphere tile, int fireCount)
|
||||
{
|
||||
var gridAtmosphere = ent.Comp1;
|
||||
// Can't process a tile without air
|
||||
if (tile.Air == null)
|
||||
{
|
||||
@@ -52,11 +56,7 @@ namespace Content.Server.Atmos.EntitySystems
|
||||
shouldShareAir = true;
|
||||
} else if (CompareExchange(tile.Air, enemyTile.Air) != GasCompareResult.NoExchange)
|
||||
{
|
||||
if (!enemyTile.Excited)
|
||||
{
|
||||
AddActiveTile(gridAtmosphere, enemyTile);
|
||||
}
|
||||
|
||||
AddActiveTile(gridAtmosphere, enemyTile);
|
||||
if (ExcitedGroups)
|
||||
{
|
||||
var excitedGroup = tile.ExcitedGroup;
|
||||
@@ -91,7 +91,7 @@ namespace Content.Server.Atmos.EntitySystems
|
||||
}
|
||||
else
|
||||
{
|
||||
ConsiderPressureDifference(gridAtmosphere, enemyTile, direction.GetOpposite(), -difference);
|
||||
ConsiderPressureDifference(gridAtmosphere, enemyTile, i.ToOppositeDir(), -difference);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -102,7 +102,7 @@ namespace Content.Server.Atmos.EntitySystems
|
||||
if(tile.Air != null)
|
||||
React(tile.Air, tile);
|
||||
|
||||
InvalidateVisuals(tile.GridIndex, tile.GridIndices, visuals);
|
||||
InvalidateVisuals(ent, tile);
|
||||
|
||||
var remove = true;
|
||||
|
||||
@@ -146,7 +146,7 @@ namespace Content.Server.Atmos.EntitySystems
|
||||
/// <param name="tile">Tile Atmosphere to be activated.</param>
|
||||
private void AddActiveTile(GridAtmosphereComponent gridAtmosphere, TileAtmosphere tile)
|
||||
{
|
||||
if (tile.Air == null)
|
||||
if (tile.Air == null || tile.Excited)
|
||||
return;
|
||||
|
||||
tile.Excited = true;
|
||||
|
||||
Reference in New Issue
Block a user