[Bf-blender-cvs] [7cf3b1f4726] temp_bmesh_multires: Get face set create operator working for dyntopo
Joseph Eagar
noreply at git.blender.org
Fri May 7 16:04:44 CEST 2021
Commit: 7cf3b1f4726091a241c6f85b66739aa6f751cc0a
Author: Joseph Eagar
Date: Fri May 7 07:04:19 2021 -0700
Branches: temp_bmesh_multires
https://developer.blender.org/rB7cf3b1f4726091a241c6f85b66739aa6f751cc0a
Get face set create operator working for dyntopo
===================================================================
M release/datafiles/locale
M release/scripts/addons_contrib
M source/blender/blenkernel/intern/pbvh_bmesh.c
M source/blender/draw/engines/image/image_engine.c
M source/blender/editors/sculpt_paint/sculpt_face_set.c
M source/tools
===================================================================
diff --git a/release/datafiles/locale b/release/datafiles/locale
index 2c9eee69e65..d2d33a435d3 160000
--- a/release/datafiles/locale
+++ b/release/datafiles/locale
@@ -1 +1 @@
-Subproject commit 2c9eee69e654a8b654ea08e356391c192dcc56df
+Subproject commit d2d33a435d358fcd0ae7f3e2cd67bee2b500ec53
diff --git a/release/scripts/addons_contrib b/release/scripts/addons_contrib
index 8970953d4a8..7d78c8a63f2 160000
--- a/release/scripts/addons_contrib
+++ b/release/scripts/addons_contrib
@@ -1 +1 @@
-Subproject commit 8970953d4a8a4ea3bf77c66370c817ed0cf1308a
+Subproject commit 7d78c8a63f2f4b146f9327ddc0d567a5921b94ea
diff --git a/source/blender/blenkernel/intern/pbvh_bmesh.c b/source/blender/blenkernel/intern/pbvh_bmesh.c
index d32ade625c0..7159973f6f8 100644
--- a/source/blender/blenkernel/intern/pbvh_bmesh.c
+++ b/source/blender/blenkernel/intern/pbvh_bmesh.c
@@ -2509,7 +2509,7 @@ static bool pbvh_bmesh_subdivide_long_edges(EdgeQueueContext *eq_ctx,
continue;
}
#else
- BLI_assert(calc_weighted_edge_split(eq_ctx, v1->co, v2->co) > eq_ctx->q->limit_len_squared);
+ //BLI_assert(calc_weighted_edge_split(eq_ctx, v1->co, v2->co) > eq_ctx->q->limit_len_squared);
#endif
/* Check that the edge's vertices are still in the PBVH. It's
diff --git a/source/blender/draw/engines/image/image_engine.c b/source/blender/draw/engines/image/image_engine.c
index d75f887ce2b..617625c1870 100644
--- a/source/blender/draw/engines/image/image_engine.c
+++ b/source/blender/draw/engines/image/image_engine.c
@@ -31,6 +31,8 @@
#include "DNA_camera_types.h"
#include "DNA_screen_types.h"
+#include "BLI_compiler_attrs.h"
+
#include "IMB_imbuf_types.h"
#include "ED_image.h"
diff --git a/source/blender/editors/sculpt_paint/sculpt_face_set.c b/source/blender/editors/sculpt_paint/sculpt_face_set.c
index a97e65c6545..fd0c3bba7a0 100644
--- a/source/blender/editors/sculpt_paint/sculpt_face_set.c
+++ b/source/blender/editors/sculpt_paint/sculpt_face_set.c
@@ -346,11 +346,6 @@ static int sculpt_face_set_create_exec(bContext *C, wmOperator *op)
const int mode = RNA_enum_get(op->ptr, "mode");
- /* Dyntopo not supported. */
- if (BKE_pbvh_type(ss->pbvh) == PBVH_BMESH) {
- return OPERATOR_CANCELLED;
- }
-
BKE_sculpt_update_object_for_edit(depsgraph, ob, true, mode == SCULPT_FACE_SET_MASKED, false);
const int tot_vert = SCULPT_vertex_count_get(ss);
@@ -421,29 +416,44 @@ static int sculpt_face_set_create_exec(bContext *C, wmOperator *op)
}
if (mode == SCULPT_FACE_SET_SELECTION) {
+
Mesh *mesh = ob->data;
BMesh *bm;
- const BMAllocTemplate allocsize = BMALLOC_TEMPLATE_FROM_ME(mesh);
- bm = BM_mesh_create(&allocsize,
- &((struct BMeshCreateParams){
- .use_toolflags = true,
- }));
- BM_mesh_bm_from_me(NULL,
- bm,
- mesh,
- (&(struct BMeshFromMeshParams){
- .calc_face_normal = true,
- }));
+ if (ss->bm) {
+ bm = ss->bm;
+ BMIter iter;
+ BMFace *f;
+ BM_ITER_MESH (f, &iter, bm, BM_FACES_OF_MESH) {
+ if (BM_elem_flag_test(f, BM_ELEM_SELECT)) {
+ BM_ELEM_CD_SET_INT(f, ss->cd_faceset_offset, next_face_set);
+ }
+ }
+ }
+ else {
+ const BMAllocTemplate allocsize = BMALLOC_TEMPLATE_FROM_ME(mesh);
+ bm = BM_mesh_create(&allocsize,
+ &((struct BMeshCreateParams){
+ .use_toolflags = true,
+ }));
+
+ BM_mesh_bm_from_me(NULL,
+ bm,
+ mesh,
+ (&(struct BMeshFromMeshParams){
+ .calc_face_normal = true,
+ }));
- BMIter iter;
- BMFace *f;
- BM_ITER_MESH (f, &iter, bm, BM_FACES_OF_MESH) {
- if (BM_elem_flag_test(f, BM_ELEM_SELECT)) {
- ss->face_sets[BM_elem_index_get(f)] = next_face_set;
+ BMIter iter;
+ BMFace *f;
+ BM_ITER_MESH (f, &iter, bm, BM_FACES_OF_MESH) {
+ if (BM_elem_flag_test(f, BM_ELEM_SELECT)) {
+ ss->face_sets[BM_elem_index_get(f)] = next_face_set;
+ }
}
+
+ BM_mesh_free(bm);
}
- BM_mesh_free(bm);
}
for (int i = 0; i < totnode; i++) {
diff --git a/source/tools b/source/tools
index 2afbb8ec472..f99d29ae3e6 160000
--- a/source/tools
+++ b/source/tools
@@ -1 +1 @@
-Subproject commit 2afbb8ec472cac5102eb239f57b006f8c9387685
+Subproject commit f99d29ae3e6ad44d45d79309454c45f8088781a4
More information about the Bf-blender-cvs
mailing list