#pragma once #include "assets/components/material_components.hpp" #include "generic/component_set.hpp" namespace assets { struct material_data : public detail::component_set< material_components::flags, material_components::all > { material_data() = default; [[nodiscard]] inline z3d::optional& ambient_filter(); [[nodiscard]] inline z3d::optional& diffuse_filter(); [[nodiscard]] inline z3d::optional& specular_filter(); [[nodiscard]] inline z3d::optional& shininess(); [[nodiscard]] inline z3d::optional& alpha(); [[nodiscard]] inline z3d::optional& ambient_filter_texture_id(); [[nodiscard]] inline z3d::optional& specular_filter_texture_id(); [[nodiscard]] inline z3d::optional& diffuse_filter_texture_id(); [[nodiscard]] inline z3d::optional& shininess_texture_id(); [[nodiscard]] inline z3d::optional& alpha_texture_id(); [[nodiscard]] inline z3d::optional& bump_texture_id(); [[nodiscard]] inline const z3d::optional& ambient_filter() const; [[nodiscard]] inline const z3d::optional& diffuse_filter() const; [[nodiscard]] inline const z3d::optional& specular_filter() const; [[nodiscard]] inline const z3d::optional& shininess() const; [[nodiscard]] inline const z3d::optional& alpha() const; [[nodiscard]] inline const z3d::optional& ambient_filter_texture_id() const; [[nodiscard]] inline const z3d::optional& specular_filter_texture_id() const; [[nodiscard]] inline const z3d::optional& diffuse_filter_texture_id() const; [[nodiscard]] inline const z3d::optional& shininess_texture_id() const; [[nodiscard]] inline const z3d::optional& alpha_texture_id() const; [[nodiscard]] inline const z3d::optional& bump_texture_id() const; inline void clear(); }; } #define INCLUDE_MATERIAL_DATA_IMPLEMENTATION #include "assets/data/material_data.ipp" #undef INCLUDE_MATERIAL_DATA_IMPLEMENTATION