[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [56124] trunk/blender/source/blender/ blenkernel/intern/editmesh_bvh.c: make bmbvh call BM_mesh_elem_index_ensure (), further calls to utility functions assert if the index values becomes dirty .

Campbell Barton ideasman42 at gmail.com
Thu Apr 18 04:02:02 CEST 2013


Revision: 56124
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=56124
Author:   campbellbarton
Date:     2013-04-18 02:01:59 +0000 (Thu, 18 Apr 2013)
Log Message:
-----------
make bmbvh call BM_mesh_elem_index_ensure(), further calls to utility functions assert if the index values becomes dirty.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/editmesh_bvh.c

Modified: trunk/blender/source/blender/blenkernel/intern/editmesh_bvh.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/editmesh_bvh.c	2013-04-18 01:52:38 UTC (rev 56123)
+++ trunk/blender/source/blender/blenkernel/intern/editmesh_bvh.c	2013-04-18 02:01:59 UTC (rev 56124)
@@ -67,6 +67,10 @@
 	/* BKE_editmesh_tessface_calc() must be called already */
 	BLI_assert(em->tottri != 0 || em->bm->totface == 0);
 
+	if (cos_cage) {
+		BM_mesh_elem_index_ensure(em->bm, BM_VERT);
+	}
+
 	bmtree->em = em;
 	bmtree->bm = em->bm;
 	bmtree->cos_cage = cos_cage;
@@ -216,6 +220,8 @@
 	struct RayCastUserData bmcb_data;
 	const float dist = r_dist ? *r_dist : FLT_MAX;
 
+	if (bmtree->cos_cage) BLI_assert(!(bmtree->em->bm->elem_index_dirty & BM_VERT));
+
 	hit.dist = dist;
 	hit.index = -1;
 
@@ -308,6 +314,8 @@
 	const float dist = len_v3v3(co_a, co_b);
 	float dir[3];
 
+	if (bmtree->cos_cage) BLI_assert(!(bmtree->em->bm->elem_index_dirty & BM_VERT));
+
 	sub_v3_v3v3(dir, co_b, co_a);
 
 	hit.dist = dist;
@@ -391,6 +399,8 @@
 	BVHTreeNearest hit;
 	struct VertSearchUserData bmcb_data;
 
+	if (bmtree->cos_cage) BLI_assert(!(bmtree->em->bm->elem_index_dirty & BM_VERT));
+
 	copy_v3_v3(hit.co, co);
 	/* XXX, why x5, scampbell */
 	hit.dist = maxdist * 5;




More information about the Bf-blender-cvs mailing list