Exemplo n.º 1
0
    public void GenerateMap()
    {
        // Refresh all layers. Inefficient, only need to refresh comp layers that use a base layer that changed.
        foreach (IPerlinLayerController layer in layers.Values)
        {
            layer.RefreshLayer();
        }

        int width  = (int)widthSlider.value;
        int height = (int)heightSlider.value;

        System.Diagnostics.Stopwatch stopwatch = new System.Diagnostics.Stopwatch();
        Color[,] map;

        // Create PerlinMap with its layers.
        PerlinMap <Color> perlinMap = new PerlinMap <Color>(Color.black);

        layerOrder.ForEach(layerName => {
            IPerlinLayerController controller = layers[layerName];
            if (!controller.IsVisible())
            {
                return;
            }
            perlinMap.AddLayer(controller.GetLayer(), controller.GetValue());
        });

        stopwatch.Start();
        map = perlinMap.GetCells(0, 0, width, height);
        stopwatch.Stop();
        genTimeText.text = string.Format("Generated {0} cells in {1}ms.", width * height, stopwatch.ElapsedMilliseconds == 0 ? "<1" : stopwatch.ElapsedMilliseconds.ToString());

        visualizer.SetMap(map);
    }
Exemplo n.º 2
0
    private void AddBaseLayer(Color c)
    {
        compositeButton.interactable = true;

        IPerlinLayerController layer = Instantiate(basicLayerFormPrefab, Vector3.zero, Quaternion.identity).GetComponent <IPerlinLayerController>();

        layer.GetTransform().SetParent(transform.parent.Find("Layer Scroll/Viewport/Content"), false);

        string layerName = string.Format("BL {0}", layers.Count + 1);

        layers.Add(layerName, layer);
        layerOrder.Add(layerName);
        layer.SetName(layerName);

        if (c != Color.clear)
        {
            layer.SetColor(c);
        }
    }