address all reviews
This commit is contained in:
@@ -1101,7 +1101,7 @@ namespace Content.Server.Atmos
|
||||
reconsiderAdjacent |= firelock.EmergencyPressureStop();
|
||||
}
|
||||
|
||||
foreach (var entity in other.GridIndices.GetEntitiesInTile(other.GridIndex))
|
||||
foreach (var entity in other.GridIndices.GetEntitiesInTileFast(other.GridIndex))
|
||||
{
|
||||
if (!entity.TryGetComponent(out FirelockComponent firelock)) continue;
|
||||
reconsiderAdjacent |= firelock.EmergencyPressureStop();
|
||||
|
||||
@@ -24,6 +24,7 @@ namespace Content.Server.GameObjects.Components.Atmos
|
||||
[Dependency] private readonly IEntityManager _entityManager = default!;
|
||||
|
||||
private (GridId, MapIndices) _lastPosition;
|
||||
private AtmosphereSystem _atmosphereSystem = default!;
|
||||
|
||||
public override string Name => "Airtight";
|
||||
|
||||
@@ -79,6 +80,8 @@ namespace Content.Server.GameObjects.Components.Atmos
|
||||
{
|
||||
base.Initialize();
|
||||
|
||||
_atmosphereSystem = EntitySystem.Get<AtmosphereSystem>();
|
||||
|
||||
// Using the SnapGrid is critical for performance, and thus if it is absent the component
|
||||
// will not be airtight. A warning is much easier to track down than the object magically
|
||||
// not being airtight, so log one if the SnapGrid component is missing.
|
||||
@@ -140,7 +143,7 @@ namespace Content.Server.GameObjects.Components.Atmos
|
||||
UpdatePosition(_lastPosition.Item1, _lastPosition.Item2);
|
||||
|
||||
if (_fixVacuum)
|
||||
EntitySystem.Get<AtmosphereSystem>().GetGridAtmosphere(_lastPosition.Item1)?.FixVacuum(_lastPosition.Item2);
|
||||
_atmosphereSystem.GetGridAtmosphere(_lastPosition.Item1)?.FixVacuum(_lastPosition.Item2);
|
||||
}
|
||||
|
||||
private void OnTransformMove()
|
||||
@@ -162,7 +165,7 @@ namespace Content.Server.GameObjects.Components.Atmos
|
||||
|
||||
private void UpdatePosition(GridId gridId, MapIndices pos)
|
||||
{
|
||||
var gridAtmos = EntitySystem.Get<AtmosphereSystem>().GetGridAtmosphere(gridId);
|
||||
var gridAtmos = _atmosphereSystem.GetGridAtmosphere(gridId);
|
||||
|
||||
if (gridAtmos == null) return;
|
||||
|
||||
|
||||
@@ -6,6 +6,7 @@ using Content.Server.GameObjects.Components.Interactable;
|
||||
using Content.Server.Interfaces;
|
||||
using Content.Shared.GameObjects.Components.Doors;
|
||||
using Content.Shared.GameObjects.Components.Interactable;
|
||||
using Content.Shared.Interfaces;
|
||||
using Content.Shared.Interfaces.GameObjects.Components;
|
||||
using Robust.Shared.GameObjects;
|
||||
using Robust.Shared.GameObjects.Components;
|
||||
@@ -17,8 +18,6 @@ namespace Content.Server.GameObjects.Components.Atmos
|
||||
[RegisterComponent]
|
||||
public class FirelockComponent : ServerDoorComponent, IInteractUsing, ICollideBehavior
|
||||
{
|
||||
[Dependency] private IServerNotifyManager _notifyManager = default!;
|
||||
|
||||
public override string Name => "Firelock";
|
||||
|
||||
protected override TimeSpan CloseTimeOne => TimeSpan.FromSeconds(0.1f);
|
||||
@@ -87,7 +86,7 @@ namespace Content.Server.GameObjects.Components.Atmos
|
||||
if (State == DoorState.Closed)
|
||||
{
|
||||
if(holdingPressure)
|
||||
_notifyManager.PopupMessage(Owner, eventArgs.User, "A gush of air blows in your face... Maybe you should reconsider.");
|
||||
Owner.PopupMessage(eventArgs.User, "A gush of air blows in your face... Maybe you should reconsider.");
|
||||
}
|
||||
|
||||
if (!await tool.UseTool(eventArgs.User, Owner, holdingPressure || holdingFire ? 1.5f : 0.25f, ToolQuality.Prying)) return false;
|
||||
|
||||
@@ -16,6 +16,7 @@ using Robust.Shared.GameObjects.Components.Map;
|
||||
using Robust.Shared.GameObjects.Components.Transform;
|
||||
using Robust.Shared.GameObjects.Systems;
|
||||
using Robust.Shared.Interfaces.Map;
|
||||
using Robust.Shared.IoC;
|
||||
using Robust.Shared.Map;
|
||||
using Robust.Shared.Serialization;
|
||||
using Robust.Shared.Timing;
|
||||
@@ -34,6 +35,7 @@ namespace Content.Server.GameObjects.Components.Atmos
|
||||
[Robust.Shared.IoC.Dependency] private ITileDefinitionManager _tileDefinitionManager = default!;
|
||||
[Robust.Shared.IoC.Dependency] private IServerEntityManager _serverEntityManager = default!;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Check current execution time every n instances processed.
|
||||
/// </summary>
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using System.Collections.Generic;
|
||||
#nullable enable
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Runtime.CompilerServices;
|
||||
using Content.Shared.Maps;
|
||||
@@ -15,9 +16,9 @@ namespace Content.Server.Utility
|
||||
/// Helper that returns all entities in a turf very fast.
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public static IEnumerable<IEntity> GetEntitiesInTileFast(this TileRef turf)
|
||||
public static IEnumerable<IEntity> GetEntitiesInTileFast(this TileRef turf, GridTileLookupSystem? gridTileLookup = null)
|
||||
{
|
||||
var gridTileLookup = EntitySystem.Get<GridTileLookupSystem>();
|
||||
gridTileLookup ??= EntitySystem.Get<GridTileLookupSystem>();
|
||||
|
||||
return gridTileLookup.GetEntitiesIntersecting(turf.GridIndex, turf.GridIndices);
|
||||
}
|
||||
@@ -26,14 +27,14 @@ namespace Content.Server.Utility
|
||||
/// Helper that returns all entities in a turf.
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public static IEnumerable<IEntity> GetEntitiesInTileFast(this MapIndices indices, GridId gridId)
|
||||
public static IEnumerable<IEntity> GetEntitiesInTileFast(this MapIndices indices, GridId gridId, GridTileLookupSystem? gridTileLookup = null)
|
||||
{
|
||||
var turf = indices.GetTileRef(gridId);
|
||||
|
||||
if (turf == null)
|
||||
return Enumerable.Empty<IEntity>();
|
||||
|
||||
return GetEntitiesInTileFast(turf.Value);
|
||||
return GetEntitiesInTileFast(turf.Value, gridTileLookup);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -124,9 +124,9 @@ namespace Content.Shared.Maps
|
||||
/// Helper that returns all entities in a turf.
|
||||
/// </summary>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public static IEnumerable<IEntity> GetEntitiesInTile(this TileRef turf, bool approximate = false)
|
||||
public static IEnumerable<IEntity> GetEntitiesInTile(this TileRef turf, bool approximate = false, IEntityManager? entityManager = null)
|
||||
{
|
||||
var entityManager = IoCManager.Resolve<IEntityManager>();
|
||||
entityManager ??= IoCManager.Resolve<IEntityManager>();
|
||||
|
||||
return entityManager.GetEntitiesIntersecting(turf.MapIndex, GetWorldTileBox(turf), approximate);
|
||||
}
|
||||
@@ -134,27 +134,27 @@ namespace Content.Shared.Maps
|
||||
/// <summary>
|
||||
/// Helper that returns all entities in a turf.
|
||||
/// </summary>
|
||||
public static IEnumerable<IEntity> GetEntitiesInTile(this EntityCoordinates coordinates, bool approximate = false)
|
||||
public static IEnumerable<IEntity> GetEntitiesInTile(this EntityCoordinates coordinates, bool approximate = false, IEntityManager? entityManager = null)
|
||||
{
|
||||
var turf = coordinates.GetTileRef();
|
||||
|
||||
if (turf == null)
|
||||
return Enumerable.Empty<IEntity>();
|
||||
|
||||
return GetEntitiesInTile(turf.Value);
|
||||
return GetEntitiesInTile(turf.Value, approximate, entityManager);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Helper that returns all entities in a turf.
|
||||
/// </summary>
|
||||
public static IEnumerable<IEntity> GetEntitiesInTile(this MapIndices indices, GridId gridId, bool approximate = false)
|
||||
public static IEnumerable<IEntity> GetEntitiesInTile(this MapIndices indices, GridId gridId, bool approximate = false, IEntityManager? entityManager = null)
|
||||
{
|
||||
var turf = indices.GetTileRef(gridId);
|
||||
|
||||
if (turf == null)
|
||||
return Enumerable.Empty<IEntity>();
|
||||
|
||||
return GetEntitiesInTile(turf.Value);
|
||||
return GetEntitiesInTile(turf.Value, approximate, entityManager);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
Reference in New Issue
Block a user