예제 #1
0
        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;
            }
        }
예제 #2
0
        void Fill(IEnumerable <Vector3> points)
        {
            GetComponent <MeshFilter>().sharedMesh = MeshMaker.GenerateRunTimeRock(points);

            vertices = new List <Vector3>();
        }