Commit: 85d274a60c03b067efaddeda921f0edf1c0982b3 Author: Joseph Eagar Date: Fri Sep 17 16:22:10 2021 -0700 Branches: sculpt-dev https://developer.blender.org/rB85d274a60c03b067efaddeda921f0edf1c0982b3
Merge branch 'master' into sculpt-dev =================================================================== =================================================================== diff --cc source/blender/editors/object/object_relations.c index 699efd9ce75,75269dffec8..2d535b12b08 --- a/source/blender/editors/object/object_relations.c +++ b/source/blender/editors/object/object_relations.c @@@ -87,6 -85,6 +87,7 @@@ #include "BKE_modifier.h" #include "BKE_node.h" #include "BKE_object.h" ++#include "BKE_paint.h" #include "BKE_pointcloud.h" #include "BKE_report.h" #include "BKE_scene.h" @@@ -2757,63 -2753,6 +2758,63 @@@ char *ED_object_ot_drop_named_material_ return result; } - static void drop_named_material_face_set_slots_update(bContext *C, Object *ob, const wmEvent *event) { - Main *bmain = CTX_data_main(C); - Mesh *mesh = BKE_mesh_from_object(ob); ++static void drop_named_material_face_set_slots_update(bContext *C, ++ Object *ob, ++ const wmEvent *event) ++{ ++ Main *bmain = CTX_data_main(C); ++ Mesh *mesh = BKE_mesh_from_object(ob); + - bScreen *screen = CTX_wm_screen(C); - ARegion *region = BKE_screen_find_main_region_at_xy( - screen, SPACE_VIEW3D, event->x, event->y); ++ bScreen *screen = CTX_wm_screen(C); ++ ARegion *region = BKE_screen_find_main_region_at_xy(screen, SPACE_VIEW3D, event->x, event->y); + - const float mval[2] = {event->x - region->winrct.xmin, event->y - region->winrct.ymin}; - const int face_set_id = ED_sculpt_face_sets_active_update_and_get(C, ob, mval); ++ const float mval[2] = {event->x - region->winrct.xmin, event->y - region->winrct.ymin}; ++ const int face_set_id = ED_sculpt_face_sets_active_update_and_get(C, ob, mval); + - int *face_sets = CustomData_get_layer(&mesh->pdata, CD_SCULPT_FACE_SETS); ++ int *face_sets = CustomData_get_layer(&mesh->pdata, CD_SCULPT_FACE_SETS); + - short face_set_nr = -1; - for (int i = 0; i < mesh->totpoly; i++) { - if (face_sets[i] != face_set_id) { - continue; - } - face_set_nr = mesh->mpoly[i].mat_nr; - break; ++ short face_set_nr = -1; ++ for (int i = 0; i < mesh->totpoly; i++) { ++ if (face_sets[i] != face_set_id) { ++ continue; + } ++ face_set_nr = mesh->mpoly[i].mat_nr; ++ break; ++ } + - bool create_new_slot = false; - for (int i = 0; i < mesh->totpoly; i++) { - if (face_sets[i] == face_set_id) { - if (mesh->mpoly[i].mat_nr != face_set_nr) { - create_new_slot = true; - break; - } - } - else { - if (mesh->mpoly[i].mat_nr == face_set_nr) { - create_new_slot = true; - break; - } ++ bool create_new_slot = false; ++ for (int i = 0; i < mesh->totpoly; i++) { ++ if (face_sets[i] == face_set_id) { ++ if (mesh->mpoly[i].mat_nr != face_set_nr) { ++ create_new_slot = true; ++ break; + } + } - - - if (create_new_slot) { - BKE_object_material_slot_add(bmain, ob); - } + else { - ob->actcol = face_set_nr + 1; ++ if (mesh->mpoly[i].mat_nr == face_set_nr) { ++ create_new_slot = true; ++ break; ++ } + } ++ } + - const short active_mat_slot = ob->actcol; - const short material_nr = active_mat_slot - 1; - for (int i = 0; i < mesh->totpoly; i++) { - if (face_sets[i] != face_set_id) { - continue; - } - mesh->mpoly[i].mat_nr = material_nr; - } ++ if (create_new_slot) { ++ BKE_object_material_slot_add(bmain, ob); ++ } ++ else { ++ ob->actcol = face_set_nr + 1; ++ } + ++ const short active_mat_slot = ob->actcol; ++ const short material_nr = active_mat_slot - 1; ++ for (int i = 0; i < mesh->totpoly; i++) { ++ if (face_sets[i] != face_set_id) { ++ continue; ++ } ++ mesh->mpoly[i].mat_nr = material_nr; ++ } +} + static int drop_named_material_invoke(bContext *C, wmOperator *op, const wmEvent *event) { Main *bmain = CTX_data_main(C); @@@ -2827,14 -2769,7 +2831,11 @@@ return OPERATOR_CANCELLED; } + if (ob->mode == OB_MODE_SCULPT) { + drop_named_material_face_set_slots_update(C, ob, event); + } + - const short active_mat_slot = ob->actcol; - - BKE_object_material_assign( - CTX_data_main(C), ob, ma, active_mat_slot, BKE_MAT_ASSIGN_USERPREF); + BKE_object_material_assign(CTX_data_main(C), ob, ma, mat_slot, BKE_MAT_ASSIGN_USERPREF); DEG_id_tag_update(&ob->id, ID_RECALC_TRANSFORM); _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org List details, subscription details or unsubscribe: https://lists.blender.org/mailman/listinfo/bf-blender-cvs