Fix pipe rotation. (#4939)
This commit is contained in:
@@ -25,11 +25,16 @@ namespace Content.Server.NodeContainer.Nodes
|
|||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The directions in which this pipe can connect to other pipes around it.
|
/// The directions in which this pipe can connect to other pipes around it.
|
||||||
/// Used to check if this pipe can connect to another pipe in a given direction.
|
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[ViewVariables]
|
[ViewVariables]
|
||||||
[DataField("pipeDirection")]
|
[DataField("pipeDirection")]
|
||||||
public PipeDirection PipeDirection { get; private set; }
|
private PipeDirection _originalPipeDirection;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The *current* pipe directions (accounting for rotation)
|
||||||
|
/// Used to check if this pipe can connect to another pipe in a given direction.
|
||||||
|
/// </summary>
|
||||||
|
public PipeDirection CurrentPipeDirection { get; private set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The directions in which this node is connected to other nodes.
|
/// The directions in which this node is connected to other nodes.
|
||||||
@@ -103,8 +108,6 @@ namespace Content.Server.NodeContainer.Nodes
|
|||||||
public override void OnContainerStartup()
|
public override void OnContainerStartup()
|
||||||
{
|
{
|
||||||
base.OnContainerStartup();
|
base.OnContainerStartup();
|
||||||
//HACK: THIS LINE RIGHT HERE IS A FILTHY HACK AND I HATE IT --moony
|
|
||||||
PipeDirection = PipeDirection.RotatePipeDirection(Owner.Transform.LocalRotation);
|
|
||||||
OnConnectedDirectionsNeedsUpdating();
|
OnConnectedDirectionsNeedsUpdating();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -124,9 +127,6 @@ namespace Content.Server.NodeContainer.Nodes
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
void IRotatableNode.RotateEvent(ref RotateEvent ev)
|
void IRotatableNode.RotateEvent(ref RotateEvent ev)
|
||||||
{
|
{
|
||||||
if (!RotationsEnabled) return;
|
|
||||||
var diff = ev.NewRotation - ev.OldRotation;
|
|
||||||
PipeDirection = PipeDirection.RotatePipeDirection(diff);
|
|
||||||
OnConnectedDirectionsNeedsUpdating();
|
OnConnectedDirectionsNeedsUpdating();
|
||||||
UpdateAppearance();
|
UpdateAppearance();
|
||||||
}
|
}
|
||||||
@@ -137,7 +137,7 @@ namespace Content.Server.NodeContainer.Nodes
|
|||||||
{
|
{
|
||||||
var pipeDir = (PipeDirection) (1 << i);
|
var pipeDir = (PipeDirection) (1 << i);
|
||||||
|
|
||||||
if (!PipeDirection.HasDirection(pipeDir))
|
if (!CurrentPipeDirection.HasDirection(pipeDir))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
foreach (var pipe in LinkableNodesInDirection(pipeDir))
|
foreach (var pipe in LinkableNodesInDirection(pipeDir))
|
||||||
@@ -157,7 +157,7 @@ namespace Content.Server.NodeContainer.Nodes
|
|||||||
|
|
||||||
foreach (var pipe in PipesInDirection(pipeDir))
|
foreach (var pipe in PipesInDirection(pipeDir))
|
||||||
{
|
{
|
||||||
if (pipe.ConnectionsEnabled && pipe.PipeDirection.HasDirection(pipeDir.GetOpposite()))
|
if (pipe.ConnectionsEnabled && pipe.CurrentPipeDirection.HasDirection(pipeDir.GetOpposite()))
|
||||||
yield return pipe;
|
yield return pipe;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -210,9 +210,18 @@ namespace Content.Server.NodeContainer.Nodes
|
|||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Updates the <see cref="ConnectedDirections"/> of this and all sorrounding pipes.
|
/// Updates the <see cref="ConnectedDirections"/> of this and all sorrounding pipes.
|
||||||
|
/// Also updates CurrentPipeDirection.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private void OnConnectedDirectionsNeedsUpdating()
|
private void OnConnectedDirectionsNeedsUpdating()
|
||||||
{
|
{
|
||||||
|
if (RotationsEnabled)
|
||||||
|
{
|
||||||
|
CurrentPipeDirection = _originalPipeDirection.RotatePipeDirection(Owner.Transform.LocalRotation);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
CurrentPipeDirection = _originalPipeDirection;
|
||||||
|
}
|
||||||
UpdateConnectedDirections();
|
UpdateConnectedDirections();
|
||||||
UpdateAdjacentConnectedDirections();
|
UpdateAdjacentConnectedDirections();
|
||||||
UpdateAppearance();
|
UpdateAppearance();
|
||||||
@@ -229,7 +238,7 @@ namespace Content.Server.NodeContainer.Nodes
|
|||||||
{
|
{
|
||||||
var pipeDir = (PipeDirection) (1 << i);
|
var pipeDir = (PipeDirection) (1 << i);
|
||||||
|
|
||||||
if (!PipeDirection.HasDirection(pipeDir))
|
if (!CurrentPipeDirection.HasDirection(pipeDir))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
foreach (var pipe in LinkableNodesInDirection(pipeDir))
|
foreach (var pipe in LinkableNodesInDirection(pipeDir))
|
||||||
|
|||||||
Reference in New Issue
Block a user