[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [40055] branches/bmesh/blender/source/ blender/bmesh: auto-merge was loosing the selection after running remove doubles, this is quite annoying.
Campbell Barton
ideasman42 at gmail.com
Fri Sep 9 05:34:51 CEST 2011
Revision: 40055
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=40055
Author: campbellbarton
Date: 2011-09-09 03:34:48 +0000 (Fri, 09 Sep 2011)
Log Message:
-----------
auto-merge was loosing the selection after running remove doubles, this is quite annoying.
added BM_MergeHFlag() inline function to OR flags together, run this on both verts before merging.
also removed not-helpful comments.
Modified Paths:
--------------
branches/bmesh/blender/source/blender/bmesh/bmesh.h
branches/bmesh/blender/source/blender/bmesh/intern/bmesh_inline.c
branches/bmesh/blender/source/blender/bmesh/operators/removedoubles.c
Modified: branches/bmesh/blender/source/blender/bmesh/bmesh.h
===================================================================
--- branches/bmesh/blender/source/blender/bmesh/bmesh.h 2011-09-09 03:11:15 UTC (rev 40054)
+++ branches/bmesh/blender/source/blender/bmesh/bmesh.h 2011-09-09 03:34:48 UTC (rev 40055)
@@ -153,6 +153,7 @@
/*stuff for dealing BM_ToggleHFlag header flags*/
BM_INLINE void BM_ToggleHFlag(void *element, const int flag);
+BM_INLINE void BM_MergeHFlag(void *element_a, void *element_b);
BM_INLINE void BM_SetIndex(void *element, const int index);
BM_INLINE int BM_GetIndex(const void *element);
Modified: branches/bmesh/blender/source/blender/bmesh/intern/bmesh_inline.c
===================================================================
--- branches/bmesh/blender/source/blender/bmesh/intern/bmesh_inline.c 2011-09-09 03:11:15 UTC (rev 40054)
+++ branches/bmesh/blender/source/blender/bmesh/intern/bmesh_inline.c 2011-09-09 03:34:48 UTC (rev 40055)
@@ -8,24 +8,28 @@
return ((BMHeader *)element)->flag & flag;
}
-/*stuff for dealing with header flags*/
BM_INLINE void BM_SetHFlag(void *element, const int flag)
{
((BMHeader *)element)->flag |= flag;
}
-/*stuff for dealing with header flags*/
BM_INLINE void BM_ClearHFlag(void *element, const int flag)
{
((BMHeader *)element)->flag &= ~flag;
}
-/*stuff for dealing BM_ToggleHFlag header flags*/
BM_INLINE void BM_ToggleHFlag(void *element, const int flag)
{
((BMHeader *)element)->flag ^= flag;
}
+BM_INLINE void BM_MergeHFlag(void *element_a, void *element_b)
+{
+ ((BMHeader *)element_a)->flag =
+ ((BMHeader *)element_b)->flag = (((BMHeader *)element_a)->flag |
+ ((BMHeader *)element_b)->flag);
+}
+
BM_INLINE void BM_SetIndex(void *element, const int index)
{
((BMHeader *)element)->index = index;
Modified: branches/bmesh/blender/source/blender/bmesh/operators/removedoubles.c
===================================================================
--- branches/bmesh/blender/source/blender/bmesh/operators/removedoubles.c 2011-09-09 03:11:15 UTC (rev 40054)
+++ branches/bmesh/blender/source/blender/bmesh/operators/removedoubles.c 2011-09-09 03:34:48 UTC (rev 40055)
@@ -94,8 +94,12 @@
int a, b;
BM_ITER(v, &iter, bm, BM_VERTS_OF_MESH, NULL) {
- if (BMO_Get_MapPointer(bm, op, "targetmap", v))
+ if ((v2= BMO_Get_MapPointer(bm, op, "targetmap", v))) {
BMO_SetFlag(bm, v, ELE_DEL);
+
+ /* merge the vertex flags, else we get randomly selected/unselected verts */
+ BM_MergeHFlag(v, v2);
+ }
}
BM_ITER(f, &iter, bm, BM_FACES_OF_MESH, NULL) {
More information about the Bf-blender-cvs
mailing list