diff --git a/code/ColladaExporter.cpp b/code/ColladaExporter.cpp
index e7cc6907d..7c21dde43 100644
--- a/code/ColladaExporter.cpp
+++ b/code/ColladaExporter.cpp
@@ -64,13 +64,11 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
using namespace Assimp;
-namespace Assimp
-{
+namespace Assimp {
// ------------------------------------------------------------------------------------------------
// Worker function for exporting a scene to Collada. Prototyped and registered in Exporter.cpp
-void ExportSceneCollada(const char* pFile, IOSystem* pIOSystem, const aiScene* pScene, const ExportProperties* /*pProperties*/)
-{
+void ExportSceneCollada(const char* pFile, IOSystem* pIOSystem, const aiScene* pScene, const ExportProperties* /*pProperties*/) {
std::string path = DefaultIOSystem::absolutePath(std::string(pFile));
std::string file = DefaultIOSystem::completeBaseName(std::string(pFile));
@@ -93,12 +91,12 @@ void ExportSceneCollada(const char* pFile, IOSystem* pIOSystem, const aiScene* p
} // end of namespace Assimp
-
-
// ------------------------------------------------------------------------------------------------
// Constructor for a specific scene to export
-ColladaExporter::ColladaExporter( const aiScene* pScene, IOSystem* pIOSystem, const std::string& path, const std::string& file) : mIOSystem(pIOSystem), mPath(path), mFile(file)
-{
+ColladaExporter::ColladaExporter( const aiScene* pScene, IOSystem* pIOSystem, const std::string& path, const std::string& file)
+: mIOSystem(pIOSystem)
+, mPath(path)
+, mFile(file) {
// make sure that all formatting happens using the standard, C locale and not the user's current locale
mOutput.imbue( std::locale("C") );
mOutput.precision(16);
@@ -115,17 +113,15 @@ ColladaExporter::ColladaExporter( const aiScene* pScene, IOSystem* pIOSystem, co
// ------------------------------------------------------------------------------------------------
// Destructor
-ColladaExporter::~ColladaExporter()
-{
- if(mSceneOwned) {
+ColladaExporter::~ColladaExporter() {
+ if ( mSceneOwned ) {
delete mScene;
}
}
// ------------------------------------------------------------------------------------------------
// Starts writing the contents
-void ColladaExporter::WriteFile()
-{
+void ColladaExporter::WriteFile() {
// write the DTD
mOutput << "" << endstr;
// COLLADA element start
@@ -158,8 +154,7 @@ void ColladaExporter::WriteFile()
// ------------------------------------------------------------------------------------------------
// Writes the asset header
-void ColladaExporter::WriteHeader()
-{
+void ColladaExporter::WriteHeader() {
static const ai_real epsilon = ai_real( 0.00001 );
static const aiQuaternion x_rot(aiMatrix3x3(
0, -1, 0,
@@ -240,51 +235,60 @@ void ColladaExporter::WriteHeader()
// If no Scene metadata, use root node metadata
aiMetadata* meta = mScene->mMetaData;
- if (!meta)
+ if (nullptr == meta) {
meta = mScene->mRootNode->mMetaData;
+ }
aiString value;
- if (!meta || !meta->Get("Author", value))
+ if (!meta || !meta->Get("Author", value)) {
mOutput << startstr << "" << "Assimp" << "" << endstr;
- else
+ } else {
mOutput << startstr << "" << XMLEscape(value.C_Str()) << "" << endstr;
+ }
- if (!meta || !meta->Get("AuthoringTool", value))
+ if (nullptr == meta || !meta->Get("AuthoringTool", value)) {
mOutput << startstr << "" << "Assimp Exporter" << "" << endstr;
- else
+ } else {
mOutput << startstr << "" << XMLEscape(value.C_Str()) << "" << endstr;
+ }
- if (meta)
- {
- if (meta->Get("Comments", value))
+ if (meta) {
+ if (meta->Get("Comments", value)) {
mOutput << startstr << "" << XMLEscape(value.C_Str()) << "" << endstr;
- if (meta->Get("Copyright", value))
+ }
+ if (meta->Get("Copyright", value)) {
mOutput << startstr << "" << XMLEscape(value.C_Str()) << "" << endstr;
- if (meta->Get("SourceData", value))
+ }
+ if (meta->Get("SourceData", value)) {
mOutput << startstr << "" << XMLEscape(value.C_Str()) << "" << endstr;
+ }
}
PopTag();
mOutput << startstr << "" << endstr;
- if (!meta || !meta->Get("Created", value))
+ if (nullptr == meta || !meta->Get("Created", value)) {
mOutput << startstr << "" << date_str << "" << endstr;
- else
+ } else {
mOutput << startstr << "" << XMLEscape(value.C_Str()) << "" << endstr;
+ }
// Modified date is always the date saved
mOutput << startstr << "" << date_str << "" << endstr;
- if (meta)
- {
- if (meta->Get("Keywords", value))
+ if (meta) {
+ if (meta->Get("Keywords", value)) {
mOutput << startstr << "" << XMLEscape(value.C_Str()) << "" << endstr;
- if (meta->Get("Revision", value))
+ }
+ if (meta->Get("Revision", value)) {
mOutput << startstr << "" << XMLEscape(value.C_Str()) << "" << endstr;
- if (meta->Get("Subject", value))
+ }
+ if (meta->Get("Subject", value)) {
mOutput << startstr << "" << XMLEscape(value.C_Str()) << "" << endstr;
- if (meta->Get("Title", value))
+ }
+ if (meta->Get("Title", value)) {
mOutput << startstr << "
" << XMLEscape(value.C_Str()) << "" << endstr;
+ }
}
mOutput << startstr << "" << endstr;
@@ -299,12 +303,15 @@ void ColladaExporter::WriteTextures() {
static const unsigned int buffer_size = 1024;
char str[buffer_size];
- if(mScene->HasTextures()) {
+ if (mScene->HasTextures()) {
for(unsigned int i = 0; i < mScene->mNumTextures; i++) {
// It would be great to be able to create a directory in portable standard C++, but it's not the case,
// so we just write the textures in the current directory.
aiTexture* texture = mScene->mTextures[i];
+ if ( nullptr == texture ) {
+ continue;
+ }
ASSIMP_itoa10(str, buffer_size, i + 1);
@@ -458,6 +465,7 @@ void ColladaExporter::WritePointLight(const aiLight *const light){
mOutput << startstr << "" << endstr;
}
+
void ColladaExporter::WriteDirectionalLight(const aiLight *const light){
const aiColor3D &color= light->mColorDiffuse;
mOutput << startstr << "" << endstr;
@@ -470,6 +478,7 @@ void ColladaExporter::WriteDirectionalLight(const aiLight *const light){
mOutput << startstr << "" << endstr;
}
+
void ColladaExporter::WriteSpotLight(const aiLight *const light){
const aiColor3D &color= light->mColorDiffuse;
@@ -526,18 +535,16 @@ void ColladaExporter::WriteAmbienttLight(const aiLight *const light){
// ------------------------------------------------------------------------------------------------
// Reads a single surface entry from the given material keys
-void ColladaExporter::ReadMaterialSurface( Surface& poSurface, const aiMaterial* pSrcMat, aiTextureType pTexture, const char* pKey, size_t pType, size_t pIndex)
-{
- if( pSrcMat->GetTextureCount( pTexture) > 0 )
- {
+void ColladaExporter::ReadMaterialSurface( Surface& poSurface, const aiMaterial* pSrcMat,
+ aiTextureType pTexture, const char* pKey, size_t pType, size_t pIndex) {
+ if( pSrcMat->GetTextureCount( pTexture) > 0 ) {
aiString texfile;
unsigned int uvChannel = 0;
pSrcMat->GetTexture( pTexture, 0, &texfile, NULL, &uvChannel);
std::string index_str(texfile.C_Str());
- if(index_str.size() != 0 && index_str[0] == '*')
- {
+ if(index_str.size() != 0 && index_str[0] == '*') {
unsigned int index;
index_str = index_str.substr(1, std::string::npos);
@@ -555,15 +562,13 @@ void ColladaExporter::ReadMaterialSurface( Surface& poSurface, const aiMaterial*
} else {
throw DeadlyExportError("could not find embedded texture at index " + index_str);
}
- } else
- {
+ } else {
poSurface.texture = texfile.C_Str();
}
poSurface.channel = uvChannel;
poSurface.exist = true;
- } else
- {
+ } else {
if( pKey )
poSurface.exist = pSrcMat->Get( pKey, static_cast(pType), static_cast(pIndex), poSurface.color) == aiReturn_SUCCESS;
}
@@ -571,15 +576,13 @@ void ColladaExporter::ReadMaterialSurface( Surface& poSurface, const aiMaterial*
// ------------------------------------------------------------------------------------------------
// Reimplementation of isalnum(,C locale), because AppVeyor does not see standard version.
-static bool isalnum_C(char c)
-{
+static bool isalnum_C(char c) {
return ( nullptr != strchr("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",c) );
}
// ------------------------------------------------------------------------------------------------
// Writes an image entry for the given surface
-void ColladaExporter::WriteImageEntry( const Surface& pSurface, const std::string& pNameAdd)
-{
+void ColladaExporter::WriteImageEntry( const Surface& pSurface, const std::string& pNameAdd) {
if( !pSurface.texture.empty() )
{
mOutput << startstr << "" << endstr;
@@ -833,8 +836,9 @@ void ColladaExporter::WriteControllerLibrary()
mOutput << startstr << "" << endstr;
PushTag();
- for( size_t a = 0; a < mScene->mNumMeshes; ++a)
+ for( size_t a = 0; a < mScene->mNumMeshes; ++a) {
WriteController( a);
+ }
PopTag();
mOutput << startstr << "" << endstr;