Exemplo n.º 1
0
        public static Mesh Combine(ProceduralFlower flower, PFPartType type = PFPartType.None)
        {
            var root    = flower.Build();
            var filters = new List <MeshFilter>();

            Traverse(root.GetComponent <PFPart>(), filters);

            if (type != PFPartType.None)
            {
                filters = filters.FindAll(filter => filter.GetComponent <PFPart>().Type == type).ToList();
            }

            var combine = new CombineInstance[filters.Count];

            for (int i = 0, n = filters.Count; i < n; i++)
            {
                combine[i].mesh      = filters[i].sharedMesh;
                combine[i].transform = filters[i].transform.localToWorldMatrix;
            }

            GameObject.Destroy(root);

            var mesh = new Mesh();

            mesh.CombineMeshes(combine);
            return(mesh);
        }
Exemplo n.º 2
0
        GameObject CreateBase(string name, PFPartType type, Mesh mesh, Material material, ShadowCastingMode shadowCastingMode, bool receiveShadows, bool visible)
        {
            var go = new GameObject(name);

            go.AddComponent <MeshFilter>().mesh = mesh;

            var rnd = go.AddComponent <MeshRenderer>();

            rnd.sharedMaterial    = material;
            rnd.shadowCastingMode = shadowCastingMode;
            rnd.receiveShadows    = receiveShadows;

            var part = go.AddComponent <PFPart>();

            part.SetType(type);
            part.Fade(visible ? 1f + part.EPSILON : 0f);

            return(go);
        }
Exemplo n.º 3
0
 public void SetType(PFPartType tp)
 {
     type = tp;
 }
Exemplo n.º 4
0
 GameObject CreateShape(string name, PFPartType type, ShapeData data, bool visible)
 {
     return(CreateBase(name, type, data.mesh, data.material, data.shadowCastingMode, data.receiveShadows, visible));
 }