diff --git a/CMakeLists.txt b/CMakeLists.txt index 332d01a..0b0b9a3 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -18,7 +18,7 @@ set(RENDER lineRenderer.cpp particleEmitter.cpp camera.cpp light.cpp material.cp set(MODEL modelReader.cpp assimpModelReader.cpp vbModelReader.cpp) set(ANIM animationController.cpp animationChannel.cpp animation.cpp animatable.h keyframeChannel.cpp driver.cpp) set(ARMATURE skeleton.cpp bone.cpp ikSolver.cpp) -set(ASSET_READERS imageReader.cpp) +set(ASSET_READERS abstractAssetReader.cpp imageReader.cpp) set(ASSET_MANAGER assetManager.cpp textAsset.h imageAsset.h modelAsset.h fontAsset.h) set(LIB_SRC ${RENDER} ${MATH} ${MODEL} ${UTILS} ${GUI} ${ARMATURE} ${ASSET_MANAGER} ${ASSET_READERS} ${ANIM}) diff --git a/assetManager.cpp b/assetManager.cpp index 831a3d7..b22323f 100644 --- a/assetManager.cpp +++ b/assetManager.cpp @@ -1,5 +1,5 @@ #include "assetManager.h" -#include "imageReader.h" +#include "abstractAssetReader.h" #include "util.h" #include @@ -16,15 +16,11 @@ namespace vb01{ return assetManager; } - void AssetManager::load(string path){ + void AssetManager::load(AbstractAssetReader *assetReader, string path){ if(getAsset(path)) return; - string format = path.substr(path.find_last_of(".") + 1, string::npos); - vector imageFormats = vector{"png", "jpg", "jpeg"}; - - if(*find(imageFormats.begin(), imageFormats.end(), format) == format) - assets.push_back(ImageReader::getSingleton()->readImage(path, false)); + assets.push_back(assetReader->readAsset(path)); } Asset* AssetManager::getAsset(string path){ diff --git a/assetManager.h b/assetManager.h index 454f353..a7f3a0b 100644 --- a/assetManager.h +++ b/assetManager.h @@ -6,10 +6,12 @@ #include namespace vb01{ + class AbstractAssetReader; + class AssetManager{ public: static AssetManager* getSingleton(); - void load(std::string); + void load(AbstractAssetReader*, std::string); Asset* getAsset(std::string); private: AssetManager(){} diff --git a/imageReader.cpp b/imageReader.cpp index 31ff70f..5a95612 100644 --- a/imageReader.cpp +++ b/imageReader.cpp @@ -14,7 +14,7 @@ namespace vb01{ return imageReader; } - ImageAsset* ImageReader::readImage(string path, bool flip){ + Asset* ImageReader::readAsset(string path){ stbi_set_flip_vertically_on_load(flip); int width, height, numChannels; u8 *data = stbi_load(path.c_str(), &width, &height, &numChannels, 0); diff --git a/imageReader.h b/imageReader.h index 8975413..a52a67c 100644 --- a/imageReader.h +++ b/imageReader.h @@ -3,14 +3,19 @@ #include "util.h" #include "imageAsset.h" +#include "abstractAssetReader.h" namespace vb01{ - class ImageReader{ + class ImageReader : public AbstractAssetReader{ public: static ImageReader* getSingleton(); - ImageAsset* readImage(std::string, bool); + inline void setFlip(bool flip){this->flip = flip;} + inline bool isFlip(){return flip;} + Asset* readAsset(std::string); private: ImageReader(){} + + bool flip = false; }; }