Beispiel #1
0
    }         // 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()