Fix nodevis on rotated grid (#5101)

This commit is contained in:
metalgearsloth
2021-11-01 00:44:08 +11:00
committed by GitHub
parent 569e75b987
commit 5d0199c09f

View File

@@ -144,7 +144,7 @@ namespace Content.Client.NodeContainer
var grid = _mapManager.GetGrid(gridId);
foreach (var (pos, list) in gridDict)
{
var centerPos = grid.GridTileToWorld(pos).Position;
var centerPos = (Vector2) pos + grid.TileSize / 2f;
list.Sort(NodeDisplayComparer.Instance);
var offset = -(list.Count - 1) * nodeOffset / 2;
@@ -159,35 +159,40 @@ namespace Content.Client.NodeContainer
offset += nodeOffset;
}
}
}
foreach (var nodeRenderData in _nodeIndex.Values)
{
var pos = nodeRenderData.WorldPos;
var bounds = Box2.CenteredAround(pos, (nodeSize, nodeSize));
handle.SetTransform(grid.WorldMatrix);
var groupData = nodeRenderData.GroupData;
var color = groupData.Color;
if (!_hovered.HasValue)
color.A = 0.5f;
else if (_hovered.Value.group != groupData.NetId)
color.A = 0.2f;
else
color.A = 0.75f + MathF.Sin(_time * 4) * 0.25f;
handle.DrawRect(bounds, color);
foreach (var reachable in nodeRenderData.NodeDatum.Reachable)
foreach (var nodeRenderData in _nodeIndex.Values)
{
if (_nodeIndex.TryGetValue((groupData.NetId, reachable), out var reachDat))
var pos = nodeRenderData.NodePos;
var bounds = Box2.CenteredAround(pos, (nodeSize, nodeSize));
var groupData = nodeRenderData.GroupData;
var color = groupData.Color;
if (!_hovered.HasValue)
color.A = 0.5f;
else if (_hovered.Value.group != groupData.NetId)
color.A = 0.2f;
else
color.A = 0.75f + MathF.Sin(_time * 4) * 0.25f;
handle.DrawRect(bounds, color);
foreach (var reachable in nodeRenderData.NodeDatum.Reachable)
{
handle.DrawLine(pos, reachDat.WorldPos, color);
if (_nodeIndex.TryGetValue((groupData.NetId, reachable), out var reachDat))
{
handle.DrawLine(pos, reachDat.NodePos, color);
}
}
}
_nodeIndex.Clear();
}
_nodeIndex.Clear();
handle.SetTransform(Matrix3.Identity);
_gridIndex.Clear();
}
@@ -219,13 +224,13 @@ namespace Content.Client.NodeContainer
{
public GroupData GroupData;
public NodeDatum NodeDatum;
public Vector2 WorldPos;
public Vector2 NodePos;
public NodeRenderData(GroupData groupData, NodeDatum nodeDatum, Vector2 worldPos)
public NodeRenderData(GroupData groupData, NodeDatum nodeDatum, Vector2 nodePos)
{
GroupData = groupData;
NodeDatum = nodeDatum;
WorldPos = worldPos;
NodePos = nodePos;
}
}
}