} // BlenderConnections() #endregion void FinalizeAsset() { List <GameObject> needsParent = new List <GameObject>(); GameObject temp; MeshFilter mf; int i, j, k, tempid, pId; for (i = 0; i < impModels.Count; i++) { temp = new GameObject(impModels[i].name); temp.AddComponent <MeshRenderer>(); mf = temp.AddComponent <MeshFilter>(); UnifyVerts(impModels[i]); mf.mesh.vertices = impModels[i].GetVerts(); mf.mesh.triangles = impModels[i].GetPolyVerts(); mf.mesh.normals = impModels[i].GetNorms(); mf.mesh.uv = impModels[i].GetUVs(); temp.active = false; needsParent.Add(temp); } // for //parent objects as necessary //also handles moved origin for convenience for (i = 0; i < needsParent.Count; i++) { tempid = FindMeshID(impModels[i].name); if (impMeshes[tempid].GetPID() == 0) { needsParent[i].transform.parent = baseGO.transform; continue; } // if //parenting for (j = 0; j < impMeshes.Count; j++) { if (impMeshes[j].GetID() == impMeshes[tempid].GetPID()) { for (k = 0; k < impModels.Count; k++) { if (impModels[k].name.Equals(impMeshes[j].GetName())) { needsParent[i].transform.parent = needsParent[k].transform; break; } // if } // for break; } // if } // for //origin moving for (j = 0; j < impMeshes.Count; j++) { if (needsParent[i].name.Equals(impMeshes[j].GetName())) { if (impMeshes[j].GetOrig() != new Vector3(0f, 0f, 0f)) { needsParent[i].transform.position += impMeshes[j].GetOrig(); } // if } // if } // for } // for baseGO.active = false; BuildDefinitions.AddMesh(baseGO); impModels.Clear(); impMeshes.Clear(); needsParent.Clear(); } // FinalizeAsset()