@ -218,6 +218,12 @@ MeshData::MeshData(const MeshPrimitive primitive, Containers::Array<char>&& inde
"Trade::MeshData: attribute"<<i<<"["<<Debug::nospace<<reinterpret_cast<constvoid*>(begin)<<Debug::nospace<<":"<<Debug::nospace<<reinterpret_cast<constvoid*>(end)<<Debug::nospace<<"] is not contained in passed vertexData array ["<<Debug::nospace<<static_cast<constvoid*>(_vertexData.begin())<<Debug::nospace<<":"<<Debug::nospace<<static_cast<constvoid*>(_vertexData.end())<<Debug::nospace<<"]",);
}
}
/** @todo verify that (custom) integer attributes aren't morph targets?
CORRADE_ASSERT(attributeId!=~UnsignedInt{},"Trade::MeshData::attributeId(): index"<<id<<"out of range for"<<attributeCount(name)<<name<<"attributes",{});
"Trade::MeshData::attributeId(): index"<<id<<"out of range for"<<attributeCount(name,morphTargetId)<<name<<"attributes",{});
elseCORRADE_ASSERT(attributeId!=~UnsignedInt{},
"Trade::MeshData::attributeId(): index"<<id<<"out of range for"<<attributeCount(name,morphTargetId)<<name<<"attributes in morph target"<<morphTargetId,{});
CORRADE_ASSERT(attributeId!=~UnsignedInt{},"Trade::MeshData::attributeFormat(): index"<<id<<"out of range for"<<attributeCount(name)<<name<<"attributes",{});
"Trade::MeshData::attributeFormat(): index"<<id<<"out of range for"<<attributeCount(name,morphTargetId)<<name<<"attributes",{});
elseCORRADE_ASSERT(attributeId!=~UnsignedInt{},
"Trade::MeshData::attributeFormat(): index"<<id<<"out of range for"<<attributeCount(name,morphTargetId)<<name<<"attributes in morph target"<<morphTargetId,{});
CORRADE_ASSERT(attributeId!=~UnsignedInt{},"Trade::MeshData::attributeOffset(): index"<<id<<"out of range for"<<attributeCount(name)<<name<<"attributes",{});
"Trade::MeshData::attributeOffset(): index"<<id<<"out of range for"<<attributeCount(name,morphTargetId)<<name<<"attributes",{});
elseCORRADE_ASSERT(attributeId!=~UnsignedInt{},
"Trade::MeshData::attributeOffset(): index"<<id<<"out of range for"<<attributeCount(name,morphTargetId)<<name<<"attributes in morph target"<<morphTargetId,{});
CORRADE_ASSERT(attributeId!=~UnsignedInt{},"Trade::MeshData::attributeStride(): index"<<id<<"out of range for"<<attributeCount(name)<<name<<"attributes",{});
"Trade::MeshData::attributeStride(): index"<<id<<"out of range for"<<attributeCount(name,morphTargetId)<<name<<"attributes",{});
elseCORRADE_ASSERT(attributeId!=~UnsignedInt{},
"Trade::MeshData::attributeStride(): index"<<id<<"out of range for"<<attributeCount(name,morphTargetId)<<name<<"attributes in morph target"<<morphTargetId,{});
CORRADE_ASSERT(attributeId!=~UnsignedInt{},"Trade::MeshData::attributeArraySize(): index"<<id<<"out of range for"<<attributeCount(name)<<name<<"attributes",{});
"Trade::MeshData::attributeArraySize(): index"<<id<<"out of range for"<<attributeCount(name,morphTargetId)<<name<<"attributes",{});
elseCORRADE_ASSERT(attributeId!=~UnsignedInt{},
"Trade::MeshData::attributeArraySize(): index"<<id<<"out of range for"<<attributeCount(name,morphTargetId)<<name<<"attributes in morph target"<<morphTargetId,{});
CORRADE_ASSERT(attributeId!=~UnsignedInt{},"Trade::MeshData::attribute(): index"<<id<<"out of range for"<<attributeCount(name)<<name<<"attributes",{});
"Trade::MeshData::attribute(): index"<<id<<"out of range for"<<attributeCount(name,morphTargetId)<<name<<"attributes",{});
elseCORRADE_ASSERT(attributeId!=~UnsignedInt{},
"Trade::MeshData::attribute(): index"<<id<<"out of range for"<<attributeCount(name,morphTargetId)<<name<<"attributes in morph target"<<morphTargetId,{});
CORRADE_ASSERT(attributeId!=~UnsignedInt{},"Trade::MeshData::mutableAttribute(): index"<<id<<"out of range for"<<attributeCount(name)<<name<<"attributes",{});
"Trade::MeshData::mutableAttribute(): index"<<id<<"out of range for"<<attributeCount(name,morphTargetId)<<name<<"attributes",{});
elseCORRADE_ASSERT(attributeId!=~UnsignedInt{},
"Trade::MeshData::mutableAttribute(): index"<<id<<"out of range for"<<attributeCount(name,morphTargetId)<<name<<"attributes in morph target"<<morphTargetId,{});
CORRADE_ASSERT(attributeId!=~UnsignedInt{},"Trade::MeshData::positions2DInto(): index"<<id<<"out of range for"<<attributeCount(MeshAttribute::Position)<<"position attributes",);
"Trade::MeshData::positions2DInto(): index"<<id<<"out of range for"<<attributeCount(MeshAttribute::Position,morphTargetId)<<"position attributes",);
elseCORRADE_ASSERT(attributeId!=~UnsignedInt{},
"Trade::MeshData::positions2DInto(): index"<<id<<"out of range for"<<attributeCount(MeshAttribute::Position,morphTargetId)<<"position attributes in morph target"<<morphTargetId,);
#endif
CORRADE_ASSERT(destination.size()==_vertexCount,"Trade::MeshData::positions2DInto(): expected a view with"<<_vertexCount<<"elements but got"<<destination.size(),);
CORRADE_ASSERT(attributeId!=~UnsignedInt{},"Trade::MeshData::positions3DInto(): index"<<id<<"out of range for"<<attributeCount(MeshAttribute::Position)<<"position attributes",);
"Trade::MeshData::positions3DInto(): index"<<id<<"out of range for"<<attributeCount(MeshAttribute::Position,morphTargetId)<<"position attributes",);
elseCORRADE_ASSERT(attributeId!=~UnsignedInt{},
"Trade::MeshData::positions3DInto(): index"<<id<<"out of range for"<<attributeCount(MeshAttribute::Position,morphTargetId)<<"position attributes in morph target"<<morphTargetId,);
#endif
CORRADE_ASSERT(destination.size()==_vertexCount,"Trade::MeshData::positions3DInto(): expected a view with"<<_vertexCount<<"elements but got"<<destination.size(),);
CORRADE_ASSERT(attributeId!=~UnsignedInt{},"Trade::MeshData::tangentsInto(): index"<<id<<"out of range for"<<attributeCount(MeshAttribute::Tangent)<<"tangent attributes",);
"Trade::MeshData::tangentsInto(): index"<<id<<"out of range for"<<attributeCount(MeshAttribute::Tangent,morphTargetId)<<"tangent attributes",);
elseCORRADE_ASSERT(attributeId!=~UnsignedInt{},
"Trade::MeshData::tangentsInto(): index"<<id<<"out of range for"<<attributeCount(MeshAttribute::Tangent,morphTargetId)<<"tangent attributes in morph target"<<morphTargetId,);
#endif
CORRADE_ASSERT(destination.size()==_vertexCount,"Trade::MeshData::tangentsInto(): expected a view with"<<_vertexCount<<"elements but got"<<destination.size(),);
CORRADE_ASSERT(attributeId!=~UnsignedInt{},"Trade::MeshData::bitangentSignsInto(): index"<<id<<"out of range for"<<attributeCount(MeshAttribute::Tangent)<<"tangent attributes",);
"Trade::MeshData::bitangentSignsInto(): index"<<id<<"out of range for"<<attributeCount(MeshAttribute::Tangent,morphTargetId)<<"tangent attributes",);
elseCORRADE_ASSERT(attributeId!=~UnsignedInt{},
"Trade::MeshData::bitangentSignsInto(): index"<<id<<"out of range for"<<attributeCount(MeshAttribute::Tangent,morphTargetId)<<"tangent attributes in morph target"<<morphTargetId,);
#endif
CORRADE_ASSERT(destination.size()==_vertexCount,"Trade::MeshData::bitangentSignsInto(): expected a view with"<<_vertexCount<<"elements but got"<<destination.size(),);
CORRADE_ASSERT(attributeId!=~UnsignedInt{},"Trade::MeshData::bitangentsInto(): index"<<id<<"out of range for"<<attributeCount(MeshAttribute::Bitangent)<<"bitangent attributes",);
"Trade::MeshData::bitangentsInto(): index"<<id<<"out of range for"<<attributeCount(MeshAttribute::Bitangent,morphTargetId)<<"bitangent attributes",);
elseCORRADE_ASSERT(attributeId!=~UnsignedInt{},
"Trade::MeshData::bitangentsInto(): index"<<id<<"out of range for"<<attributeCount(MeshAttribute::Bitangent,morphTargetId)<<"bitangent attributes in morph target"<<morphTargetId,);
#endif
CORRADE_ASSERT(destination.size()==_vertexCount,"Trade::MeshData::bitangentsInto(): expected a view with"<<_vertexCount<<"elements but got"<<destination.size(),);
CORRADE_ASSERT(attributeId!=~UnsignedInt{},"Trade::MeshData::normalsInto(): index"<<id<<"out of range for"<<attributeCount(MeshAttribute::Normal)<<"normal attributes",);
"Trade::MeshData::normalsInto(): index"<<id<<"out of range for"<<attributeCount(MeshAttribute::Normal,morphTargetId)<<"normal attributes",);
elseCORRADE_ASSERT(attributeId!=~UnsignedInt{},
"Trade::MeshData::normalsInto(): index"<<id<<"out of range for"<<attributeCount(MeshAttribute::Normal,morphTargetId)<<"normal attributes in morph target"<<morphTargetId,);
#endif
CORRADE_ASSERT(destination.size()==_vertexCount,"Trade::MeshData::normalsInto(): expected a view with"<<_vertexCount<<"elements but got"<<destination.size(),);
CORRADE_ASSERT(attributeId!=~UnsignedInt{},"Trade::MeshData::textureCoordinates2DInto(): index"<<id<<"out of range for"<<attributeCount(MeshAttribute::TextureCoordinates)<<"texture coordinate attributes",);
"Trade::MeshData::textureCoordinates2DInto(): index"<<id<<"out of range for"<<attributeCount(MeshAttribute::TextureCoordinates,morphTargetId)<<"texture coordinate attributes",);
elseCORRADE_ASSERT(attributeId!=~UnsignedInt{},
"Trade::MeshData::textureCoordinates2DInto(): index"<<id<<"out of range for"<<attributeCount(MeshAttribute::TextureCoordinates,morphTargetId)<<"texture coordinate attributes in morph target"<<morphTargetId,);
#endif
CORRADE_ASSERT(destination.size()==_vertexCount,"Trade::MeshData::textureCoordinates2DInto(): expected a view with"<<_vertexCount<<"elements but got"<<destination.size(),);
CORRADE_ASSERT(attributeId!=~UnsignedInt{},"Trade::MeshData::colorsInto(): index"<<id<<"out of range for"<<attributeCount(MeshAttribute::Color)<<"color attributes",);
"Trade::MeshData::colorsInto(): index"<<id<<"out of range for"<<attributeCount(MeshAttribute::Color,morphTargetId)<<"color attributes",);
elseCORRADE_ASSERT(attributeId!=~UnsignedInt{},
"Trade::MeshData::colorsInto(): index"<<id<<"out of range for"<<attributeCount(MeshAttribute::Color,morphTargetId)<<"color attributes in morph target"<<morphTargetId,);
#endif
CORRADE_ASSERT(destination.size()==_vertexCount,"Trade::MeshData::colorsInto(): expected a view with"<<_vertexCount<<"elements but got"<<destination.size(),);
CORRADE_ASSERT(attributeId!=~UnsignedInt{},"Trade::MeshData::weightsAsArray(): index"<<id<<"out of range for"<<attributeCount(MeshAttribute::JointIds)<<"weight attributes",{});
CORRADE_ASSERT(attributeId!=~UnsignedInt{},"Trade::MeshData::objectIdsInto(): index"<<id<<"out of range for"<<attributeCount(MeshAttribute::ObjectId)<<"object ID attributes",);
CORRADE_ASSERT(destination.size()==_vertexCount,"Trade::MeshData::objectIdsInto(): expected a view with"<<_vertexCount<<"elements but got"<<destination.size(),);