Esempio n. 1
0
    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();
    }
Esempio n. 2
0
    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));
    }