1 #ifndef BLANK_SHAPE_HPP_
2 #define BLANK_SHAPE_HPP_
4 #include "geometry.hpp"
14 virtual size_t VertexCount() const = 0;
15 virtual void Vertices(std::vector<glm::vec3> &, const glm::vec3 &pos = { 0.0f, 0.0f, 0.0f }) const = 0;
16 virtual void Normals(std::vector<glm::vec3> &) const = 0;
18 virtual size_t OutlineCount() const = 0;
19 virtual void Outline(std::vector<glm::vec3> &, const glm::vec3 &pos = { 0.0f, 0.0f, 0.0f }) const = 0;
21 virtual bool Intersects(const Ray &, const glm::mat4 &, float &dist, glm::vec3 &normal) const = 0;
30 size_t VertexCount() const override;
31 void Vertices(std::vector<glm::vec3> &, const glm::vec3 &) const override;
32 void Normals(std::vector<glm::vec3> &) const override;
34 size_t OutlineCount() const override;
35 void Outline(std::vector<glm::vec3> &, const glm::vec3 &) const override;
37 bool Intersects(const Ray &, const glm::mat4 &, float &, glm::vec3 &) const override;
46 CuboidShape(const AABB &bounds);
48 size_t VertexCount() const override;
49 void Vertices(std::vector<glm::vec3> &, const glm::vec3 &) const override;
50 void Normals(std::vector<glm::vec3> &) const override;
52 size_t OutlineCount() const override;
53 void Outline(std::vector<glm::vec3> &, const glm::vec3 &) const override;
55 bool Intersects(const Ray &, const glm::mat4 &, float &, glm::vec3 &) const override;
67 StairShape(const AABB &bounds, const glm::vec2 &clip);
69 size_t VertexCount() const override;
70 void Vertices(std::vector<glm::vec3> &, const glm::vec3 &) const override;
71 void Normals(std::vector<glm::vec3> &) const override;
73 size_t OutlineCount() const override;
74 void Outline(std::vector<glm::vec3> &, const glm::vec3 &) const override;
76 bool Intersects(const Ray &, const glm::mat4 &, float &, glm::vec3 &) const override;