diff --git a/code/IRRShared.h b/code/IRRShared.h index 55745dadd..2f1f7022a 100644 --- a/code/IRRShared.h +++ b/code/IRRShared.h @@ -10,7 +10,8 @@ #include "irrXMLWrapper.h" #include "BaseImporter.h" #include -class aiMaterial; + +struct aiMaterial; namespace Assimp { diff --git a/code/LWSLoader.h b/code/LWSLoader.h index 996c4c705..642c178ba 100644 --- a/code/LWSLoader.h +++ b/code/LWSLoader.h @@ -1,249 +1,249 @@ -/* -Open Asset Import Library (assimp) ----------------------------------------------------------------------- - -Copyright (c) 2006-2012, assimp team -All rights reserved. - -Redistribution and use of this software in source and binary forms, -with or without modification, are permitted provided that the -following conditions are met: - -* Redistributions of source code must retain the above - copyright notice, this list of conditions and the - following disclaimer. - -* Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the - following disclaimer in the documentation and/or other - materials provided with the distribution. - -* Neither the name of the assimp team, nor the names of its - contributors may be used to endorse or promote products - derived from this software without specific prior - written permission of the assimp team. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - ----------------------------------------------------------------------- -*/ - -/** @file LWSLoader.h - * @brief Declaration of the LightWave scene importer class. - */ -#ifndef AI_LWSLOADER_H_INCLUDED -#define AI_LWSLOADER_H_INCLUDED - -#include "LWOFileData.h" -#include "SceneCombiner.h" -#include "BaseImporter.h" - -struct aiImporterDesc; - -namespace Assimp { - struct BatchLoader; - struct Importer; - struct IOSystem; +/* +Open Asset Import Library (assimp) +---------------------------------------------------------------------- - namespace LWS { - -// --------------------------------------------------------------------------- -/** Represents an element in a LWS file. - * - * This can either be a single data line - or a data - * group - { name ... n } - */ -class Element -{ -public: - Element() - {} - - // first: name, second: rest - std::string tokens[2]; - std::list children; - - //! Recursive parsing function - void Parse (const char*& buffer); -}; - -#define AI_LWS_MASK (0xffffffff >> 4u) - -// --------------------------------------------------------------------------- -/** Represents a LWS scenegraph element - */ -struct NodeDesc -{ - NodeDesc() - : number (0) - , parent (0) - , name ("") - , isPivotSet (false) - , lightColor (1.f,1.f,1.f) - , lightIntensity (1.f) - , lightType (0) - , lightFalloffType (0) - , lightConeAngle (45.f) - , parent_resolved (NULL) - {} - - enum { - - OBJECT = 1, - LIGHT = 2, - CAMERA = 3, - BONE = 4 - } type; // type of node - - // if object: path - std::string path; - unsigned int id; - - // number of object - unsigned int number; - - // index of parent index - unsigned int parent; - - // lights & cameras & dummies: name - const char* name; - - // animation channels - std::list< LWO::Envelope > channels; - - // position of pivot point - aiVector3D pivotPos; - bool isPivotSet; - - - - // color of light source - aiColor3D lightColor; - - // intensity of light source - float lightIntensity; - - // type of light source - unsigned int lightType; - - // falloff type of light source - unsigned int lightFalloffType; - - // cone angle of (spot) light source - float lightConeAngle; - - // soft cone angle of (spot) light source - float lightEdgeAngle; - - - - // list of resolved children - std::list< NodeDesc* > children; - - // resolved parent node - NodeDesc* parent_resolved; - - - // for std::find() - bool operator == (unsigned int num) const { - if (!num) - return false; - unsigned int _type = num >> 28u; - - return _type == static_cast(type) && (num & AI_LWS_MASK) == number; - } -}; - -} // end namespace LWS - -// --------------------------------------------------------------------------- -/** LWS (LightWave Scene Format) importer class. - * - * This class does heavily depend on the LWO importer class. LWS files - * contain mainly descriptions how LWO objects are composed together - * in a scene. -*/ -class LWSImporter : public BaseImporter -{ -public: - LWSImporter(); - ~LWSImporter(); - - -public: - - // ------------------------------------------------------------------- - // Check whether we can read a specific file - bool CanRead( const std::string& pFile, IOSystem* pIOHandler, - bool checkSig) const; - -protected: - - // ------------------------------------------------------------------- - // Get list of supported extensions - const aiImporterDesc* GetInfo () const; - - // ------------------------------------------------------------------- - // Import file into given scene data structure - void InternReadFile( const std::string& pFile, aiScene* pScene, - IOSystem* pIOHandler); - - // ------------------------------------------------------------------- - // Setup import properties - void SetupProperties(const Importer* pImp); - -private: - - - // ------------------------------------------------------------------- - // Read an envelope description - void ReadEnvelope(const LWS::Element& dad, LWO::Envelope& out ); - - // ------------------------------------------------------------------- - // Read an envelope description for the older LW file format - void ReadEnvelope_Old(std::list< LWS::Element >::const_iterator& it, - const std::list< LWS::Element >::const_iterator& end, - LWS::NodeDesc& nodes, - unsigned int version); - - // ------------------------------------------------------------------- - // Setup a nice name for a node - void SetupNodeName(aiNode* nd, LWS::NodeDesc& src); - - // ------------------------------------------------------------------- - // Recursively build the scenegraph - void BuildGraph(aiNode* nd, - LWS::NodeDesc& src, - std::vector& attach, - BatchLoader& batch, - aiCamera**& camOut, - aiLight**& lightOut, - std::vector& animOut); - - // ------------------------------------------------------------------- - // Try several dirs until we find the right location of a LWS file. - std::string FindLWOFile(const std::string& in); - -private: - - bool configSpeedFlag; - IOSystem* io; - - double first,last,fps; - - bool noSkeletonMesh; -}; - -} // end of namespace Assimp - -#endif // AI_LWSIMPORTER_H_INC +Copyright (c) 2006-2012, assimp team +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the +following conditions are met: + +* Redistributions of source code must retain the above + copyright notice, this list of conditions and the + following disclaimer. + +* Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the + following disclaimer in the documentation and/or other + materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its + contributors may be used to endorse or promote products + derived from this software without specific prior + written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +---------------------------------------------------------------------- +*/ + +/** @file LWSLoader.h + * @brief Declaration of the LightWave scene importer class. + */ +#ifndef AI_LWSLOADER_H_INCLUDED +#define AI_LWSLOADER_H_INCLUDED + +#include "LWOFileData.h" +#include "SceneCombiner.h" +#include "BaseImporter.h" + +struct aiImporterDesc; + +namespace Assimp { + class BatchLoader; + class Importer; + class IOSystem; + + namespace LWS { + +// --------------------------------------------------------------------------- +/** Represents an element in a LWS file. + * + * This can either be a single data line - or a data + * group - { name ... n } + */ +class Element +{ +public: + Element() + {} + + // first: name, second: rest + std::string tokens[2]; + std::list children; + + //! Recursive parsing function + void Parse (const char*& buffer); +}; + +#define AI_LWS_MASK (0xffffffff >> 4u) + +// --------------------------------------------------------------------------- +/** Represents a LWS scenegraph element + */ +struct NodeDesc +{ + NodeDesc() + : number (0) + , parent (0) + , name ("") + , isPivotSet (false) + , lightColor (1.f,1.f,1.f) + , lightIntensity (1.f) + , lightType (0) + , lightFalloffType (0) + , lightConeAngle (45.f) + , parent_resolved (NULL) + {} + + enum { + + OBJECT = 1, + LIGHT = 2, + CAMERA = 3, + BONE = 4 + } type; // type of node + + // if object: path + std::string path; + unsigned int id; + + // number of object + unsigned int number; + + // index of parent index + unsigned int parent; + + // lights & cameras & dummies: name + const char* name; + + // animation channels + std::list< LWO::Envelope > channels; + + // position of pivot point + aiVector3D pivotPos; + bool isPivotSet; + + + + // color of light source + aiColor3D lightColor; + + // intensity of light source + float lightIntensity; + + // type of light source + unsigned int lightType; + + // falloff type of light source + unsigned int lightFalloffType; + + // cone angle of (spot) light source + float lightConeAngle; + + // soft cone angle of (spot) light source + float lightEdgeAngle; + + + + // list of resolved children + std::list< NodeDesc* > children; + + // resolved parent node + NodeDesc* parent_resolved; + + + // for std::find() + bool operator == (unsigned int num) const { + if (!num) + return false; + unsigned int _type = num >> 28u; + + return _type == static_cast(type) && (num & AI_LWS_MASK) == number; + } +}; + +} // end namespace LWS + +// --------------------------------------------------------------------------- +/** LWS (LightWave Scene Format) importer class. + * + * This class does heavily depend on the LWO importer class. LWS files + * contain mainly descriptions how LWO objects are composed together + * in a scene. +*/ +class LWSImporter : public BaseImporter +{ +public: + LWSImporter(); + ~LWSImporter(); + + +public: + + // ------------------------------------------------------------------- + // Check whether we can read a specific file + bool CanRead( const std::string& pFile, IOSystem* pIOHandler, + bool checkSig) const; + +protected: + + // ------------------------------------------------------------------- + // Get list of supported extensions + const aiImporterDesc* GetInfo () const; + + // ------------------------------------------------------------------- + // Import file into given scene data structure + void InternReadFile( const std::string& pFile, aiScene* pScene, + IOSystem* pIOHandler); + + // ------------------------------------------------------------------- + // Setup import properties + void SetupProperties(const Importer* pImp); + +private: + + + // ------------------------------------------------------------------- + // Read an envelope description + void ReadEnvelope(const LWS::Element& dad, LWO::Envelope& out ); + + // ------------------------------------------------------------------- + // Read an envelope description for the older LW file format + void ReadEnvelope_Old(std::list< LWS::Element >::const_iterator& it, + const std::list< LWS::Element >::const_iterator& end, + LWS::NodeDesc& nodes, + unsigned int version); + + // ------------------------------------------------------------------- + // Setup a nice name for a node + void SetupNodeName(aiNode* nd, LWS::NodeDesc& src); + + // ------------------------------------------------------------------- + // Recursively build the scenegraph + void BuildGraph(aiNode* nd, + LWS::NodeDesc& src, + std::vector& attach, + BatchLoader& batch, + aiCamera**& camOut, + aiLight**& lightOut, + std::vector& animOut); + + // ------------------------------------------------------------------- + // Try several dirs until we find the right location of a LWS file. + std::string FindLWOFile(const std::string& in); + +private: + + bool configSpeedFlag; + IOSystem* io; + + double first,last,fps; + + bool noSkeletonMesh; +}; + +} // end of namespace Assimp + +#endif // AI_LWSIMPORTER_H_INC diff --git a/code/MDLFileData.h b/code/MDLFileData.h index 366d8b1b2..428cbeee7 100644 --- a/code/MDLFileData.h +++ b/code/MDLFileData.h @@ -59,7 +59,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include -class aiMaterial; +struct aiMaterial; namespace Assimp { namespace MDL { diff --git a/code/NDOLoader.cpp b/code/NDOLoader.cpp index 1704763b3..778ca426a 100644 --- a/code/NDOLoader.cpp +++ b/code/NDOLoader.cpp @@ -46,11 +46,11 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef ASSIMP_BUILD_NO_NDO_IMPORTER #include "NDOLoader.h" -#include "../include/assimp/DefaultLogger.hpp" -#include "../include/assimp/IOSystem.hpp" -#include "../include/assimp/scene.h" -#include "StreamReader.h" -#include +#include "../include/assimp/DefaultLogger.hpp" +#include "../include/assimp/IOSystem.hpp" +#include "../include/assimp/scene.h" +#include "StreamReader.h" +#include using namespace Assimp; #define for_each BOOST_FOREACH diff --git a/code/NDOLoader.h b/code/NDOLoader.h index 3c569f217..350fa5ccc 100644 --- a/code/NDOLoader.h +++ b/code/NDOLoader.h @@ -50,12 +50,13 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include -class IOSystem; -class Importer; + struct aiImporterDesc; struct aiScene; namespace Assimp { + class IOSystem; + class Importer; // --------------------------------------------------------------------------- /** @brief Importer class to load meshes from Nendo. diff --git a/code/OpenGEXImporter.cpp b/code/OpenGEXImporter.cpp index 251b5cc7e..596eff03b 100644 --- a/code/OpenGEXImporter.cpp +++ b/code/OpenGEXImporter.cpp @@ -772,12 +772,12 @@ void OpenGEXImporter::handleColorNode( ODDLParser::DDLNode *node, aiScene *pScen Property *colorProp = node->getProperties(); if( NULL != colorProp ) { if( NULL != colorProp->m_id ) { - ColorType type( getColorType( colorProp->m_primData ) ); +/* ColorType type( getColorType( colorProp->m_primData ) ); if( type == DiffuseColor ) { aiColor3D *col = new aiColor3D; getColorRGBA( col, node->getValue() ); m_currentMaterial->AddProperty( col, 1, AI_MATKEY_COLOR_DIFFUSE ); - } + }*/ } } } diff --git a/code/OpenGEXImporter.h b/code/OpenGEXImporter.h index 58b55e3d8..c8236eaf3 100644 --- a/code/OpenGEXImporter.h +++ b/code/OpenGEXImporter.h @@ -53,6 +53,7 @@ namespace ODDLParser { struct Context; } struct aiNode; +struct aiMaterial; namespace Assimp { namespace OpenGEX { diff --git a/code/SceneCombiner.cpp b/code/SceneCombiner.cpp index 087a2a4c8..eaca35cd6 100644 --- a/code/SceneCombiner.cpp +++ b/code/SceneCombiner.cpp @@ -54,9 +54,9 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "Hash.h" #include "time.h" #include "../include/assimp/DefaultLogger.hpp" -#include "../include/assimp/scene.h" +#include "../include/assimp/scene.h" #include -#include "ScenePrivate.h" +#include "ScenePrivate.h" namespace Assimp { diff --git a/code/SceneCombiner.h b/code/SceneCombiner.h index 34337ed81..5a229308b 100644 --- a/code/SceneCombiner.h +++ b/code/SceneCombiner.h @@ -51,6 +51,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include #include +//#include "../include/assimp/Compiler/pstdint.h" + #include struct aiScene; diff --git a/code/fast_atof.h b/code/fast_atof.h index 81b54d6d2..794e95fb3 100644 --- a/code/fast_atof.h +++ b/code/fast_atof.h @@ -21,8 +21,8 @@ #include #include "StringComparison.h" -#include "../include/assimp/Compiler/pstdint.h" - +//#include "../include/assimp/Compiler/pstdint.h" +#include namespace Assimp {