Slight AtmosphereSystem cleanup.

- AtmosExposed query now queries transform as well instead of getting it twice.
- Use Proxy methods instead.
This commit is contained in:
Vera Aguilera Puerto
2021-12-16 12:10:51 +01:00
parent 7e49b22a74
commit 0517e12efd
4 changed files with 44 additions and 43 deletions

View File

@@ -36,7 +36,7 @@ namespace Content.Server.Atmos.EntitySystems
gridAtmosphere.Tiles.Clear(); gridAtmosphere.Tiles.Clear();
if (!EntityManager.TryGetComponent(uid, out IMapGridComponent? mapGrid)) if (!TryComp(uid, out IMapGridComponent? mapGrid))
return; return;
if (gridAtmosphere.TilesUniqueMixes != null) if (gridAtmosphere.TilesUniqueMixes != null)
@@ -85,7 +85,7 @@ namespace Content.Server.Atmos.EntitySystems
if (!_mapManager.TryGetGrid(grid, out var mapGrid)) if (!_mapManager.TryGetGrid(grid, out var mapGrid))
return false; return false;
if (EntityManager.HasComponent<GridAtmosphereComponent>(mapGrid.GridEntityId)) if (HasComp<GridAtmosphereComponent>(mapGrid.GridEntityId))
return true; return true;
return false; return false;
@@ -124,7 +124,7 @@ namespace Content.Server.Atmos.EntitySystems
if (!_mapManager.TryGetGrid(grid, out var mapGrid)) if (!_mapManager.TryGetGrid(grid, out var mapGrid))
return Enumerable.Empty<GasMixture>(); return Enumerable.Empty<GasMixture>();
if (EntityManager.TryGetComponent(mapGrid.GridEntityId, out GridAtmosphereComponent? gridAtmosphere)) if (TryComp(mapGrid.GridEntityId, out GridAtmosphereComponent? gridAtmosphere))
{ {
return GetAllTileMixtures(gridAtmosphere, invalidate); return GetAllTileMixtures(gridAtmosphere, invalidate);
} }
@@ -197,7 +197,7 @@ namespace Content.Server.Atmos.EntitySystems
{ {
foreach (var uid in mapGrid.GetAnchoredEntities(tile)) foreach (var uid in mapGrid.GetAnchoredEntities(tile))
{ {
if (EntityManager.TryGetComponent<AirtightComponent>(uid, out var ac)) if (TryComp<AirtightComponent>(uid, out var ac))
yield return ac; yield return ac;
} }
} }
@@ -284,7 +284,7 @@ namespace Content.Server.Atmos.EntitySystems
if (!_mapManager.TryGetGrid(grid, out var mapGrid)) if (!_mapManager.TryGetGrid(grid, out var mapGrid))
return; return;
if (EntityManager.TryGetComponent(mapGrid.GridEntityId, out GridAtmosphereComponent? gridAtmosphere)) if (TryComp(mapGrid.GridEntityId, out GridAtmosphereComponent? gridAtmosphere))
{ {
InvalidateTile(gridAtmosphere, tile); InvalidateTile(gridAtmosphere, tile);
return; return;
@@ -312,6 +312,7 @@ namespace Content.Server.Atmos.EntitySystems
InvalidateVisuals(tuple.Value.Grid, tuple.Value.Tile); InvalidateVisuals(tuple.Value.Grid, tuple.Value.Tile);
} }
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public void InvalidateVisuals(GridId grid, Vector2i tile) public void InvalidateVisuals(GridId grid, Vector2i tile)
{ {
_gasTileOverlaySystem.Invalidate(grid, tile); _gasTileOverlaySystem.Invalidate(grid, tile);
@@ -347,7 +348,7 @@ namespace Content.Server.Atmos.EntitySystems
if (!_mapManager.TryGetGrid(grid, out var mapGrid)) if (!_mapManager.TryGetGrid(grid, out var mapGrid))
return null; return null;
if(EntityManager.TryGetComponent(mapGrid.GridEntityId, out GridAtmosphereComponent? gridAtmosphere)) if(TryComp(mapGrid.GridEntityId, out GridAtmosphereComponent? gridAtmosphere))
{ {
return GetTileAtmosphere(gridAtmosphere, tile); return GetTileAtmosphere(gridAtmosphere, tile);
} }
@@ -396,7 +397,7 @@ namespace Content.Server.Atmos.EntitySystems
if (!_mapManager.TryGetGrid(grid, out var mapGrid)) if (!_mapManager.TryGetGrid(grid, out var mapGrid))
return null; return null;
if (EntityManager.TryGetComponent(mapGrid.GridEntityId, out GridAtmosphereComponent? gridAtmosphere)) if (TryComp(mapGrid.GridEntityId, out GridAtmosphereComponent? gridAtmosphere))
{ {
return GetTileAtmosphereOrCreateSpace(mapGrid, gridAtmosphere, tile); return GetTileAtmosphereOrCreateSpace(mapGrid, gridAtmosphere, tile);
} }
@@ -448,7 +449,7 @@ namespace Content.Server.Atmos.EntitySystems
if (!_mapManager.TryGetGrid(grid, out var mapGrid)) if (!_mapManager.TryGetGrid(grid, out var mapGrid))
return; return;
if (EntityManager.TryGetComponent(mapGrid.GridEntityId, out GridAtmosphereComponent? gridAtmosphere)) if (TryComp(mapGrid.GridEntityId, out GridAtmosphereComponent? gridAtmosphere))
{ {
AddActiveTile(gridAtmosphere, tile); AddActiveTile(gridAtmosphere, tile);
return; return;
@@ -509,7 +510,7 @@ namespace Content.Server.Atmos.EntitySystems
if (!_mapManager.TryGetGrid(grid, out var mapGrid)) if (!_mapManager.TryGetGrid(grid, out var mapGrid))
return; return;
if (EntityManager.TryGetComponent(mapGrid.GridEntityId, out GridAtmosphereComponent? gridAtmosphere)) if (TryComp(mapGrid.GridEntityId, out GridAtmosphereComponent? gridAtmosphere))
{ {
RemoveActiveTile(gridAtmosphere, tile); RemoveActiveTile(gridAtmosphere, tile);
return; return;
@@ -582,12 +583,12 @@ namespace Content.Server.Atmos.EntitySystems
if (!_mapManager.TryGetGrid(grid, out var mapGrid)) if (!_mapManager.TryGetGrid(grid, out var mapGrid))
return null; return null;
if (EntityManager.TryGetComponent(mapGrid.GridEntityId, out GridAtmosphereComponent? gridAtmosphere)) if (TryComp(mapGrid.GridEntityId, out GridAtmosphereComponent? gridAtmosphere))
{ {
return GetTileMixture(gridAtmosphere, tile, invalidate); return GetTileMixture(gridAtmosphere, tile, invalidate);
} }
if (EntityManager.TryGetComponent(mapGrid.GridEntityId, out SpaceAtmosphereComponent? _)) if (TryComp(mapGrid.GridEntityId, out SpaceAtmosphereComponent? _))
{ {
// Always return a new space gas mixture in this case. // Always return a new space gas mixture in this case.
return GasMixture.SpaceGas; return GasMixture.SpaceGas;
@@ -645,7 +646,7 @@ namespace Content.Server.Atmos.EntitySystems
if (!_mapManager.TryGetGrid(grid, out var mapGrid)) if (!_mapManager.TryGetGrid(grid, out var mapGrid))
return ReactionResult.NoReaction; return ReactionResult.NoReaction;
if (EntityManager.TryGetComponent(mapGrid.GridEntityId, out GridAtmosphereComponent? gridAtmosphere)) if (TryComp(mapGrid.GridEntityId, out GridAtmosphereComponent? gridAtmosphere))
{ {
return React(gridAtmosphere, tile); return React(gridAtmosphere, tile);
} }
@@ -795,12 +796,12 @@ namespace Content.Server.Atmos.EntitySystems
if (!_mapManager.TryGetGrid(grid, out var mapGrid)) if (!_mapManager.TryGetGrid(grid, out var mapGrid))
return Atmospherics.MinimumHeatCapacity; return Atmospherics.MinimumHeatCapacity;
if (EntityManager.TryGetComponent(mapGrid.GridEntityId, out GridAtmosphereComponent? gridAtmosphere)) if (TryComp(mapGrid.GridEntityId, out GridAtmosphereComponent? gridAtmosphere))
{ {
return GetTileHeatCapacity(gridAtmosphere, tile); return GetTileHeatCapacity(gridAtmosphere, tile);
} }
if (EntityManager.TryGetComponent(mapGrid.GridEntityId, out SpaceAtmosphereComponent? _)) if (TryComp(mapGrid.GridEntityId, out SpaceAtmosphereComponent? _))
{ {
return Atmospherics.SpaceHeatCapacity; return Atmospherics.SpaceHeatCapacity;
} }
@@ -857,7 +858,7 @@ namespace Content.Server.Atmos.EntitySystems
if (!_mapManager.TryGetGrid(grid, out var mapGrid)) if (!_mapManager.TryGetGrid(grid, out var mapGrid))
return Enumerable.Empty<Vector2i>(); return Enumerable.Empty<Vector2i>();
if (EntityManager.TryGetComponent(mapGrid.GridEntityId, out GridAtmosphereComponent? gridAtmosphere)) if (TryComp(mapGrid.GridEntityId, out GridAtmosphereComponent? gridAtmosphere))
{ {
return GetAdjacentTiles(gridAtmosphere, tile, includeBlocked); return GetAdjacentTiles(gridAtmosphere, tile, includeBlocked);
} }
@@ -934,7 +935,7 @@ namespace Content.Server.Atmos.EntitySystems
if (!_mapManager.TryGetGrid(grid, out var mapGrid)) if (!_mapManager.TryGetGrid(grid, out var mapGrid))
return Enumerable.Empty<GasMixture>(); return Enumerable.Empty<GasMixture>();
if (EntityManager.TryGetComponent(mapGrid.GridEntityId, out GridAtmosphereComponent? gridAtmosphere)) if (TryComp(mapGrid.GridEntityId, out GridAtmosphereComponent? gridAtmosphere))
{ {
return GetAdjacentTileMixtures(gridAtmosphere, tile, includeBlocked, invalidate); return GetAdjacentTileMixtures(gridAtmosphere, tile, includeBlocked, invalidate);
} }
@@ -1017,7 +1018,7 @@ namespace Content.Server.Atmos.EntitySystems
if (!_mapManager.TryGetGrid(grid, out var mapGrid)) if (!_mapManager.TryGetGrid(grid, out var mapGrid))
return; return;
if (EntityManager.TryGetComponent(mapGrid.GridEntityId, out GridAtmosphereComponent? gridAtmosphere)) if (TryComp(mapGrid.GridEntityId, out GridAtmosphereComponent? gridAtmosphere))
{ {
UpdateAdjacent(mapGrid, gridAtmosphere, tile); UpdateAdjacent(mapGrid, gridAtmosphere, tile);
return; return;
@@ -1093,7 +1094,7 @@ namespace Content.Server.Atmos.EntitySystems
if (!_mapManager.TryGetGrid(grid, out var mapGrid)) if (!_mapManager.TryGetGrid(grid, out var mapGrid))
return; return;
if (EntityManager.TryGetComponent(mapGrid.GridEntityId, out GridAtmosphereComponent? gridAtmosphere)) if (TryComp(mapGrid.GridEntityId, out GridAtmosphereComponent? gridAtmosphere))
{ {
UpdateAdjacent(mapGrid, gridAtmosphere, tile, direction); UpdateAdjacent(mapGrid, gridAtmosphere, tile, direction);
return; return;
@@ -1171,7 +1172,7 @@ namespace Content.Server.Atmos.EntitySystems
if (!_mapManager.TryGetGrid(grid, out var mapGrid)) if (!_mapManager.TryGetGrid(grid, out var mapGrid))
return; return;
if (EntityManager.TryGetComponent(mapGrid.GridEntityId, out GridAtmosphereComponent? gridAtmosphere)) if (TryComp(mapGrid.GridEntityId, out GridAtmosphereComponent? gridAtmosphere))
{ {
var tileAtmosphere = GetTileAtmosphere(gridAtmosphere, tile); var tileAtmosphere = GetTileAtmosphere(gridAtmosphere, tile);
@@ -1208,7 +1209,7 @@ namespace Content.Server.Atmos.EntitySystems
if (!_mapManager.TryGetGrid(grid, out var mapGrid)) if (!_mapManager.TryGetGrid(grid, out var mapGrid))
return; return;
if (EntityManager.TryGetComponent(mapGrid.GridEntityId, out GridAtmosphereComponent? gridAtmosphere)) if (TryComp(mapGrid.GridEntityId, out GridAtmosphereComponent? gridAtmosphere))
{ {
HotspotExtinguish(gridAtmosphere, tile); HotspotExtinguish(gridAtmosphere, tile);
return; return;
@@ -1257,7 +1258,7 @@ namespace Content.Server.Atmos.EntitySystems
if (!_mapManager.TryGetGrid(grid, out var mapGrid)) if (!_mapManager.TryGetGrid(grid, out var mapGrid))
return false; return false;
if (EntityManager.TryGetComponent(mapGrid.GridEntityId, out GridAtmosphereComponent? gridAtmosphere)) if (TryComp(mapGrid.GridEntityId, out GridAtmosphereComponent? gridAtmosphere))
{ {
return IsHotspotActive(gridAtmosphere, tile); return IsHotspotActive(gridAtmosphere, tile);
} }
@@ -1288,7 +1289,7 @@ namespace Content.Server.Atmos.EntitySystems
if (!_mapManager.TryGetGrid(pipeNet.Grid, out var mapGrid)) if (!_mapManager.TryGetGrid(pipeNet.Grid, out var mapGrid))
return; return;
if (EntityManager.TryGetComponent(mapGrid.GridEntityId, out GridAtmosphereComponent? gridAtmosphere)) if (TryComp(mapGrid.GridEntityId, out GridAtmosphereComponent? gridAtmosphere))
{ {
gridAtmosphere.PipeNets.Add(pipeNet); gridAtmosphere.PipeNets.Add(pipeNet);
} }
@@ -1303,7 +1304,7 @@ namespace Content.Server.Atmos.EntitySystems
if (!_mapManager.TryGetGrid(pipeNet.Grid, out var mapGrid)) if (!_mapManager.TryGetGrid(pipeNet.Grid, out var mapGrid))
return; return;
if (EntityManager.TryGetComponent(mapGrid.GridEntityId, out GridAtmosphereComponent? gridAtmosphere)) if (TryComp(mapGrid.GridEntityId, out GridAtmosphereComponent? gridAtmosphere))
{ {
gridAtmosphere.PipeNets.Remove(pipeNet); gridAtmosphere.PipeNets.Remove(pipeNet);
} }
@@ -1315,12 +1316,12 @@ namespace Content.Server.Atmos.EntitySystems
public bool AddAtmosDevice(AtmosDeviceComponent atmosDevice) public bool AddAtmosDevice(AtmosDeviceComponent atmosDevice)
{ {
var grid = EntityManager.GetComponent<TransformComponent>(atmosDevice.Owner).GridID; var grid = Comp<TransformComponent>(atmosDevice.Owner).GridID;
if (!_mapManager.TryGetGrid(grid, out var mapGrid)) if (!_mapManager.TryGetGrid(grid, out var mapGrid))
return false; return false;
if (EntityManager.TryGetComponent(mapGrid.GridEntityId, out GridAtmosphereComponent? gridAtmosphere)) if (TryComp(mapGrid.GridEntityId, out GridAtmosphereComponent? gridAtmosphere))
{ {
atmosDevice.JoinedGrid = grid; atmosDevice.JoinedGrid = grid;
gridAtmosphere.AtmosDevices.Add(atmosDevice); gridAtmosphere.AtmosDevices.Add(atmosDevice);
@@ -1344,7 +1345,7 @@ namespace Content.Server.Atmos.EntitySystems
if (!_mapManager.TryGetGrid(grid, out var mapGrid)) if (!_mapManager.TryGetGrid(grid, out var mapGrid))
return false; return false;
if (EntityManager.TryGetComponent(mapGrid.GridEntityId, out GridAtmosphereComponent? gridAtmosphere) if (TryComp(mapGrid.GridEntityId, out GridAtmosphereComponent? gridAtmosphere)
&& gridAtmosphere.AtmosDevices.Contains(atmosDevice)) && gridAtmosphere.AtmosDevices.Contains(atmosDevice))
{ {
atmosDevice.JoinedGrid = null; atmosDevice.JoinedGrid = null;
@@ -1435,7 +1436,7 @@ namespace Content.Server.Atmos.EntitySystems
if (!_mapManager.TryGetGrid(grid, out var mapGrid)) if (!_mapManager.TryGetGrid(grid, out var mapGrid))
return; return;
if (EntityManager.TryGetComponent(mapGrid.GridEntityId, out GridAtmosphereComponent? gridAtmosphere)) if (TryComp(mapGrid.GridEntityId, out GridAtmosphereComponent? gridAtmosphere))
{ {
FixVacuum(gridAtmosphere, tile); FixVacuum(gridAtmosphere, tile);
return; return;
@@ -1526,7 +1527,7 @@ namespace Content.Server.Atmos.EntitySystems
public bool TryGetMapGrid(GridAtmosphereComponent gridAtmosphere, [NotNullWhen(true)] out IMapGrid? mapGrid) public bool TryGetMapGrid(GridAtmosphereComponent gridAtmosphere, [NotNullWhen(true)] out IMapGrid? mapGrid)
{ {
if (EntityManager.TryGetComponent(gridAtmosphere.Owner, out IMapGridComponent? mapGridComponent)) if (TryComp(gridAtmosphere.Owner, out IMapGridComponent? mapGridComponent))
{ {
mapGrid = mapGridComponent.Grid; mapGrid = mapGridComponent.Grid;
return true; return true;

View File

@@ -33,12 +33,12 @@ namespace Content.Server.Atmos.EntitySystems
foreach (var entity in _gridtileLookupSystem.GetEntitiesIntersecting(tile.GridIndex, tile.GridIndices)) foreach (var entity in _gridtileLookupSystem.GetEntitiesIntersecting(tile.GridIndex, tile.GridIndices))
{ {
if (!EntityManager.TryGetComponent(entity, out IPhysBody? physics) if (!HasComp<IPhysBody>(entity)
|| !entity.IsMovedByPressure(out var pressure) || !entity.IsMovedByPressure(out var pressure)
|| entity.IsInContainer()) || entity.IsInContainer())
continue; continue;
var pressureMovements = physics.Owner.EnsureComponent<MovedByPressureComponent>(); var pressureMovements = EnsureComp<MovedByPressureComponent>(entity);
if (pressure.LastHighPressureMovementAirCycle < gridAtmosphere.UpdateCounter) if (pressure.LastHighPressureMovementAirCycle < gridAtmosphere.UpdateCounter)
{ {
pressureMovements.ExperiencePressureDifference(gridAtmosphere.UpdateCounter, tile.PressureDifference, tile.PressureDirection, 0, tile.PressureSpecificTarget?.GridIndices.ToEntityCoordinates(tile.GridIndex, _mapManager) ?? EntityCoordinates.Invalid); pressureMovements.ExperiencePressureDifference(gridAtmosphere.UpdateCounter, tile.PressureDifference, tile.PressureDirection, 0, tile.PressureSpecificTarget?.GridIndices.ToEntityCoordinates(tile.GridIndex, _mapManager) ?? EntityCoordinates.Invalid);

View File

@@ -477,7 +477,7 @@ namespace Content.Server.Atmos.EntitySystems
{ {
var direction = ((Vector2)_depressurizeTiles[tileCount - 1].GridIndices - tile.GridIndices).Normalized; var direction = ((Vector2)_depressurizeTiles[tileCount - 1].GridIndices - tile.GridIndices).Normalized;
var gridPhysics = EntityManager.GetComponent<PhysicsComponent>(mapGrid.GridEntityId); var gridPhysics = Comp<PhysicsComponent>(mapGrid.GridEntityId);
// TODO ATMOS: Come up with better values for these. // TODO ATMOS: Come up with better values for these.
gridPhysics.ApplyLinearImpulse(direction * totalMolesRemoved * gridPhysics.Mass); gridPhysics.ApplyLinearImpulse(direction * totalMolesRemoved * gridPhysics.Mass);
@@ -502,7 +502,7 @@ namespace Content.Server.Atmos.EntitySystems
foreach (var entity in mapGrid.GetAnchoredEntities(tile.GridIndices)) foreach (var entity in mapGrid.GetAnchoredEntities(tile.GridIndices))
{ {
if (!EntityManager.TryGetComponent(entity, out FirelockComponent firelock)) if (!TryComp(entity, out FirelockComponent? firelock))
continue; continue;
reconsiderAdjacent |= firelock.EmergencyPressureStop(); reconsiderAdjacent |= firelock.EmergencyPressureStop();
@@ -510,7 +510,7 @@ namespace Content.Server.Atmos.EntitySystems
foreach (var entity in mapGrid.GetAnchoredEntities(other.GridIndices)) foreach (var entity in mapGrid.GetAnchoredEntities(other.GridIndices))
{ {
if (!EntityManager.TryGetComponent(entity, out FirelockComponent firelock)) if (!TryComp(entity, out FirelockComponent? firelock))
continue; continue;
reconsiderAdjacent |= firelock.EmergencyPressureStop(); reconsiderAdjacent |= firelock.EmergencyPressureStop();

View File

@@ -71,18 +71,18 @@ namespace Content.Server.Atmos.EntitySystems
_exposedTimer += frameTime; _exposedTimer += frameTime;
if (_exposedTimer >= ExposedUpdateDelay) if (_exposedTimer < ExposedUpdateDelay)
{ return;
foreach (var exposed in EntityManager.EntityQuery<AtmosExposedComponent>())
{
var tile = GetTileMixture(EntityManager.GetComponent<TransformComponent>(exposed.Owner).Coordinates);
if (tile == null) continue;
var updateEvent = new AtmosExposedUpdateEvent(EntityManager.GetComponent<TransformComponent>(exposed.Owner).Coordinates, tile);
RaiseLocalEvent(exposed.Owner, ref updateEvent);
}
_exposedTimer -= ExposedUpdateDelay; foreach (var (exposed, transform) in EntityManager.EntityQuery<AtmosExposedComponent, TransformComponent>())
{
var tile = GetTileMixture(transform.Coordinates);
if (tile == null) continue;
var updateEvent = new AtmosExposedUpdateEvent(transform.Coordinates, tile);
RaiseLocalEvent(exposed.Owner, ref updateEvent);
} }
_exposedTimer -= ExposedUpdateDelay;
} }
} }
} }