[Bf-blender-cvs] [85d274a60c0] sculpt-dev: Merge branch 'master' into sculpt-dev
Joseph Eagar
noreply at git.blender.org
Sat Sep 18 01:34:46 CEST 2021
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);
More information about the Bf-blender-cvs
mailing list