Beispiel #1
0
        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();
        }
Beispiel #2
0
        private void Generate()
        {
            StopAllCoroutines();

            texture.Clear(Color.black);
            texture.Apply();

            mazeGenerator = new MazeGenerator(config);

            GeneratePalette();
            mainColor = GetMainColorHSV();

            StartCoroutine(GenerateCoroutine());
        }
Beispiel #3
0
        private void DrawEdge(Maze.Edge edge)
        {
            Vector2Int position;
            int        width;
            int        height;

            MazeGenerator.EdgeToRect(edge, wallSize, roomSize, out position, out width, out 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);
        }
 private void SetupAlgorithmToggle(Toggle toggle, MazeGenerator.Algorithm algorithm)
 {
     toggle.isOn = algorithm == generatorAlgorithm;
     toggle.name = algorithm.ToString();
     toggle.GetComponentInChildren<Text>().text = algorithmToString[algorithm];
     toggle.onValueChanged.AddListener(isOn =>
     {
         if (isOn)
         {
             generatorAlgorithm = algorithm;
         }
     });
 }
        private void Generate()
        {
            StopAllCoroutines();

            texture = new Texture2D(textureWidth, textureHeight, TextureFormat.ARGB32, false, true)
            {
                filterMode = FilterMode.Point
            };
            texture.Clear(Color.black);
            texture.Apply();
            mazeImage.texture = texture;

            mazeGenerator = new MazeGenerator(textureWidth, textureHeight, cellSize, wallSize);

            StartCoroutine(GenerateCoroutine());
        }