Files
Z3D/source/assets/data/material_data.ipp
2025-03-28 13:09:34 +01:00

95 lines
3.7 KiB
C++

#ifndef INCLUDE_DYNAMIC_MATERIAL_DATA_IMPLEMENTATION
# error Never include this file directly include 'dynamic_material_buffer.hpp'
#endif
inline std::optional<assets::material_components::surface_properties>& assets::material_data::surface_properties()
{
return std::get<material_components::indices::surface_properties>(components);
}
inline std::optional<assets::material_components::transparency>& assets::material_data::transparency()
{
return std::get<material_components::indices::transparency>(components);
}
inline std::optional<assets::material_components::ambient_color_texture>& assets::material_data::ambient_color_texture_id()
{
return std::get<material_components::indices::ambient_color_texture>(components);
}
inline std::optional<assets::material_components::diffuse_color_texture>& assets::material_data::diffuse_color_texture_id()
{
return std::get<material_components::indices::diffuse_color_texture>(components);
}
inline std::optional<assets::material_components::specular_color_texture>& assets::material_data::specular_color_texture_id()
{
return std::get<material_components::indices::specular_color_texture>(components);
}
inline std::optional<assets::material_components::shininess_texture>& assets::material_data::shininess_texture_id()
{
return std::get<material_components::indices::shininess_texture>(components);
}
inline std::optional<assets::material_components::alpha_texture>& assets::material_data::alpha_texture_id()
{
return std::get<material_components::indices::alpha_texture>(components);
}
inline std::optional<assets::material_components::bump_texture>& assets::material_data::bump_texture_id()
{
return std::get<material_components::indices::bump_texture(components);
}
inline const std::optional<assets::material_components::surface_properties>& assets::material_data::surface_properties() const
{
return std::get<material_components::indices::surface_properties>(components);
}
inline const std::optional<assets::material_components::transparency>& assets::material_data::transparency() const
{
return std::get<material_components::indices::transparency>(components);
}
inline const std::optional<assets::material_components::ambient_color_texture>& assets::material_data::ambient_color_texture_id() const
{
return std::get<material_components::indices::ambient_color_texture>(components);
}
inline const std::optional<assets::material_components::diffuse_color_texture>& assets::material_data::diffuse_color_texture_id() const
{
return std::get<material_components::indices::diffuse_color_texture>(components);
}
inline const std::optional<assets::material_components::specular_color_texture>& assets::material_data::specular_color_texture_id() const
{
return std::get<material_components::indices::specular_color_texture>(components);
}
inline const std::optional<assets::material_components::shininess_texture>& assets::material_data::shininess_texture_id() const
{
return std::get<material_components::indices::shininess_texture>(components);
}
inline const std::optional<assets::material_components::alpha_texture>& assets::material_data::alpha_texture_id() const
{
return std::get<material_components::indices::alpha_texture>(components);
}
inline const std::optional<assets::material_components::bump_texture>& assets::material_data::bump_texture_id() const
{
return std::get<material_components::indices::bump_texture>(components);
}
inline assets::material_components::surface_properties& assets::material_data::initialized_surface_properties()
{
auto& surface_properties_opt = surface_properties();
if (not surface_properties_opt)
{
surface_properties_opt = material_components::surface_properties{};
}
return *surface_properties_opt;
}
inline void assets::material_data::clear()
{
clear_components();
}