/// <summary> /// Create a pb_Model from a pb_Object, optionally converting to quad topology. /// </summary> /// <param name="name"></param> /// <param name="mesh"></param> /// <param name="quads"></param> public Model(string name, ProBuilderMesh mesh, bool quads = true) { mesh.ToMesh(quads ? MeshTopology.Quads : MeshTopology.Triangles); mesh.Refresh(RefreshMask.UV | RefreshMask.Colors | RefreshMask.Normals | RefreshMask.Tangents); this.name = name; vertices = mesh.GetVertices(); submeshes = Submesh.GetSubmeshes(mesh.facesInternal, MaterialUtility.GetMaterialCount(mesh.renderer), quads ? MeshTopology.Quads : MeshTopology.Triangles); materials = new Material[submeshCount]; for (int i = 0; i < submeshCount; ++i) { materials[i] = mesh.renderer.sharedMaterials[Math.Clamp(i, 0, materials.Length - 1)]; } matrix = mesh.transform.localToWorldMatrix; mesh.ToMesh(MeshTopology.Triangles); mesh.Refresh(); mesh.Optimize(); }