[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [21356] branches/soc-2009-jaguarandi/ source/blender/render/intern/source/rayobject_octree.c: rayobject_octree fixed

André Pinto andresusanopinto at gmail.com
Fri Jul 3 20:16:59 CEST 2009


Revision: 21356
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=21356
Author:   jaguarandi
Date:     2009-07-03 20:16:59 +0200 (Fri, 03 Jul 2009)

Log Message:
-----------
rayobject_octree fixed

Modified Paths:
--------------
    branches/soc-2009-jaguarandi/source/blender/render/intern/source/rayobject_octree.c

Modified: branches/soc-2009-jaguarandi/source/blender/render/intern/source/rayobject_octree.c
===================================================================
--- branches/soc-2009-jaguarandi/source/blender/render/intern/source/rayobject_octree.c	2009-07-03 17:44:20 UTC (rev 21355)
+++ branches/soc-2009-jaguarandi/source/blender/render/intern/source/rayobject_octree.c	2009-07-03 18:16:59 UTC (rev 21356)
@@ -60,7 +60,7 @@
 
 typedef struct Node
 {
-	struct RayObject *v[8];
+	struct RayFace *v[8];
 	struct OcVal ov[8];
 	struct Node *next;
 } Node;
@@ -79,7 +79,7 @@
 	/* during building only */
 	char *ocface; 
 	
-	RayObject **ro_nodes;
+	RayFace **ro_nodes;
 	int ro_nodes_size, ro_nodes_used;
 	
 } Octree;
@@ -294,7 +294,7 @@
 		while(no->v[a]!=NULL) a++;
 	}
 	
-	no->v[a]= (RayObject*)face;
+	no->v[a]= (RayFace*) RayObject_align(face);
 	
 	if(quad)
 		calc_ocval_face(rtf[0], rtf[1], rtf[2], rtf[3], x>>2, y>>1, z, &no->ov[a]);
@@ -456,7 +456,7 @@
 	
 	oc->ocres = ocres;
 	
-	oc->ro_nodes = MEM_callocN(sizeof(RayObject*)*size, "octree rayobject nodes");
+	oc->ro_nodes = (RayFace**)MEM_callocN(sizeof(RayFace*)*size, "octree rayobject nodes");
 	oc->ro_nodes_size = size;
 	oc->ro_nodes_used = 0;
 
@@ -469,8 +469,9 @@
 {
 	Octree *oc = (Octree*)tree;
 
+	assert( RayObject_isRayFace(node) );
 	assert( oc->ro_nodes_used < oc->ro_nodes_size );
-	oc->ro_nodes[ oc->ro_nodes_used++ ] = node;	
+	oc->ro_nodes[ oc->ro_nodes_used++ ] = (RayFace*)RayObject_align(node);
 }
 
 static void octree_fill_rayface(Octree *oc, RayFace *face)
@@ -601,7 +602,7 @@
 	
 	/* Calculate Bounding Box */
 	for(c=0; c<oc->ro_nodes_used; c++)
-		RE_rayobject_merge_bb(oc->ro_nodes[c], oc->min, oc->max);
+		RE_rayobject_merge_bb( RayObject_unalignRayFace(oc->ro_nodes[c]), oc->min, oc->max);
 		
 	/* Alloc memory */
 	oc->adrbranch= MEM_callocN(sizeof(void *)*BRANCH_ARRAY, "octree branches");
@@ -631,8 +632,7 @@
 
 	for(c=0; c<oc->ro_nodes_used; c++)
 	{
-		assert( RayObject_isRayFace(oc->ro_nodes[c]) );
-		octree_fill_rayface(oc, (RayFace*)oc->ro_nodes[c]);
+		octree_fill_rayface(oc, oc->ro_nodes[c]);
 	}
 
 	MEM_freeN(oc->ocface);
@@ -663,14 +663,14 @@
 		for(; no; no = no->next)
 		for(nr=0; nr<8; nr++)
 		{
-			RayObject *face = no->v[nr];
+			RayFace *face = no->v[nr];
 			OcVal 		*ov = no->ov+nr;
 			
 			if(!face) break;
 			
 			if( (ov->ocx & ocval.ocx) && (ov->ocy & ocval.ocy) && (ov->ocz & ocval.ocz) )
 			{
-				if( RE_rayobject_intersect(face,is) )
+				if( RE_rayobject_intersect( RayObject_unalignRayFace(face),is) )
 					return 1;
 			}
 		}
@@ -682,14 +682,14 @@
 		for(; no; no = no->next)
 		for(nr=0; nr<8; nr++)
 		{
-			RayObject *face = no->v[nr];
+			RayFace *face = no->v[nr];
 			OcVal 		*ov = no->ov+nr;
 			
 			if(!face) break;
 			
 			if( (ov->ocx & ocval.ocx) && (ov->ocy & ocval.ocy) && (ov->ocz & ocval.ocz) )
 			{ 
-				if( RE_rayobject_intersect(face,is) )
+				if( RE_rayobject_intersect( RayObject_unalignRayFace(face),is) )
 					found= 1;
 			}
 		}





More information about the Bf-blender-cvs mailing list