00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef NVBLASTEXTEXPORTEROBJREADER_H
00030 #define NVBLASTEXTEXPORTEROBJREADER_H
00031 #include <memory>
00032 #include <string>
00033 #include <vector>
00034 #include "NvBlastExtExporter.h"
00035
00036 namespace Nv
00037 {
00038 namespace Blast
00039 {
00040 class Mesh;
00041
00042 class ObjFileReader : public IMeshFileReader
00043 {
00044 public:
00045 ObjFileReader();
00046 ~ObjFileReader() = default;
00047
00048 virtual void release() override;
00049
00050
00051
00052
00053 virtual void loadFromFile(const char* filename) override;
00054
00055 virtual uint32_t getVerticesCount() const override
00056 {
00057 return mVertexPositions.size();
00058 }
00059
00060 virtual uint32_t getIndicesCount() const override
00061 {
00062 return mIndices.size();
00063 }
00064
00068 virtual bool isCollisionLoaded() override;
00069
00073 virtual uint32_t getCollision(uint32_t*& hullsOffset, Nv::Blast::CollisionHull**& hulls) override;
00074
00078 virtual NvcVec3* getPositionArray() override;
00082 virtual NvcVec3* getNormalsArray() override;
00086 virtual NvcVec2* getUvArray() override;
00090 virtual uint32_t* getIndexArray() override;
00091
00095 int32_t* getMaterialIds() override { return mPerFaceMatId.data(); };
00096
00100 int32_t* getSmoothingGroups() override { return nullptr; };
00101
00105 const char* getMaterialName(int32_t id) override { return mMaterialNames[id].c_str(); }
00106
00110 int32_t getMaterialCount() { return mMaterialNames.size(); };
00111
00112 private:
00113 std::vector<NvcVec3> mVertexPositions;
00114 std::vector<NvcVec3> mVertexNormals;
00115 std::vector<NvcVec2> mVertexUv;
00116 std::vector<uint32_t> mIndices;
00117
00118 std::vector<std::string> mMaterialNames;
00119 std::vector<int32_t> mPerFaceMatId;
00120
00121 };
00122
00123 }
00124 }
00125
00126 #endif // NVBLASTEXTEXPORTEROBJREADER_H