diff options
author | Campbell Barton <ideasman42@gmail.com> | 2015-07-22 13:54:12 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2015-07-22 14:40:41 +0300 |
commit | b305041ce6779f90a282283ff04bd36f1807c728 (patch) | |
tree | 82a2b9b6f192801768abb8579295345baa5c3f51 /source/blender/blenkernel/intern | |
parent | a6f00bb75ca8ec22f66a47782ffa2b827bb0f8e9 (diff) |
Add DM_get_looptri_array utility function
Diffstat (limited to 'source/blender/blenkernel/intern')
-rw-r--r-- | source/blender/blenkernel/intern/DerivedMesh.c | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/source/blender/blenkernel/intern/DerivedMesh.c b/source/blender/blenkernel/intern/DerivedMesh.c index 3f4b1eec512..76cc6d01214 100644 --- a/source/blender/blenkernel/intern/DerivedMesh.c +++ b/source/blender/blenkernel/intern/DerivedMesh.c @@ -3882,3 +3882,35 @@ MFace *DM_get_tessface_array(DerivedMesh *dm, bool *allocated) return mface; } + +const MLoopTri *DM_get_looptri_array( + DerivedMesh *dm, + const MVert *mvert, + const MPoly *mpoly, int mpoly_len, + const MLoop *mloop, int mloop_len, + bool *allocated) +{ + const MLoopTri *looptri = dm->getLoopTriArray(dm); + *allocated = false; + + if (looptri == NULL) { + if (mpoly_len > 0) { + const int looptris_num = poly_to_tri_count(mpoly_len, mloop_len); + MLoopTri *looptri_data; + + looptri_data = MEM_mallocN(sizeof(MLoopTri) * looptris_num, __func__); + + BKE_mesh_recalc_looptri( + mloop, mpoly, + mvert, + mloop_len, mpoly_len, + looptri_data); + + looptri = looptri_data; + + *allocated = true; + } + } + + return looptri; +} |