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