equal
  deleted
  inserted
  replaced
  
    
    
|     24  * THE SOFTWARE. |     24  * THE SOFTWARE. | 
|     25  */ |     25  */ | 
|     26  |     26  | 
|     27 #include "octree.h" |     27 #include "octree.h" | 
|     28  |     28  | 
|         |     29 const int Octree::MAX_DEPTH = 10; | 
|         |     30  | 
|     29 OctreeNode::~OctreeNode() |     31 OctreeNode::~OctreeNode() | 
|     30 { |     32 { | 
|     31 	if (isLeaf()) |     33 	if (isLeaf()) | 
|     32 	{ |     34 	{ | 
|     33 		leaf = leaf^1; // zero leaf bit |     35 		leaf = leaf^1; // zero leaf bit | 
|     99 	dbgmsg(1, "* building octree\n"); |    101 	dbgmsg(1, "* building octree\n"); | 
|    100 	root = new OctreeNode(); |    102 	root = new OctreeNode(); | 
|    101 	ShapeList::iterator shape; |    103 	ShapeList::iterator shape; | 
|    102 	for (shape = shapes.begin(); shape != shapes.end(); shape++) |    104 	for (shape = shapes.begin(); shape != shapes.end(); shape++) | 
|    103 		root->addShape(*shape); |    105 		root->addShape(*shape); | 
|    104 	root->subdivide(bbox, max_depth); |    106 	root->subdivide(bbox, MAX_DEPTH); | 
|    105 	built = true; |    107 	built = true; | 
|    106 } |    108 } | 
|    107  |    109  | 
|    108  |    110  | 
|    109 /******************************************************* |    111 /******************************************************* | 
|    153 { |    155 { | 
|    154 	/* if we have no tree, fall back to naive test */ |    156 	/* if we have no tree, fall back to naive test */ | 
|    155 	if (!built) |    157 	if (!built) | 
|    156 		return Container::nearest_intersection(origin_shape, ray, nearest_distance); |    158 		return Container::nearest_intersection(origin_shape, ray, nearest_distance); | 
|    157  |    159  | 
|    158 #ifdef MSVC |    160 	OctreeTravState st[MAX_DEPTH+1]; | 
|    159 	// MSVC wants constant expression here... hope it won't overflow :) |         | 
|    160 	OctreeTravState st[20]; |         | 
|    161 #else |         | 
|    162 	OctreeTravState st[max_depth+1]; |         | 
|    163 #endif |         | 
|    164 	OctreeTravState *st_cur = st; |    161 	OctreeTravState *st_cur = st; | 
|    165  |    162  | 
|    166 #	define node	st_cur->node |    163 #	define node	st_cur->node | 
|    167 #	define tx0	st_cur->tx0 |    164 #	define tx0	st_cur->tx0 | 
|    168 #	define ty0	st_cur->ty0 |    165 #	define ty0	st_cur->ty0 |