[Bf-blender-cvs] [78fb2d3d2af] refactor-mesh-uv-map-generic: Merge branch 'master' into refactor-mesh-uv-map-generic
Hans Goudey
noreply at git.blender.org
Fri Aug 26 04:34:49 CEST 2022
Commit: 78fb2d3d2af735b164c42dfbc459db8fb51de210
Author: Hans Goudey
Date: Thu Aug 25 17:50:16 2022 -0400
Branches: refactor-mesh-uv-map-generic
https://developer.blender.org/rB78fb2d3d2af735b164c42dfbc459db8fb51de210
Merge branch 'master' into refactor-mesh-uv-map-generic
===================================================================
===================================================================
diff --cc source/blender/blenkernel/intern/mesh.cc
index 1e587d84f3d,7f2c09f049b..11899d3938f
--- a/source/blender/blenkernel/intern/mesh.cc
+++ b/source/blender/blenkernel/intern/mesh.cc
@@@ -247,18 -246,17 +247,21 @@@ static void mesh_blend_write(BlendWrite
memset(&mesh->pdata, 0, sizeof(mesh->pdata));
}
else {
+ Set<std::string> names_to_skip;
if (!BLO_write_is_undo(writer)) {
BKE_mesh_legacy_convert_hide_layers_to_flags(mesh);
+ /* When converting to the old mesh format, don't save redunant attributes. */
+ names_to_skip.add_multiple_new({".hide_vert", ".hide_edge", ".hide_poly"});
}
- CustomData_blend_write_prepare(mesh->vdata, vert_layers, {".hide_vert"});
- CustomData_blend_write_prepare(mesh->edata, edge_layers, {".hide_edge"});
- CustomData_blend_write_prepare(mesh->ldata, loop_layers);
- CustomData_blend_write_prepare(mesh->pdata, poly_layers, {".hide_poly"});
+ CustomData_blend_write_prepare(mesh->vdata, vert_layers, names_to_skip);
+ CustomData_blend_write_prepare(mesh->edata, edge_layers, names_to_skip);
+ CustomData_blend_write_prepare(mesh->ldata, loop_layers, names_to_skip);
+ CustomData_blend_write_prepare(mesh->pdata, poly_layers, names_to_skip);
+
+ if (!BLO_write_is_undo(writer)) {
+ BKE_mesh_legacy_convert_uvs_to_struct(mesh, temp_arrays_for_legacy_format, loop_layers);
+ }
}
BLO_write_id_struct(writer, Mesh, id_address, &mesh->id);
diff --cc source/blender/bmesh/tools/bmesh_path_uv.c
index 172fe8c5d0f,6531677fce6..5ba613fd130
--- a/source/blender/bmesh/tools/bmesh_path_uv.c
+++ b/source/blender/bmesh/tools/bmesh_path_uv.c
@@@ -65,10 -65,10 +65,10 @@@ static void verttag_add_adjacent_uv(Hea
const struct BMCalcPathUVParams *params)
{
BLI_assert(params->aspect_y != 0.0f);
- const uint cd_loop_uv_offset = params->cd_loop_uv_offset;
+ const int cd_loop_uv_offset = params->cd_loop_uv_offset;
const int l_a_index = BM_elem_index_get(l_a);
- const MLoopUV *luv_a = BM_ELEM_CD_GET_VOID_P(l_a, cd_loop_uv_offset);
- const float uv_a[2] = {luv_a->uv[0], luv_a->uv[1] / params->aspect_y};
+ const float *luv_a = BM_ELEM_CD_GET_FLOAT_P(l_a, cd_loop_uv_offset);
+ const float uv_a[2] = {luv_a[0], luv_a[1] / params->aspect_y};
{
BMIter liter;
diff --cc source/blender/editors/include/ED_uvedit.h
index 656783d7f57,38e542fc0ca..e7a90daf96e
--- a/source/blender/editors/include/ED_uvedit.h
+++ b/source/blender/editors/include/ED_uvedit.h
@@@ -143,34 -139,32 +143,34 @@@ void uvedit_uv_select_set(const struct
* use. */
void uvedit_face_select_enable(const struct Scene *scene,
- struct BMEditMesh *em,
+ struct BMesh *bm,
struct BMFace *efa,
bool do_history,
- int cd_loop_uv_offset);
+ UVMap_Offsets offsets);
void uvedit_face_select_disable(const struct Scene *scene,
- struct BMEditMesh *em,
+ struct BMesh *bm,
struct BMFace *efa,
- int cd_loop_uv_offset);
+ UVMap_Offsets offsets);
+
void uvedit_edge_select_enable(const struct Scene *scene,
- struct BMEditMesh *em,
+ struct BMesh *bm,
struct BMLoop *l,
bool do_history,
- int cd_loop_uv_offset);
+ UVMap_Offsets offsets);
void uvedit_edge_select_disable(const struct Scene *scene,
- struct BMEditMesh *em,
+ struct BMesh *bm,
struct BMLoop *l,
- int cd_loop_uv_offset);
+ UVMap_Offsets offsets);
+
void uvedit_uv_select_enable(const struct Scene *scene,
- struct BMEditMesh *em,
+ struct BMesh *bm,
struct BMLoop *l,
bool do_history,
- int cd_loop_uv_offset);
+ UVMap_Offsets offsets);
void uvedit_uv_select_disable(const struct Scene *scene,
- struct BMEditMesh *em,
+ struct BMesh *bm,
struct BMLoop *l,
- int cd_loop_uv_offset);
+ UVMap_Offsets offsets);
/* Sticky mode UV element selection functions. */
diff --cc source/blender/editors/mesh/editmesh_utils.c
index 30de89c7cee,a6a6b095c31..28d336542b8
--- a/source/blender/editors/mesh/editmesh_utils.c
+++ b/source/blender/editors/mesh/editmesh_utils.c
@@@ -642,7 -644,7 +642,7 @@@ static int bm_uv_edge_select_build_isla
UvElement *islandbuf,
uint *map,
bool uv_selected,
- UVMap_Offsets offsets)
- const int cd_loop_uv_offset)
++ const UVMap_Offsets offsets)
{
BM_uv_element_map_ensure_head_table(element_map);
diff --cc source/blender/editors/uvedit/uvedit_islands.c
index ab838d111d5,68c00b18b09..62a211b1aa8
--- a/source/blender/editors/uvedit/uvedit_islands.c
+++ b/source/blender/editors/uvedit/uvedit_islands.c
@@@ -338,8 -340,9 +340,9 @@@ int bm_mesh_calc_uv_islands(const Scen
const bool only_selected_uvs,
const bool use_seams,
const float aspect_y,
- const int cd_loop_uv_offset)
+ const UVMap_Offsets uv_offsets)
{
- BLI_assert(cd_loop_uv_offset >= 0);
++ BLI_assert(uv_offsets.uv >= 0);
int island_added = 0;
BM_mesh_elem_table_ensure(bm, BM_FACE);
diff --cc source/blender/editors/uvedit/uvedit_path.c
index cc63b5eeb50,19218259b95..98233d2fd99
--- a/source/blender/editors/uvedit/uvedit_path.c
+++ b/source/blender/editors/uvedit/uvedit_path.c
@@@ -148,9 -148,9 +148,9 @@@ static void verttag_set_cb(BMLoop *l, b
BMLoop *l_iter;
BM_ITER_ELEM (l_iter, &iter, l->v, BM_LOOPS_OF_VERT) {
if (verttag_filter_cb(l_iter, user_data)) {
- float const *luv_iter = BM_ELEM_CD_GET_FLOAT_P(l_iter, cd_loop_uv_offset);
- MLoopUV *luv_iter = BM_ELEM_CD_GET_VOID_P(l_iter, cd_loop_uv_offset);
- if (equals_v2v2(luv->uv, luv_iter->uv)) {
- uvedit_uv_select_set(scene, em->bm, l_iter, val, false, cd_loop_uv_offset);
++ const float *luv_iter = BM_ELEM_CD_GET_FLOAT_P(l_iter, cd_loop_uv_offset);
+ if (equals_v2v2(luv, luv_iter)) {
+ uvedit_uv_select_set(scene, em, l_iter, val, false, user_data->offsets);
}
}
}
diff --cc source/blender/editors/uvedit/uvedit_select.c
index 0f3fa8fedcf,8fc97dbe0ce..2266b8e964a
--- a/source/blender/editors/uvedit/uvedit_select.c
+++ b/source/blender/editors/uvedit/uvedit_select.c
@@@ -207,7 -207,7 +207,7 @@@ static void uvedit_vertex_select_tagged
BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) {
BM_ITER_ELEM (l, &liter, efa, BM_LOOPS_OF_FACE) {
if (BM_elem_flag_test(l->v, BM_ELEM_TAG)) {
- uvedit_uv_select_set(scene, em, l, select, false, offsets);
- uvedit_uv_select_set(scene, em->bm, l, select, false, cd_loop_uv_offset);
++ uvedit_uv_select_set(scene, em->bm, l, select, false, offsets);
}
}
}
@@@ -312,22 -317,20 +312,20 @@@ void uvedit_face_select_set(const Scen
BMFace *efa,
const bool select,
const bool do_history,
- const int cd_loop_uv_offset)
+ const UVMap_Offsets offsets)
{
if (select) {
- uvedit_face_select_enable(scene, em, efa, do_history, offsets);
- uvedit_face_select_enable(scene, bm, efa, do_history, cd_loop_uv_offset);
++ uvedit_face_select_enable(scene, bm, efa, do_history, offsets);
}
else {
- uvedit_face_select_disable(scene, em, efa, offsets);
- uvedit_face_select_disable(scene, bm, efa, cd_loop_uv_offset);
++ uvedit_face_select_disable(scene, bm, efa, offsets);
}
}
- void uvedit_face_select_enable(const Scene *scene,
- BMEditMesh *em,
- BMFace *efa,
- const bool do_history,
- const UVMap_Offsets offsets)
+ void uvedit_face_select_enable(
- const Scene *scene, BMesh *bm, BMFace *efa, const bool do_history, const int cd_loop_uv_offset)
++ const Scene *scene, BMesh *bm, BMFace *efa, const bool do_history, const UVMap_Offsets offsets)
{
- BLI_assert(cd_loop_uv_offset >= 0);
++ BLI_assert(offsets.uv >= 0);
const ToolSettings *ts = scene->toolsettings;
if (ts->uv_flag & UV_SYNC_SELECTION) {
@@@ -348,10 -352,11 +346,11 @@@
}
void uvedit_face_select_disable(const Scene *scene,
- BMEditMesh *em,
+ BMesh *bm,
BMFace *efa,
- const int cd_loop_uv_offset)
+ const UVMap_Offsets offsets)
{
- BLI_assert(cd_loop_uv_offset >= 0);
++ BLI_assert(offsets.uv >= 0);
const ToolSettings *ts = scene->toolsettings;
if (ts->uv_flag & UV_SYNC_SELECTION) {
@@@ -402,7 -410,7 +401,7 @@@ void uvedit_edge_select_set_with_sticky
{
const ToolSettings *ts = scene->toolsettings;
if (ts->uv_flag & UV_SYNC_SELECTION) {
- uvedit_edge_select_set(scene, em, l, select, do_history, offsets);
- uvedit_edge_select_set(scene, em->bm, l, select, do_history, cd_loop_uv_offset);
++
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list