Revision: 46868
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=46868
Author: campbellbarton
Date: 2012-05-22 07:26:45 +0000 (Tue, 22 May 2012)
Log Message:
-----------
fix [#31489] EdgeSplit modifier prevents All Edge to be work correctly since
2.63
bmesh regression where the edge-draw flag was cleared when bmesh modifiers were
used.
Modified Paths:
--------------
trunk/blender/source/blender/blenkernel/intern/cdderivedmesh.c
trunk/blender/source/blender/bmesh/bmesh_class.h
trunk/blender/source/blender/bmesh/intern/bmesh_construct.c
trunk/blender/source/blender/bmesh/intern/bmesh_mesh_conv.c
Modified: trunk/blender/source/blender/blenkernel/intern/cdderivedmesh.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/cdderivedmesh.c
2012-05-22 07:07:25 UTC (rev 46867)
+++ trunk/blender/source/blender/blenkernel/intern/cdderivedmesh.c
2012-05-22 07:26:45 UTC (rev 46868)
@@ -1891,6 +1891,14 @@
med->flag = BM_edge_flag_to_mflag(eed);
+ /* handle this differently to editmode switching,
+ * only enable draw for single user edges rather then
calculating angle */
+ if ((med->flag & ME_EDGEDRAW) == 0) {
+ if (eed->l && eed->l == eed->l->radial_next) {
+ med->flag |= ME_EDGEDRAW;
+ }
+ }
+
CustomData_from_bmesh_block(&bm->edata, &dm->edgeData,
eed->head.data, i);
if (add_orig) *index = i;
}
Modified: trunk/blender/source/blender/bmesh/bmesh_class.h
===================================================================
--- trunk/blender/source/blender/bmesh/bmesh_class.h 2012-05-22 07:07:25 UTC
(rev 46867)
+++ trunk/blender/source/blender/bmesh/bmesh_class.h 2012-05-22 07:26:45 UTC
(rev 46868)
@@ -225,9 +225,10 @@
* when temp tagging is handy.
* always assume dirty & clear before use. */
- /* we have 2 spare flags which is awesome but since we're limited to 8
+ BM_ELEM_DRAW = (1 << 5), /* edge display */
+
+ /* we have 1 spare flag which is awesome but since we're limited to 8
* only add new flags with care! - campbell */
- /* BM_ELEM_SPARE = (1 << 5), */
/* BM_ELEM_SPARE = (1 << 6), */
BM_ELEM_INTERNAL_TAG = (1 << 7) /* for low level internal API tagging,
Modified: trunk/blender/source/blender/bmesh/intern/bmesh_construct.c
===================================================================
--- trunk/blender/source/blender/bmesh/intern/bmesh_construct.c 2012-05-22
07:07:25 UTC (rev 46867)
+++ trunk/blender/source/blender/bmesh/intern/bmesh_construct.c 2012-05-22
07:26:45 UTC (rev 46868)
@@ -973,6 +973,7 @@
{
return ( ((meflag & SELECT) ? BM_ELEM_SELECT : 0) |
((meflag & ME_SEAM) ? BM_ELEM_SEAM : 0) |
+ ((meflag & ME_EDGEDRAW) ? BM_ELEM_DRAW : 0) |
((meflag & ME_SHARP) == 0 ? BM_ELEM_SMOOTH : 0) | /* invert */
((meflag & ME_HIDE) ? BM_ELEM_HIDDEN : 0)
);
@@ -994,16 +995,18 @@
((hflag & BM_ELEM_HIDDEN) ? ME_HIDE : 0)
);
}
+
short BM_edge_flag_to_mflag(BMEdge *eed)
{
const char hflag = eed->head.hflag;
- return ( ((hflag & BM_ELEM_SELECT) ? SELECT : 0) |
- ((hflag & BM_ELEM_SEAM) ? ME_SEAM : 0) |
- ((hflag & BM_ELEM_SMOOTH) == 0 ? ME_SHARP : 0) |
- ((hflag & BM_ELEM_HIDDEN) ? ME_HIDE : 0) |
- ((BM_edge_is_wire(eed)) ? ME_LOOSEEDGE : 0) | /* not typical */
- (ME_EDGEDRAW | ME_EDGERENDER)
+ return ( ((hflag & BM_ELEM_SELECT) ? SELECT : 0) |
+ ((hflag & BM_ELEM_SEAM) ? ME_SEAM : 0) |
+ ((hflag & BM_ELEM_DRAW) ? ME_EDGEDRAW : 0) |
+ ((hflag & BM_ELEM_SMOOTH) == 0 ? ME_SHARP : 0) |
+ ((hflag & BM_ELEM_HIDDEN) ? ME_HIDE : 0) |
+ ((BM_edge_is_wire(eed)) ? ME_LOOSEEDGE : 0) | /* not
typical */
+ ME_EDGERENDER
);
}
char BM_face_flag_to_mflag(BMFace *efa)
Modified: trunk/blender/source/blender/bmesh/intern/bmesh_mesh_conv.c
===================================================================
--- trunk/blender/source/blender/bmesh/intern/bmesh_mesh_conv.c 2012-05-22
07:07:25 UTC (rev 46867)
+++ trunk/blender/source/blender/bmesh/intern/bmesh_mesh_conv.c 2012-05-22
07:26:45 UTC (rev 46868)
@@ -495,6 +495,9 @@
{
med->flag &= ~ME_EDGEDRAW;
}
+ else {
+ med->flag |= ME_EDGEDRAW;
+ }
}
void BM_mesh_bm_to_me(BMesh *bm, Mesh *me, int dotess)
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs