From fee50f830dee21c6b666e016c71a517b263c7a3f Mon Sep 17 00:00:00 2001 From: Mai Lavelle Date: Fri, 27 Apr 2018 00:39:53 -0400 Subject: 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`. --- source/blender/blenkernel/intern/mesh_validate.c | 38 +++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) (limited to 'source/blender/blenkernel/intern/mesh_validate.c') 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. */ @@ -1011,6 +1011,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. -- cgit v1.2.3