public void SelectGridItem(GridPosition position, Vector3 inputPosition) { var item = FindGridItem(position.rowPosition, position.columnPosition); item.Select(inputPosition); }
public override IEnumerable <GridPosition> NeighborPositions(GridPosition p, GridSize gridSize) { var even = p.b % 2 == 0; if (even) { if (p.a > gridSize.minA && p.b < gridSize.maxB) { yield return(new GridPosition(p.a - 1, p.b + 1)); } if (p.b < gridSize.maxB) { yield return(new GridPosition(p.a, p.b + 1)); } if (p.a > gridSize.minA) { yield return(new GridPosition(p.a - 1, p.b)); } if (p.a < gridSize.maxA) { yield return(new GridPosition(p.a + 1, p.b)); } if (p.a > gridSize.minA && p.b > gridSize.minB) { yield return(new GridPosition(p.a - 1, p.b - 1)); } if (p.b > gridSize.minB) { yield return(new GridPosition(p.a, p.b - 1)); } } else { if (p.b < gridSize.maxB) { yield return(new GridPosition(p.a, p.b + 1)); } if (p.a < gridSize.maxA && p.b < gridSize.maxB) { yield return(new GridPosition(p.a + 1, p.b + 1)); } if (p.a > gridSize.minA) { yield return(new GridPosition(p.a - 1, p.b)); } if (p.a < gridSize.maxA) { yield return(new GridPosition(p.a + 1, p.b)); } if (p.b > gridSize.minB) { yield return(new GridPosition(p.a, p.b - 1)); } if (p.a < gridSize.maxA && p.b > gridSize.minB) { yield return(new GridPosition(p.a + 1, p.b - 1)); } } }
/// <summary> /// Returns the distance between two GridPositions /// </summary> /// <param name="a"></param> /// <param name="b"></param> /// <returns></returns> public static float Distance(GridPosition a, GridPosition b) { return(Mathf.Sqrt(Mathf.Pow(Mathf.Abs(a.row - b.row), 2) + Mathf.Pow(Mathf.Abs(a.column - b.column), 2))); }
public void Init(GridPosition pos, GridComponent grid) { _position = pos; _grid = grid; _highlighter = GetComponent <Highlighter>(); }
public override Vector2 PositionCoordinates(GridPosition p) { return(unitA * p.a + unitB * p.b); }
public bool Contains(GridPosition pos) { return(minA <= pos.a && pos.a <= maxA && minB <= pos.b && pos.b <= maxB); }