diff -r 20dee9819b17 -r 3b60fd0bea64 include/kdtree.h --- a/include/kdtree.h Mon Apr 21 09:05:09 2008 +0200 +++ b/include/kdtree.h Mon Apr 21 19:35:27 2008 +0200 @@ -59,16 +59,14 @@ short getAxis() { return flags & 3; }; void setSplit(Float aSplit) { split = aSplit; }; - Float getSplit() { return split; }; + Float& getSplit() { return split; }; void setChildren(KdNode *node) { children = node; assert((flags & 3) == 0); }; - KdNode *getLeftChild() { return (KdNode*)((off_t)children & ~3); }; - KdNode *getRightChild() { return (KdNode*)((off_t)children & ~3) + 1; }; + KdNode* getLeftChild() { return (KdNode*)((off_t)children & ~3); }; + KdNode* getRightChild() { return (KdNode*)((off_t)children & ~3) + 1; }; - ShapeList *getShapes() { return (ShapeList*)((off_t)shapes & ~3); }; + ShapeList* getShapes() { return (ShapeList*)((off_t)shapes & ~3); }; void addShape(Shape* aShape) { getShapes()->push_back(aShape); }; - - void subdivide(BBox bbox, int maxdepth); }; /** @@ -79,6 +77,8 @@ KdNode *root; bool built; int max_depth; + + void recursive_build(KdNode *node, BBox bbox, int maxdepth); public: KdTree() : Container(), root(NULL), built(false), max_depth(32) {}; ~KdTree() { if (root) delete root; };