public static void TryCombine(UnityEngine.GameObject[] gos) { if (gos != null) { specTextures.Clear(); UnityEngine.GameObject shaderroot = null; for (int i = 0; i < gos.Length; i++) { if (shaderroot == null) { shaderroot = gos[i].transform.parent.gameObject; } //Debug.Log(gos[i].name); XOCp_MaterialRoot mr = gos[i].GetComponent <XOCp_MaterialRoot>(); if (mr != null) { if (mr.maintxt != null) { specTextures.Add(mr.maintxt); string path = AssetDatabase.GetAssetPath(specTextures[i]); TextureImporter textureImporter = AssetImporter.GetAtPath(path) as TextureImporter; textureImporter.isReadable = true; AssetDatabase.ImportAsset(path); AssetDatabase.Refresh(); } } } matpath = string.Empty; Names2Coord.Clear(); SetupAtlas(); AtlasCoordinatesDocument(); SaveAtlas(shaderroot.name); } }
public void CreateNodes() { foreach (string shaderkey in s2o.Keys) { UnityEngine.GameObject newshaderroot = new UnityEngine.GameObject(shaderkey); newshaderroot.isStatic = true; UnityEngine.GameObject newshaderroot2 = new UnityEngine.GameObject(shaderkey); newshaderroot2.isStatic = true; if (newshaderroot != null) { newshaderroot.transform.position = UnityEngine.Vector3.zero; newshaderroot.transform.rotation = UnityEngine.Quaternion.identity; newshaderroot.transform.localScale = UnityEngine.Vector3.one; newshaderroot.transform.parent = XOGloble.Output.transform; newshaderroot2.transform.position = UnityEngine.Vector3.zero; newshaderroot2.transform.rotation = UnityEngine.Quaternion.identity; newshaderroot2.transform.localScale = UnityEngine.Vector3.one; newshaderroot2.transform.parent = XOGloble.IterM.transform; int height = 0; int width = 0; Texture2D _maintxt = null; foreach (string materialkey in s2o[shaderkey].Keys) { List <UnityEngine.GameObject> tlst = s2o[shaderkey][materialkey]; if (tlst != null) { UnityEngine.GameObject go = tlst[0]; if (go != null) { MeshRenderer lMergedMeshRenderer = go.GetComponent(typeof(MeshRenderer)) as MeshRenderer; _maintxt = lMergedMeshRenderer.sharedMaterial.mainTexture as Texture2D; if (_maintxt != null) { height = _maintxt.height; width = _maintxt.width; } } } string nodename = height.ToString() + "X" + width.ToString() + "-" + materialkey; UnityEngine.GameObject newmaterialroot = new UnityEngine.GameObject(nodename); newmaterialroot.isStatic = true; UnityEngine.GameObject newmaterialroot2 = new UnityEngine.GameObject(nodename); newmaterialroot2.isStatic = true; if (newmaterialroot != null) { newmaterialroot.transform.position = UnityEngine.Vector3.zero; newmaterialroot.transform.rotation = UnityEngine.Quaternion.identity; newmaterialroot.transform.localScale = UnityEngine.Vector3.one; newmaterialroot.transform.parent = newshaderroot.transform; XOCp_MaterialRoot comp = newmaterialroot.AddComponent <XOCp_MaterialRoot>(); if (comp != null) { comp.maintxt = _maintxt; } newmaterialroot2.transform.position = UnityEngine.Vector3.zero; newmaterialroot2.transform.rotation = UnityEngine.Quaternion.identity; newmaterialroot2.transform.localScale = UnityEngine.Vector3.one; newmaterialroot2.transform.parent = newshaderroot2.transform; List <UnityEngine.GameObject> lst = s2o[shaderkey][materialkey]; foreach (UnityEngine.GameObject go in lst) { //if(CanMerge(go)) //{ go.transform.parent = newmaterialroot.transform; //} //else //{ // go.transform.parent = newmaterialroot2.transform; //} } } } } } ClearUnusedNodes(XOGloble.IterM); ClearUnusedNodes(XOGloble.Output); }