[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [44661] trunk/blender/source/blender/ blenlib/intern/pbvh.c: Code cleanup: factor out some common code from PBVH build_sub/build_leaf.

Nicholas Bishop nicholasbishop at gmail.com
Mon Mar 5 23:24:53 CET 2012


Revision: 44661
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=44661
Author:   nicholasbishop
Date:     2012-03-05 22:24:49 +0000 (Mon, 05 Mar 2012)
Log Message:
-----------
Code cleanup: factor out some common code from PBVH build_sub/build_leaf.

Modified Paths:
--------------
    trunk/blender/source/blender/blenlib/intern/pbvh.c

Modified: trunk/blender/source/blender/blenlib/intern/pbvh.c
===================================================================
--- trunk/blender/source/blender/blenlib/intern/pbvh.c	2012-03-05 22:12:50 UTC (rev 44660)
+++ trunk/blender/source/blender/blenlib/intern/pbvh.c	2012-03-05 22:24:49 UTC (rev 44661)
@@ -402,29 +402,33 @@
 	node->flag |= PBVH_UpdateDrawBuffers;
 }
 
-static void build_leaf(PBVH *bvh, int node_index, const BBC *prim_bbc,
-					   int offset, int count)
+static void update_vb(PBVH *bvh, PBVHNode *node, BBC *prim_bbc,
+					  int offset, int count)
 {
 	int i;
+	
+	BB_reset(&node->vb);
+	for(i = offset + count - 1; i >= offset; --i) {
+		BB_expand_with_bb(&node->vb, (BB*)(&prim_bbc[bvh->prim_indices[i]]));
+	}
+	node->orig_vb = node->vb;
+}
 
+static void build_leaf(PBVH *bvh, int node_index, BBC *prim_bbc,
+					   int offset, int count)
+{
 	bvh->nodes[node_index].flag |= PBVH_Leaf;
 
 	bvh->nodes[node_index].prim_indices = bvh->prim_indices + offset;
 	bvh->nodes[node_index].totprim = count;
 
 	/* Still need vb for searches */
-	BB_reset(&bvh->nodes[node_index].vb);
-	for(i = offset + count - 1; i >= offset; --i) {
-		BB_expand_with_bb(&bvh->nodes[node_index].vb,
-						  (BB*)(prim_bbc +
-								bvh->prim_indices[i]));
-	}
+	update_vb(bvh, &bvh->nodes[node_index], prim_bbc, offset, count);
 		
 	if(bvh->faces)
 		build_mesh_leaf_node(bvh, bvh->nodes + node_index);
 	else
 		build_grids_leaf_node(bvh, bvh->nodes + node_index);
-	bvh->nodes[node_index].orig_vb= bvh->nodes[node_index].vb;
 }
 
 /* Recursively build a node in the tree
@@ -451,16 +455,11 @@
 	}
 
 	/* Add two child nodes */
-	BB_reset(&bvh->nodes[node_index].vb);
 	bvh->nodes[node_index].children_offset = bvh->totnode;
 	grow_nodes(bvh, bvh->totnode + 2);
 
 	/* Update parent node bounding box */
-	for(i = offset + count - 1; i >= offset; --i) {
-		BB_expand_with_bb(&bvh->nodes[node_index].vb,
-				  (BB*)(prim_bbc + bvh->prim_indices[i]));
-	}
-	bvh->nodes[node_index].orig_vb= bvh->nodes[node_index].vb;
+	update_vb(bvh, &bvh->nodes[node_index], prim_bbc, offset, count);
 
 	/* Find axis with widest range of primitive centroids */
 	if(!cb) {




More information about the Bf-blender-cvs mailing list