#pragma once #include #include "assets/components/material_components.hpp" #include "generic/component_set.hpp" namespace assets { struct material_data : detail::component_set { material_data() = default; material_components::surface_properties& initialized_surface_properties(); [[nodiscard]] inline z3d::optional& surface_properties(); [[nodiscard]] inline z3d::optional& transparency(); [[nodiscard]] inline z3d::optional& ambient_color_texture_id(); [[nodiscard]] inline z3d::optional& diffuse_color_texture_id(); [[nodiscard]] inline z3d::optional& specular_color_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& surface_properties() const; [[nodiscard]] inline const z3d::optional& transparency() const; [[nodiscard]] inline const z3d::optional& ambient_color_texture_id() const; [[nodiscard]] inline const z3d::optional& diffuse_color_texture_id() const; [[nodiscard]] inline const z3d::optional& specular_color_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_DYNAMIC_MATERIAL_DATA_IMPLEMENTATION #include "assets/data/material_data.ipp" #undef INCLUDE_DYNAMIC_MATERIAL_DATA_IMPLEMENTATION