Merge branch 'master' into blender2.8
This commit is contained in:
commit
7a3e037dc0
|
@ -967,15 +967,20 @@ static void do_weight_paint_vertex(
|
|||
|
||||
|
||||
/* Toggle operator for turning vertex paint mode on or off (copied from sculpt.c) */
|
||||
static void vertex_paint_init_session(Depsgraph *depsgraph, Scene *scene, Object *ob)
|
||||
static void vertex_paint_init_session(Depsgraph *depsgraph, Scene *scene, Object *ob, eObjectMode object_mode)
|
||||
{
|
||||
/* Create persistent sculpt mode data */
|
||||
BKE_sculpt_toolsettings_data_ensure(scene);
|
||||
|
||||
if (ob->sculpt == NULL) {
|
||||
ob->sculpt = MEM_callocN(sizeof(SculptSession), "sculpt session");
|
||||
BKE_sculpt_update_mesh_elements(depsgraph, scene, scene->toolsettings->sculpt, ob, false, false);
|
||||
}
|
||||
BLI_assert(ob->sculpt == NULL);
|
||||
ob->sculpt = MEM_callocN(sizeof(SculptSession), "sculpt session");
|
||||
ob->sculpt->mode_type = object_mode;
|
||||
BKE_sculpt_update_mesh_elements(depsgraph, scene, scene->toolsettings->sculpt, ob, false, false);
|
||||
}
|
||||
|
||||
static void vertex_paint_init_stroke(Depsgraph *depsgraph, Scene *scene, Object *ob)
|
||||
{
|
||||
BKE_sculpt_update_mesh_elements(depsgraph, scene, scene->toolsettings->sculpt, ob, false, false);
|
||||
}
|
||||
|
||||
static void vertex_paint_init_session_data(const ToolSettings *ts, Object *ob)
|
||||
|
@ -986,12 +991,12 @@ static void vertex_paint_init_session_data(const ToolSettings *ts, Object *ob)
|
|||
if (ob->mode == OB_MODE_VERTEX_PAINT) {
|
||||
gmap = &ob->sculpt->mode.vpaint.gmap;
|
||||
brush = BKE_paint_brush(&ts->vpaint->paint);
|
||||
ob->sculpt->mode_type = OB_MODE_VERTEX_PAINT;
|
||||
BLI_assert(ob->sculpt->mode_type == OB_MODE_VERTEX_PAINT);
|
||||
}
|
||||
else if (ob->mode == OB_MODE_WEIGHT_PAINT) {
|
||||
gmap = &ob->sculpt->mode.wpaint.gmap;
|
||||
brush = BKE_paint_brush(&ts->wpaint->paint);
|
||||
ob->sculpt->mode_type = OB_MODE_WEIGHT_PAINT;
|
||||
BLI_assert(ob->sculpt->mode_type == OB_MODE_WEIGHT_PAINT);
|
||||
}
|
||||
else {
|
||||
ob->sculpt->mode_type = 0;
|
||||
|
@ -1113,7 +1118,7 @@ static void ed_vwpaintmode_enter_generic(
|
|||
BKE_sculptsession_free(ob);
|
||||
}
|
||||
|
||||
vertex_paint_init_session(depsgraph, scene, ob);
|
||||
vertex_paint_init_session(depsgraph, scene, ob, mode_flag);
|
||||
|
||||
/* Flush object mode. */
|
||||
DEG_id_tag_update(&ob->id, DEG_TAG_COPY_ON_WRITE);
|
||||
|
@ -1556,7 +1561,7 @@ static bool wpaint_stroke_test_start(bContext *C, wmOperator *op, const float mo
|
|||
}
|
||||
|
||||
/* If not previously created, create vertex/weight paint mode session data */
|
||||
vertex_paint_init_session(depsgraph, scene, ob);
|
||||
vertex_paint_init_stroke(depsgraph, scene, ob);
|
||||
vwpaint_update_cache_invariants(C, vp, ss, op, mouse);
|
||||
vertex_paint_init_session_data(ts, ob);
|
||||
|
||||
|
@ -2545,7 +2550,7 @@ static bool vpaint_stroke_test_start(bContext *C, struct wmOperator *op, const f
|
|||
}
|
||||
|
||||
/* If not previously created, create vertex/weight paint mode session data */
|
||||
vertex_paint_init_session(depsgraph, scene, ob);
|
||||
vertex_paint_init_stroke(depsgraph, scene, ob);
|
||||
vwpaint_update_cache_invariants(C, vp, ss, op, mouse);
|
||||
vertex_paint_init_session_data(ts, ob);
|
||||
|
||||
|
|
|
@ -4808,7 +4808,7 @@ static void sculpt_brush_init_tex(const Scene *scene, Sculpt *sd, SculptSession
|
|||
sculpt_update_tex(scene, sd, ss);
|
||||
}
|
||||
|
||||
static bool sculpt_brush_stroke_init(bContext *C, wmOperator *op)
|
||||
static void sculpt_brush_stroke_init(bContext *C, wmOperator *op)
|
||||
{
|
||||
Depsgraph *depsgraph = CTX_data_depsgraph(C);
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
|
@ -4829,8 +4829,6 @@ static bool sculpt_brush_stroke_init(bContext *C, wmOperator *op)
|
|||
|
||||
is_smooth = sculpt_any_smooth_mode(brush, NULL, mode);
|
||||
BKE_sculpt_update_mesh_elements(depsgraph, scene, sd, ob, is_smooth, need_mask);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
static void sculpt_restore_mesh(Sculpt *sd, Object *ob)
|
||||
|
@ -5075,8 +5073,7 @@ static int sculpt_brush_stroke_invoke(bContext *C, wmOperator *op, const wmEvent
|
|||
int ignore_background_click;
|
||||
int retval;
|
||||
|
||||
if (!sculpt_brush_stroke_init(C, op))
|
||||
return OPERATOR_CANCELLED;
|
||||
sculpt_brush_stroke_init(C, op);
|
||||
|
||||
stroke = paint_stroke_new(C, op, sculpt_stroke_get_location,
|
||||
sculpt_stroke_test_start,
|
||||
|
@ -5108,8 +5105,7 @@ static int sculpt_brush_stroke_invoke(bContext *C, wmOperator *op, const wmEvent
|
|||
|
||||
static int sculpt_brush_stroke_exec(bContext *C, wmOperator *op)
|
||||
{
|
||||
if (!sculpt_brush_stroke_init(C, op))
|
||||
return OPERATOR_CANCELLED;
|
||||
sculpt_brush_stroke_init(C, op);
|
||||
|
||||
op->customdata = paint_stroke_new(C, op, sculpt_stroke_get_location, sculpt_stroke_test_start,
|
||||
sculpt_stroke_update_step, NULL, sculpt_stroke_done, 0);
|
||||
|
|
Loading…
Reference in New Issue