Update B3DImporter.cpp
some minor format changes: add brackets for one-liner if statement.pull/2802/head
parent
e5b065da3e
commit
a29e407853
|
@ -5,8 +5,6 @@ Open Asset Import Library (assimp)
|
||||||
|
|
||||||
Copyright (c) 2006-2019, assimp team
|
Copyright (c) 2006-2019, assimp team
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
All rights reserved.
|
All rights reserved.
|
||||||
|
|
||||||
Redistribution and use of this software in source and binary forms,
|
Redistribution and use of this software in source and binary forms,
|
||||||
|
@ -78,7 +76,6 @@ static const aiImporterDesc desc = {
|
||||||
"b3d"
|
"b3d"
|
||||||
};
|
};
|
||||||
|
|
||||||
// (fixme, Aramis) quick workaround to get rid of all those signed to unsigned warnings
|
|
||||||
#ifdef _MSC_VER
|
#ifdef _MSC_VER
|
||||||
# pragma warning (disable: 4018)
|
# pragma warning (disable: 4018)
|
||||||
#endif
|
#endif
|
||||||
|
@ -86,10 +83,8 @@ static const aiImporterDesc desc = {
|
||||||
//#define DEBUG_B3D
|
//#define DEBUG_B3D
|
||||||
|
|
||||||
template<typename T>
|
template<typename T>
|
||||||
void DeleteAllBarePointers(std::vector<T>& x)
|
void DeleteAllBarePointers(std::vector<T>& x) {
|
||||||
{
|
for(auto p : x) {
|
||||||
for(auto p : x)
|
|
||||||
{
|
|
||||||
delete p;
|
delete p;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -102,10 +97,14 @@ B3DImporter::~B3DImporter()
|
||||||
bool B3DImporter::CanRead( const std::string& pFile, IOSystem* /*pIOHandler*/, bool /*checkSig*/) const{
|
bool B3DImporter::CanRead( const std::string& pFile, IOSystem* /*pIOHandler*/, bool /*checkSig*/) const{
|
||||||
|
|
||||||
size_t pos=pFile.find_last_of( '.' );
|
size_t pos=pFile.find_last_of( '.' );
|
||||||
if( pos==string::npos ) return false;
|
if( pos==string::npos ) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
string ext=pFile.substr( pos+1 );
|
string ext=pFile.substr( pos+1 );
|
||||||
if( ext.size()!=3 ) return false;
|
if( ext.size()!=3 ) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
return (ext[0]=='b' || ext[0]=='B') && (ext[1]=='3') && (ext[2]=='d' || ext[2]=='D');
|
return (ext[0]=='b' || ext[0]=='B') && (ext[1]=='3') && (ext[2]=='d' || ext[2]=='D');
|
||||||
}
|
}
|
||||||
|
@ -122,13 +121,16 @@ void B3DImporter::InternReadFile( const std::string& pFile, aiScene* pScene, IOS
|
||||||
std::unique_ptr<IOStream> file( pIOHandler->Open( pFile));
|
std::unique_ptr<IOStream> file( pIOHandler->Open( pFile));
|
||||||
|
|
||||||
// Check whether we can read from the file
|
// Check whether we can read from the file
|
||||||
if( file.get() == NULL)
|
if( file.get() == nullptr) {
|
||||||
throw DeadlyImportError( "Failed to open B3D file " + pFile + ".");
|
throw DeadlyImportError( "Failed to open B3D file " + pFile + ".");
|
||||||
|
}
|
||||||
|
|
||||||
// check whether the .b3d file is large enough to contain
|
// check whether the .b3d file is large enough to contain
|
||||||
// at least one chunk.
|
// at least one chunk.
|
||||||
size_t fileSize = file->FileSize();
|
size_t fileSize = file->FileSize();
|
||||||
if( fileSize<8 ) throw DeadlyImportError( "B3D File is too small.");
|
if( fileSize<8 ) {
|
||||||
|
throw DeadlyImportError( "B3D File is too small.");
|
||||||
|
}
|
||||||
|
|
||||||
_pos=0;
|
_pos=0;
|
||||||
_buf.resize( fileSize );
|
_buf.resize( fileSize );
|
||||||
|
@ -153,7 +155,10 @@ AI_WONT_RETURN void B3DImporter::Fail( string str ){
|
||||||
|
|
||||||
// ------------------------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------------------------
|
||||||
int B3DImporter::ReadByte(){
|
int B3DImporter::ReadByte(){
|
||||||
if( _pos<_buf.size() ) return _buf[_pos++];
|
if( _pos<_buf.size() ) {
|
||||||
|
return _buf[_pos++];
|
||||||
|
}
|
||||||
|
|
||||||
Fail( "EOF" );
|
Fail( "EOF" );
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -212,7 +217,9 @@ string B3DImporter::ReadString(){
|
||||||
string str;
|
string str;
|
||||||
while( _pos<_buf.size() ){
|
while( _pos<_buf.size() ){
|
||||||
char c=(char)ReadByte();
|
char c=(char)ReadByte();
|
||||||
if( !c ) return str;
|
if( !c ) {
|
||||||
|
return str;
|
||||||
|
}
|
||||||
str+=c;
|
str+=c;
|
||||||
}
|
}
|
||||||
Fail( "EOF" );
|
Fail( "EOF" );
|
||||||
|
@ -257,7 +264,6 @@ T *B3DImporter::to_array( const vector<T> &v ){
|
||||||
return p;
|
return p;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// ------------------------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------------------------
|
||||||
template<class T>
|
template<class T>
|
||||||
T **unique_to_array( vector<std::unique_ptr<T> > &v ){
|
T **unique_to_array( vector<std::unique_ptr<T> > &v ){
|
||||||
|
@ -271,7 +277,6 @@ T **unique_to_array( vector<std::unique_ptr<T> > &v ){
|
||||||
return p;
|
return p;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// ------------------------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------------------------
|
||||||
void B3DImporter::ReadTEXS(){
|
void B3DImporter::ReadTEXS(){
|
||||||
while( ChunkSize() ){
|
while( ChunkSize() ){
|
||||||
|
@ -364,9 +369,13 @@ void B3DImporter::ReadVRTS(){
|
||||||
|
|
||||||
v.vertex=ReadVec3();
|
v.vertex=ReadVec3();
|
||||||
|
|
||||||
if( _vflags & 1 ) v.normal=ReadVec3();
|
if( _vflags & 1 ) {
|
||||||
|
v.normal=ReadVec3();
|
||||||
|
}
|
||||||
|
|
||||||
if( _vflags & 2 ) ReadQuat(); //skip v 4bytes...
|
if( _vflags & 2 ) {
|
||||||
|
ReadQuat(); //skip v 4bytes...
|
||||||
|
}
|
||||||
|
|
||||||
for( int i=0;i<_tcsets;++i ){
|
for( int i=0;i<_tcsets;++i ){
|
||||||
float t[4]={0,0,0,0};
|
float t[4]={0,0,0,0};
|
||||||
|
@ -374,7 +383,9 @@ void B3DImporter::ReadVRTS(){
|
||||||
t[j]=ReadFloat();
|
t[j]=ReadFloat();
|
||||||
}
|
}
|
||||||
t[1]=1-t[1];
|
t[1]=1-t[1];
|
||||||
if( !i ) v.texcoords=aiVector3D( t[0],t[1],t[2] );
|
if( !i ) {
|
||||||
|
v.texcoords=aiVector3D( t[0],t[1],t[2] );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -615,11 +626,15 @@ void B3DImporter::ReadBB3D( aiScene *scene ){
|
||||||
}
|
}
|
||||||
ExitChunk();
|
ExitChunk();
|
||||||
|
|
||||||
if( !_nodes.size() ) Fail( "No nodes" );
|
if( !_nodes.size() ) {
|
||||||
|
Fail( "No nodes" );
|
||||||
|
}
|
||||||
|
|
||||||
if( !_meshes.size() ) Fail( "No meshes" );
|
if( !_meshes.size() ) {
|
||||||
|
Fail( "No meshes" );
|
||||||
|
}
|
||||||
|
|
||||||
//Fix nodes/meshes/bones
|
// Fix nodes/meshes/bones
|
||||||
for(size_t i=0;i<_nodes.size();++i ){
|
for(size_t i=0;i<_nodes.size();++i ){
|
||||||
aiNode *node=_nodes[i];
|
aiNode *node=_nodes[i];
|
||||||
|
|
||||||
|
@ -630,8 +645,12 @@ void B3DImporter::ReadBB3D( aiScene *scene ){
|
||||||
int n_verts=mesh->mNumVertices=n_tris * 3;
|
int n_verts=mesh->mNumVertices=n_tris * 3;
|
||||||
|
|
||||||
aiVector3D *mv=mesh->mVertices=new aiVector3D[ n_verts ],*mn=0,*mc=0;
|
aiVector3D *mv=mesh->mVertices=new aiVector3D[ n_verts ],*mn=0,*mc=0;
|
||||||
if( _vflags & 1 ) mn=mesh->mNormals=new aiVector3D[ n_verts ];
|
if( _vflags & 1 ) {
|
||||||
if( _tcsets ) mc=mesh->mTextureCoords[0]=new aiVector3D[ n_verts ];
|
mn=mesh->mNormals=new aiVector3D[ n_verts ];
|
||||||
|
}
|
||||||
|
if( _tcsets ) {
|
||||||
|
mc=mesh->mTextureCoords[0]=new aiVector3D[ n_verts ];
|
||||||
|
}
|
||||||
|
|
||||||
aiFace *face=mesh->mFaces;
|
aiFace *face=mesh->mFaces;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue