diff options
Diffstat (limited to 'src/3rdparty/assimp/code/ACLoader.h')
-rw-r--r-- | src/3rdparty/assimp/code/ACLoader.h | 353 |
1 files changed, 180 insertions, 173 deletions
diff --git a/src/3rdparty/assimp/code/ACLoader.h b/src/3rdparty/assimp/code/ACLoader.h index 3f5089258..52563adad 100644 --- a/src/3rdparty/assimp/code/ACLoader.h +++ b/src/3rdparty/assimp/code/ACLoader.h @@ -2,11 +2,11 @@ Open Asset Import Library (assimp) ---------------------------------------------------------------------- -Copyright (c) 2006-2012, assimp team +Copyright (c) 2006-2016, 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 +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 @@ -23,16 +23,16 @@ following conditions are met: 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 +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 +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 +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 +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. ---------------------------------------------------------------------- @@ -47,9 +47,15 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include <vector> #include "BaseImporter.h" -#include "../include/assimp/types.h" +#include <assimp/types.h> -namespace Assimp { +struct aiNode; +struct aiMesh; +struct aiMaterial; +struct aiLight; + + +namespace Assimp { // --------------------------------------------------------------------------- /** AC3D (*.ac) importer class @@ -57,209 +63,210 @@ namespace Assimp { class AC3DImporter : public BaseImporter { public: - AC3DImporter(); - ~AC3DImporter(); - - - - // Represents an AC3D material - struct Material - { - Material() - : rgb (0.6f,0.6f,0.6f) - , spec (1.f,1.f,1.f) - , shin (0.f) - , trans (0.f) - {} + AC3DImporter(); + ~AC3DImporter(); + + + + // Represents an AC3D material + struct Material + { + Material() + : rgb (0.6f,0.6f,0.6f) + , spec (1.f,1.f,1.f) + , shin (0.f) + , trans (0.f) + {} - // base color of the material - aiColor3D rgb; + // base color of the material + aiColor3D rgb; - // ambient color of the material - aiColor3D amb; + // ambient color of the material + aiColor3D amb; - // emissive color of the material - aiColor3D emis; + // emissive color of the material + aiColor3D emis; - // specular color of the material - aiColor3D spec; + // specular color of the material + aiColor3D spec; - // shininess exponent - float shin; + // shininess exponent + float shin; - // transparency. 0 == opaque - float trans; + // transparency. 0 == opaque + float trans; - // name of the material. optional. - std::string name; - }; + // name of the material. optional. + std::string name; + }; - // Represents an AC3D surface - struct Surface - { - Surface() - : mat (0) - , flags (0) - {} + // Represents an AC3D surface + struct Surface + { + Surface() + : mat (0) + , flags (0) + {} - unsigned int mat,flags; + unsigned int mat,flags; - typedef std::pair<unsigned int, aiVector2D > SurfaceEntry; - std::vector< SurfaceEntry > entries; - }; + typedef std::pair<unsigned int, aiVector2D > SurfaceEntry; + std::vector< SurfaceEntry > entries; + }; - // Represents an AC3D object - struct Object - { - Object() - : type (World) - , name( "" ) - , children() - , texture( "" ) - , texRepeat( 1.f, 1.f ) - , texOffset( 0.0f, 0.0f ) - , rotation() - , translation() - , vertices() - , surfaces() - , numRefs (0) - , subDiv (0) - {} + // Represents an AC3D object + struct Object + { + Object() + : type (World) + , name( "" ) + , children() + , texture( "" ) + , texRepeat( 1.f, 1.f ) + , texOffset( 0.0f, 0.0f ) + , rotation() + , translation() + , vertices() + , surfaces() + , numRefs (0) + , subDiv (0) + , crease() + {} - // Type description - enum Type - { - World = 0x0, - Poly = 0x1, - Group = 0x2, - Light = 0x4 - } type; + // Type description + enum Type + { + World = 0x0, + Poly = 0x1, + Group = 0x2, + Light = 0x4 + } type; - // name of the object - std::string name; + // name of the object + std::string name; - // object children - std::vector<Object> children; + // object children + std::vector<Object> children; - // texture to be assigned to all surfaces of the object - std::string texture; + // texture to be assigned to all surfaces of the object + std::string texture; - // texture repat factors (scaling for all coordinates) - aiVector2D texRepeat, texOffset; + // texture repat factors (scaling for all coordinates) + aiVector2D texRepeat, texOffset; - // rotation matrix - aiMatrix3x3 rotation; + // rotation matrix + aiMatrix3x3 rotation; - // translation vector - aiVector3D translation; + // translation vector + aiVector3D translation; - // vertices - std::vector<aiVector3D> vertices; + // vertices + std::vector<aiVector3D> vertices; - // surfaces - std::vector<Surface> surfaces; + // surfaces + std::vector<Surface> surfaces; - // number of indices (= num verts in verbose format) - unsigned int numRefs; - - // number of subdivisions to be performed on the - // imported data - unsigned int subDiv; - - // max angle limit for smoothing - float crease; - }; + // number of indices (= num verts in verbose format) + unsigned int numRefs; + + // number of subdivisions to be performed on the + // imported data + unsigned int subDiv; + + // max angle limit for smoothing + float crease; + }; 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; + // ------------------------------------------------------------------- + /** 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; + // ------------------------------------------------------------------- + /** Return importer meta information. + * See #BaseImporter::GetInfo for the details */ + const aiImporterDesc* GetInfo () const; - // ------------------------------------------------------------------- - /** Imports the given file into the given scene structure. - * See BaseImporter::InternReadFile() for details*/ - void InternReadFile( const std::string& pFile, aiScene* pScene, - IOSystem* pIOHandler); + // ------------------------------------------------------------------- + /** Imports the given file into the given scene structure. + * See BaseImporter::InternReadFile() for details*/ + void InternReadFile( const std::string& pFile, aiScene* pScene, + IOSystem* pIOHandler); - // ------------------------------------------------------------------- - /** Called prior to ReadFile(). - * The function is a request to the importer to update its configuration - * basing on the Importer's configuration property list.*/ - void SetupProperties(const Importer* pImp); + // ------------------------------------------------------------------- + /** Called prior to ReadFile(). + * The function is a request to the importer to update its configuration + * basing on the Importer's configuration property list.*/ + void SetupProperties(const Importer* pImp); private: - // ------------------------------------------------------------------- - /** Get the next line from the file. - * @return false if the end of the file was reached*/ - bool GetNextLine(); - - // ------------------------------------------------------------------- - /** Load the object section. This method is called recursively to - * load subobjects, the method returns after a 'kids 0' was - * encountered. - * @objects List of output objects*/ - void LoadObjectSection(std::vector<Object>& objects); - - // ------------------------------------------------------------------- - /** Convert all objects into meshes and nodes. - * @param object Current object to work on - * @param meshes Pointer to the list of output meshes - * @param outMaterials List of output materials - * @param materials Material list - * @param Scenegraph node for the object */ - aiNode* ConvertObjectSection(Object& object, - std::vector<aiMesh*>& meshes, - std::vector<aiMaterial*>& outMaterials, - const std::vector<Material>& materials, - aiNode* parent = NULL); - - // ------------------------------------------------------------------- - /** Convert a material - * @param object Current object - * @param matSrc Source material description - * @param matDest Destination material to be filled */ - void ConvertMaterial(const Object& object, - const Material& matSrc, - aiMaterial& matDest); + // ------------------------------------------------------------------- + /** Get the next line from the file. + * @return false if the end of the file was reached*/ + bool GetNextLine(); + + // ------------------------------------------------------------------- + /** Load the object section. This method is called recursively to + * load subobjects, the method returns after a 'kids 0' was + * encountered. + * @objects List of output objects*/ + void LoadObjectSection(std::vector<Object>& objects); + + // ------------------------------------------------------------------- + /** Convert all objects into meshes and nodes. + * @param object Current object to work on + * @param meshes Pointer to the list of output meshes + * @param outMaterials List of output materials + * @param materials Material list + * @param Scenegraph node for the object */ + aiNode* ConvertObjectSection(Object& object, + std::vector<aiMesh*>& meshes, + std::vector<aiMaterial*>& outMaterials, + const std::vector<Material>& materials, + aiNode* parent = NULL); + + // ------------------------------------------------------------------- + /** Convert a material + * @param object Current object + * @param matSrc Source material description + * @param matDest Destination material to be filled */ + void ConvertMaterial(const Object& object, + const Material& matSrc, + aiMaterial& matDest); private: - // points to the next data line - const char* buffer; + // points to the next data line + const char* buffer; - // Configuration option: if enabled, up to two meshes - // are generated per material: those faces who have - // their bf cull flags set are separated. - bool configSplitBFCull; + // Configuration option: if enabled, up to two meshes + // are generated per material: those faces who have + // their bf cull flags set are separated. + bool configSplitBFCull; - // Configuration switch: subdivision surfaces are only - // evaluated if the value is true. - bool configEvalSubdivision; + // Configuration switch: subdivision surfaces are only + // evaluated if the value is true. + bool configEvalSubdivision; - // counts how many objects we have in the tree. - // basing on this information we can find a - // good estimate how many meshes we'll have in the final scene. - unsigned int mNumMeshes; + // counts how many objects we have in the tree. + // basing on this information we can find a + // good estimate how many meshes we'll have in the final scene. + unsigned int mNumMeshes; - // current list of light sources - std::vector<aiLight*>* mLights; + // current list of light sources + std::vector<aiLight*>* mLights; - // name counters - unsigned int lights, groups, polys, worlds; + // name counters + unsigned int lights, groups, polys, worlds; }; } // end of namespace Assimp |