public void Generate(int seed) { MeshFilter filter = GetComponent <MeshFilter>(); Random.InitState(seed); Primitive[] primitives = GetComponentsInChildren <Primitive>(); if (addPos) { for (int i = 0; i < primitives.Length; i++) { primitives[i].transform.position = startPos[i]; } } for (int i = 0; i < primitives.Length; i++) { List <Vector3> verts = new List <Vector3>(); for (int y = 0; y < vertexCount; y++) { Vector3 test = Random.insideUnitSphere * primitives[i].multiplier; if (!fill) { verts.Add(test); } vertices.Add(test + primitives[i].transform.position); } if (!fill) { Mesh m = MeshMaker.GenerateRunTimeRock(verts); primitives[i].gameObject.GetComponent <MeshFilter>().sharedMesh = m; if (addPos) { primitives[i].transform.position += new Vector3(Random.Range(-space, space), Random.Range(-space, space), Random.Range(-space, space)); } } else { primitives[i].gameObject.GetComponent <MeshFilter>().sharedMesh = null; } } if (fill) { Fill(vertices); } else { filter.sharedMesh = null; } if (!MeshInChildren && !fill) { filter.sharedMesh = GetChildren(); for (int i = 0; i < primitives.Length; i++) { primitives[i].GetComponent <MeshFilter>().sharedMesh = null; } } else if (!fill) { filter.sharedMesh = null; } }
void Fill(IEnumerable <Vector3> points) { GetComponent <MeshFilter>().sharedMesh = MeshMaker.GenerateRunTimeRock(points); vertices = new List <Vector3>(); }