diff options
Diffstat (limited to 'QuadTreeCollisionChecker.h')
-rw-r--r-- | QuadTreeCollisionChecker.h | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/QuadTreeCollisionChecker.h b/QuadTreeCollisionChecker.h new file mode 100644 index 0000000..420e0b7 --- /dev/null +++ b/QuadTreeCollisionChecker.h @@ -0,0 +1,39 @@ +#pragma once + +#include <memory> +#include <forward_list> + +#include "Artist.h" +#include "CollisionChecker.h" +#include "Rectangle.h" + +class QuadTreeCollisionChecker : public CollisionChecker { +public: + QuadTreeCollisionChecker(Museum &); + virtual void check(); + +public: + const Rectangle & get_boundary() { return this->boundary; } + std::unique_ptr<QuadTreeCollisionChecker> subtree[4] = { + nullptr, + nullptr, + nullptr, + nullptr, + }; + +private: + QuadTreeCollisionChecker(const QuadTreeCollisionChecker *, const Rectangle & boundary); + + const int capacity = 2; + + std::forward_list<Artist *> artists; + size_t artists_size = 0; + + Rectangle boundary; + + void subdivide(); + void cull(); +}; + + + |