100 lines
3.5 KiB
C++
100 lines
3.5 KiB
C++
#ifndef INCLUDE_DYNAMIC_MATERIAL_DATA_IMPLEMENTATION
|
|
# error Never include this file directly include 'dynamic_material_buffer.hpp'
|
|
#endif
|
|
|
|
|
|
inline std::optional<components::material::surface_properties>& dynamic_material_buffer::surface_properties()
|
|
{
|
|
return std::get<components::material::indices::surface_properties>(data);
|
|
}
|
|
inline std::optional<components::material::transparency>& dynamic_material_buffer::transparency()
|
|
{
|
|
return std::get<components::material::indices::transparency>(data);
|
|
}
|
|
inline std::optional<dynamic_texture_store::id_type>& dynamic_material_buffer::ambient_color_texture_id()
|
|
{
|
|
return std::get<components::material::indices::ambient_color_texture>(data);
|
|
}
|
|
inline std::optional<dynamic_texture_store::id_type>& dynamic_material_buffer::diffuse_color_texture_id()
|
|
{
|
|
return std::get<components::material::indices::diffuse_color_texture>(data);
|
|
}
|
|
inline std::optional<dynamic_texture_store::id_type>& dynamic_material_buffer::specular_color_texture_id()
|
|
{
|
|
return std::get<components::material::indices::specular_color_texture>(data);
|
|
}
|
|
inline std::optional<dynamic_texture_store::id_type>& dynamic_material_buffer::shininess_texture_id()
|
|
{
|
|
return std::get<components::material::indices::shininess_texture>(data);
|
|
}
|
|
inline std::optional<dynamic_texture_store::id_type>& dynamic_material_buffer::alpha_texture_id()
|
|
{
|
|
return std::get<components::material::indices::alpha_texture>(data);
|
|
}
|
|
inline std::optional<dynamic_texture_store::id_type>& dynamic_material_buffer::bump_texture_id()
|
|
{
|
|
return std::get<components::material::indices::bump_texture(data);
|
|
}
|
|
|
|
inline const std::optional<components::material::surface_properties>& dynamic_material_buffer::surface_properties() const
|
|
{
|
|
return std::get<components::material::indices::surface_properties>(data);
|
|
}
|
|
|
|
inline const std::optional<components::material::transparency>& dynamic_material_buffer::transparency() const
|
|
{
|
|
return std::get<components::material::indices::transparency>(data);
|
|
}
|
|
|
|
inline const std::optional<dynamic_texture_store::id_type>& dynamic_material_buffer::ambient_color_texture_id() const
|
|
{
|
|
return std::get<components::material::indices::ambient_color_texture>(data);
|
|
}
|
|
|
|
inline const std::optional<dynamic_texture_store::id_type>& dynamic_material_buffer::diffuse_color_texture_id() const
|
|
{
|
|
return std::get<components::material::indices::diffuse_color_texture>(data);
|
|
}
|
|
|
|
inline const std::optional<dynamic_texture_store::id_type>& dynamic_material_buffer::specular_color_texture_id() const
|
|
{
|
|
return std::get<components::material::indices::specular_color_texture>(data);
|
|
}
|
|
|
|
inline const std::optional<dynamic_texture_store::id_type>& dynamic_material_buffer::shininess_texture_id() const
|
|
{
|
|
return std::get<components::material::indices::shininess_texture>(data);
|
|
}
|
|
|
|
inline const std::optional<dynamic_texture_store::id_type>& dynamic_material_buffer::alpha_texture_id() const
|
|
{
|
|
return std::get<components::material::indices::alpha_texture>(data);
|
|
}
|
|
|
|
inline const std::optional<dynamic_texture_store::id_type>& dynamic_material_buffer::bump_texture_id() const
|
|
{
|
|
return std::get<components::material::indices::bump_texture>(data);
|
|
}
|
|
|
|
|
|
inline components::material::surface_properties& dynamic_material_buffer::initialized_surface_properties()
|
|
{
|
|
auto& surface_properties_opt = surface_properties();
|
|
if (not surface_properties_opt)
|
|
{
|
|
surface_properties_opt = components::material::surface_properties{};
|
|
}
|
|
return *surface_properties_opt;
|
|
}
|
|
|
|
inline void dynamic_material_buffer::clear()
|
|
{
|
|
std::apply(
|
|
[](auto&... data_opt) {
|
|
(data_opt.reset(), ...);
|
|
},
|
|
data
|
|
);
|
|
}
|
|
|