BSP tree test
[dosrtxon] / src / bsptree.h
diff --git a/src/bsptree.h b/src/bsptree.h
new file mode 100644 (file)
index 0000000..2839ab0
--- /dev/null
@@ -0,0 +1,37 @@
+#ifndef BSPMESH_H_
+#define BSPMESH_H_
+
+#include "mesh.h"
+#include "vmath.h"
+#include "polyclip.h"
+
+struct bsppoly {
+       struct cplane plane;
+       int vcount;
+       struct g3d_vertex *verts;
+};
+
+struct bspnode {
+       struct bsppoly poly;
+       struct bspnode *front, *back;
+};
+
+struct bsptree {
+       struct bspnode *root;
+       struct bsppoly *soup;   /* dynarr: see dynarr.h */
+};
+
+int init_bsp(struct bsptree *bsp);
+void destroy_bsp(struct bsptree *bsp);
+
+int save_bsp(struct bsptree *bsp, const char *fname);
+int load_bsp(struct bsptree *bsp, const char *fname);
+
+int bsp_add_poly(struct bsptree *bsp, struct g3d_vertex *v, int vnum);
+int bsp_add_mesh(struct bsptree *bsp, struct g3d_mesh *m);
+
+int bsp_build(struct bsptree *bsp);
+
+void draw_bsp(struct bsptree *bsp, float view_x, float view_y, float view_z);
+
+#endif /* BSPMESH_H_ */