.. _program_listing_file_gui_Demeter_Renderer_Object3D.hpp: Program Listing for File Object3D.hpp ===================================== |exhale_lsh| :ref:`Return to documentation for file ` (``gui/Demeter/Renderer/Object3D.hpp``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp #pragma once #include #include "Camera.hpp" #include "Mesh.hpp" struct Object3D { private: std::unordered_map _idMap; std::vector> _meshArr; // parsing data std::vector positions; std::vector texCoords; std::vector normals; std::string currentName = "default"; std::unique_ptr> meshVertices = std:: make_unique>(); std::unique_ptr> meshIndices = std:: make_unique>(); std::unordered_map uniqueVertexMap; unsigned int index = 0; [[nodiscard]] bool HandleSubObject(std::istringstream &ss); void HandleVertex(std::istringstream &ss); void HandleVertexTexture(std::istringstream &ss); void HandleVertexNormal(std::istringstream &ss); void HandleFace(std::istringstream &ss); [[nodiscard]] bool ParseLine(const std::string &prefix, std::istringstream &ss); public: glm::mat4 modelMatrix = glm::mat4(1.0); // NOLINT Object3D() = default; [[nodiscard]] bool Init(const std::string &path); void Draw(ShaderProgram &shader, Camera &camera) const; void SetTexture(size_t meshID, std::shared_ptr t); void SetPosition(const glm::vec3 &pos) { modelMatrix = glm::translate(modelMatrix, pos); } void Translate(const glm::vec3 &pos) { modelMatrix = glm::translate(modelMatrix, pos); } void SetRotation(float angle, const glm::vec3 &axis) { modelMatrix = glm::rotate(modelMatrix, glm::radians(angle), axis); } void SetScale(const glm::vec3 &scale) { modelMatrix = glm::scale(modelMatrix, scale); } };