/// <summary> /// Move /// </summary> /// <param name="direction">Direction</param> /// <param name="steps">Steps</param> public void Move(EGridDirection direction, uint steps) { int index = wires.Count - 1; Wire wire = wires[index]; for (uint i = 0U, len = steps; i != len; i++) { if (wire.Move(direction) != Vector2Int.zero) { for (int j = 0; j < wires.Count; j++) { if (j != index) { Wire other_wire = wires[j]; if (other_wire.ContainsPosition(wire.CurrentPosition)) { if (!(intersections.Contains(wire.CurrentPosition))) { intersections.Add(wire.CurrentPosition); } } } } } } }
/// <summary> /// Move /// </summary> /// <param name="direction">Direction</param> /// <returns>Current position</returns> public Vector2Int Move(EGridDirection direction) { switch (direction) { case EGridDirection.Up: currentPosition += Vector2Int.up; break; case EGridDirection.Down: currentPosition += Vector2Int.down; break; case EGridDirection.Left: currentPosition += Vector2Int.left; break; case EGridDirection.Right: currentPosition += Vector2Int.right; break; } lookup.Add(currentPosition); path.Add(currentPosition); return(currentPosition); }