summaryrefslogtreecommitdiff
path: root/quadtree.h
diff options
context:
space:
mode:
Diffstat (limited to 'quadtree.h')
-rw-r--r--quadtree.h39
1 files changed, 39 insertions, 0 deletions
diff --git a/quadtree.h b/quadtree.h
new file mode 100644
index 0000000..9a84e98
--- /dev/null
+++ b/quadtree.h
@@ -0,0 +1,39 @@
+#ifndef QUADTREE_H
+#define QUADTREE_H
+
+class Quadtree {
+ public:
+ struct QuadNode {
+ Quadtree *tree;
+ QuadNode *parent;
+ QuadNode *children[4];
+ int elems;
+ float x, y, width, height;
+ int level;
+ float *vertex_array;
+
+ QuadNode(Quadtree *tree, QuadNode *parent, float x, float y, float width, float height, int level, bool leaf);
+ virtual ~QuadNode();
+
+ void subdivide(bool leaf = true);
+ void draw();
+ void draw_grid();
+ float get_height(float px, float py);
+ };
+
+ float *heights;
+ int width, height, levels;
+ float init_time;
+ QuadNode *root;
+ unsigned int vbo_object;
+ unsigned int nodes;
+ unsigned int vertices;
+ Quadtree(int width, int height, float *heightmap, int levels);
+ virtual ~Quadtree();
+
+ unsigned int count_nodes();
+ void make_vbo();
+ QuadNode *find(float x, float y);
+};
+
+#endif