[Bf-committers] Rotate Edge in Both Directions
Johnny Matthews
johnny.matthews at gmail.com
Tue Feb 15 21:13:23 CET 2005
Here is a patch to be able to rotate an edge either Clockwise or
CounterClockwise. I can A) go ahead and commit this for testing or B)
let people try out the patch. The mods are easily removed if there are
major issues. I have done a bunch of testing and the crashes I was
getting have been resolved. So I need others to hit it hard and find
other bugs in it. So Ton, should I do A or B?
Johnny
-------------- next part --------------
Index: source/blender/include/BIF_editmesh.h
===================================================================
RCS file: /cvsroot/bf-blender/blender/source/blender/include/BIF_editmesh.h,v
retrieving revision 1.36
diff -u -r1.36 BIF_editmesh.h
--- source/blender/include/BIF_editmesh.h 24 Nov 2004 16:29:10 -0000 1.36
+++ source/blender/include/BIF_editmesh.h 14 Feb 2005 20:33:59 -0000
@@ -167,7 +168,7 @@
extern void edge_flip(void);
extern void fill_mesh(void);
extern void bevel_menu();
-void edge_rotate_selected(void);
+void edge_rotate_selected(int dir);
#endif
Index: source/blender/src/editmesh_mods.c
===================================================================
RCS file: /cvsroot/bf-blender/blender/source/blender/src/editmesh_mods.c,v
retrieving revision 1.42
diff -u -r1.42 editmesh_mods.c
--- source/blender/src/editmesh_mods.c 8 Jan 2005 13:50:44 -0000 1.42
+++ source/blender/src/editmesh_mods.c 15 Feb 2005 19:07:42 -0000
@@ -1704,7 +1704,7 @@
void Edge_Menu() {
short ret;
- ret= pupmenu("Edge Specials%t|Mark Seam %x1|Clear Seam %x2|Rotate Edge %x3");
+ ret= pupmenu("Edge Specials%t|Mark Seam %x1|Clear Seam %x2|Rotate Edge CW%x3|Rotate Edge CCW%x4");
switch(ret)
{
@@ -1715,7 +1715,10 @@
editmesh_mark_seam(1);
break;
case 3:
- edge_rotate_selected();
+ edge_rotate_selected(2);
+ break;
+ case 4:
+ edge_rotate_selected(1);
break;
}
}
Index: source/blender/src/editmesh_tools.c
===================================================================
RCS file: /cvsroot/bf-blender/blender/source/blender/src/editmesh_tools.c,v
retrieving revision 1.29
diff -u -r1.29 editmesh_tools.c
--- source/blender/src/editmesh_tools.c 14 Feb 2005 20:14:10 -0000 1.29
+++ source/blender/src/editmesh_tools.c 15 Feb 2005 20:04:50 -0000
@@ -2434,7 +2434,7 @@
}
-static void edge_rotate(EditEdge *eed)
+static void edge_rotate(EditEdge *eed,int dir)
{
EditMesh *em = G.editMesh;
EditFace *face[2], *efa, *newFace[2];
@@ -2564,95 +2564,176 @@
/* create the 2 new faces */
if(fac1 == 3 && fac2 == 3){
- newFace[0] = addfacelist(faces[0][(p1+1)%3],faces[0][(p1+2)%3],faces[1][(p3+1)%3],NULL,NULL,NULL);
- newFace[1] = addfacelist(faces[1][(p3+1)%3],faces[1][(p3+2)%3],faces[0][(p1+1)%3],NULL,NULL,NULL);
-
- newFace[0]->tf.col[0] = face[0]->tf.col[(p1+1)%3];
- newFace[0]->tf.col[1] = face[0]->tf.col[(p1+2)%3];
- newFace[0]->tf.col[2] = face[1]->tf.col[(p3+1)%3];
- newFace[1]->tf.col[0] = face[1]->tf.col[(p3+1)%3];
- newFace[1]->tf.col[1] = face[1]->tf.col[(p3+2)%3];
- newFace[1]->tf.col[2] = face[0]->tf.col[(p1+1)%3];
-
- UVCOPY(newFace[0]->tf.uv[0],face[0]->tf.uv[(p1+1)%3]);
- UVCOPY(newFace[0]->tf.uv[1],face[0]->tf.uv[(p1+2)%3]);
- UVCOPY(newFace[0]->tf.uv[2],face[1]->tf.uv[(p3+1)%3]);
- UVCOPY(newFace[1]->tf.uv[0],face[1]->tf.uv[(p3+1)%3]);
- UVCOPY(newFace[1]->tf.uv[1],face[1]->tf.uv[(p3+2)%3]);
- UVCOPY(newFace[1]->tf.uv[2],face[0]->tf.uv[(p1+1)%3]);
+ /*No need of reverse setup*/
+ newFace[0] = addfacelist(faces[0][(p1+1 )%3],faces[0][(p1+2 )%3],faces[1][(p3+1 )%3],NULL,NULL,NULL);
+ newFace[1] = addfacelist(faces[1][(p3+1 )%3],faces[1][(p3+2 )%3],faces[0][(p1+1 )%3],NULL,NULL,NULL);
+
+ newFace[0]->tf.col[0] = face[0]->tf.col[(p1+1 )%3];
+ newFace[0]->tf.col[1] = face[0]->tf.col[(p1+2 )%3];
+ newFace[0]->tf.col[2] = face[1]->tf.col[(p3+1 )%3];
+ newFace[1]->tf.col[0] = face[1]->tf.col[(p3+1 )%3];
+ newFace[1]->tf.col[1] = face[1]->tf.col[(p3+2 )%3];
+ newFace[1]->tf.col[2] = face[0]->tf.col[(p1+1 )%3];
+
+ UVCOPY(newFace[0]->tf.uv[0],face[0]->tf.uv[(p1+1 )%3]);
+ UVCOPY(newFace[0]->tf.uv[1],face[0]->tf.uv[(p1+2 )%3]);
+ UVCOPY(newFace[0]->tf.uv[2],face[1]->tf.uv[(p3+1 )%3]);
+ UVCOPY(newFace[1]->tf.uv[0],face[1]->tf.uv[(p3+1 )%3]);
+ UVCOPY(newFace[1]->tf.uv[1],face[1]->tf.uv[(p3+2 )%3]);
+ UVCOPY(newFace[1]->tf.uv[2],face[0]->tf.uv[(p1+1 )%3]);
}
else if(fac1 == 4 && fac2 == 3){
- newFace[0] = addfacelist(faces[0][(p1+1)%4],faces[0][(p1+2)%4],faces[0][(p1+3)%4],faces[1][(p3+1)%3],NULL,NULL);
- newFace[1] = addfacelist(faces[1][(p3+1)%3],faces[1][(p3+2)%3],faces[0][(p1+1)%4],NULL,NULL,NULL);
-
- newFace[0]->tf.col[0] = face[0]->tf.col[(p1+1)%4];
- newFace[0]->tf.col[1] = face[0]->tf.col[(p1+2)%4];
- newFace[0]->tf.col[2] = face[0]->tf.col[(p1+3)%4];
- newFace[0]->tf.col[3] = face[1]->tf.col[(p3+1)%3];
- newFace[1]->tf.col[0] = face[1]->tf.col[(p3+1)%3];
- newFace[1]->tf.col[1] = face[1]->tf.col[(p3+2)%3];
- newFace[1]->tf.col[2] = face[0]->tf.col[(p1+1)%4];
-
- UVCOPY(newFace[0]->tf.uv[0],face[0]->tf.uv[(p1+1)%4]);
- UVCOPY(newFace[0]->tf.uv[1],face[0]->tf.uv[(p1+2)%4]);
- UVCOPY(newFace[0]->tf.uv[2],face[0]->tf.uv[(p1+3)%4]);
- UVCOPY(newFace[0]->tf.uv[3],face[1]->tf.uv[(p3+1)%3]);
- UVCOPY(newFace[1]->tf.uv[0],face[1]->tf.uv[(p3+1)%3]);
- UVCOPY(newFace[1]->tf.uv[1],face[1]->tf.uv[(p3+2)%3]);
- UVCOPY(newFace[1]->tf.uv[2],face[0]->tf.uv[(p1+1)%4]);
+ if(dir == 1){
+ newFace[0] = addfacelist(faces[0][(p1+1 )%4],faces[0][(p1+2 )%4],faces[0][(p1+3 )%4],faces[1][(p3+1 )%3],NULL,NULL);
+ newFace[1] = addfacelist(faces[1][(p3+1 )%3],faces[1][(p3+2 )%3],faces[0][(p1+1 )%4],NULL,NULL,NULL);
+
+ newFace[0]->tf.col[0] = face[0]->tf.col[(p1+1 )%4];
+ newFace[0]->tf.col[1] = face[0]->tf.col[(p1+2 )%4];
+ newFace[0]->tf.col[2] = face[0]->tf.col[(p1+3 )%4];
+ newFace[0]->tf.col[3] = face[1]->tf.col[(p3+1 )%3];
+ newFace[1]->tf.col[0] = face[1]->tf.col[(p3+1 )%3];
+ newFace[1]->tf.col[1] = face[1]->tf.col[(p3+2 )%3];
+ newFace[1]->tf.col[2] = face[0]->tf.col[(p1+1 )%4];
+
+ UVCOPY(newFace[0]->tf.uv[0],face[0]->tf.uv[(p1+1 )%4]);
+ UVCOPY(newFace[0]->tf.uv[1],face[0]->tf.uv[(p1+2 )%4]);
+ UVCOPY(newFace[0]->tf.uv[2],face[0]->tf.uv[(p1+3 )%4]);
+ UVCOPY(newFace[0]->tf.uv[3],face[1]->tf.uv[(p3+1 )%3]);
+ UVCOPY(newFace[1]->tf.uv[0],face[1]->tf.uv[(p3+1 )%3]);
+ UVCOPY(newFace[1]->tf.uv[1],face[1]->tf.uv[(p3+2 )%3]);
+ UVCOPY(newFace[1]->tf.uv[2],face[0]->tf.uv[(p1+1 )%4]);
+ } else if (dir == 2){
+ newFace[0] = addfacelist(faces[0][(p1+2 )%4],faces[1][(p3+1)%3],faces[0][(p1)%4],faces[0][(p1+1 )%4],NULL,NULL);
+ newFace[1] = addfacelist(faces[0][(p1+2 )%4],faces[1][(p3)%3],faces[1][(p3+1 )%3],NULL,NULL,NULL);
+
+ newFace[0]->tf.col[0] = face[0]->tf.col[(p1+2)%4];
+ newFace[0]->tf.col[1] = face[1]->tf.col[(p3+1)%3];
+ newFace[0]->tf.col[2] = face[0]->tf.col[(p1 )%4];
+ newFace[0]->tf.col[3] = face[0]->tf.col[(p1+1)%4];
+ newFace[1]->tf.col[0] = face[0]->tf.col[(p1+2)%4];
+ newFace[1]->tf.col[1] = face[1]->tf.col[(p3 )%3];
+ newFace[1]->tf.col[2] = face[1]->tf.col[(p3+1)%3];
+
+ UVCOPY(newFace[0]->tf.uv[0],face[0]->tf.uv[(p1+2)%4]);
+ UVCOPY(newFace[0]->tf.uv[1],face[1]->tf.uv[(p3+1)%3]);
+ UVCOPY(newFace[0]->tf.uv[2],face[0]->tf.uv[(p1 )%4]);
+ UVCOPY(newFace[0]->tf.uv[3],face[0]->tf.uv[(p1+1)%4]);
+ UVCOPY(newFace[1]->tf.uv[0],face[0]->tf.uv[(p1+2)%4]);
+ UVCOPY(newFace[1]->tf.uv[1],face[1]->tf.uv[(p3 )%3]);
+ UVCOPY(newFace[1]->tf.uv[2],face[1]->tf.uv[(p3+1)%3]);
+
+ faces[0][(p1+2)%fac1]->f |= SELECT;
+ faces[1][(p3+1)%fac2]->f |= SELECT;
+ }
}
else if(fac1 == 3 && fac2 == 4){
- newFace[0] = addfacelist(faces[0][(p1+1)%3],faces[0][(p1+2)%3],faces[1][(p3+1)%4],NULL,NULL,NULL);
- newFace[1] = addfacelist(faces[1][(p3+1)%4],faces[1][(p3+2)%4],faces[1][(p3+3)%4],faces[0][(p1+1)%3],NULL,NULL);
-
- newFace[0]->tf.col[0] = face[0]->tf.col[(p1+1)%3];
- newFace[0]->tf.col[1] = face[0]->tf.col[(p1+2)%3];
- newFace[0]->tf.col[2] = face[1]->tf.col[(p3+1)%4];
- newFace[1]->tf.col[0] = face[1]->tf.col[(p3+1)%4];
- newFace[1]->tf.col[1] = face[1]->tf.col[(p3+2)%4];
- newFace[1]->tf.col[2] = face[1]->tf.col[(p3+3)%4];
- newFace[1]->tf.col[3] = face[0]->tf.col[(p1+1)%3];
-
- UVCOPY(newFace[0]->tf.uv[0],face[0]->tf.uv[(p1+1)%3]);
- UVCOPY(newFace[0]->tf.uv[1],face[0]->tf.uv[(p1+2)%3]);
- UVCOPY(newFace[0]->tf.uv[2],face[1]->tf.uv[(p3+1)%4]);
- UVCOPY(newFace[1]->tf.uv[0],face[1]->tf.uv[(p3+1)%4]);
- UVCOPY(newFace[1]->tf.uv[1],face[1]->tf.uv[(p3+2)%4]);
- UVCOPY(newFace[1]->tf.uv[2],face[1]->tf.uv[(p3+3)%4]);
- UVCOPY(newFace[1]->tf.uv[3],face[0]->tf.uv[(p1+1)%3]);
+ if(dir == 1){
+ newFace[0] = addfacelist(faces[0][(p1+1 )%3],faces[0][(p1+2 )%3],faces[1][(p3+1 )%4],NULL,NULL,NULL);
+ newFace[1] = addfacelist(faces[1][(p3+1 )%4],faces[1][(p3+2 )%4],faces[1][(p3+3 )%4],faces[0][(p1+1 )%3],NULL,NULL);
+
+ newFace[0]->tf.col[0] = face[0]->tf.col[(p1+1 )%3];
+ newFace[0]->tf.col[1] = face[0]->tf.col[(p1+2 )%3];
+ newFace[0]->tf.col[2] = face[1]->tf.col[(p3+1 )%4];
+ newFace[1]->tf.col[0] = face[1]->tf.col[(p3+1 )%4];
+ newFace[1]->tf.col[1] = face[1]->tf.col[(p3+2 )%4];
+ newFace[1]->tf.col[2] = face[1]->tf.col[(p3+3 )%4];
+ newFace[1]->tf.col[3] = face[0]->tf.col[(p1+1 )%3];
+
+ UVCOPY(newFace[0]->tf.uv[0],face[0]->tf.uv[(p1+1 )%3]);
+ UVCOPY(newFace[0]->tf.uv[1],face[0]->tf.uv[(p1+2 )%3]);
+ UVCOPY(newFace[0]->tf.uv[2],face[1]->tf.uv[(p3+1 )%4]);
+ UVCOPY(newFace[1]->tf.uv[0],face[1]->tf.uv[(p3+1 )%4]);
+ UVCOPY(newFace[1]->tf.uv[1],face[1]->tf.uv[(p3+2 )%4]);
+ UVCOPY(newFace[1]->tf.uv[2],face[1]->tf.uv[(p3+3 )%4]);
+ UVCOPY(newFace[1]->tf.uv[3],face[0]->tf.uv[(p1+1 )%3]);
+ } else if (dir == 2){
+ newFace[0] = addfacelist(faces[0][(p1)%3],faces[0][(p1+1 )%3],faces[1][(p3+2 )%4],NULL,NULL,NULL);
+ newFace[1] = addfacelist(faces[1][(p3+1 )%4],faces[1][(p3+2 )%4],faces[0][(p1+1 )%3],faces[0][(p1+2 )%3],NULL,NULL);
+
+ newFace[0]->tf.col[0] = face[0]->tf.col[(p1 )%3];
+ newFace[0]->tf.col[1] = face[0]->tf.col[(p1+1 )%3];
+ newFace[0]->tf.col[2] = face[1]->tf.col[(p3+2 )%4];
+ newFace[1]->tf.col[0] = face[1]->tf.col[(p3+1 )%4];
+ newFace[1]->tf.col[1] = face[1]->tf.col[(p3+2 )%4];
+ newFace[1]->tf.col[2] = face[0]->tf.col[(p1+1 )%3];
+ newFace[1]->tf.col[3] = face[0]->tf.col[(p1+2 )%3];
+
+ UVCOPY(newFace[0]->tf.uv[0],face[0]->tf.uv[(p1 )%3]);
+ UVCOPY(newFace[0]->tf.uv[1],face[0]->tf.uv[(p1+1 )%3]);
+ UVCOPY(newFace[0]->tf.uv[2],face[1]->tf.uv[(p3+2 )%4]);
+ UVCOPY(newFace[1]->tf.uv[0],face[1]->tf.uv[(p3+1 )%4]);
+ UVCOPY(newFace[1]->tf.uv[1],face[1]->tf.uv[(p3+2 )%4]);
+ UVCOPY(newFace[1]->tf.uv[2],face[0]->tf.uv[(p1+1 )%3]);
+ UVCOPY(newFace[1]->tf.uv[3],face[0]->tf.uv[(p1+2 )%3]);
+
+ faces[0][(p1+1)%fac1]->f |= SELECT;
+ faces[1][(p3+2)%fac2]->f |= SELECT;
+ }
}
else if(fac1 == 4 && fac2 == 4){
- newFace[0] = addfacelist(faces[0][(p1+1)%4],faces[0][(p1+2)%4],faces[0][(p1+3)%4],faces[1][(p3+1)%4],NULL,NULL);
- newFace[1] = addfacelist(faces[1][(p3+1)%4],faces[1][(p3+2)%4],faces[1][(p3+3)%4],faces[0][(p1+1)%4],NULL,NULL);
+ if(dir == 1){
+ newFace[0] = addfacelist(faces[0][(p1+1 )%4],faces[0][(p1+2 )%4],faces[0][(p1+3 )%4],faces[1][(p3+1 )%4],NULL,NULL);
+ newFace[1] = addfacelist(faces[1][(p3+1 )%4],faces[1][(p3+2 )%4],faces[1][(p3+3 )%4],faces[0][(p1+1 )%4],NULL,NULL);
+
+ newFace[0]->tf.col[0] = face[0]->tf.col[(p1+1 )%4];
+ newFace[0]->tf.col[1] = face[0]->tf.col[(p1+2 )%4];
+ newFace[0]->tf.col[2] = face[0]->tf.col[(p1+3 )%4];
+ newFace[0]->tf.col[3] = face[1]->tf.col[(p3+1 )%4];
+ newFace[1]->tf.col[0] = face[1]->tf.col[(p3+1 )%4];
+ newFace[1]->tf.col[1] = face[1]->tf.col[(p3+2 )%4];
+ newFace[1]->tf.col[2] = face[1]->tf.col[(p3+3 )%4];
+ newFace[1]->tf.col[3] = face[0]->tf.col[(p1+1 )%4];
+
+ UVCOPY(newFace[0]->tf.uv[0],face[0]->tf.uv[(p1+1 )%4]);
+ UVCOPY(newFace[0]->tf.uv[1],face[0]->tf.uv[(p1+2 )%4]);
+ UVCOPY(newFace[0]->tf.uv[2],face[0]->tf.uv[(p1+3 )%4]);
+ UVCOPY(newFace[0]->tf.uv[3],face[1]->tf.uv[(p3+1 )%4]);
+ UVCOPY(newFace[1]->tf.uv[0],face[1]->tf.uv[(p3+1 )%4]);
+ UVCOPY(newFace[1]->tf.uv[1],face[1]->tf.uv[(p3+2 )%4]);
+ UVCOPY(newFace[1]->tf.uv[2],face[1]->tf.uv[(p3+3 )%4]);
+ UVCOPY(newFace[1]->tf.uv[3],face[0]->tf.uv[(p1+1 )%4]);
+ } else if (dir == 2){
+ newFace[0] = addfacelist(faces[0][(p1+2 )%4],faces[0][(p1+3 )%4],faces[1][(p3+1 )%4],faces[1][(p3+2 )%4],NULL,NULL);
+ newFace[1] = addfacelist(faces[1][(p3+2 )%4],faces[1][(p3+3 )%4],faces[0][(p1+1 )%4],faces[0][(p1+2 )%4],NULL,NULL);
+
+ newFace[0]->tf.col[0] = face[0]->tf.col[(p1+2 )%4];
+ newFace[0]->tf.col[1] = face[0]->tf.col[(p1+3 )%4];
+ newFace[0]->tf.col[2] = face[1]->tf.col[(p3+1 )%4];
+ newFace[0]->tf.col[3] = face[1]->tf.col[(p3+2 )%4];
+ newFace[1]->tf.col[0] = face[1]->tf.col[(p3+2 )%4];
+ newFace[1]->tf.col[1] = face[1]->tf.col[(p3+3 )%4];
+ newFace[1]->tf.col[2] = face[0]->tf.col[(p1+1 )%4];
+ newFace[1]->tf.col[3] = face[0]->tf.col[(p1+2 )%4];
+
+ UVCOPY(newFace[0]->tf.uv[0],face[0]->tf.uv[(p1+2 )%4]);
+ UVCOPY(newFace[0]->tf.uv[1],face[0]->tf.uv[(p1+3 )%4]);
+ UVCOPY(newFace[0]->tf.uv[2],face[1]->tf.uv[(p3+1 )%4]);
+ UVCOPY(newFace[0]->tf.uv[3],face[1]->tf.uv[(p3+2 )%4]);
+ UVCOPY(newFace[1]->tf.uv[0],face[1]->tf.uv[(p3+2 )%4]);
+ UVCOPY(newFace[1]->tf.uv[1],face[1]->tf.uv[(p3+3 )%4]);
+ UVCOPY(newFace[1]->tf.uv[2],face[0]->tf.uv[(p1+1 )%4]);
+ UVCOPY(newFace[1]->tf.uv[3],face[0]->tf.uv[(p1+2 )%4]);
+
+ faces[0][(p1+2)%fac1]->f |= SELECT;
+ faces[1][(p3+2)%fac2]->f |= SELECT;
+ }
+
- newFace[0]->tf.col[0] = face[0]->tf.col[(p1+1)%4];
- newFace[0]->tf.col[1] = face[0]->tf.col[(p1+2)%4];
- newFace[0]->tf.col[2] = face[0]->tf.col[(p1+3)%4];
- newFace[0]->tf.col[3] = face[1]->tf.col[(p3+1)%4];
- newFace[1]->tf.col[0] = face[1]->tf.col[(p3+1)%4];
- newFace[1]->tf.col[1] = face[1]->tf.col[(p3+2)%4];
- newFace[1]->tf.col[2] = face[1]->tf.col[(p3+3)%4];
- newFace[1]->tf.col[3] = face[0]->tf.col[(p1+1)%4];
-
- UVCOPY(newFace[0]->tf.uv[0],face[0]->tf.uv[(p1+1)%4]);
- UVCOPY(newFace[0]->tf.uv[1],face[0]->tf.uv[(p1+2)%4]);
- UVCOPY(newFace[0]->tf.uv[2],face[0]->tf.uv[(p1+3)%4]);
- UVCOPY(newFace[0]->tf.uv[3],face[1]->tf.uv[(p3+1)%4]);
- UVCOPY(newFace[1]->tf.uv[0],face[1]->tf.uv[(p3+1)%4]);
- UVCOPY(newFace[1]->tf.uv[1],face[1]->tf.uv[(p3+2)%4]);
- UVCOPY(newFace[1]->tf.uv[2],face[1]->tf.uv[(p3+3)%4]);
- UVCOPY(newFace[1]->tf.uv[3],face[0]->tf.uv[(p1+1)%4]);
}
else{
/*This should never happen*/
return;
}
+
+ if(dir == 1){
+ faces[0][(p1+1)%fac1]->f |= SELECT;
+ faces[1][(p3+1)%fac2]->f |= SELECT;
+ }
/* copy flags and material */
-
newFace[0]->mat_nr = face[0]->mat_nr;
newFace[0]->tf.flag = face[0]->tf.flag;
newFace[0]->tf.transp = face[0]->tf.transp;
@@ -2670,22 +2751,21 @@
newFace[1]->tf.tpage = face[1]->tf.tpage;
/* redo the vertex selection */
- faces[0][(p1+1)%fac1]->f |= SELECT;
- faces[1][(p3+1)%fac2]->f |= SELECT;
+
+
/* get rid of the old edge and faces*/
remedge(eed);
free_editedge(eed);
BLI_remlink(&em->faces, face[0]);
free_editface(face[0]);
BLI_remlink(&em->faces, face[1]);
- free_editface(face[1]);
-
+ free_editface(face[1]);
return;
}
/* only accepts 1 selected edge, or 2 selected faces */
-void edge_rotate_selected()
+void edge_rotate_selected(int dir)
{
EditEdge *eed;
EditFace *efa;
@@ -2715,7 +2795,7 @@
if(edgeCount==1) {
for(eed= G.editMesh->edges.first; eed; eed= eed->next) {
if(eed->f1==2) {
- edge_rotate(eed);
+ edge_rotate(eed,dir);
break;
}
}
@@ -2726,7 +2806,7 @@
for(eed= G.editMesh->edges.first; eed; eed= eed->next) {
if(eed->f & SELECT) {
EM_select_edge(eed, 0);
- edge_rotate(eed);
+ edge_rotate(eed,dir);
break;
}
}
Index: source/blender/src/header_view3d.c
===================================================================
RCS file: /cvsroot/bf-blender/blender/source/blender/src/header_view3d.c,v
retrieving revision 1.87
diff -u -r1.87 header_view3d.c
--- source/blender/src/header_view3d.c 12 Feb 2005 12:06:30 -0000 1.87
+++ source/blender/src/header_view3d.c 15 Feb 2005 19:06:45 -0000
@@ -1922,7 +1922,10 @@
transform('e');
break;
case 10: /* Rotate Edge */
- edge_rotate_selected();
+ edge_rotate_selected(2);
+ break;
+ case 11: /* Rotate Edge */
+ edge_rotate_selected(1);
break;
}
allqueue(REDRAWVIEW3D, 0);
@@ -1963,7 +1966,8 @@
}
uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Rotate Edge|Ctrl E", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 10, "");
+ uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Rotate Edge CW|Ctrl E", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 10, "");
+ uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Rotate Edge CCW|Ctrl E", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 10, "");
uiBlockSetDirection(block, UI_RIGHT);
uiTextBoundsBlock(block, 60);
More information about the Bf-committers
mailing list