#pragma once #include #include #include namespace model { struct Vertex { glm::vec3 coord; glm::vec2 uv; glm::vec3 normal; }; struct Mesh { std::string texture; std::vector vertices; void addPlane(glm::vec3 pos, glm::vec3 right, glm::vec3 up, glm::vec3 norm); void addBox(glm::vec3 pos, glm::vec3 size); void scale(const glm::vec3& size); }; struct Model { std::vector meshes; /// @brief Add mesh to the model /// @param texture texture name /// @return writeable Mesh Mesh& addMesh(const std::string& texture) { meshes.push_back({texture, {}}); return meshes[meshes.size()-1]; } /// @brief Remove all empty meshes void clean(); }; }