diff options
author | Joseph Eagar <joeedh@gmail.com> | 2011-05-09 03:43:18 +0400 |
---|---|---|
committer | Joseph Eagar <joeedh@gmail.com> | 2011-05-09 03:43:18 +0400 |
commit | 6ef77cf95accc3cb914e7efd964118ce6e9521cf (patch) | |
tree | 1d8dbf95355038c93f79f9053a0bf1d55b561ec3 /source/blender/editors/mesh | |
parent | 3462ddf17f38eb61fc3bb2751d55de15a47455c3 (diff) | |
parent | 770119d16f7dbee99a60d19540818892c970c4e2 (diff) |
=bmesh= merge from trunk at r36529
Diffstat (limited to 'source/blender/editors/mesh')
-rw-r--r-- | source/blender/editors/mesh/bmesh_select.c | 6 | ||||
-rw-r--r-- | source/blender/editors/mesh/bmesh_tools.c | 4 | ||||
-rw-r--r-- | source/blender/editors/mesh/editface.c | 4 | ||||
-rw-r--r-- | source/blender/editors/mesh/mesh_data.c | 19 | ||||
-rw-r--r-- | source/blender/editors/mesh/mesh_ops.c | 14 | ||||
-rw-r--r-- | source/blender/editors/mesh/meshtools.c | 5 |
6 files changed, 39 insertions, 13 deletions
diff --git a/source/blender/editors/mesh/bmesh_select.c b/source/blender/editors/mesh/bmesh_select.c index 20474e2fba0..e0c0215bc2b 100644 --- a/source/blender/editors/mesh/bmesh_select.c +++ b/source/blender/editors/mesh/bmesh_select.c @@ -1152,7 +1152,7 @@ void MESH_OT_select_shortest_path(wmOperatorType *ot) /* ************************************************** */ /* here actual select happens */ /* gets called via generic mouse select operator */ -int mouse_mesh(bContext *C, short mval[2], short extend) +int mouse_mesh(bContext *C, const short mval[2], short extend) { ViewContext vc; BMVert *eve = NULL; @@ -1627,8 +1627,8 @@ void MESH_OT_select_less(wmOperatorType *ot) static int mesh_select_nth_exec(bContext *C, wmOperator *op) { Object *obedit= CTX_data_edit_object(C); - BMEditMesh *em= ((Mesh *)obedit->data)->edit_btmesh; - int nth = RNA_int_get(op->ptr, "nth"); +// BMEditMesh *em= ((Mesh *)obedit->data)->edit_btmesh; +// int nth = RNA_int_get(op->ptr, "nth"); #if 0 //BMESH_TODO if(EM_deselect_nth(em, nth) == 0) { diff --git a/source/blender/editors/mesh/bmesh_tools.c b/source/blender/editors/mesh/bmesh_tools.c index ee829ac473c..ca6f61e24fd 100644 --- a/source/blender/editors/mesh/bmesh_tools.c +++ b/source/blender/editors/mesh/bmesh_tools.c @@ -867,7 +867,7 @@ static int dupli_extrude_cursor(bContext *C, wmOperator *op, wmEvent *event) VECCOPY(min, cent); mul_m4_v3(vc.obedit->obmat, min); // view space - view3d_get_view_aligned_coordinate(&vc, min, event->mval); + view3d_get_view_aligned_coordinate(&vc, min, event->mval, 0); invert_m4_m4(vc.obedit->imat, vc.obedit->obmat); mul_m4_v3(vc.obedit->imat, min); // back in object space @@ -912,7 +912,7 @@ static int dupli_extrude_cursor(bContext *C, wmOperator *op, wmEvent *event) VECCOPY(min, curs); - view3d_get_view_aligned_coordinate(&vc, min, event->mval); + view3d_get_view_aligned_coordinate(&vc, min, event->mval, 0); invert_m4_m4(vc.obedit->imat, vc.obedit->obmat); mul_m4_v3(vc.obedit->imat, min); // back in object space diff --git a/source/blender/editors/mesh/editface.c b/source/blender/editors/mesh/editface.c index 0b3317f9062..06eb1f1ead4 100644 --- a/source/blender/editors/mesh/editface.c +++ b/source/blender/editors/mesh/editface.c @@ -101,7 +101,7 @@ void paintface_flush_flags(Object *ob) } /* returns 0 if not found, otherwise 1 */ -static int facesel_face_pick(struct bContext *C, Mesh *me, Object *ob, short *mval, unsigned int *index, short rect) +static int facesel_face_pick(struct bContext *C, Mesh *me, Object *ob, const short mval[2], unsigned int *index, short rect) { Scene *scene = CTX_data_scene(C); ViewContext vc; @@ -748,7 +748,7 @@ void seam_mark_clear_tface(Scene *scene, short mode) } #endif -int paintface_mouse_select(struct bContext *C, Object *ob, short mval[2], int extend) +int paintface_mouse_select(struct bContext *C, Object *ob, const short mval[2], int extend) { Mesh *me; MPoly *mface, *msel; diff --git a/source/blender/editors/mesh/mesh_data.c b/source/blender/editors/mesh/mesh_data.c index 96512600dda..b6c6570e27d 100644 --- a/source/blender/editors/mesh/mesh_data.c +++ b/source/blender/editors/mesh/mesh_data.c @@ -176,6 +176,17 @@ static void delete_customdata_layer(bContext *C, Object *ob, CustomDataLayer *la } } +static void copy_editface_active_customdata(EditMesh *em, int type, int index) +{ + EditFace *efa; + int n= CustomData_get_active_layer(&em->fdata, type); + + for(efa= em->faces.first; efa; efa= efa->next) { + void *data= CustomData_em_get_n(&em->fdata, efa->data, type, n); + CustomData_em_set_n(&em->fdata, efa->data, type, index, data); + } +} + int ED_mesh_uv_texture_add(bContext *C, Mesh *me, const char *name, int active_set) { BMEditMesh *em; @@ -190,6 +201,10 @@ int ED_mesh_uv_texture_add(bContext *C, Mesh *me, const char *name, int active_s BM_add_data_layer(em->bm, &em->bm->pdata, CD_MTEXPOLY); CustomData_set_layer_active(&em->bm->pdata, CD_MTEXPOLY, layernum); + + if(layernum) /* copy data from active UV */ + copy_editface_active_customdata(em, CD_MTFACE, layernum); + if(active_set || layernum==0) CustomData_set_layer_active(&em->bm->pdata, CD_MTEXPOLY, layernum); @@ -265,6 +280,10 @@ int ED_mesh_color_add(bContext *C, Scene *UNUSED(scene), Object *UNUSED(ob), Mes BM_add_data_layer(em->bm, &em->bm->pdata, CD_MLOOPCOL); CustomData_set_layer_active(&em->bm->ldata, CD_MLOOPCOL, layernum); + + if(layernum) /* copy data from active vertex color layer */ + copy_editface_active_customdata(em, CD_MCOL, layernum); + if(active_set || layernum==0) CustomData_set_layer_active(&em->bm->ldata, CD_MLOOPCOL, layernum); diff --git a/source/blender/editors/mesh/mesh_ops.c b/source/blender/editors/mesh/mesh_ops.c index 6201e8e532a..38e57e02339 100644 --- a/source/blender/editors/mesh/mesh_ops.c +++ b/source/blender/editors/mesh/mesh_ops.c @@ -184,10 +184,9 @@ void ED_operatormacros_mesh(void) ot= WM_operatortype_append_macro("MESH_OT_loopcut_slide", "Loop Cut and Slide", OPTYPE_UNDO|OPTYPE_REGISTER); ot->description = "Cut mesh loop and slide it"; WM_operatortype_macro_define(ot, "MESH_OT_loopcut"); - otmacro = WM_operatortype_macro_define(ot, "TRANSFORM_OT_edge_slide"); - - RNA_boolean_set(otmacro->ptr, "launch_event", LEFTMOUSE); - + otmacro= WM_operatortype_macro_define(ot, "TRANSFORM_OT_edge_slide"); + RNA_struct_idprops_unset(otmacro->ptr, "release_confirm"); + ot= WM_operatortype_append_macro("MESH_OT_duplicate_move", "Add Duplicate", OPTYPE_UNDO|OPTYPE_REGISTER); ot->description = "Duplicate mesh and move"; WM_operatortype_macro_define(ot, "MESH_OT_duplicate"); @@ -237,6 +236,7 @@ void ED_keymap_mesh(wmKeyConfig *keyconf) { wmKeyMap *keymap; wmKeyMapItem *kmi; + int i; keymap= WM_keymap_find(keyconf, "Mesh", 0, 0); keymap->poll= ED_operator_editmesh; @@ -331,6 +331,12 @@ void ED_keymap_mesh(wmKeyConfig *keyconf) WM_keymap_add_menu(keymap, "VIEW3D_MT_uv_map", UKEY, KM_PRESS, 0, 0); WM_keymap_add_menu(keymap, "VIEW3D_MT_vertex_group", GKEY, KM_PRESS, KM_CTRL, 0); + /* useful stuff from object-mode */ + for (i=0; i<=5; i++) { + kmi = WM_keymap_add_item(keymap, "OBJECT_OT_subdivision_set", ZEROKEY+i, KM_PRESS, KM_CTRL, 0); + RNA_int_set(kmi->ptr, "level", i); + } + ED_object_generic_keymap(keyconf, keymap, 3); } diff --git a/source/blender/editors/mesh/meshtools.c b/source/blender/editors/mesh/meshtools.c index 9d83e956c0c..49b9516190a 100644 --- a/source/blender/editors/mesh/meshtools.c +++ b/source/blender/editors/mesh/meshtools.c @@ -231,8 +231,9 @@ int join_mesh_exec(bContext *C, wmOperator *op) } if(b==totcol) { matar[b]= ma; - if(ma) - ma->id.us++; + if(ma) { + id_us_plus(&ma->id); + } totcol++; } if(totcol>=MAXMAT-1) |