Merge branch 'master' into blender2.8
authorCampbell Barton <ideasman42@gmail.com>
Thu, 12 Jul 2018 19:43:51 +0000 (21:43 +0200)
committerCampbell Barton <ideasman42@gmail.com>
Thu, 12 Jul 2018 19:43:51 +0000 (21:43 +0200)
1  2 
source/blender/blenkernel/BKE_global.h
source/blender/blenkernel/BKE_mesh.h
source/blender/blenkernel/intern/mesh_evaluate.c
source/blender/blenloader/intern/writefile.c
source/blender/makesdna/DNA_mesh_types.h
source/blender/windowmanager/intern/wm_files.c

Simple merge
index 8194e21cbb1f9ccfca0be346929469f3b1b253ff,6a3d74aec649f15e4ba0eb0003a776cf5599fe32..38e0d79d78c5a1b1da3209958115bc41ad8d072e
@@@ -3031,132 -3160,8 +3031,8 @@@ void BKE_mesh_recalc_looptri
  #undef ML_TO_MLT
  }
  
- /* -------------------------------------------------------------------- */
- #ifdef USE_BMESH_SAVE_AS_COMPAT
- /**
-  * This function recreates a tessellation.
-  * returns number of tessellation faces.
-  *
-  * for forwards compat only quad->tri polys to mface, skip ngons.
-  */
- int BKE_mesh_mpoly_to_mface(struct CustomData *fdata, struct CustomData *ldata,
-                             struct CustomData *pdata, int totface, int UNUSED(totloop), int totpoly)
- {
-       MLoop *mloop;
-       unsigned int lindex[4];
-       int i;
-       int k;
-       MPoly *mp, *mpoly;
-       MFace *mface, *mf;
-       const int numUV = CustomData_number_of_layers(ldata, CD_MLOOPUV);
-       const int numCol = CustomData_number_of_layers(ldata, CD_MLOOPCOL);
-       const bool hasPCol = CustomData_has_layer(ldata, CD_PREVIEW_MLOOPCOL);
-       const bool hasOrigSpace = CustomData_has_layer(ldata, CD_ORIGSPACE_MLOOP);
-       const bool hasLNor = CustomData_has_layer(ldata, CD_NORMAL);
-       /* over-alloc, ngons will be skipped */
-       mface = MEM_malloc_arrayN((size_t)totpoly, sizeof(*mface), __func__);
-       mpoly = CustomData_get_layer(pdata, CD_MPOLY);
-       mloop = CustomData_get_layer(ldata, CD_MLOOP);
-       mp = mpoly;
-       k = 0;
-       for (i = 0; i < totpoly; i++, mp++) {
-               if (ELEM(mp->totloop, 3, 4)) {
-                       const unsigned int mp_loopstart = (unsigned int)mp->loopstart;
-                       mf = &mface[k];
-                       mf->mat_nr = mp->mat_nr;
-                       mf->flag = mp->flag;
-                       mf->v1 = mp_loopstart + 0;
-                       mf->v2 = mp_loopstart + 1;
-                       mf->v3 = mp_loopstart + 2;
-                       mf->v4 = (mp->totloop == 4) ? (mp_loopstart + 3) : 0;
-                       /* abuse edcode for temp storage and clear next loop */
-                       mf->edcode = (char)mp->totloop; /* only ever 3 or 4 */
-                       k++;
-               }
-       }
-       CustomData_free(fdata, totface);
-       totface = k;
-       CustomData_add_layer(fdata, CD_MFACE, CD_ASSIGN, mface, totface);
-       CustomData_from_bmeshpoly(fdata, ldata, totface);
-       mp = mpoly;
-       k = 0;
-       for (i = 0; i < totpoly; i++, mp++) {
-               if (ELEM(mp->totloop, 3, 4)) {
-                       mf = &mface[k];
-                       if (mf->edcode == 3) {
-                               /* sort loop indices to ensure winding is correct */
-                               /* NO SORT - looks like we can skip this */
-                               lindex[0] = mf->v1;
-                               lindex[1] = mf->v2;
-                               lindex[2] = mf->v3;
-                               lindex[3] = 0; /* unused */
-                               /* transform loop indices to vert indices */
-                               mf->v1 = mloop[mf->v1].v;
-                               mf->v2 = mloop[mf->v2].v;
-                               mf->v3 = mloop[mf->v3].v;
-                               BKE_mesh_loops_to_mface_corners(
-                                       fdata, ldata, pdata,
-                                       lindex, k, i, 3,
-                                       numUV, numCol, hasPCol, hasOrigSpace, hasLNor);
-                               test_index_face(mf, fdata, k, 3);
-                       }
-                       else {
-                               /* sort loop indices to ensure winding is correct */
-                               /* NO SORT - looks like we can skip this */
-                               lindex[0] = mf->v1;
-                               lindex[1] = mf->v2;
-                               lindex[2] = mf->v3;
-                               lindex[3] = mf->v4;
-                               /* transform loop indices to vert indices */
-                               mf->v1 = mloop[mf->v1].v;
-                               mf->v2 = mloop[mf->v2].v;
-                               mf->v3 = mloop[mf->v3].v;
-                               mf->v4 = mloop[mf->v4].v;
-                               BKE_mesh_loops_to_mface_corners(
-                                       fdata, ldata, pdata,
-                                       lindex, k, i, 4,
-                                       numUV, numCol, hasPCol, hasOrigSpace, hasLNor);
-                               test_index_face(mf, fdata, k, 4);
-                       }
-                       mf->edcode = 0;
-                       k++;
-               }
-       }
-       return k;
- }
- #endif /* USE_BMESH_SAVE_AS_COMPAT */
  static void bm_corners_to_loops_ex(
 -        ID *id, CustomData *fdata, CustomData *ldata, CustomData *pdata,
 +        ID *id, CustomData *fdata, CustomData *ldata,
          MFace *mface, int totloop, int findex, int loopstart, int numTex, int numCol)
  {
        MTFace *texface;