
.. _program_listing_file_Src_GraphicsEngineOpenGL_scene_AABB.ixx:

Program Listing for File AABB.ixx
=================================

|exhale_lsh| :ref:`Return to documentation for file <file_Src_GraphicsEngineOpenGL_scene_AABB.ixx>` (``Src/GraphicsEngineOpenGL/scene/AABB.ixx``)

.. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS

.. code-block:: cpp

   module;
   
   #include <glad/glad.h>
   #include <GLFW/glfw3.h>
   
   #include <glm/glm.hpp>
   #include <glm/gtc/matrix_transform.hpp>
   #include <glm/gtc/type_ptr.hpp>
   #include <memory>
   #include <vector>
   
   export module kataglyphis.opengl.aabb;
   
   import kataglyphis.opengl.mesh;
   import kataglyphis.opengl.vertex;
   
   export class AABB
   {
     public:
       AABB();
   
       std::vector<glm::vec3> get_corners(glm::mat4 model);
   
       void init(GLfloat minX, GLfloat maxX, GLfloat minY, GLfloat maxY, GLfloat minZ, GLfloat maxZ);
   
       glm::vec3 get_radius() const;
   
       void render();
   
       ~AABB();
   
     private:
       std::vector<Vertex> vertices;
       std::vector<unsigned int> indices;
   
       std::shared_ptr<Mesh> mesh;
   
       std::vector<glm::vec3> corners;
   
       GLfloat minX{}, maxX{}, minY{}, maxY{}, minZ{}, maxZ{};
   };
