[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [58581] trunk/blender/source/blender: dyn-topo: maintain materials for new faces.

Campbell Barton ideasman42 at gmail.com
Wed Jul 24 21:58:16 CEST 2013


Revision: 58581
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=58581
Author:   campbellbarton
Date:     2013-07-24 19:58:16 +0000 (Wed, 24 Jul 2013)
Log Message:
-----------
dyn-topo: maintain materials for new faces.
also minor optimization for BM_edge_in_face(), check edges radial loops rather then the faces edges
since normally there are 0-2 faces attached to an edge compared to 3+ edges in a face.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/pbvh_bmesh.c
    trunk/blender/source/blender/bmesh/intern/bmesh_queries.c

Modified: trunk/blender/source/blender/blenkernel/intern/pbvh_bmesh.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/pbvh_bmesh.c	2013-07-24 19:31:58 UTC (rev 58580)
+++ trunk/blender/source/blender/blenkernel/intern/pbvh_bmesh.c	2013-07-24 19:58:16 UTC (rev 58581)
@@ -294,7 +294,7 @@
 
 static BMFace *pbvh_bmesh_face_create(PBVH *bvh, int node_index,
                                       BMVert *v_tri[3], BMEdge *e_tri[3],
-                                      const BMFace *UNUSED(example))
+                                      const BMFace *f_example)
 {
 	BMFace *f;
 	void *val = SET_INT_IN_POINTER(node_index);
@@ -302,9 +302,10 @@
 	/* ensure we never add existing face */
 	BLI_assert(BM_face_exists(v_tri, 3, NULL) == false);
 
-	/* Note: passing NULL for the 'example' parameter, profiling shows
-	 * a small performance bump */
 	f = BM_face_create(bvh->bm, v_tri, e_tri, 3, 0);
+	// BM_elem_attrs_copy(bvh->bm, bvh->bm, f_example, f);
+	f->mat_nr = f_example->mat_nr;
+
 	if (!BLI_ghash_haskey(bvh->bm_face_to_node, f)) {
 
 		BLI_ghash_insert(bvh->nodes[node_index].bm_faces, f, NULL);

Modified: trunk/blender/source/blender/bmesh/intern/bmesh_queries.c
===================================================================
--- trunk/blender/source/blender/bmesh/intern/bmesh_queries.c	2013-07-24 19:31:58 UTC (rev 58580)
+++ trunk/blender/source/blender/bmesh/intern/bmesh_queries.c	2013-07-24 19:58:16 UTC (rev 58581)
@@ -338,17 +338,17 @@
  */
 bool BM_edge_in_face(BMFace *f, BMEdge *e)
 {
-	BMLoop *l_iter;
-	BMLoop *l_first;
+	if (e->l) {
+		BMLoop *l_iter, *l_first;
 
-	l_iter = l_first = BM_FACE_FIRST_LOOP(f);
+		l_iter = l_first = e->l;
+		do {
+			if (l_iter->f == f) {
+				return true;
+			}
+		} while ((l_iter = l_iter->radial_next) != l_first);
+	}
 
-	do {
-		if (l_iter->e == e) {
-			return true;
-		}
-	} while ((l_iter = l_iter->next) != l_first);
-
 	return false;
 }
 




More information about the Bf-blender-cvs mailing list