public override void OnGUI() { gregbob.EditorUtility.CreateSectionLabel("Selector"); GUILayout.BeginHorizontal(); if (GUILayout.Button("Remove selected")) { tileMap.RemoveSelected(ArrayUtility.HashSetToArray(selected)); selected.Clear(); } if (GUILayout.Button("Deselect all")) { DeselectAll(); } selectColor = EditorGUILayout.ColorField(selectColor); GUILayout.EndHorizontal(); }
public static Tile[] ShowMoves(Row[] tiles, Tile start, int maxDistance, float height) { HashSet <Tile> visited = new HashSet <Tile>(); Queue <Tile> queue = new Queue <Tile>(); Dictionary <Tile, int> distance = new Dictionary <Tile, int>(); int currDist = 0; distance.Add(start, currDist); queue.Enqueue(start); Tile current; Tile[] nbrs; while (queue.Count > 0) { current = queue.Dequeue(); currDist = distance[current]; if (!visited.Contains(current)) { visited.Add(current); nbrs = GetNeighbors(tiles, current); foreach (Tile child in nbrs) { if (!visited.Contains(child) && currDist < maxDistance && Mathf.Abs(current.height - child.height) <= height) { queue.Enqueue(child); distance[child] = currDist + 1; } } } } foreach (Tile t in visited) { t.Highlight(Color.blue); } return(ArrayUtility.HashSetToArray(visited)); }