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); }
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(); }
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; }