diff --git a/src/Magnum/Trade/PhongMaterialData.cpp b/src/Magnum/Trade/PhongMaterialData.cpp index 3b5757c93..1171e0a0f 100644 --- a/src/Magnum/Trade/PhongMaterialData.cpp +++ b/src/Magnum/Trade/PhongMaterialData.cpp @@ -29,6 +29,25 @@ namespace Magnum { namespace Trade { +using namespace Math::Literals; + +PhongMaterialData::PhongMaterialData(const Flags flags, const Float shininess, const void* const importerState) noexcept: AbstractMaterialData{MaterialType::Phong, importerState}, _flags{flags}, _shininess{shininess} { + if(_flags & Flag::AmbientTexture) + _ambient.texture = {}; + else + _ambient.color = 0x000000ff_rgbaf; + + if(_flags & Flag::DiffuseTexture) + _diffuse.texture = {}; + else + _diffuse.color = 0xffffffff_rgbaf; + + if(_flags & Flag::SpecularTexture) + _specular.texture = {}; + else + _specular.color = 0xffffffff_rgbaf; +} + PhongMaterialData::PhongMaterialData(PhongMaterialData&& other) noexcept: AbstractMaterialData{std::move(other)}, _flags{other._flags}, _shininess{other._shininess} { if(_flags & Flag::AmbientTexture) _ambient.texture = other._ambient.texture; diff --git a/src/Magnum/Trade/PhongMaterialData.h b/src/Magnum/Trade/PhongMaterialData.h index aef45b137..e5f3bdabb 100644 --- a/src/Magnum/Trade/PhongMaterialData.h +++ b/src/Magnum/Trade/PhongMaterialData.h @@ -71,9 +71,12 @@ class MAGNUM_TRADE_EXPORT PhongMaterialData: public AbstractMaterialData { * @param importerState Importer-specific state * * Colors and textures should be specified using member functions based - * on what flags are set. + * on what flags are set. Ambient color (if set) is by default + * @cpp 0x000000ff_rgbaf @ce, diffuse and specular color is by default + * @cpp 0xffffffff_rgbaf @ce, all texture IDs (if any) are by default + * set to @cpp 0 @ce. */ - explicit PhongMaterialData(Flags flags, Float shininess, const void* importerState = nullptr) noexcept: AbstractMaterialData{MaterialType::Phong, importerState}, _flags{flags}, _shininess{shininess} {} + explicit PhongMaterialData(Flags flags, Float shininess, const void* importerState = nullptr) noexcept; /** @brief Copying is not allowed */ PhongMaterialData(const PhongMaterialData&) = delete;