#ifndef MATERIAL_H_ #define MATERIAL_H_ #include #include "../lib/glm/glm.hpp" class Shader; class Texture; class Material { public: Material(const std::shared_ptr& tex = nullptr, const std::shared_ptr& shader = nullptr); ~Material() = default; [[nodiscard]] const std::shared_ptr& shader() const; [[nodiscard]] std::shared_ptr& shader(); void set_shader(const std::shared_ptr& shader); [[nodiscard]] const std::shared_ptr& texture() const { return texture_; } void set_texture(const std::shared_ptr& tex) { texture_ = tex; } [[nodiscard]] const glm::vec4& color() const { return color_; } void set_color(const glm::vec4& color) { color_ = color; } [[nodiscard]] uint8_t shininess() const { return shininess_; } void set_shininess(uint8_t shininess) { shininess_ = shininess; } void prepare(); private: std::shared_ptr shader_; std::shared_ptr texture_; glm::vec4 color_; uint8_t shininess_; }; #endif // MATERIAL_H_