Beispiel #1
0
    public static void Export()
    {
        var p = EditorPrefs.GetString("projectPath");

        if (Directory.Exists(p))
        {
            Terrn.ExportTerrn();
            Terrn.ExportTextures();
            Tobj.Export();
            Otc.ExportMain();
            Otc.ExportPage();
            var root = GameObject.Find("root");
            if (root != null)
            {
                var objectExported = new List <string>();
                var meshesExported = new List <string>();
                foreach (Transform child in root.transform)
                {
                    if (!objectExported.Contains(child.name) && child.tag != "DefaultContent")
                    {
                        objectExported.Add(child.name);
                        Odef.Export(child.gameObject);

                        /*
                         * var m = child.GetComponentsInChildren<MeshFilter>();
                         * var mr = child.GetComponentsInChildren<MeshRenderer>();
                         *
                         *
                         * if (m.Length > 1 && !meshesExported.Contains(m[0].sharedMesh.name))
                         * {
                         *  var combinedMesh = new Mesh();
                         *  var combineIns = new List<CombineInstance>();
                         *  var materials = new List<Material>();
                         *  for (var i = 0; i < m.Length; i++)
                         *  {
                         *      print("combing " + m[i].sharedMesh.name);
                         *      combineIns.Add(new CombineInstance
                         *      {
                         *          mesh = m[i].sharedMesh,
                         *          transform = m[i].transform.worldToLocalMatrix
                         *
                         *      });
                         *      materials.AddRange(mr[i].sharedMaterials);
                         *  }
                         *  combinedMesh.name = m[0].sharedMesh.name;
                         *  materials = materials.Distinct().ToList();
                         *  combinedMesh.CombineMeshes(combineIns.ToArray(), false);
                         *  Meshes.Export(combinedMesh, materials.ToArray());
                         *  Materials.Export(materials.ToArray());
                         *  meshesExported.Add(combinedMesh.name);
                         * }
                         * else if (m.Length == 1 && !meshesExported.Contains(m[0].sharedMesh.name))
                         * {
                         *  Meshes.Export(m[0].sharedMesh, mr[0].sharedMaterials);
                         *  Materials.Export(mr[0].sharedMaterials);
                         *  meshesExported.Add(m[0].sharedMesh.name);
                         * }
                         */
                    }
                }

                var m  = root.GetComponentsInChildren <MeshFilter>();
                var mr = root.GetComponentsInChildren <MeshRenderer>();

                if (m.Length > 0)
                {
                    for (var i = 0; i < m.Length; i++)
                    {
                        if (!meshesExported.Contains(m[i].sharedMesh.name) && m[i].gameObject.tag != "DefaultContent")
                        {
                            Meshes.Export(m[i].sharedMesh, mr[i].sharedMaterials);
                            Materials.Export(mr[i].sharedMaterials);
                            meshesExported.Add(m[i].sharedMesh.name);
                        }
                    }
                }
            }
        }
    }