[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [18804] branches/blender2.5/blender/source /blender/editors/mesh: mark and clear seam, set and unset sharp and vertex smoothing is now ctrl/alt 1, 2 and 3 - still a bit vague of op naming

Shaul Kedem shaul_kedem at yahoo.com
Wed Feb 4 03:58:21 CET 2009


Revision: 18804
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=18804
Author:   shul
Date:     2009-02-04 03:58:21 +0100 (Wed, 04 Feb 2009)

Log Message:
-----------
mark and clear seam, set and unset sharp and vertex smoothing is now ctrl/alt 1, 2 and 3 - still a bit vague of op naming

Modified Paths:
--------------
    branches/blender2.5/blender/source/blender/editors/mesh/editmesh_mods.c
    branches/blender2.5/blender/source/blender/editors/mesh/mesh_intern.h
    branches/blender2.5/blender/source/blender/editors/mesh/mesh_ops.c

Modified: branches/blender2.5/blender/source/blender/editors/mesh/editmesh_mods.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/mesh/editmesh_mods.c	2009-02-04 02:55:24 UTC (rev 18803)
+++ branches/blender2.5/blender/source/blender/editors/mesh/editmesh_mods.c	2009-02-04 02:58:21 UTC (rev 18804)
@@ -3768,10 +3768,13 @@
 }
 /* ************************* SEAMS AND EDGES **************** */
 
-void editmesh_mark_seam(EditMesh *em, int clear)
+static int editmesh_mark_seam(bContext *C, wmOperator *op)
 {
-	Mesh *me= NULL; // XXX
+	Object *obedit= CTX_data_edit_object(C);
+	EditMesh *em= ((Mesh *)obedit->data)->edit_mesh;
+	Mesh *me= ((Mesh *)obedit->data);
 	EditEdge *eed;
+	int clear = RNA_boolean_get(op->ptr, "clear");
 	
 	/* auto-enable seams drawing */
 	if(clear==0) {
@@ -3797,11 +3800,33 @@
 		}
 	}
 
+	WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_SELECT, obedit);
+
+	return OPERATOR_FINISHED;
 }
 
-void editmesh_mark_sharp(EditMesh *em, int set)
+void MESH_OT_mark_seam(wmOperatorType *ot)
 {
-	Mesh *me= NULL;
+	/* identifiers */
+	ot->name= "Mark seam";
+	ot->idname= "MESH_OT_mark_seam";
+	
+	/* api callbacks */
+	ot->exec= editmesh_mark_seam;
+	ot->poll= ED_operator_editmesh;
+	
+	/* flags */
+	ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+	
+	RNA_def_boolean(ot->srna, "clear", 0, "Clear", "");
+}
+
+static int editmesh_mark_sharp(bContext *C, wmOperator *op)
+{
+	Object *obedit= CTX_data_edit_object(C);
+	EditMesh *em= ((Mesh *)obedit->data)->edit_mesh;
+	Mesh *me= ((Mesh *)obedit->data);
+	int set = RNA_boolean_get(op->ptr, "set");
 	EditEdge *eed;
 
 	/* auto-enable sharp edge drawing */
@@ -3823,8 +3848,27 @@
 		}
 	}
 
+	WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_SELECT, obedit);
+
+	return OPERATOR_FINISHED;
 }
 
+void MESH_OT_mark_sharp(wmOperatorType *ot)
+{
+	/* identifiers */
+	ot->name= "Mark sharp";
+	ot->idname= "MESH_OT_mark_sharp";
+	
+	/* api callbacks */
+	ot->exec= editmesh_mark_sharp;
+	ot->poll= ED_operator_editmesh;
+	
+	/* flags */
+	ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+	
+	RNA_def_boolean(ot->srna, "set", 0, "Set", "");
+}
+
 void BME_Menu()	{
 	short ret;
 	ret= pupmenu("BME modeller%t|Select Edges of Vert%x1");
@@ -3879,10 +3923,10 @@
 	switch(ret)
 	{
 	case 1:
-		editmesh_mark_seam(em, 0);
+		//editmesh_mark_seam(em, 0);
 		break;
 	case 2:
-		editmesh_mark_seam(em, 1);
+		//editmesh_mark_seam(em, 1);
 		break;
 	case 3:
 //		edge_rotate_selected(em, 2);
@@ -4403,9 +4447,13 @@
 
 /* **************** VERTEX DEFORMS *************** */
 
-void vertexsmooth(Object *obedit, EditMesh *em)
+static int smooth_vertex(bContext *C, wmOperator *op)
 {
-	Scene *scene= NULL; // XXX
+	Scene *scene= CTX_data_scene(C);
+	Object *obedit= CTX_data_edit_object(C);
+	Mesh *me= obedit->data;
+	EditMesh *em= me->edit_mesh; 
+
 	EditVert *eve, *eve_mir = NULL;
 	EditEdge *eed;
 	float *adror, *adr, fac;
@@ -4413,7 +4461,7 @@
 	int teller=0;
 	ModifierData *md= obedit->modifiers.first;
 
-	if(em==NULL) return;
+	if(em==NULL) return OPERATOR_CANCELLED;
 
 	/* count */
 	eve= em->verts.first;
@@ -4421,7 +4469,7 @@
 		if(eve->f & SELECT) teller++;
 		eve= eve->next;
 	}
-	if(teller==0) return;
+	if(teller==0) return OPERATOR_CANCELLED;
 	
 	adr=adror= (float *)MEM_callocN(3*sizeof(float *)*teller, "vertsmooth");
 	eve= em->verts.first;
@@ -4530,10 +4578,27 @@
 
 	recalc_editnormals(em);
 
+	WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_SELECT, obedit);
+
 //	DAG_object_flush_update(scene, obedit, OB_RECALC_DATA);
 
+	return OPERATOR_FINISHED;
 }
 
