[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [57449] trunk/blender/source/blender/ blenkernel: utility function BKE_mesh_edge_poly_map_create(), currently unused.
Campbell Barton
ideasman42 at gmail.com
Fri Jun 14 09:15:38 CEST 2013
Revision: 57449
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=57449
Author: campbellbarton
Date: 2013-06-14 07:15:38 +0000 (Fri, 14 Jun 2013)
Log Message:
-----------
utility function BKE_mesh_edge_poly_map_create(), currently unused.
Modified Paths:
--------------
trunk/blender/source/blender/blenkernel/BKE_mesh.h
trunk/blender/source/blender/blenkernel/intern/mesh.c
Modified: trunk/blender/source/blender/blenkernel/BKE_mesh.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_mesh.h 2013-06-14 06:34:37 UTC (rev 57448)
+++ trunk/blender/source/blender/blenkernel/BKE_mesh.h 2013-06-14 07:15:38 UTC (rev 57449)
@@ -310,6 +310,11 @@
void BKE_mesh_vert_edge_map_create(MeshElemMap **r_map, int **r_mem,
const struct MEdge *medge, int totvert, int totedge);
+void BKE_mesh_edge_poly_map_create(MeshElemMap **r_map, int **r_mem,
+ const struct MEdge *medge, const int totedge,
+ const struct MPoly *mpoly, const int totpoly,
+ const struct MLoop *mloop, const int totloop);
+
/* vertex level transformations & checks (no derived mesh) */
int BKE_mesh_minmax(struct Mesh *me, float r_min[3], float r_max[3]);
Modified: trunk/blender/source/blender/blenkernel/intern/mesh.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/mesh.c 2013-06-14 06:34:37 UTC (rev 57448)
+++ trunk/blender/source/blender/blenkernel/intern/mesh.c 2013-06-14 07:15:38 UTC (rev 57449)
@@ -2524,6 +2524,51 @@
*r_mem = indices;
}
+void BKE_mesh_edge_poly_map_create(MeshElemMap **r_map, int **r_mem,
+ const MEdge *UNUSED(medge), const int totedge,
+ const MPoly *mpoly, const int totpoly,
+ const MLoop *mloop, const int totloop)
+{
+ MeshElemMap *map = MEM_callocN(sizeof(MeshElemMap) * totedge, "edge-poly map");
+ int *indices = MEM_mallocN(sizeof(int) * totloop, "edge-poly map mem");
+ int *index_step;
+ const MPoly *mp;
+ int i;
+
+ /* count face users */
+ for (i = 0, mp = mpoly; i < totpoly; mp++, i++) {
+ const MLoop *ml;
+ int j = mp->totloop;
+ for (ml = &mloop[mp->loopstart]; j--; ml++) {
+ map[ml->e].count++;
+ }
+ }
+
+ /* create offsets */
+ index_step = indices;
+ for (i = 0; i < totedge; i++) {
+ map[i].indices = index_step;
+ index_step += map[i].count;
+
+ /* re-count, using this as an index below */
+ map[i].count = 0;
+
+ }
+
+ /* assign poly-edge users */
+ for (i = 0, mp = mpoly; i < totpoly; mp++, i++) {
+ const MLoop *ml;
+ int j = mp->totloop;
+ for (ml = &mloop[mp->loopstart]; j--; ml++) {
+ MeshElemMap *map_ele = &map[ml->e];
+ map_ele->indices[map_ele->count++] = i;
+ }
+ }
+
+ *r_map = map;
+ *r_mem = indices;
+}
+
void BKE_mesh_loops_to_mface_corners(CustomData *fdata, CustomData *ldata,
CustomData *pdata, int lindex[4], int findex,
const int polyindex,
More information about the Bf-blender-cvs
mailing list