diff options
Diffstat (limited to 'src/3rdparty/assimp/code/ColladaLoader.h')
-rw-r--r-- | src/3rdparty/assimp/code/ColladaLoader.h | 257 |
1 files changed, 0 insertions, 257 deletions
diff --git a/src/3rdparty/assimp/code/ColladaLoader.h b/src/3rdparty/assimp/code/ColladaLoader.h deleted file mode 100644 index 8388ab01e..000000000 --- a/src/3rdparty/assimp/code/ColladaLoader.h +++ /dev/null @@ -1,257 +0,0 @@ -/** Defines the collada loader class */ - -/* -Open Asset Import Library (assimp) ----------------------------------------------------------------------- - -Copyright (c) 2006-2017, 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. - ----------------------------------------------------------------------- -*/ - -#ifndef AI_COLLADALOADER_H_INC -#define AI_COLLADALOADER_H_INC - -#include "BaseImporter.h" -#include "ColladaParser.h" - -struct aiNode; -struct aiCamera; -struct aiLight; -struct aiTexture; -struct aiAnimation; - -namespace Assimp -{ - -struct ColladaMeshIndex -{ - std::string mMeshID; - size_t mSubMesh; - std::string mMaterial; - ColladaMeshIndex( const std::string& pMeshID, size_t pSubMesh, const std::string& pMaterial) - : mMeshID( pMeshID), mSubMesh( pSubMesh), mMaterial( pMaterial) - { } - - bool operator < (const ColladaMeshIndex& p) const - { - if( mMeshID == p.mMeshID) - { - if( mSubMesh == p.mSubMesh) - return mMaterial < p.mMaterial; - else - return mSubMesh < p.mSubMesh; - } else - { - return mMeshID < p.mMeshID; - } - } -}; - -/** Loader class to read Collada scenes. Collada is over-engineered to death, with every new iteration bringing - * more useless stuff, so I limited the data to what I think is useful for games. -*/ -class ColladaLoader : public BaseImporter -{ -public: - ColladaLoader(); - ~ColladaLoader(); - - -public: - /** Returns whether the class can handle the format of the given file. - * See BaseImporter::CanRead() for details. */ - bool CanRead( const std::string& pFile, IOSystem* pIOHandler, bool checkSig) const; - -protected: - /** Return importer meta information. - * See #BaseImporter::GetInfo for the details - */ - const aiImporterDesc* GetInfo () const; - - void SetupProperties(const Importer* pImp); - - /** Imports the given file into the given scene structure. - * See BaseImporter::InternReadFile() for details - */ - void InternReadFile( const std::string& pFile, aiScene* pScene, IOSystem* pIOHandler); - - /** Recursively constructs a scene node for the given parser node and returns it. */ - aiNode* BuildHierarchy( const ColladaParser& pParser, const Collada::Node* pNode); - - /** Resolve node instances */ - void ResolveNodeInstances( const ColladaParser& pParser, const Collada::Node* pNode, - std::vector<const Collada::Node*>& resolved); - - /** Builds meshes for the given node and references them */ - void BuildMeshesForNode( const ColladaParser& pParser, const Collada::Node* pNode, - aiNode* pTarget); - - aiMesh *findMesh(std::string meshid); - - /** Creates a mesh for the given ColladaMesh face subset and returns the newly created mesh */ - aiMesh* CreateMesh( const ColladaParser& pParser, const Collada::Mesh* pSrcMesh, const Collada::SubMesh& pSubMesh, - const Collada::Controller* pSrcController, size_t pStartVertex, size_t pStartFace); - - /** Builds cameras for the given node and references them */ - void BuildCamerasForNode( const ColladaParser& pParser, const Collada::Node* pNode, - aiNode* pTarget); - - /** Builds lights for the given node and references them */ - void BuildLightsForNode( const ColladaParser& pParser, const Collada::Node* pNode, - aiNode* pTarget); - - /** Stores all meshes in the given scene */ - void StoreSceneMeshes( aiScene* pScene); - - /** Stores all materials in the given scene */ - void StoreSceneMaterials( aiScene* pScene); - - /** Stores all lights in the given scene */ - void StoreSceneLights( aiScene* pScene); - - /** Stores all cameras in the given scene */ - void StoreSceneCameras( aiScene* pScene); - - /** Stores all textures in the given scene */ - void StoreSceneTextures( aiScene* pScene); - - /** Stores all animations - * @param pScene target scene to store the anims - */ - void StoreAnimations( aiScene* pScene, const ColladaParser& pParser); - - /** Stores all animations for the given source anim and its nested child animations - * @param pScene target scene to store the anims - * @param pSrcAnim the source animation to process - * @param pPrefix Prefix to the name in case of nested animations - */ - void StoreAnimations( aiScene* pScene, const ColladaParser& pParser, const Collada::Animation* pSrcAnim, const std::string& pPrefix); - - /** Constructs the animation for the given source anim */ - void CreateAnimation( aiScene* pScene, const ColladaParser& pParser, const Collada::Animation* pSrcAnim, const std::string& pName); - - /** Constructs materials from the collada material definitions */ - void BuildMaterials( ColladaParser& pParser, aiScene* pScene); - - /** Fill materials from the collada material definitions */ - void FillMaterials( const ColladaParser& pParser, aiScene* pScene); - - /** Resolve UV channel mappings*/ - void ApplyVertexToEffectSemanticMapping(Collada::Sampler& sampler, - const Collada::SemanticMappingTable& table); - - /** Add a texture and all of its sampling properties to a material*/ - void AddTexture ( aiMaterial& mat, const ColladaParser& pParser, - const Collada::Effect& effect, - const Collada::Sampler& sampler, - aiTextureType type, unsigned int idx = 0); - - /** Resolves the texture name for the given effect texture entry */ - aiString FindFilenameForEffectTexture( const ColladaParser& pParser, - const Collada::Effect& pEffect, const std::string& pName); - - /** Converts a path read from a collada file to the usual representation */ - void ConvertPath( aiString& ss); - - /** Reads a float value from an accessor and its data array. - * @param pAccessor The accessor to use for reading - * @param pData The data array to read from - * @param pIndex The index of the element to retrieve - * @param pOffset Offset into the element, for multipart elements such as vectors or matrices - * @return the specified value - */ - ai_real ReadFloat( const Collada::Accessor& pAccessor, const Collada::Data& pData, size_t pIndex, size_t pOffset) const; - - /** Reads a string value from an accessor and its data array. - * @param pAccessor The accessor to use for reading - * @param pData The data array to read from - * @param pIndex The index of the element to retrieve - * @return the specified value - */ - const std::string& ReadString( const Collada::Accessor& pAccessor, const Collada::Data& pData, size_t pIndex) const; - - /** Recursively collects all nodes into the given array */ - void CollectNodes( const aiNode* pNode, std::vector<const aiNode*>& poNodes) const; - - /** Finds a node in the collada scene by the given name */ - const Collada::Node* FindNode( const Collada::Node* pNode, const std::string& pName) const; - /** Finds a node in the collada scene by the given SID */ - const Collada::Node* FindNodeBySID( const Collada::Node* pNode, const std::string& pSID) const; - - /** Finds a proper name for a node derived from the collada-node's properties */ - std::string FindNameForNode( const Collada::Node* pNode); - -protected: - /** Filename, for a verbose error message */ - std::string mFileName; - - /** Which mesh-material compound was stored under which mesh ID */ - std::map<ColladaMeshIndex, size_t> mMeshIndexByID; - - /** Which material was stored under which index in the scene */ - std::map<std::string, size_t> mMaterialIndexByName; - - /** Accumulated meshes for the target scene */ - std::vector<aiMesh*> mMeshes; - - /** Accumulated morph target meshes */ - std::vector<aiMesh*> mTargetMeshes; - - /** Temporary material list */ - std::vector<std::pair<Collada::Effect*, aiMaterial*> > newMats; - - /** Temporary camera list */ - std::vector<aiCamera*> mCameras; - - /** Temporary light list */ - std::vector<aiLight*> mLights; - - /** Temporary texture list */ - std::vector<aiTexture*> mTextures; - - /** Accumulated animations for the target scene */ - std::vector<aiAnimation*> mAnims; - - bool noSkeletonMesh; - bool ignoreUpDirection; - - /** Used by FindNameForNode() to generate unique node names */ - unsigned int mNodeNameCounter; -}; - -} // end of namespace Assimp - -#endif // AI_COLLADALOADER_H_INC |