diff options
author | Hans Goudey <h.goudey@me.com> | 2022-09-23 17:06:20 +0300 |
---|---|---|
committer | Hans Goudey <h.goudey@me.com> | 2022-09-23 17:06:20 +0300 |
commit | 1c43caa51b4160eaf51d13e8fc2d52beb0c3937b (patch) | |
tree | c39dd91323637dfd26045f5c1d9707939f4ed339 /source/blender/blenkernel/intern/mesh_legacy_convert.cc | |
parent | 582b9c3145c12a26dc4069362604fff0cd62a81b (diff) | |
parent | a8a454287a27d408668f8adc6fe1b3aa988de1ac (diff) |
Merge branch 'master' into refactor-mesh-selection-generic
Diffstat (limited to 'source/blender/blenkernel/intern/mesh_legacy_convert.cc')
-rw-r--r-- | source/blender/blenkernel/intern/mesh_legacy_convert.cc | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/source/blender/blenkernel/intern/mesh_legacy_convert.cc b/source/blender/blenkernel/intern/mesh_legacy_convert.cc index a288c1c38a0..58ed4242e38 100644 --- a/source/blender/blenkernel/intern/mesh_legacy_convert.cc +++ b/source/blender/blenkernel/intern/mesh_legacy_convert.cc @@ -919,6 +919,33 @@ void BKE_mesh_add_mface_layers(CustomData *fdata, CustomData *ldata, int total) /** \} */ /* -------------------------------------------------------------------- */ +/** \name Face Set Conversion + * \{ */ + +void BKE_mesh_legacy_face_set_from_generic(Mesh *mesh) +{ + using namespace blender; + for (CustomDataLayer &layer : MutableSpan(mesh->pdata.layers, mesh->pdata.totlayer)) { + if (StringRef(layer.name) == ".sculpt_face_set") { + layer.type = CD_SCULPT_FACE_SETS; + } + } +} + +void BKE_mesh_legacy_face_set_to_generic(Mesh *mesh) +{ + using namespace blender; + for (CustomDataLayer &layer : MutableSpan(mesh->pdata.layers, mesh->pdata.totlayer)) { + if (layer.type == CD_SCULPT_FACE_SETS) { + BLI_strncpy(layer.name, ".sculpt_face_set", sizeof(layer.name)); + layer.type = CD_PROP_INT32; + } + } +} + +/** \} */ + +/* -------------------------------------------------------------------- */ /** \name Bevel Weight Conversion * \{ */ @@ -980,6 +1007,44 @@ void BKE_mesh_legacy_bevel_weight_to_layers(Mesh *mesh) /** \} */ /* -------------------------------------------------------------------- */ +/** \name Edge Crease Conversion + * \{ */ + +void BKE_mesh_legacy_edge_crease_from_layers(Mesh *mesh) +{ + using namespace blender; + MutableSpan<MEdge> edges = mesh->edges_for_write(); + if (const float *creases = static_cast<const float *>( + CustomData_get_layer(&mesh->edata, CD_CREASE))) { + mesh->cd_flag |= ME_CDFLAG_EDGE_CREASE; + for (const int i : edges.index_range()) { + edges[i].crease_legacy = std::clamp(creases[i], 0.0f, 1.0f) * 255.0f; + } + } + else { + mesh->cd_flag &= ~ME_CDFLAG_EDGE_CREASE; + for (const int i : edges.index_range()) { + edges[i].crease_legacy = 0; + } + } +} + +void BKE_mesh_legacy_edge_crease_to_layers(Mesh *mesh) +{ + using namespace blender; + const Span<MEdge> edges = mesh->edges(); + if (mesh->cd_flag & ME_CDFLAG_EDGE_CREASE) { + float *creases = static_cast<float *>( + CustomData_add_layer(&mesh->edata, CD_CREASE, CD_CONSTRUCT, nullptr, edges.size())); + for (const int i : edges.index_range()) { + creases[i] = edges[i].crease_legacy / 255.0f; + } + } +} + +/** \} */ + +/* -------------------------------------------------------------------- */ /** \name Hide Attribute and Legacy Flag Conversion * \{ */ |