+void MESH_OT_smooth_vertex(wmOperatorType *ot)
+{
+	/* identifiers */
+	ot->name= "Smooth Vertex";
+	ot->idname= "MESH_OT_smooth_vertex";
+	
+	/* api callbacks */
+	ot->exec= smooth_vertex;
+	ot->poll= ED_operator_editmesh;
+	
+	/* flags */
+	ot->flag= OPTYPE_UNDO;
+}
+
 void vertexnoise(Object *obedit, EditMesh *em)
 {
 	Material *ma;

Modified: branches/blender2.5/blender/source/blender/editors/mesh/mesh_intern.h
===================================================================
--- branches/blender2.5/blender/source/blender/editors/mesh/mesh_intern.h	2009-02-04 02:55:24 UTC (rev 18803)
+++ branches/blender2.5/blender/source/blender/editors/mesh/mesh_intern.h	2009-02-04 02:58:21 UTC (rev 18804)
@@ -193,6 +193,9 @@
 void MESH_OT_vertices_to_sphere(struct wmOperatorType *ot);
 void MESH_OT_selection_type(struct wmOperatorType *ot);
 void MESH_OT_select_multi_loop(struct wmOperatorType *ot);
+void MESH_OT_mark_seam(struct wmOperatorType *ot);
+void MESH_OT_mark_sharp(struct wmOperatorType *ot);
+void MESH_OT_smooth_vertex(struct wmOperatorType *ot);
 
 extern EditEdge *findnearestedge(ViewContext *vc, int *dist);
 extern void EM_automerge(int update);

Modified: branches/blender2.5/blender/source/blender/editors/mesh/mesh_ops.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/mesh/mesh_ops.c	2009-02-04 02:55:24 UTC (rev 18803)
+++ branches/blender2.5/blender/source/blender/editors/mesh/mesh_ops.c	2009-02-04 02:58:21 UTC (rev 18804)
@@ -161,6 +161,9 @@
 	WM_operatortype_append(MESH_OT_similar_edge_select);
 	WM_operatortype_append(MESH_OT_similar_face_select);
 	WM_operatortype_append(MESH_OT_select_multi_loop);
+	WM_operatortype_append(MESH_OT_mark_seam);
+	WM_operatortype_append(MESH_OT_mark_sharp);
+	WM_operatortype_append(MESH_OT_smooth_vertex);
 	
 }
 
@@ -198,7 +201,15 @@
 	
 	WM_keymap_add_item(keymap, "MESH_OT_select_random", SPACEKEY, KM_PRESS, 0, 0);
 	WM_keymap_add_item(keymap, "MESH_OT_vertices_to_sphere", SKEY, KM_PRESS, KM_CTRL|KM_SHIFT , 0);
-	
+
+	WM_keymap_add_item(keymap, "MESH_OT_mark_seam", ONEKEY, KM_PRESS, KM_CTRL , 0);
+	RNA_boolean_set(WM_keymap_add_item(keymap, "MESH_OT_mark_seam", ONEKEY, KM_PRESS, KM_ALT , 0)->ptr,"clear",1);
+
+	WM_keymap_add_item(keymap, "MESH_OT_mark_sharp", TWOKEY, KM_PRESS, KM_CTRL , 0);
+	RNA_boolean_set(WM_keymap_add_item(keymap, "MESH_OT_mark_sharp", TWOKEY, KM_PRESS, KM_ALT , 0)->ptr,"set",1);
+
+	WM_keymap_add_item(keymap, "MESH_OT_smooth_vertex", THREEKEY, KM_PRESS, KM_CTRL , 0);
+
 	/* temp hotkeys! */
 	WM_keymap_add_item(keymap, "MESH_OT_similar_vertex_select", GKEY, KM_PRESS, KM_SHIFT, 0);
 	WM_keymap_add_item(keymap, "MESH_OT_similar_edge_select", GKEY, KM_PRESS, KM_SHIFT2|KM_CTRL, 0);





More information about the Bf-blender-cvs mailing list