merge with trunk at r27259 and commit of a patch by anthony jones to fix msvc (though...
[blender-staging.git] / source / blender / blenkernel / intern / mesh.c
index eee2df207436701139f632cc047db08b785e02d0..c7b769417937b4f66b8cc19450e186b1fc7e297f 100644 (file)
@@ -19,7 +19,7 @@
  *
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  *
  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
  * All rights reserved.
@@ -41,6 +41,7 @@
 #include "MEM_guardedalloc.h"
 
 #include "DNA_ID.h"
+#include "DNA_anim_types.h"
 #include "DNA_curve_types.h"
 #include "DNA_scene_types.h"
 #include "DNA_material_types.h"
@@ -51,6 +52,7 @@
 #include "DNA_meshdata_types.h"
 #include "DNA_ipo_types.h"
 
+#include "BKE_animsys.h"
 #include "BKE_customdata.h"
 #include "BKE_depsgraph.h"
 #include "BKE_main.h"
 
 #include "bmesh.h"
 
-EditMesh *BKE_mesh_get_editmesh(Mesh *me)
-{
-       return bmesh_to_editmesh(me->edit_btmesh->bm);
-}
-
-void free_editMesh(EditMesh *em);
-void BKE_mesh_end_editmesh(Mesh *me, EditMesh *em)
-{
-       BM_Free_Mesh(me->edit_btmesh->bm);
-       me->edit_btmesh->bm = editmesh_to_bmesh(em);
-       BMEdit_RecalcTesselation(me->edit_btmesh);
-       free_editMesh(em);
-       MEM_freeN(em);
-}
-
 static void mesh_ensure_tesselation_customdata(Mesh *me)
 {
        int tottex, totcol;
@@ -233,6 +220,11 @@ void free_mesh(Mesh *me, int unlink)
        CustomData_free(&me->ldata, me->totloop);
        CustomData_free(&me->pdata, me->totpoly);
 
+       if(me->adt) {
+               BKE_free_animdata(&me->id);
+               me->adt= NULL;
+       }
+       
        if(me->mat) MEM_freeN(me->mat);
        
        if(me->bb) MEM_freeN(me->bb);
@@ -1598,9 +1590,19 @@ static void mesh_loops_to_corners(CustomData *fdata, CustomData *ldata,
        }
 }
 
-/*this function recreates a tesselation.
+/*
+  this function recreates a tesselation.
+  returns number of tesselation faces.
+
+  use_poly_origindex sets whether or not the tesselation faces' origindex
+  layer should point to original poly indices or real poly indices.
+
+  use_face_origindex sets the tesselation faces' origindex layer
+  to point to the tesselation faces themselves, not the polys.
 
-  returns number of tesselation faces.*/
+  if both of the above are 0, it'll use the indices of the mpolys of the MPoly
+  data in pdata, and ignore the origindex layer altogether.
+ */
 int mesh_recalcTesselation(CustomData *fdata, 
                            CustomData *ldata, CustomData *pdata,
                            MVert *mvert, int totface, int totloop,