Merge branch 'master' into JoinVerticesProcessUsedVerticesMask

pull/4901/head
Kim Kulling 2023-01-30 20:58:21 +01:00 committed by GitHub
commit d6b8d61066
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
54 changed files with 120 additions and 366 deletions

View File

@ -322,7 +322,6 @@ struct Texture {
//! Default constructor //! Default constructor
Texture() AI_NO_EXCEPT Texture() AI_NO_EXCEPT
: mTextureBlend(0.0f), : mTextureBlend(0.0f),
mMapName(),
mOffsetU(0.0), mOffsetU(0.0),
mOffsetV(0.0), mOffsetV(0.0),
mScaleU(1.0), mScaleU(1.0),
@ -334,51 +333,11 @@ struct Texture {
mTextureBlend = get_qnan(); mTextureBlend = get_qnan();
} }
Texture(const Texture &other) : Texture(const Texture &other) = default;
mTextureBlend(other.mTextureBlend),
mMapName(other.mMapName),
mOffsetU(other.mOffsetU),
mOffsetV(other.mOffsetV),
mScaleU(other.mScaleU),
mScaleV(other.mScaleV),
mRotation(other.mRotation),
mMapMode(other.mMapMode),
bPrivate(other.bPrivate),
iUVSrc(other.iUVSrc) {
// empty
}
Texture(Texture &&other) AI_NO_EXCEPT : mTextureBlend(other.mTextureBlend), Texture(Texture &&other) AI_NO_EXCEPT = default;
mMapName(std::move(other.mMapName)),
mOffsetU(other.mOffsetU),
mOffsetV(other.mOffsetV),
mScaleU(other.mScaleU),
mScaleV(other.mScaleV),
mRotation(other.mRotation),
mMapMode(other.mMapMode),
bPrivate(other.bPrivate),
iUVSrc(other.iUVSrc) {
// empty
}
Texture &operator=(Texture &&other) AI_NO_EXCEPT { Texture &operator=(Texture &&other) AI_NO_EXCEPT = default;
if (this == &other) {
return *this;
}
mTextureBlend = other.mTextureBlend;
mMapName = std::move(other.mMapName);
mOffsetU = other.mOffsetU;
mOffsetV = other.mOffsetV;
mScaleU = other.mScaleU;
mScaleV = other.mScaleV;
mRotation = other.mRotation;
mMapMode = other.mMapMode;
bPrivate = other.bPrivate;
iUVSrc = other.iUVSrc;
return *this;
}
//! Specifies the blend factor for the texture //! Specifies the blend factor for the texture
ai_real mTextureBlend; ai_real mTextureBlend;
@ -436,83 +395,13 @@ struct Material {
// empty // empty
} }
Material(const Material &other) : Material(const Material &other) = default;
mName(other.mName),
mDiffuse(other.mDiffuse),
mSpecularExponent(other.mSpecularExponent),
mShininessStrength(other.mShininessStrength),
mSpecular(other.mSpecular),
mAmbient(other.mAmbient),
mShading(other.mShading),
mTransparency(other.mTransparency),
sTexDiffuse(other.sTexDiffuse),
sTexOpacity(other.sTexOpacity),
sTexSpecular(other.sTexSpecular),
sTexReflective(other.sTexReflective),
sTexBump(other.sTexBump),
sTexEmissive(other.sTexEmissive),
sTexShininess(other.sTexShininess),
mBumpHeight(other.mBumpHeight),
mEmissive(other.mEmissive),
sTexAmbient(other.sTexAmbient),
mTwoSided(other.mTwoSided) {
// empty
}
//! Move constructor. This is explicitly written because MSVC doesn't support defaulting it Material(Material &&other) AI_NO_EXCEPT = default;
Material(Material &&other) AI_NO_EXCEPT : mName(std::move(other.mName)),
mDiffuse(other.mDiffuse),
mSpecularExponent(other.mSpecularExponent),
mShininessStrength(other.mShininessStrength),
mSpecular(other.mSpecular),
mAmbient(other.mAmbient),
mShading(other.mShading),
mTransparency(other.mTransparency),
sTexDiffuse(std::move(other.sTexDiffuse)),
sTexOpacity(std::move(other.sTexOpacity)),
sTexSpecular(std::move(other.sTexSpecular)),
sTexReflective(std::move(other.sTexReflective)),
sTexBump(std::move(other.sTexBump)),
sTexEmissive(std::move(other.sTexEmissive)),
sTexShininess(std::move(other.sTexShininess)),
mBumpHeight(other.mBumpHeight),
mEmissive(other.mEmissive),
sTexAmbient(std::move(other.sTexAmbient)),
mTwoSided(other.mTwoSided) {
// empty
}
Material &operator=(Material &&other) AI_NO_EXCEPT { Material &operator=(Material &&other) AI_NO_EXCEPT = default;
if (this == &other) {
return *this;
}
mName = std::move(other.mName); virtual ~Material() = default;
mDiffuse = other.mDiffuse;
mSpecularExponent = other.mSpecularExponent;
mShininessStrength = other.mShininessStrength,
mSpecular = other.mSpecular;
mAmbient = other.mAmbient;
mShading = other.mShading;
mTransparency = other.mTransparency;
sTexDiffuse = std::move(other.sTexDiffuse);
sTexOpacity = std::move(other.sTexOpacity);
sTexSpecular = std::move(other.sTexSpecular);
sTexReflective = std::move(other.sTexReflective);
sTexBump = std::move(other.sTexBump);
sTexEmissive = std::move(other.sTexEmissive);
sTexShininess = std::move(other.sTexShininess);
mBumpHeight = other.mBumpHeight;
mEmissive = other.mEmissive;
sTexAmbient = std::move(other.sTexAmbient);
mTwoSided = other.mTwoSided;
return *this;
}
virtual ~Material() {
// empty
}
//! Name of the material //! Name of the material
std::string mName; std::string mName;

View File

