|
@@ -1,3 +1,42 @@
|
|
|
+/*
|
|
|
+Open Asset Import Library (assimp)
|
|
|
+----------------------------------------------------------------------
|
|
|
+
|
|
|
+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
|
|
|
+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 X3DImporter.hpp
|
|
|
/// \brief X3D-format files importer for Assimp.
|
|
|
/// \date 2015-2016
|
|
@@ -10,10 +49,10 @@
|
|
|
#include "X3DImporter_Node.hpp"
|
|
|
|
|
|
// Header files, Assimp.
|
|
|
-#include "assimp/DefaultLogger.hpp"
|
|
|
-#include "assimp/importerdesc.h"
|
|
|
-#include "assimp/ProgressHandler.hpp"
|
|
|
-#include "assimp/types.h"
|
|
|
+#include <assimp/DefaultLogger.hpp>
|
|
|
+#include <assimp/importerdesc.h>
|
|
|
+#include <assimp/ProgressHandler.hpp>
|
|
|
+#include <assimp/types.h>
|
|
|
#include "BaseImporter.h"
|
|
|
#include "irrXMLWrapper.h"
|
|
|
|
|
@@ -151,47 +190,49 @@ namespace Assimp
|
|
|
///
|
|
|
class X3DImporter : public BaseImporter
|
|
|
{
|
|
|
- /***********************************************/
|
|
|
- /******************** Types ********************/
|
|
|
- /***********************************************/
|
|
|
+public:
|
|
|
+ std::list<CX3DImporter_NodeElement*> NodeElement_List;///< All elements of scene graph.
|
|
|
|
|
|
- /***********************************************/
|
|
|
- /****************** Constants ******************/
|
|
|
- /***********************************************/
|
|
|
+public:
|
|
|
+ /***********************************************/
|
|
|
+ /****************** Functions ******************/
|
|
|
+ /***********************************************/
|
|
|
|
|
|
-private:
|
|
|
+ /// Default constructor.
|
|
|
+ X3DImporter()
|
|
|
+ : NodeElement_Cur( nullptr ), mReader( nullptr )
|
|
|
+ {}
|
|
|
|
|
|
- static const aiImporterDesc Description;
|
|
|
+ /// Default destructor.
|
|
|
+ ~X3DImporter();
|
|
|
|
|
|
- /***********************************************/
|
|
|
- /****************** Variables ******************/
|
|
|
- /***********************************************/
|
|
|
-
|
|
|
-private:
|
|
|
+ /***********************************************/
|
|
|
+ /******** Functions: parse set, public *********/
|
|
|
+ /***********************************************/
|
|
|
|
|
|
- CX3DImporter_NodeElement* NodeElement_Cur;///< Current element.
|
|
|
- irr::io::IrrXMLReader* mReader;///< Pointer to XML-reader object
|
|
|
- std::string mFileDir;
|
|
|
+ /// Parse X3D file and fill scene graph. The function has no return value. Result can be found by analyzing the generated graph.
|
|
|
+ /// Also exception can be throwed if trouble will found.
|
|
|
+ /// \param [in] pFile - name of file to be parsed.
|
|
|
+ /// \param [in] pIOHandler - pointer to IO helper object.
|
|
|
+ void ParseFile( const std::string& pFile, IOSystem* pIOHandler );
|
|
|
|
|
|
-public:
|
|
|
+ /***********************************************/
|
|
|
+ /********* Functions: BaseImporter set *********/
|
|
|
+ /***********************************************/
|
|
|
|
|
|
- std::list<CX3DImporter_NodeElement*> NodeElement_List;///< All elements of scene graph.
|
|
|
+ bool CanRead( const std::string& pFile, IOSystem* pIOHandler, bool pCheckSig ) const;
|
|
|
+ void GetExtensionList( std::set<std::string>& pExtensionList );
|
|
|
+ void InternReadFile( const std::string& pFile, aiScene* pScene, IOSystem* pIOHandler );
|
|
|
+ const aiImporterDesc* GetInfo()const;
|
|
|
|
|
|
- /***********************************************/
|
|
|
- /****************** Functions ******************/
|
|
|
- /***********************************************/
|
|
|
|
|
|
private:
|
|
|
-
|
|
|
- /// \fn X3DImporter(const X3DImporter& pScene)
|
|
|
/// Disabled copy constructor.
|
|
|
X3DImporter(const X3DImporter& pScene);
|
|
|
|
|
|
- /// \fn X3DImporter& operator=(const X3DImporter& pScene)
|
|
|
/// Disabled assign operator.
|
|
|
X3DImporter& operator=(const X3DImporter& pScene);
|
|
|
|
|
|
- /// \fn void Clear()
|
|
|
/// Clear all temporary data.
|
|
|
void Clear();
|
|
|
|
|
@@ -199,7 +240,6 @@ private:
|
|
|
/************* Functions: find set *************/
|
|
|
/***********************************************/
|
|
|
|
|
|
- /// \fn bool FindNodeElement_FromRoot(const std::string& pID, const CX3DImporter_NodeElement::EType pType, CX3DImporter_NodeElement** pElement)
|
|
|
/// Find requested node element. Search will be made in all existing nodes.
|
|
|
/// \param [in] pID - ID of requested element.
|
|
|
/// \param [in] pType - type of requested element.
|
|
@@ -207,7 +247,6 @@ private:
|
|
|
/// \return true - if the element is found, else - false.
|
|
|
bool FindNodeElement_FromRoot(const std::string& pID, const CX3DImporter_NodeElement::EType pType, CX3DImporter_NodeElement** pElement);
|
|
|
|
|
|
- /// \fn bool FindNodeElement_FromNode(CX3DImporter_NodeElement* pStartNode, const std::string& pID, const CX3DImporter_NodeElement::EType pType, CX3DImporter_NodeElement** pElement)
|
|
|
/// Find requested node element. Search will be made from pointed node down to childs.
|
|
|
/// \param [in] pStartNode - pointer to start node.
|
|
|
/// \param [in] pID - ID of requested element.
|
|
@@ -217,7 +256,6 @@ private:
|
|
|
bool FindNodeElement_FromNode(CX3DImporter_NodeElement* pStartNode, const std::string& pID, const CX3DImporter_NodeElement::EType pType,
|
|
|
CX3DImporter_NodeElement** pElement);
|
|
|
|
|
|
- /// \fn bool FindNodeElement(const std::string& pName, const CX3DImporter_NodeElement::EType pType, CX3DImporter_NodeElement** pElement)
|
|
|
/// Find requested node element. For "Node"'s accounting flag "Static".
|
|
|
/// \param [in] pName - name of requested element.
|
|
|
/// \param [in] pType - type of requested element.
|
|
@@ -229,49 +267,41 @@ private:
|
|
|
/********* Functions: postprocess set **********/
|
|
|
/***********************************************/
|
|
|
|
|
|
- /// \fn aiMatrix4x4 PostprocessHelper_Matrix_GlobalToCurrent() const
|
|
|
/// \return transformation matrix from global coordinate system to local.
|
|
|
aiMatrix4x4 PostprocessHelper_Matrix_GlobalToCurrent() const;
|
|
|
|
|
|
- /// \fn void PostprocessHelper_CollectMetadata(const CX3DImporter_NodeElement& pNodeElement, std::list<CX3DImporter_NodeElement*>& pList) const
|
|
|
/// Check if child elements of node element is metadata and add it to temporary list.
|
|
|
/// \param [in] pNodeElement - node element where metadata is searching.
|
|
|
/// \param [out] pList - temporary list for collected metadata.
|
|
|
void PostprocessHelper_CollectMetadata(const CX3DImporter_NodeElement& pNodeElement, std::list<CX3DImporter_NodeElement*>& pList) const;
|
|
|
|
|
|
- /// \fn bool bool PostprocessHelper_ElementIsMetadata(const CX3DImporter_NodeElement::EType pType) const
|
|
|
/// Check if type of node element is metadata. E.g. <MetadataSet>, <MetadataString>.
|
|
|
/// \param [in] pType - checked type.
|
|
|
/// \return true - if the type corresponds to the metadata.
|
|
|
bool PostprocessHelper_ElementIsMetadata(const CX3DImporter_NodeElement::EType pType) const;
|
|
|
|
|
|
- /// \fn bool PostprocessHelper_ElementIsMesh(const CX3DImporter_NodeElement::EType pType) const
|
|
|
/// Check if type of node element is geometry object and can be used to build mesh. E.g. <Box>, <Arc2D>.
|
|
|
/// \param [in] pType - checked type.
|
|
|
/// \return true - if the type corresponds to the mesh.
|
|
|
bool PostprocessHelper_ElementIsMesh(const CX3DImporter_NodeElement::EType pType) const;
|
|
|
|
|
|
- /// \fn void Postprocess_BuildLight(const CX3DImporter_NodeElement& pNodeElement, std::list<aiLight*>& pSceneLightList) const
|
|
|
/// Read CX3DImporter_NodeElement_Light, create aiLight and add it to list of the lights.
|
|
|
/// \param [in] pNodeElement - reference to lisght element(<DirectionalLight>, <PointLight>, <SpotLight>).
|
|
|
/// \param [out] pSceneLightList - reference to list of the lights.
|
|
|
void Postprocess_BuildLight(const CX3DImporter_NodeElement& pNodeElement, std::list<aiLight*>& pSceneLightList) const;
|
|
|
|
|
|
- /// \fn void Postprocess_BuildMaterial(const CX3DImporter_NodeElement& pNodeElement, aiMaterial** pMaterial) const
|
|
|
/// Create filled structure with type \ref aiMaterial from \ref CX3DImporter_NodeElement. This function itseld extract
|
|
|
/// all needed data from scene graph.
|
|
|
/// \param [in] pNodeElement - reference to material element(<Appearance>).
|
|
|
/// \param [out] pMaterial - pointer to pointer to created material. *pMaterial must be nullptr.
|
|
|
void Postprocess_BuildMaterial(const CX3DImporter_NodeElement& pNodeElement, aiMaterial** pMaterial) const;
|
|
|
|
|
|
- /// \fn void Postprocess_BuildMesh(const CX3DImporter_NodeElement& pNodeElement, aiMesh** pMesh) const
|
|
|
/// Create filled structure with type \ref aiMaterial from \ref CX3DImporter_NodeElement. This function itseld extract
|
|
|
/// all needed data from scene graph.
|
|
|
/// \param [in] pNodeElement - reference to geometry object.
|
|
|
/// \param [out] pMesh - pointer to pointer to created mesh. *pMesh must be nullptr.
|
|
|
void Postprocess_BuildMesh(const CX3DImporter_NodeElement& pNodeElement, aiMesh** pMesh) const;
|
|
|
|
|
|
- /// \fn void Postprocess_BuildNode(const CX3DImporter_NodeElement& pNodeElement, aiNode& pSceneNode, std::list<aiMesh*>& pSceneMeshList, std::list<aiMaterial*>& pSceneMaterialList, std::list<aiLight*>& pSceneLightList) const
|
|
|
/// Create aiNode from CX3DImporter_NodeElement. Also function check children and make recursive call.
|
|
|
/// \param [out] pNode - pointer to pointer to created node. *pNode must be nullptr.
|
|
|
/// \param [in] pNodeElement - CX3DImporter_NodeElement which read.
|
|
@@ -282,7 +312,6 @@ private:
|
|
|
void Postprocess_BuildNode(const CX3DImporter_NodeElement& pNodeElement, aiNode& pSceneNode, std::list<aiMesh*>& pSceneMeshList,
|
|
|
std::list<aiMaterial*>& pSceneMaterialList, std::list<aiLight*>& pSceneLightList) const;
|
|
|
|
|
|
- /// \fn void Postprocess_BuildShape(const CX3DImporter_NodeElement_Shape& pShapeNodeElement, std::list<unsigned int>& pNodeMeshInd, std::list<aiMesh*>& pSceneMeshList, std::list<aiMaterial*>& pSceneMaterialList) const
|
|
|
/// To create mesh and material kept in <Schape>.
|
|
|
/// \param pShapeNodeElement - reference to node element which kept <Shape> data.
|
|
|
/// \param pNodeMeshInd - reference to list with mesh indices. When pShapeNodeElement will read new mesh index will be added to this list.
|
|
@@ -291,7 +320,6 @@ private:
|
|
|
void Postprocess_BuildShape(const CX3DImporter_NodeElement_Shape& pShapeNodeElement, std::list<unsigned int>& pNodeMeshInd,
|
|
|
std::list<aiMesh*>& pSceneMeshList, std::list<aiMaterial*>& pSceneMaterialList) const;
|
|
|
|
|
|
- /// \fn void Postprocess_CollectMetadata(aiNode& pSceneNode, const CX3DImporter_NodeElement& pNodeElement) const
|
|
|
/// Check if child elements of node element is metadata and add it to scene node.
|
|
|
/// \param [in] pNodeElement - node element where metadata is searching.
|
|
|
/// \param [out] pSceneNode - scene node in which metadata will be added.
|
|
@@ -301,13 +329,11 @@ private:
|
|
|
/************* Functions: throw set ************/
|
|
|
/***********************************************/
|
|
|
|
|
|
- /// \fn void Throw_ArgOutOfRange(const std::string& pArgument)
|
|
|
/// Call that function when argument is out of range and exception must be raised.
|
|
|
/// \throw DeadlyImportError.
|
|
|
/// \param [in] pArgument - argument name.
|
|
|
void Throw_ArgOutOfRange(const std::string& pArgument);
|
|
|
|
|
|
- /// \fn void Throw_CloseNotFound(const std::string& pNode)
|
|
|
/// Call that function when close tag of node not found and exception must be raised.
|
|
|
/// E.g.:
|
|
|
/// <Scene>
|
|
@@ -317,31 +343,26 @@ private:
|
|
|
/// \param [in] pNode - node name in which exception happened.
|
|
|
void Throw_CloseNotFound(const std::string& pNode);
|
|
|
|
|
|
- /// \fn void Throw_ConvertFail_Str2ArrF(const std::string& pAttrValue)
|
|
|
/// Call that function when string value can not be converted to floating point value and exception must be raised.
|
|
|
/// \param [in] pAttrValue - attribute value.
|
|
|
/// \throw DeadlyImportError.
|
|
|
void Throw_ConvertFail_Str2ArrF(const std::string& pAttrValue);
|
|
|
|
|
|
- /// \fn void Throw_DEF_And_USE()
|
|
|
/// Call that function when in node defined attributes "DEF" and "USE" and exception must be raised.
|
|
|
/// E.g.: <Box DEF="BigBox" USE="MegaBox">
|
|
|
/// \throw DeadlyImportError.
|
|
|
void Throw_DEF_And_USE();
|
|
|
|
|
|
- /// \fn void Throw_IncorrectAttr(const std::string& pAttrName)
|
|
|
/// Call that function when attribute name is incorrect and exception must be raised.
|
|
|
/// \param [in] pAttrName - attribute name.
|
|
|
/// \throw DeadlyImportError.
|
|
|
void Throw_IncorrectAttr(const std::string& pAttrName);
|
|
|
|
|
|
- /// \fn void Throw_IncorrectAttrValue(const std::string& pAttrName)
|
|
|
/// Call that function when attribute value is incorrect and exception must be raised.
|
|
|
/// \param [in] pAttrName - attribute name.
|
|
|
/// \throw DeadlyImportError.
|
|
|
void Throw_IncorrectAttrValue(const std::string& pAttrName);
|
|
|
|
|
|
- /// \fn void Throw_MoreThanOnceDefined(const std::string& pNode, const std::string& pDescription)
|
|
|
/// Call that function when some type of nodes are defined twice or more when must be used only once and exception must be raised.
|
|
|
/// E.g.:
|
|
|
/// <Shape>
|
|
@@ -353,7 +374,6 @@ private:
|
|
|
/// \param [in] pDescription - message about error. E.g. what the node defined while exception raised.
|
|
|
void Throw_MoreThanOnceDefined(const std::string& pNodeType, const std::string& pDescription);
|
|
|
|
|
|
- /// \fn void Throw_TagCountIncorrect(const std::string& pNode)
|
|
|
/// Call that function when count of opening and closing tags which create group(e.g. <Group>) are not equal and exception must be raised.
|
|
|
/// E.g.:
|
|
|
/// <Scene>
|
|
@@ -365,7 +385,6 @@ private:
|
|
|
/// \param [in] pNode - node name in which exception happened.
|
|
|
void Throw_TagCountIncorrect(const std::string& pNode);
|
|
|
|
|
|
- /// \fn void Throw_USE_NotFound(const std::string& pAttrValue)
|
|
|
/// Call that function when defined in "USE" element are not found in graph and exception must be raised.
|
|
|
/// \param [in] pAttrValue - "USE" attribute value.
|
|
|
/// \throw DeadlyImportError.
|
|
@@ -375,15 +394,12 @@ private:
|
|
|
/************** Functions: LOG set *************/
|
|
|
/***********************************************/
|
|
|
|
|
|
- /// \fn void LogInfo(const std::string& pMessage)
|
|
|
/// Short variant for calling \ref DefaultLogger::get()->info()
|
|
|
void LogInfo(const std::string& pMessage) { DefaultLogger::get()->info(pMessage); }
|
|
|
|
|
|
- /// \fn void LogWarning(const std::string& pMessage)
|
|
|
/// Short variant for calling \ref DefaultLogger::get()->warn()
|
|
|
void LogWarning(const std::string& pMessage) { DefaultLogger::get()->warn(pMessage); }
|
|
|
|
|
|
- /// \fn void LogError(const std::string& pMessage)
|
|
|
/// Short variant for calling \ref DefaultLogger::get()->error()
|
|
|
void LogError(const std::string& pMessage) { DefaultLogger::get()->error(pMessage); }
|
|
|
|
|
@@ -391,144 +407,117 @@ private:
|
|
|
/************** Functions: XML set *************/
|
|
|
/***********************************************/
|
|
|
|
|
|
- /// \fn void XML_CheckNode_MustBeEmpty()
|
|
|
/// Chek if current node is empty: <node />. If not then exception will throwed.
|
|
|
void XML_CheckNode_MustBeEmpty();
|
|
|
|
|
|
- /// \fn bool XML_CheckNode_NameEqual(const std::string& pNodeName)
|
|
|
/// Chek if current node name is equal to pNodeName.
|
|
|
/// \param [in] pNodeName - name for checking.
|
|
|
/// return true if current node name is equal to pNodeName, else - false.
|
|
|
bool XML_CheckNode_NameEqual(const std::string& pNodeName) { return mReader->getNodeName() == pNodeName; }
|
|
|
|
|
|
- /// \fn void XML_CheckNode_SkipUnsupported(const std::string& pParentNodeName)
|
|
|
/// Skip unsupported node and report about that. Depend on node name can be skipped begin tag of node all whole node.
|
|
|
/// \param [in] pParentNodeName - parent node name. Used for reporting.
|
|
|
void XML_CheckNode_SkipUnsupported(const std::string& pParentNodeName);
|
|
|
|
|
|
- /// \fn bool XML_SearchNode(const std::string& pNodeName)
|
|
|
/// Search for specified node in file. XML file read pointer(mReader) will point to found node or file end after search is end.
|
|
|
/// \param [in] pNodeName - requested node name.
|
|
|
/// return true - if node is found, else - false.
|
|
|
bool XML_SearchNode(const std::string& pNodeName);
|
|
|
|
|
|
- /// \fn bool XML_ReadNode_GetAttrVal_AsBool(const int pAttrIdx)
|
|
|
/// Read attribute value.
|
|
|
/// \param [in] pAttrIdx - attribute index (\ref mReader->getAttribute* set).
|
|
|
/// \return read data.
|
|
|
bool XML_ReadNode_GetAttrVal_AsBool(const int pAttrIdx);
|
|
|
|
|
|
- /// \fn float XML_ReadNode_GetAttrVal_AsFloat(const int pAttrIdx)
|
|
|
/// Read attribute value.
|
|
|
/// \param [in] pAttrIdx - attribute index (\ref mReader->getAttribute* set).
|
|
|
/// \return read data.
|
|
|
float XML_ReadNode_GetAttrVal_AsFloat(const int pAttrIdx);
|
|
|
|
|
|
- /// \fn int32_t XML_ReadNode_GetAttrVal_AsI32(const int pAttrIdx)
|
|
|
/// Read attribute value.
|
|
|
/// \param [in] pAttrIdx - attribute index (\ref mReader->getAttribute* set).
|
|
|
/// \return read data.
|
|
|
int32_t XML_ReadNode_GetAttrVal_AsI32(const int pAttrIdx);
|
|
|
|
|
|
- /// \fn void XML_ReadNode_GetAttrVal_AsCol3f(const int pAttrIdx, aiColor3D& pValue)
|
|
|
/// Read attribute value.
|
|
|
/// \param [in] pAttrIdx - attribute index (\ref mReader->getAttribute* set).
|
|
|
/// \param [out] pValue - read data.
|
|
|
void XML_ReadNode_GetAttrVal_AsCol3f(const int pAttrIdx, aiColor3D& pValue);
|
|
|
|
|
|
- /// \fn void XML_ReadNode_GetAttrVal_AsVec2f(const int pAttrIdx, aiVector2D& pValue)
|
|
|
/// Read attribute value.
|
|
|
/// \param [in] pAttrIdx - attribute index (\ref mReader->getAttribute* set).
|
|
|
/// \param [out] pValue - read data.
|
|
|
void XML_ReadNode_GetAttrVal_AsVec2f(const int pAttrIdx, aiVector2D& pValue);
|
|
|
|
|
|
- /// \fn void XML_ReadNode_GetAttrVal_AsVec3f(const int pAttrIdx, aiVector3D& pValue)
|
|
|
/// Read attribute value.
|
|
|
/// \param [in] pAttrIdx - attribute index (\ref mReader->getAttribute* set).
|
|
|
/// \param [out] pValue - read data.
|
|
|
void XML_ReadNode_GetAttrVal_AsVec3f(const int pAttrIdx, aiVector3D& pValue);
|
|
|
|
|
|
- /// \fn void XML_ReadNode_GetAttrVal_AsListB(const int pAttrIdx, std::list<bool>& pValue)
|
|
|
/// Read attribute value.
|
|
|
/// \param [in] pAttrIdx - attribute index (\ref mReader->getAttribute* set).
|
|
|
/// \param [out] pValue - read data.
|
|
|
void XML_ReadNode_GetAttrVal_AsListB(const int pAttrIdx, std::list<bool>& pValue);
|
|
|
|
|
|
- /// \fn void XML_ReadNode_GetAttrVal_AsArrB(const int pAttrIdx, std::vector<bool>& pValue)
|
|
|
/// \overload void XML_ReadNode_GetAttrVal_AsListBool(const int pAttrIdx, std::list<bool>& pValue)
|
|
|
void XML_ReadNode_GetAttrVal_AsArrB(const int pAttrIdx, std::vector<bool>& pValue);
|
|
|
|
|
|
- /// \fn void XML_ReadNode_GetAttrVal_AsListI32(const int pAttrIdx, std::list<int32_t>& pValue)
|
|
|
/// Read attribute value.
|
|
|
/// \param [in] pAttrIdx - attribute index (\ref mReader->getAttribute* set).
|
|
|
/// \param [out] pValue - read data.
|
|
|
void XML_ReadNode_GetAttrVal_AsListI32(const int pAttrIdx, std::list<int32_t>& pValue);
|
|
|
|
|
|
- /// \fn void XML_ReadNode_GetAttrVal_AsArrI32(const int pAttrIdx, std::vector<int32_t>& pValue)
|
|
|
/// \overload void XML_ReadNode_GetAttrVal_AsListI32(const int pAttrIdx, std::list<int32_t>& pValue)
|
|
|
void XML_ReadNode_GetAttrVal_AsArrI32(const int pAttrIdx, std::vector<int32_t>& pValue);
|
|
|
|
|
|
- /// \fn void XML_ReadNode_GetAttrVal_AsListF(const int pAttrIdx, std::list<float>& pValue)
|
|
|
/// Read attribute value.
|
|
|
/// \param [in] pAttrIdx - attribute index (\ref mReader->getAttribute* set).
|
|
|
/// \param [out] pValue - read data.
|
|
|
void XML_ReadNode_GetAttrVal_AsListF(const int pAttrIdx, std::list<float>& pValue);
|
|
|
|
|
|
- /// \fn void XML_ReadNode_GetAttrVal_AsArrF(const int pAttrIdx, std::vector<float>& pValue)
|
|
|
- /// \overload void XML_ReadNode_GetAttrVal_AsListF(const int pAttrIdx, std::list<float>& pValue)
|
|
|
+ /// \overload void XML_ReadNode_GetAttrVal_AsListF(const int pAttrIdx, std::list<float>& pValue)
|
|
|
void XML_ReadNode_GetAttrVal_AsArrF(const int pAttrIdx, std::vector<float>& pValue);
|
|
|
|
|
|
- /// \fn void XML_ReadNode_GetAttrVal_AsListD(const int pAttrIdx, std::list<double>& pValue)
|
|
|
- /// Read attribute value.
|
|
|
+ /// Read attribute value.
|
|
|
/// \param [in] pAttrIdx - attribute index (\ref mReader->getAttribute* set).
|
|
|
/// \param [out] pValue - read data.
|
|
|
void XML_ReadNode_GetAttrVal_AsListD(const int pAttrIdx, std::list<double>& pValue);
|
|
|
|
|
|
- /// \fn void XML_ReadNode_GetAttrVal_AsArrD(const int pAttrIdx, std::vector<double>& pValue)
|
|
|
/// \overload void XML_ReadNode_GetAttrVal_AsListD(const int pAttrIdx, std::list<double>& pValue)
|
|
|
void XML_ReadNode_GetAttrVal_AsArrD(const int pAttrIdx, std::vector<double>& pValue);
|
|
|
|
|
|
- /// \fn void XML_ReadNode_GetAttrVal_AsListCol3f(const int pAttrIdx, std::list<aiColor3D>& pValue)
|
|
|
/// Read attribute value.
|
|
|
/// \param [in] pAttrIdx - attribute index (\ref mReader->getAttribute* set).
|
|
|
/// \param [out] pValue - read data.
|
|
|
void XML_ReadNode_GetAttrVal_AsListCol3f(const int pAttrIdx, std::list<aiColor3D>& pValue);
|
|
|
|
|
|
- /// \fn void XML_ReadNode_GetAttrVal_AsArrCol3f(const int pAttrIdx, std::vector<aiColor3D>& pValue)
|
|
|
/// \overload void XML_ReadNode_GetAttrVal_AsListCol3f(const int pAttrIdx, std::vector<aiColor3D>& pValue)
|
|
|
void XML_ReadNode_GetAttrVal_AsArrCol3f(const int pAttrIdx, std::vector<aiColor3D>& pValue);
|
|
|
|
|
|
- /// \fn void XML_ReadNode_GetAttrVal_AsListCol4f(const int pAttrIdx, std::list<aiColor4D>& pValue)
|
|
|
/// Read attribute value.
|
|
|
/// \param [in] pAttrIdx - attribute index (\ref mReader->getAttribute* set).
|
|
|
/// \param [out] pValue - read data.
|
|
|
void XML_ReadNode_GetAttrVal_AsListCol4f(const int pAttrIdx, std::list<aiColor4D>& pValue);
|
|
|
|
|
|
- /// \fn void XML_ReadNode_GetAttrVal_AsArrCol4f(const int pAttrIdx, std::vector<aiColor4D>& pValue)
|
|
|
/// \overload void XML_ReadNode_GetAttrVal_AsListCol4f(const int pAttrIdx, std::list<aiColor4D>& pValue)
|
|
|
void XML_ReadNode_GetAttrVal_AsArrCol4f(const int pAttrIdx, std::vector<aiColor4D>& pValue);
|
|
|
|
|
|
- /// \fn void XML_ReadNode_GetAttrVal_AsListVec2f(const int pAttrIdx, std::list<aiVector2D>& pValue)
|
|
|
/// Read attribute value.
|
|
|
/// \param [in] pAttrIdx - attribute index (\ref mReader->getAttribute* set).
|
|
|
/// \param [out] pValue - read data.
|
|
|
void XML_ReadNode_GetAttrVal_AsListVec2f(const int pAttrIdx, std::list<aiVector2D>& pValue);
|
|
|
|
|
|
- /// \fn void XML_ReadNode_GetAttrVal_AsArrVec2f(const int pAttrIdx, std::vector<aiVector2D>& pValue)
|
|
|
/// \overload void XML_ReadNode_GetAttrVal_AsListVec2f(const int pAttrIdx, std::list<aiVector2D>& pValue)
|
|
|
void XML_ReadNode_GetAttrVal_AsArrVec2f(const int pAttrIdx, std::vector<aiVector2D>& pValue);
|
|
|
|
|
|
- /// \fn void XML_ReadNode_GetAttrVal_AsListVec3f(const int pAttrIdx, std::list<aiVector3D>& pValue)
|
|
|
/// Read attribute value.
|
|
|
/// \param [in] pAttrIdx - attribute index (\ref mReader->getAttribute* set).
|
|
|
/// \param [out] pValue - read data.
|
|
|
void XML_ReadNode_GetAttrVal_AsListVec3f(const int pAttrIdx, std::list<aiVector3D>& pValue);
|
|
|
|
|
|
- /// \fn void XML_ReadNode_GetAttrVal_AsArrVec3f(const int pAttrIdx, std::vector<aiVector3D>& pValue)
|
|
|
/// \overload void XML_ReadNode_GetAttrVal_AsListVec3f(const int pAttrIdx, std::list<aiVector3D>& pValue)
|
|
|
void XML_ReadNode_GetAttrVal_AsArrVec3f(const int pAttrIdx, std::vector<aiVector3D>& pValue);
|
|
|
|
|
|
- /// \fn void XML_ReadNode_GetAttrVal_AsListS(const int pAttrIdx, std::list<std::string>& pValue)
|
|
|
/// Read attribute value.
|
|
|
/// \param [in] pAttrIdx - attribute index (\ref mReader->getAttribute* set).
|
|
|
/// \param [out] pValue - read data.
|
|
@@ -538,14 +527,12 @@ private:
|
|
|
/******* Functions: geometry helper set *******/
|
|
|
/***********************************************/
|
|
|
|
|
|
- /// \fn aiVector3D GeometryHelper_Make_Point2D(const float pAngle, const float pRadius)
|
|
|
/// Make point on surface oXY.
|
|
|
/// \param [in] pAngle - angle in radians between radius-vector of point and oX axis. Angle extends from the oX axis counterclockwise to the radius-vector.
|
|
|
/// \param [in] pRadius - length of radius-vector.
|
|
|
/// \return made point coordinates.
|
|
|
aiVector3D GeometryHelper_Make_Point2D(const float pAngle, const float pRadius);
|
|
|
|
|
|
- /// \fn void GeometryHelper_Make_Arc2D(const float pStartAngle, const float pEndAngle, const float pRadius, size_t pNumSegments, std::list<aiVector3D>& pVertices)
|
|
|
/// Make 2D figure - linear circular arc with center in (0, 0). The z-coordinate is 0. The arc extends from the pStartAngle counterclockwise
|
|
|
/// to the pEndAngle. If pStartAngle and pEndAngle have the same value, a circle is specified. If the absolute difference between pStartAngle
|
|
|
/// and pEndAngle is greater than or equal to 2pi, a circle is specified.
|
|
@@ -556,32 +543,27 @@ private:
|
|
|
/// \param [out] pVertices - generated vertices.
|
|
|
void GeometryHelper_Make_Arc2D(const float pStartAngle, const float pEndAngle, const float pRadius, size_t pNumSegments, std::list<aiVector3D>& pVertices);
|
|
|
|
|
|
- /// \fn void GeometryHelper_Extend_PointToLine(const std::list<aiVector3D>& pPoint, std::list<aiVector3D>& pLine)
|
|
|
/// Create line set from point set.
|
|
|
/// \param [in] pPoint - input points list.
|
|
|
/// \param [out] pLine - made lines list.
|
|
|
void GeometryHelper_Extend_PointToLine(const std::list<aiVector3D>& pPoint, std::list<aiVector3D>& pLine);
|
|
|
|
|
|
- /// \fn GeometryHelper_Extend_PolylineIdxToLineIdx(const std::list<int32_t>& pPolylineCoordIdx, std::list<int32_t>& pLineCoordIdx)
|
|
|
/// Create CoordIdx of line set from CoordIdx of polyline set.
|
|
|
/// \param [in] pPolylineCoordIdx - vertices indices divided by delimiter "-1". Must contain faces with two or more indices.
|
|
|
/// \param [out] pLineCoordIdx - made CoordIdx of line set.
|
|
|
void GeometryHelper_Extend_PolylineIdxToLineIdx(const std::list<int32_t>& pPolylineCoordIdx, std::list<int32_t>& pLineCoordIdx);
|
|
|
|
|
|
- /// \fn void GeometryHelper_MakeQL_RectParallelepiped(const aiVector3D& pSize, std::list<aiVector3D>& pVertices)
|
|
|
/// Make 3D body - rectangular parallelepiped with center in (0, 0). QL mean quadlist (\sa pVertices).
|
|
|
/// \param [in] pSize - scale factor for body for every axis. E.g. (1, 2, 1) mean: X-size and Z-size - 1, Y-size - 2.
|
|
|
/// \param [out] pVertices - generated vertices. The list of vertices is grouped in quads.
|
|
|
void GeometryHelper_MakeQL_RectParallelepiped(const aiVector3D& pSize, std::list<aiVector3D>& pVertices);
|
|
|
|
|
|
- /// \fn void GeometryHelper_CoordIdxStr2FacesArr(const std::list<int32_t>& pCoordIdx, std::vector<aiFace>& pFaces, unsigned int& pPrimitiveTypes) const
|
|
|
/// Create faces array from vertices indices array.
|
|
|
/// \param [in] pCoordIdx - vertices indices divided by delimiter "-1".
|
|
|
/// \param [in] pFaces - created faces array.
|
|
|
/// \param [in] pPrimitiveTypes - type of primitives in faces.
|
|
|
void GeometryHelper_CoordIdxStr2FacesArr(const std::list<int32_t>& pCoordIdx, std::vector<aiFace>& pFaces, unsigned int& pPrimitiveTypes) const;
|
|
|
|
|
|
- /// \fn void MeshGeometry_AddColor(aiMesh& pMesh, const std::list<int32_t>& pCoordIdx, const std::list<aiColor4D>& pColors, const bool pColorPerVertex) const
|
|
|
/// Add colors to mesh.
|
|
|
/// a. If colorPerVertex is FALSE, colours are applied to each face, as follows:
|
|
|
/// If the colorIndex field is not empty, one colour is used for each face of the mesh. There shall be at least as many indices in the
|
|
@@ -602,41 +584,33 @@ private:
|
|
|
void MeshGeometry_AddColor(aiMesh& pMesh, const std::list<int32_t>& pCoordIdx, const std::list<int32_t>& pColorIdx,
|
|
|
const std::list<aiColor4D>& pColors, const bool pColorPerVertex) const;
|
|
|
|
|
|
- /// \fn void MeshGeometry_AddColor(aiMesh& pMesh, const std::list<int32_t>& pCoordIdx, const std::list<int32_t>& pColorIdx, const std::list<aiColor3D>& pColors, const bool pColorPerVertex) const;
|
|
|
/// \overload void MeshGeometry_AddColor(aiMesh& pMesh, const std::list<int32_t>& pCoordIdx, const std::list<int32_t>& pColorIdx, const std::list<aiColor4D>& pColors, const bool pColorPerVertex) const;
|
|
|
void MeshGeometry_AddColor(aiMesh& pMesh, const std::list<int32_t>& pCoordIdx, const std::list<int32_t>& pColorIdx,
|
|
|
const std::list<aiColor3D>& pColors, const bool pColorPerVertex) const;
|
|
|
|
|
|
- /// \fn void MeshGeometry_AddColor(aiMesh& pMesh, const std::list<aiColor4D>& pColors, const bool pColorPerVertex) const
|
|
|
/// Add colors to mesh.
|
|
|
/// \param [in] pMesh - mesh for adding data.
|
|
|
/// \param [in] pColors - defined colors.
|
|
|
/// \param [in] pColorPerVertex - if \ref pColorPerVertex is true then color in \ref pColors defined for every vertex, if false - for every face.
|
|
|
void MeshGeometry_AddColor(aiMesh& pMesh, const std::list<aiColor4D>& pColors, const bool pColorPerVertex) const;
|
|
|
|
|
|
- /// \fn void MeshGeometry_AddColor(aiMesh& pMesh, const std::list<aiColor3D>& pColors, const bool pColorPerVertex) const
|
|
|
/// \overload void MeshGeometry_AddColor(aiMesh& pMesh, const std::list<aiColor4D>& pColors, const bool pColorPerVertex) const
|
|
|
void MeshGeometry_AddColor(aiMesh& pMesh, const std::list<aiColor3D>& pColors, const bool pColorPerVertex) const;
|
|
|
|
|
|
- /// \fn void MeshGeometry_AddNormal(aiMesh& pMesh, const std::list<int32_t>& pCoordIdx, const std::list<int32_t>& pNormalIdx, const std::list<aiVector3D>& pNormals, const bool pNormalPerVertex) const
|
|
|
/// Add normals to mesh. Function work similar to \ref MeshGeometry_AddColor;
|
|
|
void MeshGeometry_AddNormal(aiMesh& pMesh, const std::list<int32_t>& pCoordIdx, const std::list<int32_t>& pNormalIdx,
|
|
|
const std::list<aiVector3D>& pNormals, const bool pNormalPerVertex) const;
|
|
|
|
|
|
- /// \fn void MeshGeometry_AddNormal(aiMesh& pMesh, const std::list<aiVector3D>& pNormals, const bool pNormalPerVertex) const
|
|
|
/// Add normals to mesh. Function work similar to \ref MeshGeometry_AddColor;
|
|
|
void MeshGeometry_AddNormal(aiMesh& pMesh, const std::list<aiVector3D>& pNormals, const bool pNormalPerVertex) const;
|
|
|
|
|
|
- /// \fn void MeshGeometry_AddTexCoord(aiMesh& pMesh, const std::list<int32_t>& pCoordIdx, const std::list<int32_t>& pTexCoordIdx, const std::list<aiVector2D>& pTexCoords) const
|
|
|
- /// Add texture coordinates to mesh. Function work similar to \ref MeshGeometry_AddColor;
|
|
|
+ /// Add texture coordinates to mesh. Function work similar to \ref MeshGeometry_AddColor;
|
|
|
void MeshGeometry_AddTexCoord(aiMesh& pMesh, const std::list<int32_t>& pCoordIdx, const std::list<int32_t>& pTexCoordIdx,
|
|
|
const std::list<aiVector2D>& pTexCoords) const;
|
|
|
|
|
|
- /// \fn void MeshGeometry_AddTexCoord(aiMesh& pMesh, const std::list<aiVector2D>& pTexCoords) const
|
|
|
- /// Add texture coordinates to mesh. Function work similar to \ref MeshGeometry_AddColor;
|
|
|
+ /// Add texture coordinates to mesh. Function work similar to \ref MeshGeometry_AddColor;
|
|
|
void MeshGeometry_AddTexCoord(aiMesh& pMesh, const std::list<aiVector2D>& pTexCoords) const;
|
|
|
|
|
|
- /// \fn aiMesh* GeometryHelper_MakeMesh(const std::list<int32_t>& pCoordIdx, const std::list<aiVector3D>& pVertices) const
|
|
|
/// Create mesh.
|
|
|
/// \param [in] pCoordIdx - vertices indices divided by delimiter "-1".
|
|
|
/// \param [in] pVertices - vertices of mesh.
|
|
@@ -647,36 +621,30 @@ private:
|
|
|
/******** Functions: parse set private *********/
|
|
|
/***********************************************/
|
|
|
|
|
|
- /// \fn void ParseHelper_Group_Begin()
|
|
|
/// Create node element with type "Node" in scene graph. That operation is needed when you enter to X3D group node
|
|
|
/// like <Group>, <Transform> etc. When exiting from X3D group node(e.g. </Group>) \ref ParseHelper_Node_Exit must
|
|
|
/// be called.
|
|
|
/// \param [in] pStatic - flag: if true then static node is created(e.g. <StaticGroup>).
|
|
|
void ParseHelper_Group_Begin(const bool pStatic = false);
|
|
|
|
|
|
- /// \fn void ParseHelper_Node_Enter(CX3DImporter_NodeElement* pNode)
|
|
|
/// Make pNode as current and enter deeper for parsing child nodes. At end \ref ParseHelper_Node_Exit must be called.
|
|
|
/// \param [in] pNode - new current node.
|
|
|
void ParseHelper_Node_Enter(CX3DImporter_NodeElement* pNode);
|
|
|
|
|
|
- /// \fn void ParseHelper_Group_End()
|
|
|
/// This function must be called when exiting from X3D group node(e.g. </Group>). \ref ParseHelper_Group_Begin.
|
|
|
void ParseHelper_Node_Exit();
|
|
|
|
|
|
- /// \fn void ParseHelper_FixTruncatedFloatString(const char* pInStr, std::string& pOutString)
|
|
|
/// Attribute values of floating point types can take form ".x"(without leading zero). irrXMLReader can not read this form of values and it
|
|
|
/// must be converted to right form - "0.xxx".
|
|
|
/// \param [in] pInStr - pointer to input string which can contain incorrect form of values.
|
|
|
/// \param [out[ pOutString - output string with right form of values.
|
|
|
void ParseHelper_FixTruncatedFloatString(const char* pInStr, std::string& pOutString);
|
|
|
|
|
|
- /// \fn bool ParseHelper_CheckRead_X3DMetadataObject()
|
|
|
/// Check if current node has nodes of type X3DMetadataObject. Why we must do it? Because X3DMetadataObject can be in any non-empty X3DNode.
|
|
|
/// Meaning that X3DMetadataObject can be in any non-empty node in <Scene>.
|
|
|
/// \return true - if metadata node are found and parsed, false - metadata not found.
|
|
|
bool ParseHelper_CheckRead_X3DMetadataObject();
|
|
|
|
|
|
- /// \fn bool ParseHelper_CheckRead_X3DMetadataObject()
|
|
|
/// Check if current node has nodes of type X3DGeometricPropertyNode. X3DGeometricPropertyNode
|
|
|
/// X3DGeometricPropertyNode inheritors:
|
|
|
/// <FogCoordinate>, <HAnimDisplacer>, <Color>, <ColorRGBA>, <Coordinate>, <CoordinateDouble>, <GeoCoordinate>, <Normal>,
|
|
@@ -685,42 +653,33 @@ private:
|
|
|
/// \return true - if nodes are found and parsed, false - nodes not found.
|
|
|
bool ParseHelper_CheckRead_X3DGeometricPropertyNode();
|
|
|
|
|
|
- /// \fn void ParseNode_Root()
|
|
|
/// Parse <X3D> node of the file.
|
|
|
void ParseNode_Root();
|
|
|
|
|
|
- /// \fn void ParseNode_Head()
|
|
|
/// Parse <head> node of the file.
|
|
|
void ParseNode_Head();
|
|
|
|
|
|
- /// \fn void ParseNode_Root()
|
|
|
/// Parse <Scene> node of the file.
|
|
|
void ParseNode_Scene();
|
|
|
|
|
|
- /// \fn void ParseNode_Metadata(CX3DImporter_NodeElement* pParent, const std::string& pNodeName)
|
|
|
/// Parse child nodes of <Metadata*> node.
|
|
|
/// \param [in] pNodeName - parsed node name. Must be set because that function is general and name needed for checking the end
|
|
|
/// and error reporing.
|
|
|
/// \param [in] pParentElement - parent metadata element.
|
|
|
void ParseNode_Metadata(CX3DImporter_NodeElement* pParentElement, const std::string& pNodeName);
|
|
|
|
|
|
- /// \fn void ParseNode_MetadataBoolean()
|
|
|
/// Parse <MetadataBoolean> node of the file.
|
|
|
void ParseNode_MetadataBoolean();
|
|
|
|
|
|
- /// \fn void ParseNode_MetadataDouble()
|
|
|
/// Parse <MetadataDouble> node of the file.
|
|
|
void ParseNode_MetadataDouble();
|
|
|
|
|
|
- /// \fn void ParseNode_MetadataFloat()
|
|
|
/// Parse <MetadataFloat> node of the file.
|
|
|
void ParseNode_MetadataFloat();
|
|
|
|
|
|
- /// \fn void ParseNode_MetadataInteger()
|
|
|
/// Parse <MetadataInteger> node of the file.
|
|
|
void ParseNode_MetadataInteger();
|
|
|
|
|
|
- /// \fn void ParseNode_MetadataSet()
|
|
|
/// Parse <MetadataSet> node of the file.
|
|
|
void ParseNode_MetadataSet();
|
|
|
|
|
@@ -728,222 +687,160 @@ private:
|
|
|
/// Parse <MetadataString> node of the file.
|
|
|
void ParseNode_MetadataString();
|
|
|
|
|
|
- /// \fn void ParseNode_Geometry2D_Arc2D()
|
|
|
/// Parse <Arc2D> node of the file.
|
|
|
void ParseNode_Geometry2D_Arc2D();
|
|
|
|
|
|
- /// \fn void ParseNode_Geometry2D_ArcClose2D()
|
|
|
/// Parse <ArcClose2D> node of the file.
|
|
|
void ParseNode_Geometry2D_ArcClose2D();
|
|
|
|
|
|
- /// \fn void ParseNode_Geometry2D_Circle2D()
|
|
|
/// Parse <Circle2D> node of the file.
|
|
|
void ParseNode_Geometry2D_Circle2D();
|
|
|
|
|
|
- /// \fn void ParseNode_Geometry2D_Disk2D()
|
|
|
/// Parse <Disk2D> node of the file.
|
|
|
void ParseNode_Geometry2D_Disk2D();
|
|
|
|
|
|
- /// \fn void ParseNode_Geometry2D_Polyline2D()
|
|
|
/// Parse <Polyline2D> node of the file.
|
|
|
void ParseNode_Geometry2D_Polyline2D();
|
|
|
|
|
|
- /// \fn void ParseNode_Geometry2D_Polypoint2D()
|
|
|
/// Parse <Polypoint2D> node of the file.
|
|
|
void ParseNode_Geometry2D_Polypoint2D();
|
|
|
|
|
|
- /// \fn void ParseNode_Geometry2D_Rectangle2D()
|
|
|
/// Parse <Rectangle2D> node of the file.
|
|
|
void ParseNode_Geometry2D_Rectangle2D();
|
|
|
|
|
|
- /// \fn void ParseNode_Geometry2D_TriangleSet2D()
|
|
|
/// Parse <TriangleSet2D> node of the file.
|
|
|
void ParseNode_Geometry2D_TriangleSet2D();
|
|
|
|
|
|
- /// \fn void ParseNode_Geometry3D_Box()
|
|
|
/// Parse <Box> node of the file.
|
|
|
void ParseNode_Geometry3D_Box();
|
|
|
|
|
|
- /// \fn void ParseNode_Geometry3D_Cone()
|
|
|
/// Parse <Cone> node of the file.
|
|
|
void ParseNode_Geometry3D_Cone();
|
|
|
|
|
|
- /// \fn void ParseNode_Geometry3D_Cylinder()
|
|
|
/// Parse <Cylinder> node of the file.
|
|
|
void ParseNode_Geometry3D_Cylinder();
|
|
|
|
|
|
- /// \fn void ParseNode_Geometry3D_ElevationGrid()
|
|
|
/// Parse <ElevationGrid> node of the file.
|
|
|
void ParseNode_Geometry3D_ElevationGrid();
|
|
|
|
|
|
- /// \fn void ParseNode_Geometry3D_Extrusion()
|
|
|
/// Parse <Extrusion> node of the file.
|
|
|
void ParseNode_Geometry3D_Extrusion();
|
|
|
|
|
|
- /// \fn void ParseNode_Geometry3D_IndexedFaceSet()
|
|
|
/// Parse <IndexedFaceSet> node of the file.
|
|
|
void ParseNode_Geometry3D_IndexedFaceSet();
|
|
|
|
|
|
- /// \fn void ParseNode_Geometry3D_Sphere()
|
|
|
/// Parse <Sphere> node of the file.
|
|
|
void ParseNode_Geometry3D_Sphere();
|
|
|
|
|
|
- /// \fn void ParseNode_Grouping_Group()
|
|
|
/// Parse <Group> node of the file. And create new node in scene graph.
|
|
|
void ParseNode_Grouping_Group();
|
|
|
|
|
|
- /// \fn void ParseNode_Grouping_GroupEnd()
|
|
|
/// Doing actions at an exit from <Group>. Walk up in scene graph.
|
|
|
void ParseNode_Grouping_GroupEnd();
|
|
|
|
|
|
- /// \fn void ParseNode_Grouping_StaticGroup()
|
|
|
/// Parse <StaticGroup> node of the file. And create new node in scene graph.
|
|
|
void ParseNode_Grouping_StaticGroup();
|
|
|
|
|
|
- /// \fn void ParseNode_Grouping_StaticGroupEnd()
|
|
|
/// Doing actions at an exit from <StaticGroup>. Walk up in scene graph.
|
|
|
void ParseNode_Grouping_StaticGroupEnd();
|
|
|
|
|
|
- /// \fn void ParseNode_Grouping_Switch()
|
|
|
/// Parse <Switch> node of the file. And create new node in scene graph.
|
|
|
void ParseNode_Grouping_Switch();
|
|
|
|
|
|
- /// \fn void ParseNode_Grouping_SwitchEnd()
|
|
|
/// Doing actions at an exit from <Switch>. Walk up in scene graph.
|
|
|
void ParseNode_Grouping_SwitchEnd();
|
|
|
|
|
|
- /// \fn void ParseNode_Grouping_Transform()
|
|
|
/// Parse <Transform> node of the file. And create new node in scene graph.
|
|
|
void ParseNode_Grouping_Transform();
|
|
|
|
|
|
- /// \fn void ParseNode_Grouping_TransformEnd()
|
|
|
/// Doing actions at an exit from <Transform>. Walk up in scene graph.
|
|
|
void ParseNode_Grouping_TransformEnd();
|
|
|
|
|
|
- /// \fn void ParseNode_Rendering_Color()
|
|
|
/// Parse <Color> node of the file.
|
|
|
void ParseNode_Rendering_Color();
|
|
|
|
|
|
- /// \fn void ParseNode_Rendering_ColorRGBA()
|
|
|
/// Parse <ColorRGBA> node of the file.
|
|
|
void ParseNode_Rendering_ColorRGBA();
|
|
|
|
|
|
- /// \fn void ParseNode_Rendering_Coordinate()
|
|
|
/// Parse <Coordinate> node of the file.
|
|
|
void ParseNode_Rendering_Coordinate();
|
|
|
|
|
|
- /// \fn void ParseNode_Rendering_Normal()
|
|
|
/// Parse <Normal> node of the file.
|
|
|
void ParseNode_Rendering_Normal();
|
|
|
|
|
|
- /// \fn void ParseNode_Rendering_IndexedLineSet()
|
|
|
/// Parse <IndexedLineSet> node of the file.
|
|
|
void ParseNode_Rendering_IndexedLineSet();
|
|
|
|
|
|
- /// \fn void ParseNode_Rendering_IndexedTriangleFanSet()
|
|
|
/// Parse <IndexedTriangleFanSet> node of the file.
|
|
|
void ParseNode_Rendering_IndexedTriangleFanSet();
|
|
|
|
|
|
- /// \fn void ParseNode_Rendering_IndexedTriangleSet()
|
|
|
/// Parse <IndexedTriangleSet> node of the file.
|
|
|
void ParseNode_Rendering_IndexedTriangleSet();
|
|
|
|
|
|
- /// \fn void ParseNode_Rendering_IndexedTriangleStripSet()
|
|
|
/// Parse <IndexedTriangleStripSet> node of the file.
|
|
|
void ParseNode_Rendering_IndexedTriangleStripSet();
|
|
|
|
|
|
- /// \fn void ParseNode_Rendering_LineSet()
|
|
|
/// Parse <LineSet> node of the file.
|
|
|
void ParseNode_Rendering_LineSet();
|
|
|
|
|
|
- /// \fn void ParseNode_Rendering_PointSet()
|
|
|
/// Parse <PointSet> node of the file.
|
|
|
void ParseNode_Rendering_PointSet();
|
|
|
|
|
|
- /// \fn void ParseNode_Rendering_TriangleFanSet()
|
|
|
/// Parse <TriangleFanSet> node of the file.
|
|
|
void ParseNode_Rendering_TriangleFanSet();
|
|
|
|
|
|
- /// \fn void ParseNode_Rendering_TriangleSet()
|
|
|
/// Parse <TriangleSet> node of the file.
|
|
|
void ParseNode_Rendering_TriangleSet();
|
|
|
|
|
|
- /// \fn void ParseNode_Rendering_TriangleStripSet()
|
|
|
/// Parse <TriangleStripSet> node of the file.
|
|
|
void ParseNode_Rendering_TriangleStripSet();
|
|
|
|
|
|
- /// \fn void ParseNode_Texturing_ImageTexture()
|
|
|
/// Parse <ImageTexture> node of the file.
|
|
|
void ParseNode_Texturing_ImageTexture();
|
|
|
|
|
|
- /// \fn void ParseNode_Texturing_TextureCoordinate()
|
|
|
/// Parse <TextureCoordinate> node of the file.
|
|
|
void ParseNode_Texturing_TextureCoordinate();
|
|
|
|
|
|
- /// \fn void ParseNode_Texturing_TextureTransform()
|
|
|
/// Parse <TextureTransform> node of the file.
|
|
|
void ParseNode_Texturing_TextureTransform();
|
|
|
|
|
|
- /// \fn void ParseNode_Shape_Shape()
|
|
|
/// Parse <Shape> node of the file.
|
|
|
void ParseNode_Shape_Shape();
|
|
|
|
|
|
- /// \fn void ParseNode_Shape_Appearance()
|
|
|
/// Parse <Appearance> node of the file.
|
|
|
void ParseNode_Shape_Appearance();
|
|
|
|
|
|
- /// \fn void ParseNode_Shape_Material()
|
|
|
/// Parse <Material> node of the file.
|
|
|
void ParseNode_Shape_Material();
|
|
|
|
|
|
- /// \fn void ParseNode_Networking_Inline()
|
|
|
/// Parse <Inline> node of the file.
|
|
|
void ParseNode_Networking_Inline();
|
|
|
|
|
|
- /// \fn void ParseNode_Lighting_DirectionalLight()
|
|
|
/// Parse <DirectionalLight> node of the file.
|
|
|
void ParseNode_Lighting_DirectionalLight();
|
|
|
|
|
|
- /// \fn void ParseNode_Lighting_PointLight()
|
|
|
/// Parse <PointLight> node of the file.
|
|
|
void ParseNode_Lighting_PointLight();
|
|
|
|
|
|
- /// \fn void ParseNode_Lighting_SpotLight()
|
|
|
/// Parse <SpotLight> node of the file.
|
|
|
void ParseNode_Lighting_SpotLight();
|
|
|
|
|
|
-public:
|
|
|
-
|
|
|
- /// \fn X3DImporter()
|
|
|
- /// Default constructor.
|
|
|
- X3DImporter()
|
|
|
- : NodeElement_Cur(nullptr), mReader(nullptr)
|
|
|
- {}
|
|
|
-
|
|
|
- /// \fn ~X3DImporter()
|
|
|
- /// Default destructor.
|
|
|
- ~X3DImporter();
|
|
|
-
|
|
|
- /***********************************************/
|
|
|
- /******** Functions: parse set, public *********/
|
|
|
- /***********************************************/
|
|
|
-
|
|
|
- /// \fn void ParseFile(const std::string& pFile, IOSystem* pIOHandler)
|
|
|
- /// Parse X3D file and fill scene graph. The function has no return value. Result can be found by analyzing the generated graph.
|
|
|
- /// Also exception can be throwed if trouble will found.
|
|
|
- /// \param [in] pFile - name of file to be parsed.
|
|
|
- /// \param [in] pIOHandler - pointer to IO helper object.
|
|
|
- void ParseFile(const std::string& pFile, IOSystem* pIOHandler);
|
|
|
-
|
|
|
- /***********************************************/
|
|
|
- /********* Functions: BaseImporter set *********/
|
|
|
- /***********************************************/
|
|
|
-
|
|
|
- bool CanRead(const std::string& pFile, IOSystem* pIOHandler, bool pCheckSig) const;
|
|
|
- void GetExtensionList(std::set<std::string>& pExtensionList);
|
|
|
- void InternReadFile(const std::string& pFile, aiScene* pScene, IOSystem* pIOHandler);
|
|
|
- const aiImporterDesc* GetInfo ()const;
|
|
|
-
|
|
|
+private:
|
|
|
+ /***********************************************/
|
|
|
+ /******************** Types ********************/
|
|
|
+ /***********************************************/
|
|
|
+
|
|
|
+ /***********************************************/
|
|
|
+ /****************** Constants ******************/
|
|
|
+ /***********************************************/
|
|
|
+ static const aiImporterDesc Description;
|
|
|
+
|
|
|
+ /***********************************************/
|
|
|
+ /****************** Variables ******************/
|
|
|
+ /***********************************************/
|
|
|
+ CX3DImporter_NodeElement* NodeElement_Cur;///< Current element.
|
|
|
+ irr::io::IrrXMLReader* mReader;///< Pointer to XML-reader object
|
|
|
+ std::string mFileDir;
|
|
|
};// class X3DImporter
|
|
|
|
|
|
}// namespace Assimp
|