Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMai Lavelle <mai.lavelle@gmail.com>2018-04-27 07:39:53 +0300
committerMai Lavelle <mai.lavelle@gmail.com>2018-05-16 13:07:50 +0300
commitfee50f830dee21c6b666e016c71a517b263c7a3f (patch)
tree76b6c106c29bccc7caf37a033469770e6c5cd3b7 /source/blender/blenkernel/intern/mesh_validate.c
parent9bcddeca7a23f2a1faf49c597e906213bf539b36 (diff)
Add BKE_mesh_is_valid
Non modifying version of `BKE_mesh_validate`, mirrors `DM_is_valid` more closely. Will be used in port of `mesh_calc_modifiers` from `DerivedMesh` to `Mesh`.
Diffstat (limited to 'source/blender/blenkernel/intern/mesh_validate.c')
-rw-r--r--source/blender/blenkernel/intern/mesh_validate.c38
1 files changed, 37 insertions, 1 deletions
diff --git a/source/blender/blenkernel/intern/mesh_validate.c b/source/blender/blenkernel/intern/mesh_validate.c
index 8301b6a42b1..2b43d49a10f 100644
--- a/source/blender/blenkernel/intern/mesh_validate.c
+++ b/source/blender/blenkernel/intern/mesh_validate.c
@@ -972,7 +972,7 @@ bool BKE_mesh_validate_all_customdata(CustomData *vdata, CustomData *edata,
}
/**
- * \see #DM_is_valid to call on derived meshes
+ * Validates and corrects a Mesh.
*
* \returns true if a change is made.
*/
@@ -1012,6 +1012,42 @@ int BKE_mesh_validate(Mesh *me, const int do_verbose, const int cddata_check_mas
}
/**
+ * Checks if a Mesh is valid without any modification. This is always verbose.
+ *
+ * \see #DM_is_valid to call on derived meshes
+ *
+ * \returns is_valid.
+ */
+bool BKE_mesh_is_valid(Mesh *me)
+{
+ const bool do_verbose = true;
+ const bool do_fixes = false;
+
+ bool is_valid = true;
+ bool changed = true;
+
+ is_valid &= BKE_mesh_validate_all_customdata(
+ &me->vdata, &me->edata, &me->ldata, &me->pdata,
+ false, /* setting mask here isn't useful, gives false positives */
+ do_verbose, do_fixes, &changed);
+
+ is_valid &= BKE_mesh_validate_arrays(
+ me,
+ me->mvert, me->totvert,
+ me->medge, me->totedge,
+ me->mface, me->totface,
+ me->mloop, me->totloop,
+ me->mpoly, me->totpoly,
+ me->dvert,
+ do_verbose, do_fixes,
+ &changed);
+
+ BLI_assert(changed == false);
+
+ return is_valid;
+}
+
+/**
* Check all material indices of polygons are valid, invalid ones are set to 0.
* \returns is_valid.
*/