Merge branch 'master' into JoinVerticesProcessUsedVerticesMask
commit
d6b8d61066
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -62,9 +62,7 @@ public:
|
||||||
/**
|
/**
|
||||||
* The class destructor, virtual.
|
* The class destructor, virtual.
|
||||||
*/
|
*/
|
||||||
virtual ~BlenderModifier() {
|
virtual ~BlenderModifier() = default;
|
||||||
// empty
|
|
||||||
}
|
|
||||||
|
|
||||||
// --------------------
|
// --------------------
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
|
@ -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),
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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)...);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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.
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -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.
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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),
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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++ ) {
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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 ),
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
|
@ -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.
|
||||||
|
|
|
@ -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
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/***********************************************/
|
/***********************************************/
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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) :
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -80,7 +80,7 @@ static const aiImporterDesc desc = {
|
||||||
};
|
};
|
||||||
|
|
||||||
glTFImporter::glTFImporter() :
|
glTFImporter::glTFImporter() :
|
||||||
BaseImporter(), meshOffsets(), embeddedTexIdxs(), mScene(nullptr) {
|
mScene(nullptr) {
|
||||||
// empty
|
// empty
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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() {}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
|
@ -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. */
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
|
@ -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. */
|
||||||
|
|
|
@ -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 */
|
||||||
|
|
|
@ -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.
|
||||||
|
|
|
@ -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:
|
||||||
// -------------------------------------------------------------------
|
// -------------------------------------------------------------------
|
||||||
|
|
|
@ -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;
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -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.
|
||||||
|
|
Loading…
Reference in New Issue