- Bugfix: ColladaParser now properly tunnels XML reading through the Assimp IO System

- Bugfix: IrrXML-IOWrapper now properly inherits the irr interface
- moved some "using namespace" directives out of the header

git-svn-id: https://assimp.svn.sourceforge.net/svnroot/assimp/trunk@351 67173fc5-114c-0410-ac8e-9d2fd5bffc1f
pull/1/head
ulfjorensen 2009-03-03 15:43:26 +00:00
parent fd2faf92d3
commit 732884e2f4
8 changed files with 21 additions and 20 deletions

View File

@ -110,7 +110,7 @@ void ColladaLoader::InternReadFile( const std::string& pFile, aiScene* pScene, I
mTextures.clear(); mTextures.clear();
// parse the input file // parse the input file
ColladaParser parser( pFile); ColladaParser parser( pIOHandler, pFile);
if( !parser.mRootNode) if( !parser.mRootNode)
throw new ImportErrorException( "Collada: File came out empty. Something is wrong here."); throw new ImportErrorException( "Collada: File came out empty. Something is wrong here.");
@ -154,16 +154,6 @@ void ColladaLoader::InternReadFile( const std::string& pFile, aiScene* pScene, I
// store all lights // store all lights
StoreSceneLights( pScene); StoreSceneLights( pScene);
// if we know which camera is the primary camera, copy it to index 0
if (0 == parser.mRootNode->mPrimaryCamera.length()) {
for (unsigned int i = 1; i < mCameras.size(); ++i) {
if (mCameras[i]->mName == parser.mRootNode->mPrimaryCamera) {
std::swap(mCameras[i],mCameras[0]);
break;
}
}
}
// store all cameras // store all cameras
StoreSceneCameras( pScene); StoreSceneCameras( pScene);
} }

View File

@ -55,7 +55,7 @@ using namespace Assimp::Collada;
// ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------
// Constructor to be privately used by Importer // Constructor to be privately used by Importer
ColladaParser::ColladaParser( const std::string& pFile) ColladaParser::ColladaParser( IOSystem* pIOHandler, const std::string& pFile)
: mFileName( pFile) : mFileName( pFile)
{ {
mRootNode = NULL; mRootNode = NULL;
@ -65,8 +65,14 @@ ColladaParser::ColladaParser( const std::string& pFile)
// We assume the newest file format by default // We assume the newest file format by default
mFormat = FV_1_5_n; mFormat = FV_1_5_n;
// open the file
boost::scoped_ptr<IOStream> file( pIOHandler->Open( pFile));
if( file.get() == NULL)
throw new ImportErrorException( "Failed to open file " + pFile + ".");
// generate a XML reader for it // generate a XML reader for it
mReader = irr::io::createIrrXMLReader( pFile.c_str()); boost::scoped_ptr<CIrrXML_IOStreamReader> mIOWrapper( new CIrrXML_IOStreamReader( file.get()));
mReader = irr::io::createIrrXMLReader( mIOWrapper.get());
if( !mReader) if( !mReader)
ThrowException( "Collada: Unable to open file."); ThrowException( "Collada: Unable to open file.");

View File

@ -62,7 +62,7 @@ class ColladaParser
protected: protected:
/** Constructor from XML file */ /** Constructor from XML file */
ColladaParser( const std::string& pFile); ColladaParser( IOSystem* pIOHandler, const std::string& pFile);
/** Destructor */ /** Destructor */
~ColladaParser(); ~ColladaParser();
@ -224,7 +224,7 @@ protected:
/** Filename, for a verbose error message */ /** Filename, for a verbose error message */
std::string mFileName; std::string mFileName;
/** XML reader */ /** XML reader, member for everyday use */
irr::io::IrrXMLReader* mReader; irr::io::IrrXMLReader* mReader;
/** All data arrays found in the file by ID. Might be referred to by actually /** All data arrays found in the file by ID. Might be referred to by actually

View File

@ -60,6 +60,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#endif #endif
using namespace Assimp; using namespace Assimp;
using namespace irr;
using namespace irr::io;
using namespace boost::math; using namespace boost::math;

View File

@ -48,6 +48,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#include "fast_atof.h" #include "fast_atof.h"
using namespace Assimp; using namespace Assimp;
using namespace irr;
using namespace irr::io;
// ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------
// Constructor to be privately used by Importer // Constructor to be privately used by Importer

View File

@ -50,6 +50,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#include "fast_atof.h" #include "fast_atof.h"
using namespace Assimp; using namespace Assimp;
using namespace irr;
using namespace irr::io;
// Transformation matrix to convert from Assimp to IRR space // Transformation matrix to convert from Assimp to IRR space
const aiMatrix4x4 Assimp::AI_TO_IRR_MATRIX = aiMatrix4x4 ( const aiMatrix4x4 Assimp::AI_TO_IRR_MATRIX = aiMatrix4x4 (

View File

@ -77,7 +77,7 @@ protected:
/** XML reader instance /** XML reader instance
*/ */
IrrXMLReader* reader; irr::io::IrrXMLReader* reader;
// ------------------------------------------------------------------- // -------------------------------------------------------------------
/** Parse a material description from the XML /** Parse a material description from the XML

View File

@ -6,16 +6,15 @@
#include "./../contrib/irrXML/irrXML.h" #include "./../contrib/irrXML/irrXML.h"
#include "./../include/IOStream.h" #include "./../include/IOStream.h"
namespace Assimp { namespace Assimp
using namespace irr; {
using namespace irr::io;
// --------------------------------------------------------------------------------- // ---------------------------------------------------------------------------------
/** @brief Utility class to make IrrXML work together with our custom IO system /** @brief Utility class to make IrrXML work together with our custom IO system
* *
* See the IrrXML docs for more details. * See the IrrXML docs for more details.
*/ */
class CIrrXML_IOStreamReader class CIrrXML_IOStreamReader : public irr::io::IFileReadCallBack
{ {
public: public: