private Vector3I CalculateCornerPosition() { Vector3I posDist = ConnectingPosition2.LocalGridPosition - ConnectingPosition1.LocalGridPosition; Debug.Assert(posDist.AbsMin() == 0); switch (Base6Directions.GetAxis(ConnectingPosition1.Direction)) { case Base6Directions.Axis.ForwardBackward: return(new Vector3I(ConnectingPosition1.LocalGridPosition + new Vector3I(0, 0, posDist.Z))); case Base6Directions.Axis.LeftRight: return(new Vector3I(ConnectingPosition1.LocalGridPosition + new Vector3I(posDist.X, 0, 0))); case Base6Directions.Axis.UpDown: return(new Vector3I(ConnectingPosition1.LocalGridPosition + new Vector3I(0, posDist.Y, 0))); } Debug.Fail("Should not get here"); return(Vector3I.Zero); }