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:
authorCampbell Barton <ideasman42@gmail.com>2015-07-22 13:54:12 +0300
committerCampbell Barton <ideasman42@gmail.com>2015-07-22 14:40:41 +0300
commitb305041ce6779f90a282283ff04bd36f1807c728 (patch)
tree82a2b9b6f192801768abb8579295345baa5c3f51 /source/blender/blenkernel/intern
parenta6f00bb75ca8ec22f66a47782ffa2b827bb0f8e9 (diff)
Add DM_get_looptri_array utility function
Diffstat (limited to 'source/blender/blenkernel/intern')
-rw-r--r--source/blender/blenkernel/intern/DerivedMesh.c32
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;
+}