Fix nodevis on rotated grid (#5101)
This commit is contained in:
@@ -144,7 +144,7 @@ namespace Content.Client.NodeContainer
|
|||||||
var grid = _mapManager.GetGrid(gridId);
|
var grid = _mapManager.GetGrid(gridId);
|
||||||
foreach (var (pos, list) in gridDict)
|
foreach (var (pos, list) in gridDict)
|
||||||
{
|
{
|
||||||
var centerPos = grid.GridTileToWorld(pos).Position;
|
var centerPos = (Vector2) pos + grid.TileSize / 2f;
|
||||||
list.Sort(NodeDisplayComparer.Instance);
|
list.Sort(NodeDisplayComparer.Instance);
|
||||||
|
|
||||||
var offset = -(list.Count - 1) * nodeOffset / 2;
|
var offset = -(list.Count - 1) * nodeOffset / 2;
|
||||||
@@ -159,35 +159,40 @@ namespace Content.Client.NodeContainer
|
|||||||
offset += nodeOffset;
|
offset += nodeOffset;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
foreach (var nodeRenderData in _nodeIndex.Values)
|
handle.SetTransform(grid.WorldMatrix);
|
||||||
{
|
|
||||||
var pos = nodeRenderData.WorldPos;
|
|
||||||
var bounds = Box2.CenteredAround(pos, (nodeSize, nodeSize));
|
|
||||||
|
|
||||||
var groupData = nodeRenderData.GroupData;
|
foreach (var nodeRenderData in _nodeIndex.Values)
|
||||||
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)
|
|
||||||
{
|
{
|
||||||
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();
|
_gridIndex.Clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -219,13 +224,13 @@ namespace Content.Client.NodeContainer
|
|||||||
{
|
{
|
||||||
public GroupData GroupData;
|
public GroupData GroupData;
|
||||||
public NodeDatum NodeDatum;
|
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;
|
GroupData = groupData;
|
||||||
NodeDatum = nodeDatum;
|
NodeDatum = nodeDatum;
|
||||||
WorldPos = worldPos;
|
NodePos = nodePos;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user