[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [27383] branches/bmesh/blender/source/ blender: fixed edge slide to an extent, though it still needs work ( finding correct transform direction vector, uvs/vcols, etc).
Joseph Eagar
joeedh at gmail.com
Wed Mar 10 12:16:26 CET 2010
Revision: 27383
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=27383
Author: joeedh
Date: 2010-03-10 12:16:26 +0100 (Wed, 10 Mar 2010)
Log Message:
-----------
fixed edge slide to an extent, though it still needs work (finding correct transform direction vector, uvs/vcols, etc). also got delete and vert connect (ykey) to work again.
Modified Paths:
--------------
branches/bmesh/blender/source/blender/bmesh/intern/bmesh_marking.c
branches/bmesh/blender/source/blender/bmesh/operators/subdivideop.c
branches/bmesh/blender/source/blender/editors/mesh/bmesh_tools.c
branches/bmesh/blender/source/blender/editors/mesh/loopcut.c
branches/bmesh/blender/source/blender/editors/mesh/mesh_ops.c
branches/bmesh/blender/source/blender/editors/transform/transform.c
Modified: branches/bmesh/blender/source/blender/bmesh/intern/bmesh_marking.c
===================================================================
--- branches/bmesh/blender/source/blender/bmesh/intern/bmesh_marking.c 2010-03-10 11:01:26 UTC (rev 27382)
+++ branches/bmesh/blender/source/blender/bmesh/intern/bmesh_marking.c 2010-03-10 11:16:26 UTC (rev 27383)
@@ -118,6 +118,9 @@
void BM_Select_Vert(BMesh *bm, BMVert *v, int select)
{
+ BMIter iter;
+ BMEdge *e;
+
if(select) {
if (!BM_TestHFlag(v, BM_SELECT)) bm->totvertsel += 1;
BM_SetHFlag(v, BM_SELECT);
@@ -125,6 +128,23 @@
if (BM_TestHFlag(v, BM_SELECT)) bm->totvertsel -= 1;
BM_ClearHFlag(v, BM_SELECT);
}
+
+ /*BMESH_TODO hrm, not sure if flushing here is such a good idea. . .
+ but probably easier then calling a EDBM_Normalize_Selection after
+ each tool?*/
+#if 0
+ BM_ITER(e, &iter, bm, BM_EDGES_OF_VERT, v) {
+ if (!BM_TestHFlag(e, BM_SELECT) && BM_TestHFlag(e->v1, BM_SELECT)
+ && BM_TestHFlag(e->v2, BM_SELECT)) {
+ BM_SetHFlag(e, BM_SELECT);
+ bm->totedgesel += 1;
+ } else if (BM_TestHFlag(e, BM_SELECT) && (!BM_TestHFlag(e->v1, BM_SELECT)
+ || !BM_TestHFlag(e->v2, BM_SELECT))) {
+ BM_ClearHFlag(e, BM_SELECT);
+ bm->totedgesel -= 1;
+ }
+ }
+#endif
}
/*
Modified: branches/bmesh/blender/source/blender/bmesh/operators/subdivideop.c
===================================================================
--- branches/bmesh/blender/source/blender/bmesh/operators/subdivideop.c 2010-03-10 11:01:26 UTC (rev 27382)
+++ branches/bmesh/blender/source/blender/bmesh/operators/subdivideop.c 2010-03-10 11:16:26 UTC (rev 27383)
@@ -1006,6 +1006,23 @@
ele = BMO_IterNew(&iter, bm, &op, "outinner", BM_EDGE|BM_VERT);
for (; ele; ele=BMO_IterStep(&iter)) {
BM_Select(bm, ele, 1);
+
+ if (ele->type == BM_VERT) {
+ BMEdge *e;
+ BMIter eiter;
+
+ BM_ITER(e, &eiter, bm, BM_EDGES_OF_VERT, ele) {
+ if (!BM_TestHFlag(e, BM_SELECT) && BM_TestHFlag(e->v1, BM_SELECT)
+ && BM_TestHFlag(e->v2, BM_SELECT)) {
+ BM_SetHFlag(e, BM_SELECT);
+ bm->totedgesel += 1;
+ } else if (BM_TestHFlag(e, BM_SELECT) && (!BM_TestHFlag(e->v1, BM_SELECT)
+ || !BM_TestHFlag(e->v2, BM_SELECT))) {
+ BM_ClearHFlag(e, BM_SELECT);
+ bm->totedgesel -= 1;
+ }
+ }
+ }
}
}
Modified: branches/bmesh/blender/source/blender/editors/mesh/bmesh_tools.c
===================================================================
--- branches/bmesh/blender/source/blender/editors/mesh/bmesh_tools.c 2010-03-10 11:01:26 UTC (rev 27382)
+++ branches/bmesh/blender/source/blender/editors/mesh/bmesh_tools.c 2010-03-10 11:16:26 UTC (rev 27383)
@@ -1158,7 +1158,7 @@
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
/*props */
- RNA_def_enum(ot->srna, "type", prop_mesh_delete_types, 10, "Type", "Method used for deleting mesh data");
+ ot->prop = RNA_def_enum(ot->srna, "type", prop_mesh_delete_types, 10, "Type", "Method used for deleting mesh data");
}
Modified: branches/bmesh/blender/source/blender/editors/mesh/loopcut.c
===================================================================
--- branches/bmesh/blender/source/blender/editors/mesh/loopcut.c 2010-03-10 11:01:26 UTC (rev 27382)
+++ branches/bmesh/blender/source/blender/editors/mesh/loopcut.c 2010-03-10 11:16:26 UTC (rev 27383)
@@ -281,16 +281,17 @@
static void ringsel_finish(bContext *C, wmOperator *op)
{
tringselOpData *lcd= op->customdata;
- int cuts= RNA_int_get(op->ptr,"number_cuts");
+ int cuts= RNA_int_get(op->ptr, "number_cuts");
if (lcd->eed) {
edgering_sel(lcd, cuts, 1);
if (lcd->do_cut) {
BMEditMesh *em = lcd->em;
+
BM_esubdivideflag(lcd->ob, em->bm, BM_SELECT, 0.0f,
0.0f, 0, cuts, SUBDIV_SELECT_LOOPCUT,
SUBD_PATH, 0, 0);
-
+
WM_event_add_notifier(C, NC_GEOM|ND_SELECT|ND_DATA, lcd->ob->data);
DAG_id_flush_update(lcd->ob->data, OB_RECALC_DATA);
}
Modified: branches/bmesh/blender/source/blender/editors/mesh/mesh_ops.c
===================================================================
--- branches/bmesh/blender/source/blender/editors/mesh/mesh_ops.c 2010-03-10 11:01:26 UTC (rev 27382)
+++ branches/bmesh/blender/source/blender/editors/mesh/mesh_ops.c 2010-03-10 11:16:26 UTC (rev 27383)
@@ -154,6 +154,7 @@
WM_operatortype_append(MESH_OT_solidify);
WM_operatortype_append(MESH_OT_select_nth);
+ WM_operatortype_append(MESH_OT_vert_connect);
}
int ED_operator_editmesh_face_select(bContext *C)
@@ -290,7 +291,7 @@
WM_keymap_add_menu(keymap, "INFO_MT_mesh_add", AKEY, KM_PRESS, KM_SHIFT, 0);
WM_keymap_add_item(keymap, "MESH_OT_separate", PKEY, KM_PRESS, 0, 0);
- WM_keymap_add_item(keymap, "MESH_OT_split", YKEY, KM_PRESS, 0, 0);
+ WM_keymap_add_item(keymap, "MESH_OT_vert_connect", YKEY, KM_PRESS, 0, 0);
/* use KM_CLICK because same key is used for tweaks */
WM_keymap_add_item(keymap, "MESH_OT_dupli_extrude_cursor", ACTIONMOUSE, KM_CLICK, KM_CTRL, 0);
Modified: branches/bmesh/blender/source/blender/editors/transform/transform.c
===================================================================
--- branches/bmesh/blender/source/blender/editors/transform/transform.c 2010-03-10 11:01:26 UTC (rev 27382)
+++ branches/bmesh/blender/source/blender/editors/transform/transform.c 2010-03-10 11:16:26 UTC (rev 27383)
@@ -4139,7 +4139,7 @@
VECCOPY(vec, a);
return l;
} else {
- sub_v3_v3v3(n, BM_OtherEdgeVert(l->e, l->v)->co, l->v->co);
+ sub_v3_v3v3(n, BM_OtherEdgeVert(l->e, v)->co, v->co);
add_v3_v3v3(a, a, n);
i += 1;
}
@@ -4243,8 +4243,6 @@
if (!v)
break;
- BMINDEX_SET(v, 0);
-
if (!v->edge)
continue;
@@ -4256,8 +4254,6 @@
/*first, rewind*/
numsel = 0;
do {
- BMINDEX_SET(v, 0);
-
e = get_other_edge(bm, v, e);
if (!e) {
e = v->edge;
@@ -4272,6 +4268,8 @@
v = BM_OtherEdgeVert(e, v);
} while (e != first->edge);
+ BMINDEX_SET(v, 0);
+
l1 = l2 = l = NULL;
l1 = e->loop;
l2 = e->loop->radial.next->data;
@@ -4311,21 +4309,25 @@
e1 = e;
e = get_other_edge(bm, v, e);
if (!e) {
+ //v2=v, v = BM_OtherEdgeVert(l1->e, v);
+
sv = tempsv + j + 1;
sv->v = v;
sv->origvert = *v;
l = BM_OtherFaceLoop(l1->e, l1->f, v);
sv->up = BM_OtherEdgeVert(l->e, v);
+ sub_v3_v3v3(sv->upvec, BM_OtherEdgeVert(l->e, v)->co, v->co);
if (l2) {
l = BM_OtherFaceLoop(l2->e, l2->f, v);
sv->down = BM_OtherEdgeVert(l->e, v);
+ sub_v3_v3v3(sv->downvec, BM_OtherEdgeVert(l->e, v)->co, v->co);
}
BMINDEX_SET(v, 0);
BMINDEX_SET(v2, 0);
-
+
j += 2;
break;
}
@@ -4902,7 +4904,7 @@
add_v3_v3v3(sv->v->co, sv->origvert.co, vec);
} else {
VECCOPY(vec, sv->downvec);
- mul_v3_fl(vec, perc);
+ mul_v3_fl(vec, -perc);
add_v3_v3v3(sv->v->co, sv->origvert.co, vec);
}
}
More information about the Bf-blender-cvs
mailing list