ObjFileImporter.h 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. #ifndef OBJ_FILE_IMPORTER_H_INC
  2. #define OBJ_FILE_IMPORTER_H_INC
  3. #include "BaseImporter.h"
  4. #include <vector>
  5. struct aiMesh;
  6. struct aiNode;
  7. namespace Assimp
  8. {
  9. namespace ObjFile
  10. {
  11. struct Object;
  12. struct Model;
  13. }
  14. /// \class ObjFileImporter
  15. /// \brief IMports a waveform obj file
  16. class ObjFileImporter :
  17. BaseImporter
  18. {
  19. friend class Importer;
  20. //! OB file extention
  21. static const std::string OBJ_EXT;
  22. protected:
  23. /// \brief Default constructor
  24. ObjFileImporter();
  25. /// \brief Destructor
  26. ~ObjFileImporter();
  27. public:
  28. /// \brief Returns whether the class can handle the format of the given file.
  29. /// \remark See BaseImporter::CanRead() for details.
  30. bool CanRead( const std::string& pFile, IOSystem* pIOHandler) const;
  31. private:
  32. //! \brief
  33. void InternReadFile(const std::string& pFile, aiScene* pScene, IOSystem* pIOHandler);
  34. //! \brief
  35. void CreateDataFromImport(const ObjFile::Model* pModel, aiScene* pScene);
  36. //! \brief
  37. aiNode *createNodes(const ObjFile::Model* pModel, const ObjFile::Object* pData,
  38. aiNode *pParent, aiScene* pScene, std::vector<aiMesh*> &MeshArray);
  39. //! \brief
  40. void createTopology(const ObjFile::Model* pModel, const ObjFile::Object* pData,
  41. aiMesh* pMesh);
  42. //! \brief
  43. void createVertexArray(const ObjFile::Model* pModel,
  44. const ObjFile::Object* pCurrentObject, aiMesh* pMesh);
  45. //! \brief
  46. void countObjects(const std::vector<ObjFile::Object*> &rObjects, int &iNumMeshes);
  47. //! \brief
  48. void createMaterial(const ObjFile::Model* pModel, const ObjFile::Object* pData,
  49. aiScene* pScene);
  50. //! \brief
  51. void appendChildToParentNode(aiNode *pParent, aiNode *pChild);
  52. private:
  53. std::vector<char> m_Buffer;
  54. ObjFile::Object *m_pRootObject;
  55. std::string m_strAbsPath;
  56. };
  57. } // Namespace Assimp
  58. #endif