public void GenerateGraphNoise() { float maxNoiseHeight = float.MinValue; float minNoiseHeight = float.MaxValue; float[] noiseMap = new float[graph.faces.Length]; int q; for (q = 0; q < graph.faces.Length; q++) { Face face = graph.faces[q]; float amplitude = 1; float frequency = 1; float noiseHeight = 0; for (int o = 0; o < octaves; o++) { float sampleX = face.position.x / scale * frequency; float sampleY = face.position.y / scale * frequency; float perlinValue = Mathf.PerlinNoise(sampleX, sampleY); noiseHeight += perlinValue * amplitude; amplitude *= persistance; frequency *= lacunarity; } if (noiseHeight > maxNoiseHeight) { maxNoiseHeight = noiseHeight; } else if (noiseHeight < minNoiseHeight) { minNoiseHeight = noiseHeight; } noiseMap[q] = noiseHeight; } for (q = 0; q < graph.faces.Length; q++) { Transform child = transform.GetChild(q); Renderer renderer = child.gameObject.GetComponent <Renderer>(); float noise = Mathf.InverseLerp(minNoiseHeight, maxNoiseHeight, noiseMap[q]); graph.faces[q].noise = noise; renderer.material.color = Color.Lerp(Color.black, Color.white, noise); } GraphMeshGenerator graphMeshGenerator = GetComponent <GraphMeshGenerator>(); if (graphMeshGenerator != null) { graphMeshGenerator.GenerateGraphMesh(); } }
public override void OnInspectorGUI() { GraphMeshGenerator graphMeshGenerator = (GraphMeshGenerator)target; if (DrawDefaultInspector() && graphMeshGenerator.autoUpdate) { graphMeshGenerator.GenerateGraphMesh(); } if (GUILayout.Button("Generate")) { graphMeshGenerator.GenerateGraphMesh(); } }