diff options
Diffstat (limited to 'src/3rdparty/assimp/code/ObjFileData.h')
-rw-r--r-- | src/3rdparty/assimp/code/ObjFileData.h | 335 |
1 files changed, 0 insertions, 335 deletions
diff --git a/src/3rdparty/assimp/code/ObjFileData.h b/src/3rdparty/assimp/code/ObjFileData.h deleted file mode 100644 index 2658f8a2a..000000000 --- a/src/3rdparty/assimp/code/ObjFileData.h +++ /dev/null @@ -1,335 +0,0 @@ -/* -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. - ----------------------------------------------------------------------- -*/ - -#pragma once -#ifndef OBJ_FILEDATA_H_INC -#define OBJ_FILEDATA_H_INC - -#include <vector> -#include <map> -#include <assimp/types.h> -#include <assimp/mesh.h> - -namespace Assimp { -namespace ObjFile { - -struct Object; -struct Face; -struct Material; - -// ------------------------------------------------------------------------------------------------ -//! \struct Face -//! \brief Data structure for a simple obj-face, describes discredit,l.ation and materials -// ------------------------------------------------------------------------------------------------ -struct Face { - typedef std::vector<unsigned int> IndexArray; - - //! Primitive type - aiPrimitiveType m_PrimitiveType; - //! Vertex indices - IndexArray m_vertices; - //! Normal indices - IndexArray m_normals; - //! Texture coordinates indices - IndexArray m_texturCoords; - //! Pointer to assigned material - Material *m_pMaterial; - - //! \brief Default constructor - Face( aiPrimitiveType pt = aiPrimitiveType_POLYGON) - : m_PrimitiveType( pt ) - , m_vertices() - , m_normals() - , m_texturCoords() - , m_pMaterial( 0L ) { - // empty - } - - //! \brief Destructor - ~Face() { - // empty - } -}; - -// ------------------------------------------------------------------------------------------------ -//! \struct Object -//! \brief Stores all objects of an obj-file object definition -// ------------------------------------------------------------------------------------------------ -struct Object { - enum ObjectType { - ObjType, - GroupType - }; - - //! Object name - std::string m_strObjName; - //! Transformation matrix, stored in OpenGL format - aiMatrix4x4 m_Transformation; - //! All sub-objects referenced by this object - std::vector<Object*> m_SubObjects; - /// Assigned meshes - std::vector<unsigned int> m_Meshes; - - //! \brief Default constructor - Object() - : m_strObjName("") { - // empty - } - - //! \brief Destructor - ~Object() { - for ( std::vector<Object*>::iterator it = m_SubObjects.begin(); it != m_SubObjects.end(); ++it) { - delete *it; - } - } -}; - -// ------------------------------------------------------------------------------------------------ -//! \struct Material -//! \brief Data structure to store all material specific data -// ------------------------------------------------------------------------------------------------ -struct Material { - //! Name of material description - aiString MaterialName; - - //! Texture names - aiString texture; - aiString textureSpecular; - aiString textureAmbient; - aiString textureEmissive; - aiString textureBump; - aiString textureNormal; - aiString textureReflection[6]; - aiString textureSpecularity; - aiString textureOpacity; - aiString textureDisp; - - enum TextureType { - TextureDiffuseType = 0, - TextureSpecularType, - TextureAmbientType, - TextureEmissiveType, - TextureBumpType, - TextureNormalType, - TextureReflectionSphereType, - TextureReflectionCubeTopType, - TextureReflectionCubeBottomType, - TextureReflectionCubeFrontType, - TextureReflectionCubeBackType, - TextureReflectionCubeLeftType, - TextureReflectionCubeRightType, - TextureSpecularityType, - TextureOpacityType, - TextureDispType, - TextureTypeCount - }; - bool clamp[TextureTypeCount]; - - //! Ambient color - aiColor3D ambient; - //! Diffuse color - aiColor3D diffuse; - //! Specular color - aiColor3D specular; - //! Emissive color - aiColor3D emissive; - //! Alpha value - ai_real alpha; - //! Shineness factor - ai_real shineness; - //! Illumination model - int illumination_model; - //! Index of refraction - ai_real ior; - //! Transparency color - aiColor3D transparent; - - //! Constructor - Material() - : diffuse ( ai_real( 0.6 ), ai_real( 0.6 ), ai_real( 0.6 ) ) - , alpha (ai_real( 1.0 ) ) - , shineness ( ai_real( 0.0) ) - , illumination_model (1) - , ior ( ai_real( 1.0 ) ) - , transparent( ai_real( 1.0), ai_real (1.0), ai_real(1.0)) { - // empty - for (size_t i = 0; i < TextureTypeCount; ++i) { - clamp[ i ] = false; - } - } - - // Destructor - ~Material() { - // empty - } -}; - -// ------------------------------------------------------------------------------------------------ -//! \struct Mesh -//! \brief Data structure to store a mesh -// ------------------------------------------------------------------------------------------------ -struct Mesh { - static const unsigned int NoMaterial = ~0u; - /// The name for the mesh - std::string m_name; - /// Array with pointer to all stored faces - std::vector<Face*> m_Faces; - /// Assigned material - Material *m_pMaterial; - /// Number of stored indices. - unsigned int m_uiNumIndices; - /// Number of UV - unsigned int m_uiUVCoordinates[ AI_MAX_NUMBER_OF_TEXTURECOORDS ]; - /// Material index. - unsigned int m_uiMaterialIndex; - /// True, if normals are stored. - bool m_hasNormals; - /// True, if vertex colors are stored. - bool m_hasVertexColors; - - /// Constructor - explicit Mesh( const std::string &name ) - : m_name( name ) - , m_pMaterial(NULL) - , m_uiNumIndices(0) - , m_uiMaterialIndex( NoMaterial ) - , m_hasNormals(false) { - memset(m_uiUVCoordinates, 0, sizeof( unsigned int ) * AI_MAX_NUMBER_OF_TEXTURECOORDS); - } - - /// Destructor - ~Mesh() { - for (std::vector<Face*>::iterator it = m_Faces.begin(); - it != m_Faces.end(); ++it) - { - delete *it; - } - } -}; - -// ------------------------------------------------------------------------------------------------ -//! \struct Model -//! \brief Data structure to store all obj-specific model datas -// ------------------------------------------------------------------------------------------------ -struct Model { - typedef std::map<std::string, std::vector<unsigned int>* > GroupMap; - typedef std::map<std::string, std::vector<unsigned int>* >::iterator GroupMapIt; - typedef std::map<std::string, std::vector<unsigned int>* >::const_iterator ConstGroupMapIt; - - //! Model name - std::string m_ModelName; - //! List ob assigned objects - std::vector<Object*> m_Objects; - //! Pointer to current object - ObjFile::Object *m_pCurrent; - //! Pointer to current material - ObjFile::Material *m_pCurrentMaterial; - //! Pointer to default material - ObjFile::Material *m_pDefaultMaterial; - //! Vector with all generated materials - std::vector<std::string> m_MaterialLib; - //! Vector with all generated vertices - std::vector<aiVector3D> m_Vertices; - //! vector with all generated normals - std::vector<aiVector3D> m_Normals; - //! vector with all vertex colors - std::vector<aiVector3D> m_VertexColors; - //! Group map - GroupMap m_Groups; - //! Group to face id assignment - std::vector<unsigned int> *m_pGroupFaceIDs; - //! Active group - std::string m_strActiveGroup; - //! Vector with generated texture coordinates - std::vector<aiVector3D> m_TextureCoord; - //! Current mesh instance - Mesh *m_pCurrentMesh; - //! Vector with stored meshes - std::vector<Mesh*> m_Meshes; - //! Material map - std::map<std::string, Material*> m_MaterialMap; - - //! \brief The default class constructor - Model() : - m_ModelName(""), - m_pCurrent(NULL), - m_pCurrentMaterial(NULL), - m_pDefaultMaterial(NULL), - m_pGroupFaceIDs(NULL), - m_strActiveGroup(""), - m_pCurrentMesh(NULL) - { - // empty - } - - //! \brief The class destructor - ~Model() { - // Clear all stored object instances - for (std::vector<Object*>::iterator it = m_Objects.begin(); - it != m_Objects.end(); ++it) { - delete *it; - } - m_Objects.clear(); - - // Clear all stored mesh instances - for (std::vector<Mesh*>::iterator it = m_Meshes.begin(); - it != m_Meshes.end(); ++it) { - delete *it; - } - m_Meshes.clear(); - - for(GroupMapIt it = m_Groups.begin(); it != m_Groups.end(); ++it) { - delete it->second; - } - m_Groups.clear(); - - for ( std::map<std::string, Material*>::iterator it = m_MaterialMap.begin(); it != m_MaterialMap.end(); ++it ) { - delete it->second; - } - } -}; - -// ------------------------------------------------------------------------------------------------ - -} // Namespace ObjFile -} // Namespace Assimp - -#endif // OBJ_FILEDATA_H_INC |