Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoseph Eagar <joeedh@gmail.com>2011-05-09 03:43:18 +0400
committerJoseph Eagar <joeedh@gmail.com>2011-05-09 03:43:18 +0400
commit6ef77cf95accc3cb914e7efd964118ce6e9521cf (patch)
tree1d8dbf95355038c93f79f9053a0bf1d55b561ec3 /source/blender/editors/mesh
parent3462ddf17f38eb61fc3bb2751d55de15a47455c3 (diff)
parent770119d16f7dbee99a60d19540818892c970c4e2 (diff)
=bmesh= merge from trunk at r36529
Diffstat (limited to 'source/blender/editors/mesh')
-rw-r--r--source/blender/editors/mesh/bmesh_select.c6
-rw-r--r--source/blender/editors/mesh/bmesh_tools.c4
-rw-r--r--source/blender/editors/mesh/editface.c4
-rw-r--r--source/blender/editors/mesh/mesh_data.c19
-rw-r--r--source/blender/editors/mesh/mesh_ops.c14
-rw-r--r--source/blender/editors/mesh/meshtools.c5
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)