diff options
author | Nicholas Bishop <nicholasbishop@gmail.com> | 2009-08-15 22:58:01 +0400 |
---|---|---|
committer | Nicholas Bishop <nicholasbishop@gmail.com> | 2009-08-15 22:58:01 +0400 |
commit | be1efd74d120068a9a650feddf512b50e5e6c2b8 (patch) | |
tree | e1232b3256b84165f9194fe5287bf620cf174c18 /source/blender/editors/space_view3d | |
parent | e63d4d2bea06075ef666d613d1136236bb09ae79 (diff) |
2.5/Sculpt:
* Made sculpt mode local to object.
* This also fixes loading files from 2.4x saved in sculptmode
Touched a lot of things here, let me know if anything breaks
TODO:
* The other paint modes should be converted as well
Diffstat (limited to 'source/blender/editors/space_view3d')
-rw-r--r-- | source/blender/editors/space_view3d/view3d_draw.c | 9 | ||||
-rw-r--r-- | source/blender/editors/space_view3d/view3d_header.c | 16 | ||||
-rw-r--r-- | source/blender/editors/space_view3d/view3d_toolbar.c | 2 |
3 files changed, 17 insertions, 10 deletions
diff --git a/source/blender/editors/space_view3d/view3d_draw.c b/source/blender/editors/space_view3d/view3d_draw.c index 0e5c1606066..80a91c7331b 100644 --- a/source/blender/editors/space_view3d/view3d_draw.c +++ b/source/blender/editors/space_view3d/view3d_draw.c @@ -1887,8 +1887,11 @@ static CustomDataMask get_viewedit_datamask(bScreen *screen) if(G.f & G_WEIGHTPAINT) mask |= CD_MASK_WEIGHT_MCOL; + /* XXX: is this even needed? if(G.f & G_SCULPTMODE) mask |= CD_MASK_MDISPS; + + */ return mask; } @@ -2032,7 +2035,7 @@ void view3d_main_area_draw(const bContext *C, ARegion *ar) } // retopo= retopo_mesh_check() || retopo_curve_check(); - sculptparticle= (G.f & (G_SCULPTMODE|G_PARTICLEEDIT)) && !scene->obedit; + sculptparticle= (G.f & G_PARTICLEEDIT || (obact && obact->mode & OB_MODE_SCULPT)) && !scene->obedit; if(retopo) view3d_update_depths(ar, v3d); @@ -2045,7 +2048,7 @@ void view3d_main_area_draw(const bContext *C, ARegion *ar) } if(!retopo && sculptparticle && !(obact && (obact->dtx & OB_DRAWXRAY))) { - if(G.f & G_SCULPTMODE) + if(obact && obact->mode & OB_MODE_SCULPT) draw_sculpt_depths(scene, ar, v3d); view3d_update_depths(ar, v3d); } @@ -2061,7 +2064,7 @@ void view3d_main_area_draw(const bContext *C, ARegion *ar) view3d_draw_xray(scene, ar, v3d, 1); // clears zbuffer if it is used! if(!retopo && sculptparticle && (obact && (OBACT->dtx & OB_DRAWXRAY))) { - if(G.f & G_SCULPTMODE) + if(obact && obact->mode & OB_MODE_SCULPT) draw_sculpt_depths(scene, ar, v3d); view3d_update_depths(ar, v3d); } diff --git a/source/blender/editors/space_view3d/view3d_header.c b/source/blender/editors/space_view3d/view3d_header.c index d92d9efede3..8a39bbee2d8 100644 --- a/source/blender/editors/space_view3d/view3d_header.c +++ b/source/blender/editors/space_view3d/view3d_header.c @@ -143,8 +143,6 @@ static void ED_toggle_paint_modes(bContext *C, int mode) else if(mode & G_WEIGHTPAINT) WM_operator_name_call(C, "PAINT_OT_weight_paint_toggle", WM_OP_EXEC_REGION_WIN, NULL); - if(mode & G_SCULPTMODE) - WM_operator_name_call(C, "SCULPT_OT_sculptmode_toggle", WM_OP_EXEC_REGION_WIN, NULL); if(mode & G_PARTICLEEDIT) WM_operator_name_call(C, "PARTICLE_OT_particle_edit_toggle", WM_OP_EXEC_REGION_WIN, NULL); } @@ -156,7 +154,7 @@ int ED_view3d_exit_paint_modes(bContext *C) ED_toggle_paint_modes(C, G.f); - G.f &= ~(G_VERTEXPAINT+G_TEXTUREPAINT+G_WEIGHTPAINT+G_SCULPTMODE+G_PARTICLEEDIT); + G.f &= ~(G_VERTEXPAINT+G_TEXTUREPAINT+G_WEIGHTPAINT+G_PARTICLEEDIT); return restore; } @@ -3573,6 +3571,7 @@ static void do_view3d_header_buttons(bContext *C, void *arg, int event) v3d->flag &= ~V3D_MODE; ED_view3d_exit_paint_modes(C); + ED_object_toggle_modes(C, ob->mode); ED_armature_exit_posemode(C, basact); if(obedit) ED_object_exit_editmode(C, EM_FREEDATA|EM_FREEUNDO|EM_WAITCURSOR); /* exit editmode and undo */ @@ -3585,9 +3584,10 @@ static void do_view3d_header_buttons(bContext *C, void *arg, int event) } } else if (v3d->modeselect == V3D_SCULPTMODE_SEL) { - if (!(G.f & G_SCULPTMODE)) { + if (ob && !(ob->mode & OB_MODE_SCULPT)) { v3d->flag &= ~V3D_MODE; ED_view3d_exit_paint_modes(C); + ED_object_toggle_modes(C, ob->mode); if(obedit) ED_object_exit_editmode(C, EM_FREEUNDO|EM_FREEUNDO|EM_WAITCURSOR); /* exit editmode and undo */ WM_operator_name_call(C, "SCULPT_OT_sculptmode_toggle", WM_OP_EXEC_REGION_WIN, NULL); @@ -3597,6 +3597,7 @@ static void do_view3d_header_buttons(bContext *C, void *arg, int event) if (!(G.f & G_VERTEXPAINT)) { v3d->flag &= ~V3D_MODE; ED_view3d_exit_paint_modes(C); + ED_object_toggle_modes(C, ob->mode); if(obedit) ED_object_exit_editmode(C, EM_FREEDATA|EM_FREEUNDO|EM_WAITCURSOR); /* exit editmode and undo */ WM_operator_name_call(C, "PAINT_OT_vertex_paint_toggle", WM_OP_EXEC_REGION_WIN, NULL); @@ -3606,6 +3607,7 @@ static void do_view3d_header_buttons(bContext *C, void *arg, int event) if (!(G.f & G_TEXTUREPAINT)) { v3d->flag &= ~V3D_MODE; ED_view3d_exit_paint_modes(C); + ED_object_toggle_modes(C, ob->mode); if(obedit) ED_object_exit_editmode(C, EM_FREEDATA|EM_FREEUNDO|EM_WAITCURSOR); /* exit editmode and undo */ WM_operator_name_call(C, "PAINT_OT_texture_paint_toggle", WM_OP_EXEC_REGION_WIN, NULL); @@ -3615,6 +3617,7 @@ static void do_view3d_header_buttons(bContext *C, void *arg, int event) if (!(G.f & G_WEIGHTPAINT) && (ob && ob->type == OB_MESH) ) { v3d->flag &= ~V3D_MODE; ED_view3d_exit_paint_modes(C); + ED_object_toggle_modes(C, ob->mode); if(obedit) ED_object_exit_editmode(C, EM_FREEDATA|EM_FREEUNDO|EM_WAITCURSOR); /* exit editmode and undo */ @@ -3635,6 +3638,7 @@ static void do_view3d_header_buttons(bContext *C, void *arg, int event) if (!(G.f & G_PARTICLEEDIT)) { v3d->flag &= ~V3D_MODE; ED_view3d_exit_paint_modes(C); + ED_object_toggle_modes(C, ob->mode); if(obedit) ED_object_exit_editmode(C, EM_FREEDATA|EM_FREEUNDO|EM_WAITCURSOR); /* exit editmode and undo */ WM_operator_name_call(C, "PARTICLE_OT_particle_edit_toggle", WM_OP_EXEC_REGION_WIN, NULL); @@ -3862,7 +3866,7 @@ static void view3d_header_pulldowns(const bContext *C, uiBlock *block, Object *o uiDefPulldownBut(block, view3d_tpaintmenu, NULL, "Paint", xco,yco, xmax-3, 20, ""); xco+= xmax; } - else if( G.f & G_SCULPTMODE) { + else if (ob && ob->mode & OB_MODE_SCULPT) { xmax= GetButStringLength("Sculpt"); uiDefMenuBut(block, view3d_sculpt_menu, NULL, "Sculpt", xco, yco, xmax-3, 20, ""); xco+= xmax; @@ -3944,7 +3948,7 @@ void uiTemplateHeader3D(uiLayout *layout, struct bContext *C) if (obedit) v3d->modeselect = V3D_EDITMODE_SEL; else if(ob && (ob->flag & OB_POSEMODE)) v3d->modeselect = V3D_POSEMODE_SEL; - else if (G.f & G_SCULPTMODE) v3d->modeselect = V3D_SCULPTMODE_SEL; + else if (ob && (ob->mode & OB_MODE_SCULPT)) v3d->modeselect = V3D_SCULPTMODE_SEL; else if (G.f & G_WEIGHTPAINT) v3d->modeselect = V3D_WEIGHTPAINTMODE_SEL; else if (G.f & G_VERTEXPAINT) v3d->modeselect = V3D_VERTEXPAINTMODE_SEL; else if (G.f & G_TEXTUREPAINT) v3d->modeselect = V3D_TEXTUREPAINTMODE_SEL; diff --git a/source/blender/editors/space_view3d/view3d_toolbar.c b/source/blender/editors/space_view3d/view3d_toolbar.c index 67d8bc3e5ee..a6317100643 100644 --- a/source/blender/editors/space_view3d/view3d_toolbar.c +++ b/source/blender/editors/space_view3d/view3d_toolbar.c @@ -190,7 +190,7 @@ char *view3d_context_string(const bContext *C) Object *ob = CTX_data_active_object(C); if(ob && (ob->flag & OB_POSEMODE)) return "pose_mode"; - else if (G.f & G_SCULPTMODE) return "sculpt_mode"; + else if (ob && ob->mode & OB_MODE_SCULPT) return "sculpt_mode"; else if (G.f & G_WEIGHTPAINT) return "weight_paint"; else if (G.f & G_VERTEXPAINT) return "vertex_paint"; else if (G.f & G_TEXTUREPAINT) return "texture_paint"; |