Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2016-03-14 07:32:48 +0300
committerCampbell Barton <ideasman42@gmail.com>2016-03-14 07:34:03 +0300
commita686aa347751fdd988500d175219aa190085cba9 (patch)
tree197a68e04d09667d0b7f3b971bf8cd80b7afc7d7 /source/blender/blenkernel/intern/mesh_evaluate.c
parentb9ae96dc121c43332ed30ed9521d5b40578ad2ea (diff)
Support mdisps for Mesh.flip_normals()
Diffstat (limited to 'source/blender/blenkernel/intern/mesh_evaluate.c')
-rw-r--r--source/blender/blenkernel/intern/mesh_evaluate.c19
1 files changed, 17 insertions, 2 deletions
diff --git a/source/blender/blenkernel/intern/mesh_evaluate.c b/source/blender/blenkernel/intern/mesh_evaluate.c
index cd463eb3a34..f200e85b7f3 100644
--- a/source/blender/blenkernel/intern/mesh_evaluate.c
+++ b/source/blender/blenkernel/intern/mesh_evaluate.c
@@ -3248,12 +3248,20 @@ void BKE_mesh_mdisp_flip(MDisps *md, const bool use_loop_mdisp_flip)
* \param mloop the full loops array.
* \param ldata the loops custom data.
*/
-void BKE_mesh_polygon_flip(MPoly *mpoly, MLoop *mloop, CustomData *ldata)
+void BKE_mesh_polygon_flip_ex(
+ MPoly *mpoly, MLoop *mloop, CustomData *ldata,
+ MDisps *mdisp, const bool use_loop_mdisp_flip)
{
int loopstart = mpoly->loopstart;
int loopend = loopstart + mpoly->totloop - 1;
const bool loops_in_ldata = (CustomData_get_layer(ldata, CD_MLOOP) == mloop);
+ if (mdisp) {
+ for (int i = mpoly->loopstart; i <= loopend; i++) {
+ BKE_mesh_mdisp_flip(&mdisp[i], use_loop_mdisp_flip);
+ }
+ }
+
/* Note that we keep same start vertex for flipped face. */
/* We also have to update loops edge
@@ -3276,6 +3284,12 @@ void BKE_mesh_polygon_flip(MPoly *mpoly, MLoop *mloop, CustomData *ldata)
}
}
+void BKE_mesh_polygon_flip(MPoly *mpoly, MLoop *mloop, CustomData *ldata)
+{
+ MDisps *mdisp = CustomData_get_layer(ldata, CD_MDISPS);
+ BKE_mesh_polygon_flip_ex(mpoly, mloop, ldata, mdisp, true);
+}
+
/**
* Flip (invert winding of) all polygons (used to inverse their normals).
*
@@ -3284,11 +3298,12 @@ void BKE_mesh_polygon_flip(MPoly *mpoly, MLoop *mloop, CustomData *ldata)
void BKE_mesh_polygons_flip(
MPoly *mpoly, MLoop *mloop, CustomData *ldata, int totpoly)
{
+ MDisps *mdisp = CustomData_get_layer(ldata, CD_MDISPS);
MPoly *mp;
int i;
for (mp = mpoly, i = 0; i < totpoly; mp++, i++) {
- BKE_mesh_polygon_flip(mp, mloop, ldata);
+ BKE_mesh_polygon_flip_ex(mp, mloop, ldata, mdisp, true);
}
}