/*############################################################################## ## Author: Shaun Reed ## ## Legal: All Content (c) 2023 Shaun Reed, all rights reserved ## ## About: Custom IO system for Qtk to support Qt Resource paths in Assimp ## ## ## ## Contact: shaunrd0@gmail.com | URL: www.shaunreed.com | GitHub: shaunrd0 ## ##############################################################################*/ #include #include #include "qtkapi.h" #include "qtkiostream.h" #ifndef QTK_QTKIOSYSTEM_H #define QTK_QTKIOSYSTEM_H namespace Qtk { /** * Assimp IO system for loading models with assimp, using Qt Resource paths. */ class QtkIOSystem : public Assimp::IOSystem { public: QtkIOSystem() = default; ~QtkIOSystem() = default; /** * @param pFile File path to check. * @return True if the file exists, else false. */ bool Exists(const char * pFile) const override; /** * @return Path separator for platform OS. */ [[nodiscard]] char getOsSeparator() const override; /** * @param pFile File to open for read / writing. * @param pMode Mode to open file. See `man fopen`. * @return QtkIOStream for the opened file. */ Assimp::IOStream * Open( const char * pFile, const char * pMode = "rb") override; /** * @param pFile File to close. */ void Close(Assimp::IOStream * pFile) override; }; } // namespace Qtk #endif // QTK_QTKIOSYSTEM_H