#ifndef INCLUDE_DYNAMIC_MATERIAL_DATA_IMPLEMENTATION # error Never include this file directly include 'dynamic_material_buffer.hpp' #endif inline std::optional& assets::material_data::surface_properties() { return std::get(components); } inline std::optional& assets::material_data::transparency() { return std::get(components); } inline std::optional& assets::material_data::ambient_color_texture_id() { return std::get(components); } inline std::optional& assets::material_data::diffuse_color_texture_id() { return std::get(components); } inline std::optional& assets::material_data::specular_color_texture_id() { return std::get(components); } inline std::optional& assets::material_data::shininess_texture_id() { return std::get(components); } inline std::optional& assets::material_data::alpha_texture_id() { return std::get(components); } inline std::optional& assets::material_data::bump_texture_id() { return std::get& assets::material_data::surface_properties() const { return std::get(components); } inline const std::optional& assets::material_data::transparency() const { return std::get(components); } inline const std::optional& assets::material_data::ambient_color_texture_id() const { return std::get(components); } inline const std::optional& assets::material_data::diffuse_color_texture_id() const { return std::get(components); } inline const std::optional& assets::material_data::specular_color_texture_id() const { return std::get(components); } inline const std::optional& assets::material_data::shininess_texture_id() const { return std::get(components); } inline const std::optional& assets::material_data::alpha_texture_id() const { return std::get(components); } inline const std::optional& assets::material_data::bump_texture_id() const { return std::get(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(); }