diff options
author | Mai Lavelle <mai.lavelle@gmail.com> | 2018-04-27 07:39:53 +0300 |
---|---|---|
committer | Mai Lavelle <mai.lavelle@gmail.com> | 2018-05-16 13:07:50 +0300 |
commit | fee50f830dee21c6b666e016c71a517b263c7a3f (patch) | |
tree | 76b6c106c29bccc7caf37a033469770e6c5cd3b7 /source/blender/blenkernel/intern | |
parent | 9bcddeca7a23f2a1faf49c597e906213bf539b36 (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')
-rw-r--r-- | source/blender/blenkernel/intern/mesh_validate.c | 38 |
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. */ |