@ -69,9 +69,7 @@ public:
// empty // empty
} }
virtual ~Resource() { virtual ~Resource() = default;
// empty
}
virtual ResourceType getType() const { virtual ResourceType getType() const {
return ResourceType::RT_Unknown; return ResourceType::RT_Unknown;

View File

@ -83,7 +83,7 @@ void ExportScene3MF(const char *pFile, IOSystem *pIOSystem, const aiScene *pScen
namespace D3MF { namespace D3MF {
D3MFExporter::D3MFExporter(const char *pFile, const aiScene *pScene) : D3MFExporter::D3MFExporter(const char *pFile, const aiScene *pScene) :
mArchiveName(pFile), m_zipArchive(nullptr), mScene(pScene), mModelOutput(), mRelOutput(), mContentOutput(), mBuildItems(), mRelations() { mArchiveName(pFile), m_zipArchive(nullptr), mScene(pScene) {
// empty // empty
} }

View File

@ -83,11 +83,7 @@ void AMFImporter::Clear() {
AMFImporter::AMFImporter() AI_NO_EXCEPT : AMFImporter::AMFImporter() AI_NO_EXCEPT :
mNodeElement_Cur(nullptr), mNodeElement_Cur(nullptr),
mXmlParser(nullptr), mXmlParser(nullptr) {
mUnit(),
mVersion(),
mMaterial_Converted(),
mTexture_Converted() {
// empty // empty
} }

View File

@ -88,9 +88,7 @@ public:
std::list<AMFNodeElementBase *> Child; ///< Child elements. std::list<AMFNodeElementBase *> Child; ///< Child elements.
public: /// Destructor, virtual.. public: /// Destructor, virtual..
virtual ~AMFNodeElementBase() { virtual ~AMFNodeElementBase() = default;
// empty
}
/// Disabled copy constructor and co. /// Disabled copy constructor and co.
AMFNodeElementBase(const AMFNodeElementBase &pNodeElement) = delete; AMFNodeElementBase(const AMFNodeElementBase &pNodeElement) = delete;
@ -103,7 +101,7 @@ protected:
/// \param [in] pType - element type. /// \param [in] pType - element type.
/// \param [in] pParent - parent element. /// \param [in] pParent - parent element.
AMFNodeElementBase(const EType pType, AMFNodeElementBase *pParent) : AMFNodeElementBase(const EType pType, AMFNodeElementBase *pParent) :
Type(pType), ID(), Parent(pParent), Child() { Type(pType), Parent(pParent) {
// empty // empty
} }
}; // class IAMFImporter_NodeElement }; // class IAMFImporter_NodeElement
@ -174,7 +172,7 @@ struct AMFColor : public AMFNodeElementBase {
/// @brief Constructor. /// @brief Constructor.
/// @param [in] pParent - pointer to parent node. /// @param [in] pParent - pointer to parent node.
AMFColor(AMFNodeElementBase *pParent) : AMFColor(AMFNodeElementBase *pParent) :
AMFNodeElementBase(ENET_Color, pParent), Composed(false), Color(), Profile() { AMFNodeElementBase(ENET_Color, pParent), Composed(false), Color() {
// empty // empty
} }
}; };
@ -270,7 +268,7 @@ struct AMFTexMap : public AMFNodeElementBase {
/// Constructor. /// Constructor.
/// \param [in] pParent - pointer to parent node. /// \param [in] pParent - pointer to parent node.
AMFTexMap(AMFNodeElementBase *pParent) : AMFTexMap(AMFNodeElementBase *pParent) :
AMFNodeElementBase(ENET_TexMap, pParent), TextureCoordinate{}, TextureID_R(), TextureID_G(), TextureID_B(), TextureID_A() { AMFNodeElementBase(ENET_TexMap, pParent), TextureCoordinate{} {
// empty // empty
} }
}; };

View File

@ -52,8 +52,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
namespace Assimp { namespace Assimp {
template <> template <>
const char *LogFunctions<BlenderBMeshConverter>::Prefix() { const char *LogFunctions<BlenderBMeshConverter>::Prefix() {
static auto prefix = "BLEND_BMESH: "; return "BLEND_BMESH: ";
return prefix;
} }
} // namespace Assimp } // namespace Assimp

View File

@ -106,9 +106,7 @@ struct ElemBase {
// empty // empty
} }
virtual ~ElemBase() { virtual ~ElemBase() = default;
// empty
}
/** Type name of the element. The type /** Type name of the element. The type
* string points is the `c_str` of the `name` attribute of the * string points is the `c_str` of the `name` attribute of the

View File

@ -80,8 +80,7 @@ namespace Assimp {
template <> template <>
const char *LogFunctions<BlenderImporter>::Prefix() { const char *LogFunctions<BlenderImporter>::Prefix() {
static auto prefix = "BLEND: "; return "BLEND: ";
return prefix;
} }
} // namespace Assimp } // namespace Assimp

View File

@ -62,9 +62,7 @@ public:
/** /**
* The class destructor, virtual. * The class destructor, virtual.
*/ */
virtual ~BlenderModifier() { virtual ~BlenderModifier() = default;
// empty
}
// -------------------- // --------------------
/** /**

View File

@ -182,7 +182,7 @@ struct MVert : ElemBase {
int bweight; int bweight;
MVert() : MVert() :
ElemBase(), flag(0), mat_nr(0), bweight(0) {} flag(0), mat_nr(0), bweight(0) {}
}; };
// ------------------------------------------------------------------------------- // -------------------------------------------------------------------------------
@ -417,7 +417,6 @@ struct CustomDataLayer : ElemBase {
std::shared_ptr<ElemBase> data; // must be converted to real type according type member std::shared_ptr<ElemBase> data; // must be converted to real type according type member
CustomDataLayer() : CustomDataLayer() :
ElemBase(),
type(0), type(0),
offset(0), offset(0),
flag(0), flag(0),
@ -729,7 +728,7 @@ struct Object : ElemBase {
ListBase modifiers; ListBase modifiers;
Object() : Object() :
ElemBase(), type(Type_EMPTY), parent(nullptr), track(), proxy(), proxy_from(), data() { type(Type_EMPTY), parent(nullptr) {
// empty // empty
} }
}; };
@ -741,8 +740,7 @@ struct Base : ElemBase {
std::shared_ptr<Object> object WARN; std::shared_ptr<Object> object WARN;
Base() : Base() :
ElemBase(), prev(nullptr), next(), object() { prev(nullptr) {
// empty
// empty // empty
} }
}; };
@ -758,10 +756,7 @@ struct Scene : ElemBase {
ListBase base; ListBase base;
Scene() : Scene() = default;
ElemBase(), camera(), world(), basact(), master_collection() {
// empty
}
}; };
// ------------------------------------------------------------------------------- // -------------------------------------------------------------------------------
@ -791,10 +786,7 @@ struct Image : ElemBase {
short gen_x, gen_y, gen_type; short gen_x, gen_y, gen_type;
Image() : Image() = default;
ElemBase() {
// empty
}
}; };
// ------------------------------------------------------------------------------- // -------------------------------------------------------------------------------
@ -884,7 +876,7 @@ struct Tex : ElemBase {
//char use_nodes; //char use_nodes;
Tex() : Tex() :
ElemBase(), imaflag(ImageFlags_INTERPOL), type(Type_CLOUDS), ima() { imaflag(ImageFlags_INTERPOL), type(Type_CLOUDS) {
// empty // empty
} }
}; };
@ -976,10 +968,7 @@ struct MTex : ElemBase {
//float shadowfac; //float shadowfac;
//float zenupfac, zendownfac, blendfac; //float zenupfac, zendownfac, blendfac;
MTex() : MTex() = default;
ElemBase() {
// empty
}
}; };
} // namespace Blender } // namespace Blender

View File

@ -62,8 +62,7 @@ namspace Assimp
{ {
template< > const char* LogFunctions< BlenderTessellatorGL >::Prefix() template< > const char* LogFunctions< BlenderTessellatorGL >::Prefix()
{ {
static auto prefix = "BLEND_TESS_GL: "; return "BLEND_TESS_GL: ";
return prefix;
} }
} }
@ -81,9 +80,7 @@ BlenderTessellatorGL::BlenderTessellatorGL( BlenderBMeshConverter& converter ):
} }
// ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------
BlenderTessellatorGL::~BlenderTessellatorGL( ) BlenderTessellatorGL::~BlenderTessellatorGL() = default;
{
}
// ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------
void BlenderTessellatorGL::Tessellate( const MLoop* polyLoop, int vertexCount, const std::vector< MVert >& vertices ) void BlenderTessellatorGL::Tessellate( const MLoop* polyLoop, int vertexCount, const std::vector< MVert >& vertices )
@ -259,8 +256,7 @@ namespace Assimp
{ {
template< > const char* LogFunctions< BlenderTessellatorP2T >::Prefix() template< > const char* LogFunctions< BlenderTessellatorP2T >::Prefix()
{ {
static auto prefix = "BLEND_TESS_P2T: "; return "BLEND_TESS_P2T: ";
return prefix;
} }
} }

View File

@ -86,8 +86,7 @@ void GetWriterInfo(int &id, String &appname) {
namespace Assimp { namespace Assimp {
template<> const char* LogFunctions<C4DImporter>::Prefix() { template<> const char* LogFunctions<C4DImporter>::Prefix() {
static auto prefix = "C4D: "; return "C4D: ";
return prefix;
} }
} }
@ -106,15 +105,10 @@ static const aiImporterDesc desc = {
// ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------
C4DImporter::C4DImporter() C4DImporter::C4DImporter() = default;
: BaseImporter() {
// empty
}
// ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------
C4DImporter::~C4DImporter() { C4DImporter::~C4DImporter() = default;
// empty
}
// ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------
bool C4DImporter::CanRead( const std::string& pFile, IOSystem* /*pIOHandler*/, bool /*checkSig*/) const { bool C4DImporter::CanRead( const std::string& pFile, IOSystem* /*pIOHandler*/, bool /*checkSig*/) const {

View File

@ -92,15 +92,6 @@ inline void AddNodeMetaData(aiNode *node, const std::string &key, const T &value
// ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------
// Constructor to be privately used by Importer // Constructor to be privately used by Importer
ColladaLoader::ColladaLoader() : ColladaLoader::ColladaLoader() :
mFileName(),
mMeshIndexByID(),
mMaterialIndexByName(),
mMeshes(),
newMats(),
mCameras(),
mLights(),
mTextures(),
mAnims(),
noSkeletonMesh(false), noSkeletonMesh(false),
removeEmptyBones(false), removeEmptyBones(false),
ignoreUpDirection(false), ignoreUpDirection(false),

View File

@ -65,7 +65,6 @@ public:
LineReader(StreamReaderLE& reader) LineReader(StreamReaderLE& reader)
: splitter(reader,false,true) : splitter(reader,false,true)
, groupcode( 0 ) , groupcode( 0 )
, value()
, end() { , end() {
// empty // empty
} }
@ -186,8 +185,7 @@ struct InsertBlock {
InsertBlock() InsertBlock()
: pos() : pos()
, scale(1.f,1.f,1.f) , scale(1.f,1.f,1.f)
, angle() , angle() {
, name() {
// empty // empty
} }

View File

@ -77,8 +77,6 @@ public: // constructors
/// The class constructor with the name. /// The class constructor with the name.
Node(const std::string& n) Node(const std::string& n)
: name(n) : name(n)
, properties()
, children()
, force_has_children( false ) { , force_has_children( false ) {
// empty // empty
} }
@ -87,8 +85,6 @@ public: // constructors
template <typename... More> template <typename... More>
Node(const std::string& n, More&&... more) Node(const std::string& n, More&&... more)
: name(n) : name(n)
, properties()
, children()
, force_has_children(false) { , force_has_children(false) {
AddProperties(std::forward<More>(more)...); AddProperties(std::forward<More>(more)...);
} }

View File

@ -62,8 +62,7 @@ namespace Assimp {
template <> template <>
const char *LogFunctions<FBXImporter>::Prefix() { const char *LogFunctions<FBXImporter>::Prefix() {
static auto prefix = "FBX: "; return "FBX: ";
return prefix;
} }
} // namespace Assimp } // namespace Assimp
@ -90,10 +89,7 @@ static const aiImporterDesc desc = {
// ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------
// Constructor to be privately used by #Importer // Constructor to be privately used by #Importer
FBXImporter::FBXImporter() : FBXImporter::FBXImporter() = default;
mSettings() {
// empty
}
// ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------
// Returns whether the class can handle the format of the given file. // Returns whether the class can handle the format of the given file.

View File

@ -73,8 +73,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
namespace Assimp { namespace Assimp {
template <> template <>
const char *LogFunctions<IFCImporter>::Prefix() { const char *LogFunctions<IFCImporter>::Prefix() {
static auto prefix = "IFC: "; return "IFC: ";
return prefix;
} }
} // namespace Assimp } // namespace Assimp

View File

@ -71,11 +71,7 @@ static const aiImporterDesc desc = {
// ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------
// Constructor to be privately used by Importer // Constructor to be privately used by Importer
IRRMeshImporter::IRRMeshImporter() : IRRMeshImporter::IRRMeshImporter() = default;
BaseImporter(),
IrrlichtBase() {
// empty
}
// ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------
// Destructor, private as well // Destructor, private as well

View File

@ -63,9 +63,7 @@ protected:
// empty // empty
} }
~IrrlichtBase() { ~IrrlichtBase() = default;
// empty
}
/** @brief Data structure for a simple name-value property /** @brief Data structure for a simple name-value property
*/ */

View File

@ -65,7 +65,7 @@ class M3DImporter : public BaseImporter {
public: public:
/// \brief Default constructor /// \brief Default constructor
M3DImporter(); M3DImporter();
~M3DImporter() override {} ~M3DImporter() override = default;
/// \brief Returns whether the class can handle the format of the given file. /// \brief Returns whether the class can handle the format of the given file.
/// \remark See BaseImporter::CanRead() for details. /// \remark See BaseImporter::CanRead() for details.

View File

@ -269,7 +269,7 @@ aiMesh *MMDImporter::CreateMesh(const pmx::PmxModel *pModel,
dynamic_cast<pmx::PmxVertexSkinningSDEF *>(v->skinning.get()); dynamic_cast<pmx::PmxVertexSkinningSDEF *>(v->skinning.get());
switch (v->skinning_type) { switch (v->skinning_type) {
case pmx::PmxVertexSkinningType::BDEF1: case pmx::PmxVertexSkinningType::BDEF1:
bone_vertex_map[vsBDEF1_ptr->bone_index].emplace_back(index, 1.0); bone_vertex_map[vsBDEF1_ptr->bone_index].emplace_back(index, static_cast<ai_real>(1));
break; break;
case pmx::PmxVertexSkinningType::BDEF2: case pmx::PmxVertexSkinningType::BDEF2:
bone_vertex_map[vsBDEF2_ptr->bone_index1].emplace_back(index, vsBDEF2_ptr->bone_weight); bone_vertex_map[vsBDEF2_ptr->bone_index1].emplace_back(index, vsBDEF2_ptr->bone_weight);

View File

@ -261,7 +261,6 @@ OpenGEXImporter::RefInfo::RefInfo(aiNode *node, Type type, std::vector<std::stri
OpenGEXImporter::OpenGEXImporter() : OpenGEXImporter::OpenGEXImporter() :
m_root(nullptr), m_root(nullptr),
m_nodeChildMap(), m_nodeChildMap(),
m_meshCache(),
m_mesh2refMap(), m_mesh2refMap(),
m_material2refMap(), m_material2refMap(),
m_ctx(nullptr), m_ctx(nullptr),

View File

@ -296,9 +296,7 @@ class PropertyInstance
public: public:
//! Default constructor //! Default constructor
PropertyInstance() AI_NO_EXCEPT { PropertyInstance() AI_NO_EXCEPT = default;
// empty
}
union ValueUnion union ValueUnion
{ {
@ -359,10 +357,7 @@ public:
class ElementInstance { class ElementInstance {
public: public:
//! Default constructor //! Default constructor
ElementInstance() AI_NO_EXCEPT ElementInstance() AI_NO_EXCEPT = default;
: alProperties() {
// empty
}
//! List of all parsed properties //! List of all parsed properties
std::vector< PropertyInstance > alProperties; std::vector< PropertyInstance > alProperties;
@ -386,10 +381,7 @@ class ElementInstanceList
public: public:
//! Default constructor //! Default constructor
ElementInstanceList() AI_NO_EXCEPT ElementInstanceList() AI_NO_EXCEPT = default;
: alInstances() {
// empty
}
//! List of all element instances //! List of all element instances
std::vector< ElementInstance > alInstances; std::vector< ElementInstance > alInstances;
@ -413,11 +405,7 @@ class DOM
public: public:
//! Default constructor //! Default constructor
DOM() AI_NO_EXCEPT DOM() AI_NO_EXCEPT = default;
: alElements()
, alElementData() {
}
//! Contains all elements of the file format //! Contains all elements of the file format

View File

@ -169,19 +169,7 @@ struct Q3BSPModel {
std::vector<char> m_EntityData; std::vector<char> m_EntityData;
std::string m_ModelName; std::string m_ModelName;
Q3BSPModel() : Q3BSPModel() = default;
m_Data(),
m_Lumps(),
m_Vertices(),
m_Faces(),
m_Indices(),
m_Textures(),
m_Lightmaps(),
m_EntityData(),
m_ModelName()
{
// empty
}
~Q3BSPModel() { ~Q3BSPModel() {
for ( unsigned int i=0; i<m_Lumps.size(); i++ ) { for ( unsigned int i=0; i<m_Lumps.size(); i++ ) {

View File

@ -139,7 +139,7 @@ static void normalizePathName(const std::string &rPath, std::string &normalizedP
// ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------
// Constructor. // Constructor.
Q3BSPFileImporter::Q3BSPFileImporter() : Q3BSPFileImporter::Q3BSPFileImporter() :
m_pCurrentMesh(nullptr), m_pCurrentFace(nullptr), m_MaterialLookupMap(), mTextures() { m_pCurrentMesh(nullptr), m_pCurrentFace(nullptr) {
// empty // empty
} }

View File

@ -82,10 +82,9 @@ static const aiImporterDesc desc = {
// ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------
// Constructor to be privately used by Importer // Constructor to be privately used by Importer
SMDImporter::SMDImporter() : SMDImporter::SMDImporter() :
configFrameID(), configFrameID(),
mBuffer(), pScene( nullptr ),
pScene( nullptr ), iFileSize( 0 ),
iFileSize( 0 ),
iSmallestFrame( INT_MAX ), iSmallestFrame( INT_MAX ),
dLengthOfAnim( 0.0 ), dLengthOfAnim( 0.0 ),
bHasUVs(false ), bHasUVs(false ),

View File

@ -87,7 +87,7 @@ struct Vertex {
*/ */
struct Face { struct Face {
Face() AI_NO_EXCEPT : Face() AI_NO_EXCEPT :
iTexture(0x0), avVertices{} { iTexture(0x0) {
// empty // empty
} }

View File

@ -67,7 +67,6 @@ struct TexEntry {
bool mIsNormalMap; // true if the texname was specified in a NormalmapFilename tag bool mIsNormalMap; // true if the texname was specified in a NormalmapFilename tag
TexEntry() AI_NO_EXCEPT : TexEntry() AI_NO_EXCEPT :
mName(),
mIsNormalMap(false) { mIsNormalMap(false) {
// empty // empty
} }
@ -128,17 +127,8 @@ struct Mesh {
explicit Mesh(const std::string &pName = std::string()) AI_NO_EXCEPT explicit Mesh(const std::string &pName = std::string()) AI_NO_EXCEPT
: mName(pName), : mName(pName),
mPositions(),
mPosFaces(),
mNormals(),
mNormFaces(),
mNumTextures(0), mNumTextures(0),
mTexCoords{}, mNumColorSets(0) {
mNumColorSets(0),
mColors{},
mFaceMaterials(),
mMaterials(),
mBones() {
// empty // empty
} }
}; };
@ -152,15 +142,12 @@ struct Node {
std::vector<Mesh *> mMeshes; std::vector<Mesh *> mMeshes;
Node() AI_NO_EXCEPT Node() AI_NO_EXCEPT
: mName(), : mTrafoMatrix(),
mTrafoMatrix(), mParent(nullptr) {
mParent(nullptr),
mChildren(),
mMeshes() {
// empty // empty
} }
explicit Node(Node *pParent) : explicit Node(Node *pParent) :
mName(), mTrafoMatrix(), mParent(pParent), mChildren(), mMeshes() { mTrafoMatrix(), mParent(pParent) {
// empty // empty
} }
@ -211,8 +198,6 @@ struct Scene {
Scene() AI_NO_EXCEPT Scene() AI_NO_EXCEPT
: mRootNode(nullptr), : mRootNode(nullptr),
mGlobalMeshes(),
mGlobalMaterials(),
mAnimTicksPerSecond(0) { mAnimTicksPerSecond(0) {
// empty // empty
} }

View File

@ -75,9 +75,7 @@ static const aiImporterDesc desc = {
// ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------
// Constructor to be privately used by Importer // Constructor to be privately used by Importer
XFileImporter::XFileImporter() : mBuffer() { XFileImporter::XFileImporter() = default;
// empty
}
// ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------
// Returns whether the class can handle the format of the given file. // Returns whether the class can handle the format of the given file.

View File

@ -52,22 +52,14 @@ class X3DExporter {
struct SAttribute { struct SAttribute {
const std::string Name; const std::string Name;
const std::string Value; const std::string Value;
SAttribute() : SAttribute() = default;
Name(),
Value() {
// empty
}
SAttribute(const std::string &name, const std::string &value) : SAttribute(const std::string &name, const std::string &value) :
Name(name), Name(name),
Value(value) { Value(value) {
// empty // empty
} }
SAttribute(SAttribute &&rhs) AI_NO_EXCEPT : SAttribute(SAttribute &&rhs) AI_NO_EXCEPT = default;
Name(rhs.Name),
Value(rhs.Value) {
// empty
}
}; };
/***********************************************/ /***********************************************/

View File

@ -193,7 +193,7 @@ void X3DGeoHelper::add_color(aiMesh &pMesh, const std::list<aiColor3D> &pColors,
// create RGBA array from RGB. // create RGBA array from RGB.
for (std::list<aiColor3D>::const_iterator it = pColors.begin(); it != pColors.end(); ++it) for (std::list<aiColor3D>::const_iterator it = pColors.begin(); it != pColors.end(); ++it)
tcol.emplace_back((*it).r, (*it).g, (*it).b, 1); tcol.emplace_back((*it).r, (*it).g, (*it).b, static_cast<ai_real>(1));
// call existing function for adding RGBA colors // call existing function for adding RGBA colors
add_color(pMesh, tcol, pColorPerVertex); add_color(pMesh, tcol, pColorPerVertex);
@ -238,7 +238,7 @@ void X3DGeoHelper::add_color(aiMesh &pMesh, const std::vector<int32_t> &pCoordId
// create RGBA array from RGB. // create RGBA array from RGB.
for (std::list<aiColor3D>::const_iterator it = pColors.begin(); it != pColors.end(); ++it) { for (std::list<aiColor3D>::const_iterator it = pColors.begin(); it != pColors.end(); ++it) {
tcol.emplace_back((*it).r, (*it).g, (*it).b, 1); tcol.emplace_back((*it).r, (*it).g, (*it).b, static_cast<ai_real>(1));
} }
// call existing function for adding RGBA colors // call existing function for adding RGBA colors
@ -440,7 +440,7 @@ void X3DGeoHelper::add_tex_coord(aiMesh &pMesh, const std::vector<int32_t> &pCoo
// copy list to array because we are need indexed access to normals. // copy list to array because we are need indexed access to normals.
texcoord_arr_copy.reserve(pTexCoords.size()); texcoord_arr_copy.reserve(pTexCoords.size());
for (std::list<aiVector2D>::const_iterator it = pTexCoords.begin(); it != pTexCoords.end(); ++it) { for (std::list<aiVector2D>::const_iterator it = pTexCoords.begin(); it != pTexCoords.end(); ++it) {
texcoord_arr_copy.emplace_back((*it).x, (*it).y, 0); texcoord_arr_copy.emplace_back((*it).x, (*it).y, static_cast<ai_real>(0));
} }
if (pTexCoordIdx.size() > 0) { if (pTexCoordIdx.size() > 0) {
@ -480,7 +480,7 @@ void X3DGeoHelper::add_tex_coord(aiMesh &pMesh, const std::list<aiVector2D> &pTe
// copy list to array because we are need convert aiVector2D to aiVector3D and also get indexed access as a bonus. // copy list to array because we are need convert aiVector2D to aiVector3D and also get indexed access as a bonus.
tc_arr_copy.reserve(pTexCoords.size()); tc_arr_copy.reserve(pTexCoords.size());
for (std::list<aiVector2D>::const_iterator it = pTexCoords.begin(); it != pTexCoords.end(); ++it) { for (std::list<aiVector2D>::const_iterator it = pTexCoords.begin(); it != pTexCoords.end(); ++it) {
tc_arr_copy.emplace_back((*it).x, (*it).y, 0); tc_arr_copy.emplace_back((*it).x, (*it).y, static_cast<ai_real>(0));
} }
// copy texture coordinates to mesh // copy texture coordinates to mesh

View File

@ -151,7 +151,7 @@ void X3DImporter::readArcClose2D(XmlNode &node) {
std::list<aiVector3D> &vlist = ((X3DNodeElementGeometry2D *)ne)->Vertices; // just short alias. std::list<aiVector3D> &vlist = ((X3DNodeElementGeometry2D *)ne)->Vertices; // just short alias.
if ((closureType == "PIE") || (closureType == "\"PIE\"")) if ((closureType == "PIE") || (closureType == "\"PIE\""))
vlist.emplace_back(0, 0, 0); // center point - first radial line vlist.emplace_back(static_cast<ai_real>(0), static_cast<ai_real>(0), static_cast<ai_real>(0)); // center point - first radial line
else if ((closureType != "CHORD") && (closureType != "\"CHORD\"")) else if ((closureType != "CHORD") && (closureType != "\"CHORD\""))
Throw_IncorrectAttrValue("ArcClose2D", "closureType"); Throw_IncorrectAttrValue("ArcClose2D", "closureType");
@ -323,7 +323,7 @@ void X3DImporter::readPolyline2D(XmlNode &node) {
// convert vec2 to vec3 // convert vec2 to vec3
for (std::list<aiVector2D>::iterator it2 = lineSegments.begin(); it2 != lineSegments.end(); ++it2) for (std::list<aiVector2D>::iterator it2 = lineSegments.begin(); it2 != lineSegments.end(); ++it2)
tlist.emplace_back(it2->x, it2->y, 0); tlist.emplace_back(it2->x, it2->y, static_cast<ai_real>(0));
// convert point set to line set // convert point set to line set
X3DGeoHelper::extend_point_to_line(tlist, ((X3DNodeElementGeometry2D *)ne)->Vertices); X3DGeoHelper::extend_point_to_line(tlist, ((X3DNodeElementGeometry2D *)ne)->Vertices);
@ -361,7 +361,7 @@ void X3DImporter::readPolypoint2D(XmlNode &node) {
// convert vec2 to vec3 // convert vec2 to vec3
for (std::list<aiVector2D>::iterator it2 = point.begin(); it2 != point.end(); ++it2) { for (std::list<aiVector2D>::iterator it2 = point.begin(); it2 != point.end(); ++it2) {
((X3DNodeElementGeometry2D *)ne)->Vertices.emplace_back(it2->x, it2->y, 0); ((X3DNodeElementGeometry2D *)ne)->Vertices.emplace_back(it2->x, it2->y, static_cast<ai_real>(0));
} }
((X3DNodeElementGeometry2D *)ne)->NumIndices = 1; ((X3DNodeElementGeometry2D *)ne)->NumIndices = 1;
@ -405,10 +405,10 @@ void X3DImporter::readRectangle2D(XmlNode &node) {
float y2 = size.y / 2.0f; float y2 = size.y / 2.0f;
std::list<aiVector3D> &vlist = ((X3DNodeElementGeometry2D *)ne)->Vertices; // just short alias. std::list<aiVector3D> &vlist = ((X3DNodeElementGeometry2D *)ne)->Vertices; // just short alias.
vlist.emplace_back(x2, y1, 0); // 1st point vlist.emplace_back(x2, y1, static_cast<ai_real>(0)); // 1st point
vlist.emplace_back(x2, y2, 0); // 2nd point vlist.emplace_back(x2, y2, static_cast<ai_real>(0)); // 2nd point
vlist.emplace_back(x1, y2, 0); // 3rd point vlist.emplace_back(x1, y2, static_cast<ai_real>(0)); // 3rd point
vlist.emplace_back(x1, y1, 0); // 4th point vlist.emplace_back(x1, y1, static_cast<ai_real>(0)); // 4th point
((X3DNodeElementGeometry2D *)ne)->Solid = solid; ((X3DNodeElementGeometry2D *)ne)->Solid = solid;
((X3DNodeElementGeometry2D *)ne)->NumIndices = 4; ((X3DNodeElementGeometry2D *)ne)->NumIndices = 4;
// check for X3DMetadataObject childs. // check for X3DMetadataObject childs.
@ -449,7 +449,7 @@ void X3DImporter::readTriangleSet2D(XmlNode &node) {
// convert vec2 to vec3 // convert vec2 to vec3
for (std::list<aiVector2D>::iterator it2 = vertices.begin(); it2 != vertices.end(); ++it2) { for (std::list<aiVector2D>::iterator it2 = vertices.begin(); it2 != vertices.end(); ++it2) {
((X3DNodeElementGeometry2D *)ne)->Vertices.emplace_back(it2->x, it2->y, 0); ((X3DNodeElementGeometry2D *)ne)->Vertices.emplace_back(it2->x, it2->y, static_cast<ai_real>(0));
} }
((X3DNodeElementGeometry2D *)ne)->Solid = solid; ((X3DNodeElementGeometry2D *)ne)->Solid = solid;

View File

@ -108,9 +108,7 @@ struct X3DNodeElementBase {
std::list<X3DNodeElementBase *> Children; std::list<X3DNodeElementBase *> Children;
X3DElemType Type; X3DElemType Type;
virtual ~X3DNodeElementBase() { virtual ~X3DNodeElementBase() = default;
// empty
}
protected: protected:
X3DNodeElementBase(X3DElemType type, X3DNodeElementBase *pParent) : X3DNodeElementBase(X3DElemType type, X3DNodeElementBase *pParent) :
@ -367,9 +365,7 @@ struct X3DNodeElementMeta : X3DNodeElementBase {
std::string Name; ///< Name of metadata object. std::string Name; ///< Name of metadata object.
std::string Reference; std::string Reference;
virtual ~X3DNodeElementMeta() { virtual ~X3DNodeElementMeta() = default;
// empty
}
protected: protected:
X3DNodeElementMeta(X3DElemType type, X3DNodeElementBase *parent) : X3DNodeElementMeta(X3DElemType type, X3DNodeElementBase *parent) :

View File

@ -65,8 +65,7 @@ namespace Assimp { // this has to be in here because LogFunctions is in ::Assimp
template <> template <>
const char *LogFunctions<XGLImporter>::Prefix() { const char *LogFunctions<XGLImporter>::Prefix() {
static auto prefix = "XGL: "; return "XGL: ";
return prefix;
} }
} // namespace Assimp } // namespace Assimp

View File

@ -629,9 +629,7 @@ struct Mesh : public Object {
SExtension(const EType pType) : SExtension(const EType pType) :
Type(pType) {} Type(pType) {}
virtual ~SExtension() { virtual ~SExtension() = default;
// empty
}
}; };
#ifdef ASSIMP_IMPORTER_GLTF_USE_OPEN3DGC #ifdef ASSIMP_IMPORTER_GLTF_USE_OPEN3DGC
@ -657,9 +655,7 @@ struct Mesh : public Object {
// empty // empty
} }
virtual ~SCompression_Open3DGC() { virtual ~SCompression_Open3DGC() = default;
// empty
}
}; };
#endif #endif

View File

@ -80,7 +80,7 @@ static const aiImporterDesc desc = {
}; };
glTFImporter::glTFImporter() : glTFImporter::glTFImporter() :
BaseImporter(), meshOffsets(), embeddedTexIdxs(), mScene(nullptr) { mScene(nullptr) {
// empty // empty
} }

View File

@ -365,16 +365,7 @@ struct CustomExtension {
~CustomExtension() = default; ~CustomExtension() = default;
CustomExtension(const CustomExtension &other) : CustomExtension(const CustomExtension &other) = default;
name(other.name),
mStringValue(other.mStringValue),
mDoubleValue(other.mDoubleValue),
mUint64Value(other.mUint64Value),
mInt64Value(other.mInt64Value),
mBoolValue(other.mBoolValue),
mValues(other.mValues) {
// empty
}
CustomExtension& operator=(const CustomExtension&) = default; CustomExtension& operator=(const CustomExtension&) = default;
}; };
@ -1086,8 +1077,7 @@ struct AssetMetadata {
void Read(Document &doc); void Read(Document &doc);
AssetMetadata() : AssetMetadata() = default;
version() {}
}; };
// //

View File

@ -96,9 +96,6 @@ static const aiImporterDesc desc = {
}; };
glTF2Importer::glTF2Importer() : glTF2Importer::glTF2Importer() :
BaseImporter(),
meshOffsets(),
mEmbeddedTexIdxs(),
mScene(nullptr) { mScene(nullptr) {
// empty // empty
} }
@ -185,7 +182,6 @@ static void SetMaterialTextureProperty(std::vector<int> &embeddedTexIdxs, Asset
const ai_real rsin(sin(-transform.mRotation)); const ai_real rsin(sin(-transform.mRotation));
transform.mTranslation.x = (static_cast<ai_real>(0.5) * transform.mScaling.x) * (-rcos + rsin + 1) + prop.TextureTransformExt_t.offset[0]; transform.mTranslation.x = (static_cast<ai_real>(0.5) * transform.mScaling.x) * (-rcos + rsin + 1) + prop.TextureTransformExt_t.offset[0];
transform.mTranslation.y = ((static_cast<ai_real>(0.5) * transform.mScaling.y) * (rsin + rcos - 1)) + 1 - transform.mScaling.y - prop.TextureTransformExt_t.offset[1]; transform.mTranslation.y = ((static_cast<ai_real>(0.5) * transform.mScaling.y) * (rsin + rcos - 1)) + 1 - transform.mScaling.y - prop.TextureTransformExt_t.offset[1];
;
mat->AddProperty(&transform, 1, _AI_MATKEY_UVTRANSFORM_BASE, texType, texSlot); mat->AddProperty(&transform, 1, _AI_MATKEY_UVTRANSFORM_BASE, texType, texSlot);
} }
@ -853,7 +849,7 @@ void glTF2Importer::ImportCameras(glTF2::Asset &r) {
if (cam.type == Camera::Perspective) { if (cam.type == Camera::Perspective) {
aicam->mAspect = cam.cameraProperties.perspective.aspectRatio; aicam->mAspect = cam.cameraProperties.perspective.aspectRatio;
aicam->mHorizontalFOV = cam.cameraProperties.perspective.yfov * ((aicam->mAspect == 0.f) ? 1.f : aicam->mAspect); aicam->mHorizontalFOV = 2.0f * std::atan(std::tan(cam.cameraProperties.perspective.yfov * 0.5f) * ((aicam->mAspect == 0.f) ? 1.f : aicam->mAspect));
aicam->mClipPlaneFar = cam.cameraProperties.perspective.zfar; aicam->mClipPlaneFar = cam.cameraProperties.perspective.zfar;
aicam->mClipPlaneNear = cam.cameraProperties.perspective.znear; aicam->mClipPlaneNear = cam.cameraProperties.perspective.znear;
} else { } else {

View File

@ -93,9 +93,7 @@ public:
} }
/** Destructor. */ /** Destructor. */
~FileSystemFilter() { ~FileSystemFilter() = default;
// empty
}
// ------------------------------------------------------------------- // -------------------------------------------------------------------
/** Tests for the existence of a file at the given path. */ /** Tests for the existence of a file at the given path. */

View File

@ -67,6 +67,7 @@ GenFaceNormalsProcess::~GenFaceNormalsProcess() = default;
bool GenFaceNormalsProcess::IsActive(unsigned int pFlags) const { bool GenFaceNormalsProcess::IsActive(unsigned int pFlags) const {
force_ = (pFlags & aiProcess_ForceGenNormals) != 0; force_ = (pFlags & aiProcess_ForceGenNormals) != 0;
flippedWindingOrder_ = (pFlags & aiProcess_FlipWindingOrder) != 0; flippedWindingOrder_ = (pFlags & aiProcess_FlipWindingOrder) != 0;
leftHanded_ = (pFlags & aiProcess_MakeLeftHanded) != 0;
return (pFlags & aiProcess_GenNormals) != 0; return (pFlags & aiProcess_GenNormals) != 0;
} }
@ -131,8 +132,10 @@ bool GenFaceNormalsProcess::GenMeshFaceNormals(aiMesh *pMesh) {
const aiVector3D *pV1 = &pMesh->mVertices[face.mIndices[0]]; const aiVector3D *pV1 = &pMesh->mVertices[face.mIndices[0]];
const aiVector3D *pV2 = &pMesh->mVertices[face.mIndices[1]]; const aiVector3D *pV2 = &pMesh->mVertices[face.mIndices[1]];
const aiVector3D *pV3 = &pMesh->mVertices[face.mIndices[face.mNumIndices - 1]]; const aiVector3D *pV3 = &pMesh->mVertices[face.mIndices[face.mNumIndices - 1]];
if (flippedWindingOrder_) // Boolean XOR - if either but not both of these flags is set, then the winding order has
std::swap( pV2, pV3 ); // changed and the cross product to calculate the normal needs to be reversed
if (flippedWindingOrder_ != leftHanded_)
std::swap(pV2, pV3);
const aiVector3D vNor = ((*pV2 - *pV1) ^ (*pV3 - *pV1)).NormalizeSafe(); const aiVector3D vNor = ((*pV2 - *pV1) ^ (*pV3 - *pV1)).NormalizeSafe();
for (unsigned int i = 0; i < face.mNumIndices; ++i) { for (unsigned int i = 0; i < face.mNumIndices; ++i) {

View File

@ -81,6 +81,7 @@ private:
bool GenMeshFaceNormals(aiMesh* pcMesh); bool GenMeshFaceNormals(aiMesh* pcMesh);
mutable bool force_ = false; mutable bool force_ = false;
mutable bool flippedWindingOrder_ = false; mutable bool flippedWindingOrder_ = false;
mutable bool leftHanded_ = false;
}; };
} // end of namespace Assimp } // end of namespace Assimp

View File

@ -69,6 +69,7 @@ GenVertexNormalsProcess::~GenVertexNormalsProcess() = default;
bool GenVertexNormalsProcess::IsActive(unsigned int pFlags) const { bool GenVertexNormalsProcess::IsActive(unsigned int pFlags) const {
force_ = (pFlags & aiProcess_ForceGenNormals) != 0; force_ = (pFlags & aiProcess_ForceGenNormals) != 0;
flippedWindingOrder_ = (pFlags & aiProcess_FlipWindingOrder) != 0; flippedWindingOrder_ = (pFlags & aiProcess_FlipWindingOrder) != 0;
leftHanded_ = (pFlags & aiProcess_MakeLeftHanded) != 0;
return (pFlags & aiProcess_GenSmoothNormals) != 0; return (pFlags & aiProcess_GenSmoothNormals) != 0;
} }
@ -141,8 +142,10 @@ bool GenVertexNormalsProcess::GenMeshVertexNormals(aiMesh *pMesh, unsigned int m
const aiVector3D *pV1 = &pMesh->mVertices[face.mIndices[0]]; const aiVector3D *pV1 = &pMesh->mVertices[face.mIndices[0]];
const aiVector3D *pV2 = &pMesh->mVertices[face.mIndices[1]]; const aiVector3D *pV2 = &pMesh->mVertices[face.mIndices[1]];
const aiVector3D *pV3 = &pMesh->mVertices[face.mIndices[face.mNumIndices - 1]]; const aiVector3D *pV3 = &pMesh->mVertices[face.mIndices[face.mNumIndices - 1]];
if (flippedWindingOrder_) // Boolean XOR - if either but not both of these flags is set, then the winding order has
std::swap( pV2, pV3 ); // changed and the cross product to calculate the normal needs to be reversed
if (flippedWindingOrder_ != leftHanded_)
std::swap(pV2, pV3);
const aiVector3D vNor = ((*pV2 - *pV1) ^ (*pV3 - *pV1)).NormalizeSafe(); const aiVector3D vNor = ((*pV2 - *pV1) ^ (*pV3 - *pV1)).NormalizeSafe();
for (unsigned int i = 0; i < face.mNumIndices; ++i) { for (unsigned int i = 0; i < face.mNumIndices; ++i) {

View File

@ -105,6 +105,7 @@ private:
ai_real configMaxAngle; ai_real configMaxAngle;
mutable bool force_ = false; mutable bool force_ = false;
mutable bool flippedWindingOrder_ = false; mutable bool flippedWindingOrder_ = false;
mutable bool leftHanded_ = false;
}; };
} // end of namespace Assimp } // end of namespace Assimp

View File

@ -128,9 +128,7 @@ public:
// ---------------------------------------------------------------------------------- // ----------------------------------------------------------------------------------
AI_FORCE_INLINE AI_FORCE_INLINE
IOStream::IOStream() AI_NO_EXCEPT { IOStream::IOStream() AI_NO_EXCEPT = default;
// empty
}
// ---------------------------------------------------------------------------------- // ----------------------------------------------------------------------------------
AI_FORCE_INLINE AI_FORCE_INLINE

View File

@ -141,9 +141,7 @@ AI_FORCE_INLINE IOStreamBuffer<T>::IOStreamBuffer(size_t cache) :
} }
template <class T> template <class T>
AI_FORCE_INLINE IOStreamBuffer<T>::~IOStreamBuffer() { AI_FORCE_INLINE IOStreamBuffer<T>::~IOStreamBuffer() = default;
// empty
}
template <class T> template <class T>
AI_FORCE_INLINE bool IOStreamBuffer<T>::open(IOStream *stream) { AI_FORCE_INLINE bool IOStreamBuffer<T>::open(IOStream *stream) {

View File

@ -237,10 +237,7 @@ private:
}; };
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
AI_FORCE_INLINE IOSystem::IOSystem() AI_NO_EXCEPT : AI_FORCE_INLINE IOSystem::IOSystem() AI_NO_EXCEPT = default;
m_pathStack() {
// empty
}
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
AI_FORCE_INLINE IOSystem::~IOSystem() = default; AI_FORCE_INLINE IOSystem::~IOSystem() = default;

View File

@ -145,7 +145,6 @@ private:
AI_FORCE_INLINE LineSplitter::LineSplitter(StreamReaderLE& stream, bool skip_empty_lines, bool trim ) : AI_FORCE_INLINE LineSplitter::LineSplitter(StreamReaderLE& stream, bool skip_empty_lines, bool trim ) :
mIdx(0), mIdx(0),
mCur(),
mStream(stream), mStream(stream),
mSwallow(), mSwallow(),
mSkip_empty_lines(skip_empty_lines), mSkip_empty_lines(skip_empty_lines),
@ -155,9 +154,7 @@ AI_FORCE_INLINE LineSplitter::LineSplitter(StreamReaderLE& stream, bool skip_emp
mIdx = 0; mIdx = 0;
} }
AI_FORCE_INLINE LineSplitter::~LineSplitter() { AI_FORCE_INLINE LineSplitter::~LineSplitter() = default;
// empty
}
AI_FORCE_INLINE LineSplitter& LineSplitter::operator++() { AI_FORCE_INLINE LineSplitter& LineSplitter::operator++() {
if (mSwallow) { if (mSwallow) {

View File

@ -162,8 +162,7 @@ public:
} }
/** Destructor. */ /** Destructor. */
~MemoryIOSystem() { ~MemoryIOSystem() = default;
}
// ------------------------------------------------------------------- // -------------------------------------------------------------------
/** Tests for the existence of a file at the given path. */ /** Tests for the existence of a file at the given path. */

View File

@ -68,9 +68,7 @@ using namespace Formatter;
*/ */
class Profiler { class Profiler {
public: public:
Profiler() { Profiler() = default;
// empty
}
/** Start a named timer */ /** Start a named timer */

View File

@ -67,15 +67,11 @@ class ASSIMP_API ProgressHandler
{ {
protected: protected:
/// @brief Default constructor /// @brief Default constructor
ProgressHandler () AI_NO_EXCEPT { ProgressHandler () AI_NO_EXCEPT = default;
// empty
}
public: public:
/// @brief Virtual destructor. /// @brief Virtual destructor.
virtual ~ProgressHandler () { virtual ~ProgressHandler () = default;
// empty
}
// ------------------------------------------------------------------- // -------------------------------------------------------------------
/** @brief Progress callback. /** @brief Progress callback.

View File

@ -191,13 +191,9 @@ struct SceneHelper {
*/ */
class ASSIMP_API SceneCombiner { class ASSIMP_API SceneCombiner {
// class cannot be instanced // class cannot be instanced
SceneCombiner() { SceneCombiner() = delete;
// empty
}
~SceneCombiner() { ~SceneCombiner() = delete;
// empty
}
public: public:
// ------------------------------------------------------------------- // -------------------------------------------------------------------

View File

@ -198,7 +198,10 @@ struct aiMeshMorphKey {
/** The time of this key */ /** The time of this key */
double mTime; double mTime;
/** The values and weights at the time of this key */ /** The values and weights at the time of this key
* - mValues: index of attachment mesh to apply weight at the same position in mWeights
* - mWeights: weight to apply to the blend shape index at the same position in mValues
*/
unsigned int *mValues; unsigned int *mValues;
double *mWeights; double *mWeights;

View File

@ -737,13 +737,20 @@ struct aiMesh {
**/ **/
C_STRUCT aiString mName; C_STRUCT aiString mName;
/** The number of attachment meshes. Note! Currently only works with Collada loader. */ /** The number of attachment meshes.
* Currently known to work with loaders:
* - Collada
* - gltf
*/
unsigned int mNumAnimMeshes; unsigned int mNumAnimMeshes;
/** Attachment meshes for this mesh, for vertex-based animation. /** Attachment meshes for this mesh, for vertex-based animation.
* Attachment meshes carry replacement data for some of the * Attachment meshes carry replacement data for some of the
* mesh'es vertex components (usually positions, normals). * mesh'es vertex components (usually positions, normals).
* Note! Currently only works with Collada loader.*/ * Currently known to work with loaders:
* - Collada
* - gltf
*/
C_STRUCT aiAnimMesh **mAnimMeshes; C_STRUCT aiAnimMesh **mAnimMeshes;
/** /**

View File

@ -748,13 +748,18 @@ class Mesh(Structure):
# - Vertex animations refer to meshes by their names. # - Vertex animations refer to meshes by their names.
("mName", String), ("mName", String),
# The number of attachment meshes. Note! Currently only works with Collada loader. # The number of attachment meshes.
# Currently known to work with loaders:
# - Collada
# - gltf
("mNumAnimMeshes", c_uint), ("mNumAnimMeshes", c_uint),
# Attachment meshes for this mesh, for vertex-based animation. # Attachment meshes for this mesh, for vertex-based animation.
# Attachment meshes carry replacement data for some of the # Attachment meshes carry replacement data for some of the
# mesh'es vertex components (usually positions, normals). # mesh'es vertex components (usually positions, normals).
# Note! Currently only works with Collada loader. # Currently known to work with loaders:
# - Collada
# - gltf
("mAnimMeshes", POINTER(POINTER(AnimMesh))), ("mAnimMeshes", POINTER(POINTER(AnimMesh))),
# Method of morphing when animeshes are specified. # Method of morphing when animeshes are specified.