diff --git a/src/Trade/MeshObjectData2D.cpp b/src/Trade/MeshObjectData2D.cpp index bc52d77fe..8390c66fb 100644 --- a/src/Trade/MeshObjectData2D.cpp +++ b/src/Trade/MeshObjectData2D.cpp @@ -26,6 +26,12 @@ namespace Magnum { namespace Trade { -MeshObjectData2D::MeshObjectData2D(std::vector children, const Matrix3& transformation, UnsignedInt instance, UnsignedInt material): ObjectData2D(std::move(children), transformation, InstanceType::Mesh, instance), _material(material) {} +MeshObjectData2D::MeshObjectData2D(std::vector children, const Matrix3& transformation, UnsignedInt instance, UnsignedInt material, std::vector> textureCoordinate2DBindings): ObjectData2D(std::move(children), transformation, InstanceType::Mesh, instance), _material(material), _textureCoordinate2DBindings(std::move(textureCoordinate2DBindings)) {} + +MeshObjectData2D::MeshObjectData2D(MeshObjectData2D&&) = default; + +MeshObjectData2D::~MeshObjectData2D() = default; + +MeshObjectData2D& MeshObjectData2D::operator=(MeshObjectData2D&&) = default; }} diff --git a/src/Trade/MeshObjectData2D.h b/src/Trade/MeshObjectData2D.h index 77f819b18..63527af3c 100644 --- a/src/Trade/MeshObjectData2D.h +++ b/src/Trade/MeshObjectData2D.h @@ -46,28 +46,47 @@ class MAGNUM_EXPORT MeshObjectData2D: public ObjectData2D { * @param transformation Transformation (relative to parent) * @param instance Instance ID * @param material Material ID + * @param textureCoordinate2DBindings 2D texture coordinate bindings * * Creates object with mesh instance type. */ - explicit MeshObjectData2D(std::vector children, const Matrix3& transformation, UnsignedInt instance, UnsignedInt material); + explicit MeshObjectData2D(std::vector children, const Matrix3& transformation, UnsignedInt instance, UnsignedInt material, std::vector> textureCoordinate2DBindings); /** @brief Copying is not allowed */ MeshObjectData2D(const MeshObjectData2D&) = delete; /** @brief Move constructor */ - MeshObjectData2D(MeshObjectData2D&&) = default; + MeshObjectData2D(MeshObjectData2D&&); + + ~MeshObjectData2D(); /** @brief Copying is not allowed */ MeshObjectData2D& operator=(const MeshObjectData2D&) = delete; /** @brief Move assignment */ - MeshObjectData2D& operator=(MeshObjectData2D&&) = default; + MeshObjectData2D& operator=(MeshObjectData2D&&); /** @brief Material ID */ UnsignedInt material() const { return _material; } + /** + * @brief 2D texture coordinate bindings + * + * First item of the pair is 2D texture coodinate ID, second is + * material texture ID (e.g. @ref PhongMaterialData "PhongMaterialData::DiffuseTextureID"). + */ + std::vector>& textureCoordinate2DBindings() { + return _textureCoordinate2DBindings; + } + + /** @overload */ + const std::vector>& textureCoordinate2DBindings() const { + return _textureCoordinate2DBindings; + } + private: UnsignedInt _material; + std::vector> _textureCoordinate2DBindings; }; }} diff --git a/src/Trade/MeshObjectData3D.cpp b/src/Trade/MeshObjectData3D.cpp index 905c628e4..b0c43e0d7 100644 --- a/src/Trade/MeshObjectData3D.cpp +++ b/src/Trade/MeshObjectData3D.cpp @@ -26,6 +26,12 @@ namespace Magnum { namespace Trade { -MeshObjectData3D::MeshObjectData3D(std::vector children, const Matrix4& transformation, UnsignedInt instance, UnsignedInt material): ObjectData3D(std::move(children), transformation, InstanceType::Mesh, instance), _material(material) {} +MeshObjectData3D::MeshObjectData3D(std::vector children, const Matrix4& transformation, UnsignedInt instance, UnsignedInt material, std::vector> textureCoordinate2DBindings): ObjectData3D(std::move(children), transformation, InstanceType::Mesh, instance), _material(material), _textureCoordinate2DBindings(std::move(textureCoordinate2DBindings)) {} + +MeshObjectData3D::MeshObjectData3D(MeshObjectData3D&&) = default; + +MeshObjectData3D::~MeshObjectData3D() = default; + +MeshObjectData3D& MeshObjectData3D::operator=(MeshObjectData3D&&) = default; }} diff --git a/src/Trade/MeshObjectData3D.h b/src/Trade/MeshObjectData3D.h index 1a5b820af..5c245e4d5 100644 --- a/src/Trade/MeshObjectData3D.h +++ b/src/Trade/MeshObjectData3D.h @@ -46,28 +46,47 @@ class MAGNUM_EXPORT MeshObjectData3D: public ObjectData3D { * @param transformation Transformation (relative to parent) * @param instance Instance ID * @param material Material ID + * @param textureCoordinate2DBindings 2D texture coordinate bindings * * Creates object with mesh instance type. */ - explicit MeshObjectData3D(std::vector children, const Matrix4& transformation, UnsignedInt instance, UnsignedInt material); + explicit MeshObjectData3D(std::vector children, const Matrix4& transformation, UnsignedInt instance, UnsignedInt material, std::vector> textureCoordinate2DBindings); /** @brief Copying is not allowed */ MeshObjectData3D(const MeshObjectData3D&) = delete; /** @brief Move constructor */ - MeshObjectData3D(MeshObjectData3D&&) = default; + MeshObjectData3D(MeshObjectData3D&&); + + ~MeshObjectData3D(); /** @brief Copying is not allowed */ MeshObjectData3D& operator=(const MeshObjectData3D&) = delete; /** @brief Move assignment */ - MeshObjectData3D& operator=(MeshObjectData3D&&) = default; + MeshObjectData3D& operator=(MeshObjectData3D&&); /** @brief Material ID */ UnsignedInt material() const { return _material; } + /** + * @brief 2D texture coordinate bindings + * + * First item of the pair is 2D texture coodinate ID, second is + * material texture ID (e.g. @ref PhongMaterialData "PhongMaterialData::DiffuseTextureID"). + */ + std::vector>& textureCoordinate2DBindings() { + return _textureCoordinate2DBindings; + } + + /** @overload */ + const std::vector>& textureCoordinate2DBindings() const { + return _textureCoordinate2DBindings; + } + private: UnsignedInt _material; + std::vector> _textureCoordinate2DBindings; }; }}