Adds last pressure direction to atmos debug overlay. (#8083)
This commit is contained in:
committed by
GitHub
parent
507d4af05f
commit
e9d7c70373
@@ -115,17 +115,32 @@ namespace Content.Client.Atmos.Overlays
|
|||||||
CheckAndShowBlockDir(AtmosDirection.South);
|
CheckAndShowBlockDir(AtmosDirection.South);
|
||||||
CheckAndShowBlockDir(AtmosDirection.East);
|
CheckAndShowBlockDir(AtmosDirection.East);
|
||||||
CheckAndShowBlockDir(AtmosDirection.West);
|
CheckAndShowBlockDir(AtmosDirection.West);
|
||||||
|
|
||||||
|
void DrawPressureDirection(
|
||||||
|
DrawingHandleWorld handle,
|
||||||
|
AtmosDirection d,
|
||||||
|
TileRef t,
|
||||||
|
Color color)
|
||||||
|
{
|
||||||
|
// Account for South being 0.
|
||||||
|
var atmosAngle = d.ToAngle() - Angle.FromDegrees(90);
|
||||||
|
var atmosAngleOfs = atmosAngle.ToVec() * 0.4f;
|
||||||
|
var tileCentre = new Vector2(t.X + 0.5f, t.Y + 0.5f);
|
||||||
|
var basisA = tileCentre;
|
||||||
|
var basisB = tileCentre + atmosAngleOfs;
|
||||||
|
handle.DrawLine(basisA, basisB, color);
|
||||||
|
}
|
||||||
|
|
||||||
// -- Pressure Direction --
|
// -- Pressure Direction --
|
||||||
if (data.PressureDirection != AtmosDirection.Invalid)
|
if (data.PressureDirection != AtmosDirection.Invalid)
|
||||||
{
|
{
|
||||||
// Account for South being 0.
|
DrawPressureDirection(drawHandle, data.PressureDirection, tile, Color.Blue);
|
||||||
var atmosAngle = data.PressureDirection.ToAngle() - Angle.FromDegrees(90);
|
|
||||||
var atmosAngleOfs = atmosAngle.ToVec() * 0.4f;
|
|
||||||
var tileCentre = new Vector2(tile.X + 0.5f, tile.Y + 0.5f);
|
|
||||||
var basisA = tileCentre;
|
|
||||||
var basisB = tileCentre + atmosAngleOfs;
|
|
||||||
drawHandle.DrawLine(basisA, basisB, Color.Blue);
|
|
||||||
}
|
}
|
||||||
|
else if (data.LastPressureDirection != AtmosDirection.Invalid)
|
||||||
|
{
|
||||||
|
DrawPressureDirection(drawHandle, data.LastPressureDirection, tile, Color.LightGray);
|
||||||
|
}
|
||||||
|
|
||||||
// -- Excited Groups --
|
// -- Excited Groups --
|
||||||
if (data.InExcitedGroup)
|
if (data.InExcitedGroup)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -99,9 +99,10 @@ namespace Content.Server.Atmos.EntitySystems
|
|||||||
private AtmosDebugOverlayData ConvertTileToData(TileAtmosphere? tile)
|
private AtmosDebugOverlayData ConvertTileToData(TileAtmosphere? tile)
|
||||||
{
|
{
|
||||||
var gases = new float[Atmospherics.TotalNumberOfGases];
|
var gases = new float[Atmospherics.TotalNumberOfGases];
|
||||||
|
|
||||||
if (tile?.Air == null)
|
if (tile?.Air == null)
|
||||||
{
|
{
|
||||||
return new AtmosDebugOverlayData(0, gases, AtmosDirection.Invalid, false, tile?.BlockedAirflow ?? AtmosDirection.Invalid);
|
return new AtmosDebugOverlayData(0, gases, AtmosDirection.Invalid, tile?.LastPressureDirection ?? AtmosDirection.Invalid, false, tile?.BlockedAirflow ?? AtmosDirection.Invalid);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -109,7 +110,7 @@ namespace Content.Server.Atmos.EntitySystems
|
|||||||
{
|
{
|
||||||
gases[i] = tile.Air.GetMoles(i);
|
gases[i] = tile.Air.GetMoles(i);
|
||||||
}
|
}
|
||||||
return new AtmosDebugOverlayData(tile.Air.Temperature, gases, tile.PressureDirection, tile.ExcitedGroup != null, tile.BlockedAirflow);
|
return new AtmosDebugOverlayData(tile.Air.Temperature, gases, tile.PressureDirection, tile.LastPressureDirection, tile.ExcitedGroup != null, tile.BlockedAirflow);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -231,6 +231,7 @@ namespace Content.Server.Atmos.EntitySystems
|
|||||||
{
|
{
|
||||||
HighPressureMovements(atmosphere, tile, bodies, xforms, pressureQuery, metas);
|
HighPressureMovements(atmosphere, tile, bodies, xforms, pressureQuery, metas);
|
||||||
tile.PressureDifference = 0f;
|
tile.PressureDifference = 0f;
|
||||||
|
tile.LastPressureDirection = tile.PressureDirection;
|
||||||
tile.PressureDirection = AtmosDirection.Invalid;
|
tile.PressureDirection = AtmosDirection.Invalid;
|
||||||
tile.PressureSpecificTarget = null;
|
tile.PressureSpecificTarget = null;
|
||||||
atmosphere.HighPressureDelta.Remove(tile);
|
atmosphere.HighPressureDelta.Remove(tile);
|
||||||
|
|||||||
@@ -59,6 +59,10 @@ namespace Content.Server.Atmos
|
|||||||
[ViewVariables]
|
[ViewVariables]
|
||||||
public AtmosDirection PressureDirection;
|
public AtmosDirection PressureDirection;
|
||||||
|
|
||||||
|
// For debug purposes.
|
||||||
|
[ViewVariables]
|
||||||
|
public AtmosDirection LastPressureDirection;
|
||||||
|
|
||||||
[ViewVariables]
|
[ViewVariables]
|
||||||
public GridId GridIndex { get; }
|
public GridId GridIndex { get; }
|
||||||
|
|
||||||
|
|||||||
@@ -18,14 +18,16 @@ namespace Content.Shared.Atmos.EntitySystems
|
|||||||
public readonly float Temperature;
|
public readonly float Temperature;
|
||||||
public readonly float[] Moles;
|
public readonly float[] Moles;
|
||||||
public readonly AtmosDirection PressureDirection;
|
public readonly AtmosDirection PressureDirection;
|
||||||
|
public readonly AtmosDirection LastPressureDirection;
|
||||||
public readonly bool InExcitedGroup;
|
public readonly bool InExcitedGroup;
|
||||||
public readonly AtmosDirection BlockDirection;
|
public readonly AtmosDirection BlockDirection;
|
||||||
|
|
||||||
public AtmosDebugOverlayData(float temperature, float[] moles, AtmosDirection pressureDirection, bool inExcited, AtmosDirection blockDirection)
|
public AtmosDebugOverlayData(float temperature, float[] moles, AtmosDirection pressureDirection, AtmosDirection lastPressureDirection, bool inExcited, AtmosDirection blockDirection)
|
||||||
{
|
{
|
||||||
Temperature = temperature;
|
Temperature = temperature;
|
||||||
Moles = moles;
|
Moles = moles;
|
||||||
PressureDirection = pressureDirection;
|
PressureDirection = pressureDirection;
|
||||||
|
LastPressureDirection = lastPressureDirection;
|
||||||
InExcitedGroup = inExcited;
|
InExcitedGroup = inExcited;
|
||||||
BlockDirection = blockDirection;
|
BlockDirection = blockDirection;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user