private void Awake() { config.drawEdge = DrawEdge; int textureWidth = MazeGenerator.GetMapWidth(config.width, wallSize, roomSize); int textureHeight = MazeGenerator.GetMapHeight(config.height, wallSize, roomSize); texture = new Texture2D(textureWidth, textureHeight, TextureFormat.ARGB32, false, true) { filterMode = FilterMode.Point }; mazeImage.texture = texture; var header = InstantiateControl <TextControl>(algorithmsGroup.transform.parent); header.Initialize("Generator algorithm"); header.transform.SetAsFirstSibling(); InstantiateToggle(MazeGenerator.Algorithm.RandomTraversal, "Random traversal"); InstantiateToggle(MazeGenerator.Algorithm.RandomDepthFirstTraversal, "Random depth-first traversal"); InstantiateControl <ToggleControl>(leftPanel).Initialize("Use gradient", useGradient, value => { useGradient = value; Generate(); }); InstantiateControl <ButtonControl>(leftPanel).Initialize("Generate new maze", Generate); Generate(); SetupSkyboxAndPalette(); }
private void Generate() { StopAllCoroutines(); texture.Clear(Color.black); texture.Apply(); mazeGenerator = new MazeGenerator(config); GeneratePalette(); mainColor = GetMainColorHSV(); StartCoroutine(GenerateCoroutine()); }
private void DrawEdge(Maze.Edge edge) { MazeGenerator.EdgeToRect(edge, wallSize, roomSize, out Vector2Int position, out int width, out int height); Color color; if (useGradient) { float gradient01 = Mathf.Repeat(edge.origin.depth / gradientLength, 1); float gradient010 = Mathf.Abs((gradient01 - 0.5f) * 2); color = GetColor(gradient010); } else { color = GetColor(0.75f); } texture.DrawRect(position.x, position.y, width, height, color); }