]> git.localhorst.tv Git - blank.git/blob - src/model/shapes.hpp
basic message state
[blank.git] / src / model / shapes.hpp
1 #ifndef BLANK_MODEL_SHAPES_HPP_
2 #define BLANK_MODEL_SHAPES_HPP_
3
4 #include "geometry.hpp"
5 #include "Shape.hpp"
6
7 #include <vector>
8 #include <glm/glm.hpp>
9
10
11 namespace blank {
12
13 class NullShape
14 : public Shape {
15
16 public:
17         NullShape();
18
19         bool Intersects(const Ray &, const glm::mat4 &, float &, glm::vec3 &) const noexcept override;
20         bool Intersects(const glm::mat4 &, const AABB &, const glm::mat4 &, float &, glm::vec3 &) const noexcept override;
21
22 };
23
24
25 class CuboidShape
26 : public Shape {
27
28 public:
29         CuboidShape(const AABB &bounds);
30
31         bool Intersects(const Ray &, const glm::mat4 &, float &, glm::vec3 &) const noexcept override;
32         bool Intersects(const glm::mat4 &, const AABB &, const glm::mat4 &, float &, glm::vec3 &) const noexcept override;
33
34 private:
35         AABB bb;
36
37 };
38
39
40 class StairShape
41 : public Shape {
42
43 public:
44         StairShape(const AABB &bounds, const glm::vec2 &clip);
45
46         bool Intersects(const Ray &, const glm::mat4 &, float &, glm::vec3 &) const noexcept override;
47         bool Intersects(const glm::mat4 &, const AABB &, const glm::mat4 &, float &, glm::vec3 &) const noexcept override;
48
49 private:
50         AABB top, bot;
51
52 };
53
54 }
55
56 #endif