X-Git-Url: https://git.dogcows.com/gitweb?p=chaz%2Fyoink;a=blobdiff_plain;f=src%2FMoof%2FOctree.hh;h=4dc0c5c7e460e801594585200e47d3a70bc34064;hp=774eece11c56cb34236a82d2b23ce6f501765351;hb=3cba2347188d70f5ee6e401774b8f86acfd1a3b9;hpb=fdfba4553433b9b2804c2772c7645211b828c2ea diff --git a/src/Moof/Octree.hh b/src/Moof/Octree.hh index 774eece..4dc0c5c 100644 --- a/src/Moof/Octree.hh +++ b/src/Moof/Octree.hh @@ -49,6 +49,13 @@ namespace Mf { class Camera; +struct OctreeNode; +typedef stlplus::ntree::iterator OctreeNodeP; + +class Octree; +typedef boost::shared_ptr OctreeP; + + struct OctreeNode : public Entity { std::list objects; @@ -118,19 +125,14 @@ struct OctreeNode : public Entity }; -class Octree; -typedef boost::shared_ptr OctreeP; - class Octree { - stlplus::ntree::iterator - insert(stlplus::ntree::iterator node, EntityP entity); + OctreeNodeP insert(EntityP entity, OctreeNodeP node); - void addChild(stlplus::ntree::iterator node, int index); + void addChild(OctreeNodeP node, int index); - void draw(stlplus::ntree::iterator node, Scalar alpha); - void drawIfVisible(stlplus::ntree::iterator node, - Scalar alpha, const Camera& cam); + void draw(Scalar alpha, OctreeNodeP node); + void drawIfVisible(Scalar alpha, const Camera& cam, OctreeNodeP node); stlplus::ntree tree_; @@ -146,17 +148,16 @@ public: tree_.insert(rootNode); } - stlplus::ntree::iterator insert(EntityP entity) + OctreeNodeP insert(EntityP entity) { - return insert(tree_.root(), entity); + return insert(entity, tree_.root()); } - stlplus::ntree::iterator reinsert(EntityP entity, - stlplus::ntree::iterator node); + OctreeNodeP reinsert(EntityP entity, OctreeNodeP node); void drawIfVisible(Scalar alpha, const Camera& cam) { - drawIfVisible(tree_.root(), alpha, cam); + drawIfVisible(alpha, cam, tree_.root()); } void sort();