Example #1
0
    private void RebuildMaze(VertexLinker builder)
    {
        Debug.Log("rebuilding " + builder.ToString());

        WeaveRectGrid maze = (WeaveRectGrid)target;

        maze.ClearTunnels();
        maze.Graph.ClearLinks();
        builder.Build(new WeaveRectGridLinkerHelper(maze));
        EditorUtility.SetDirty(maze);

        /*BreadthFirst bf = new BreadthFirst(maze.Graph, maze.BottomLeftVertex);
         * bf.Run();
         * int[] distances = bf.Distances;
         * float maxDistance = (float)bf.MaxDistance;
         * Color nearColor = Color.red;
         * Color farColor = Color.black;
         *
         * Color[] distanceColors = System.Array.ConvertAll<int, Color>(
         *  distances, distance => Color.Lerp(nearColor, farColor, (distance / maxDistance))
         * );
         * image.Draw(maze, distanceColors);*/

        image.Draw(maze);
    }
Example #2
0
    public override void OnInspectorGUI()
    {
        WeaveRectGrid rectGrid = (WeaveRectGrid)target;

        int newWidth  = EditorGUILayout.IntField("width", rectGrid.width);
        int newHeight = EditorGUILayout.IntField("height", rectGrid.height);

        EditorGUILayout.LabelField("cell count", rectGrid.Graph.Size.ToString());

        if (newWidth != prevWidth || newHeight != prevHeight)
        {
            prevWidth  = newWidth;
            prevHeight = newHeight;
            ChangeSize(newWidth, newHeight);
        }

        int builderIndex = EditorGUILayout.Popup(prevBuilderIndex, builderNames);

        if (builderIndex != prevBuilderIndex || GUILayout.Button("rebuild"))
        {
            prevBuilderIndex = builderIndex;
            RebuildMaze(builders[builderIndex]);
        }

        DisplayImage();
    }
Example #3
0
    private void ChangeSize(int width, int height)
    {
        WeaveRectGrid rectGrid = (WeaveRectGrid)target;

        rectGrid.SetSize(width, height);

        EditorUtility.SetDirty(target);

        image.Draw(rectGrid);
    }
 public WeaveRectGridLinkerHelper(WeaveRectGrid grid) : base(grid.Graph, grid.AdjacentGraph)
 {
     this.grid = grid;
 }