svn merge ^/trunk/blender -r40381:40382
authorCampbell Barton <ideasman42@gmail.com>
Fri, 23 Sep 2011 06:35:49 +0000 (06:35 +0000)
committerCampbell Barton <ideasman42@gmail.com>
Fri, 23 Sep 2011 06:35:49 +0000 (06:35 +0000)
1  2 
source/blender/blenkernel/BKE_mesh.h
source/blender/blenkernel/intern/mesh.c
source/blender/blenkernel/intern/subsurf_ccg.c
source/blender/blenloader/intern/readfile.c
source/blender/editors/mesh/meshtools.c
source/blender/editors/space_view3d/drawmesh.c
source/blender/render/intern/source/convertblender.c

index 93455f03a9ed188ca211c3e83be7942d2f31343f,95490b1aff6e89d9c701b0a99aea1043ff39c5ab..df22fdcc78af4555166ff19a40f5d8f4ed47b11f
@@@ -109,16 -84,8 +109,16 @@@ void nurbs_to_mesh(struct Object *ob)
  void mesh_to_curve(struct Scene *scene, struct Object *ob);
  void free_dverts(struct MDeformVert *dvert, int totvert);
  void copy_dverts(struct MDeformVert *dst, struct MDeformVert *src, int totvert); /* __NLA */
- void mesh_delete_material_index(struct Mesh *me, int index);
+ void mesh_delete_material_index(struct Mesh *me, short index);
  void mesh_set_smooth_flag(struct Object *meshOb, int enableSmooth);
 +void convert_mfaces_to_mpolys(struct Mesh *mesh);
 +void mesh_calc_tessface_normals(struct MVert *mverts, int numVerts,struct  MFace *mfaces, int numFaces, float (*faceNors_r)[3]);
 +
 +/*used for unit testing; compares two meshes, checking only
 +  differences we care about.  should be usable with leaf's
 +  testing framework I get RNA work done, will use hackish
 +  testing code for now.*/
 +const char *mesh_cmp(struct Mesh *me1, struct Mesh *me2, float thresh);
  
  struct BoundBox *mesh_get_bb(struct Object *ob);
  void mesh_get_texspace(struct Mesh *me, float *loc_r, float *rot_r, float *size_r);
index 597c9cfb353c8734a06e68445f5485072f194891,810e7c285e81fdb6efacbe7cb7bd9bec23ddfe47..1f09f726c83f4b1e4d0f8960b098d5719135a444
@@@ -1667,18 -1252,12 +1667,18 @@@ void mesh_to_curve(Scene *scene, Objec
        }
  }
  
- void mesh_delete_material_index(Mesh *me, int index)
+ void mesh_delete_material_index(Mesh *me, short index)
  {
 -      MFace *mf;
        int i;
  
 -      for (i=0, mf=me->mface; i<me->totface; i++, mf++) {
 +      for (i=0; i<me->totpoly; i++) {
 +              MPoly *mp = &((MPoly*) me->mpoly)[i];
 +              if (mp->mat_nr && mp->mat_nr>=index) 
 +                      mp->mat_nr--;
 +      }
 +      
 +      for (i=0; i<me->totface; i++) {
 +              MFace *mf = &((MFace*) me->mface)[i];
                if (mf->mat_nr && mf->mat_nr>=index) 
                        mf->mat_nr--;
        }
index 5d2dee69e2673175712af58a6e4968a5a2e8ac50,3626374622838b4965d047adce8ce3e51fe692fb..f3223952b32bb0e0e51092d7712bf0d6fb6a4a7e
@@@ -1072,10 -966,11 +1072,11 @@@ static void ccgDM_copyFinalFaceArray(De
  
        totface = ccgSubSurf_getNumFaces(ss);
        for(index = 0; index < totface; index++) {
 -              CCGFace *f = ccgdm->faceMap[index].face;
 +              CCGFace *f = cgdm->faceMap[index].face;
                int x, y, S, numVerts = ccgSubSurf_getFaceNumVerts(f);
-               int flag = (faceFlags)? faceFlags[index*2]: ME_SMOOTH;
-               int mat_nr = (faceFlags)? faceFlags[index*2+1]: 0;
+               /* keep types in sync with MFace, avoid many conversions */
+               char flag = (faceFlags)? faceFlags[index*2]: ME_SMOOTH;
+               short mat_nr = (faceFlags)? faceFlags[index*2+1]: 0;
  
                for(S = 0; S < numVerts; S++) {
                        for(y = 0; y < gridSize - 1; y++) {
index 1d11f50a76b805ce4e6055fd3a261e40a02408ca,a15662f86f468590570c7d5f164312a6fbf8be59..1b96104862a9e87aa4c9a1d84b4ec42f5e64fb13
@@@ -2718,11 -2719,11 +2719,11 @@@ static void init_render_dm(DerivedMesh 
  
                /* faces in order of color blocks */
                vertofs= obr->totvert - totvert;
-               for(a1=0; (a1<ob->totcol || (a1==0 && ob->totcol==0)); a1++) {
+               for(mat_iter= 0; (mat_iter < ob->totcol || (mat_iter==0 && ob->totcol==0)); mat_iter++) {
  
-                       ma= give_render_material(re, ob, a1+1);
+                       ma= give_render_material(re, ob, mat_iter+1);
 -                      end= dm->getNumFaces(dm);
 -                      mface= dm->getFaceArray(dm);
 +                      end= dm->getNumTessFaces(dm);
 +                      mface= dm->getTessFaceArray(dm);
  
                        for(a=0; a<end; a++, mface++) {
                                int v1, v2, v3, v4, flag;