#pragma once #include "IMeshFileWriter.h" #include "fbxsdk.h" #include struct NvBlastAsset; class FbxFileWriter : public IMeshFileWriter { public: FbxFileWriter(); ~FbxFileWriter() = default; virtual bool saveToFile(const NvBlastAsset* asset, std::vector> chunksGeometry, std::string assetName, std::string outputPath) override; virtual bool saveToFile(const NvBlastAsset* asset, const std::string& name, const std::string& outputPath, const std::vector& pos, const std::vector& norm, const std::vector& uvs, const std::vector > >& posIndex, const std::vector > >& normIndex, const std::vector > >& texIndex, const std::vector& texPathes, const uint32_t submeshCount) override; virtual bool saveToFile(const NvBlastAsset* asset, const std::string& name, const std::string& outputPath, const std::vector& pos, const std::vector& norm, const std::vector& uvs, const std::vector > >& indices) override; bool bOutputFBXAscii; private: uint32_t currentDepth; std::shared_ptr sdkManager; uint32_t createChunkRecursive(uint32_t currentCpIdx, uint32_t chunkIndex, FbxNode *meshNode, FbxNode* parentNode, FbxSkin* skin, const NvBlastAsset* asset, std::vector> chunksGeometry); uint32_t createChunkRecursive(uint32_t currentCpIdx, uint32_t chunkIndex, FbxNode *meshNode, FbxNode* parentNode, FbxSkin* skin, const NvBlastAsset* asset, const std::vector > >& posIndex, const std::vector > >& normIndex, const std::vector > >& texIndex); void addControlPoints(FbxMesh* mesh, const std::vector& pos, std::vector > >& posIndex); bool finalizeFbxAndSave(FbxScene* scene, FbxSkin* skin, const std::string& outputPath, const std::string& name); };