asset load method improvement

This commit is contained in:
devZoGok
2022-03-02 20:24:05 +02:00
parent bb8302f3ce
commit 074c3ee803
6 changed files with 38 additions and 8 deletions
+2 -3
View File
@@ -15,12 +15,11 @@ set(GUI text.cpp)
set(UTILS util.cpp)
set(MATH quaternion.cpp vector.cpp matrix.cpp ray.cpp)
set(RENDER lineRenderer.cpp particleEmitter.cpp camera.cpp light.cpp material.cpp mesh.cpp model.cpp node.cpp quad.cpp box.cpp root.cpp shader.cpp texture.cpp)
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 abstractAssetReader.cpp imageReader.cpp fontReader.cpp)
set(ASSET_READERS abstractAssetReader.cpp imageReader.cpp fontReader.cpp modelReader.cpp assimpModelReader.cpp vbModelReader.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})
set(LIB_SRC ${RENDER} ${MATH} ${UTILS} ${GUI} ${ARMATURE} ${ASSET_MANAGER} ${ASSET_READERS} ${ANIM})
include_directories(external/glm)
include_directories(external/glm/glm)
+15 -1
View File
@@ -1,6 +1,8 @@
#include "assetManager.h"
#include "abstractAssetReader.h"
#include "util.h"
#include "imageReader.h"
#include "fontReader.h"
#include <algorithm>
@@ -16,10 +18,22 @@ namespace vb01{
return assetManager;
}
void AssetManager::load(AbstractAssetReader *assetReader, string path){
void AssetManager::load(string path){
if(getAsset(path))
return;
string format = path.substr(path.find_last_of(".") + 1, string::npos);
AbstractAssetReader *assetReader = nullptr;
vector<string> imageFormats = vector<string>{"png", "jpeg", "jpg"};
if(find(imageFormats.begin(), imageFormats.end(), format) != imageFormats.end())
assetReader = ImageReader::getSingleton();
vector<string> fontFormats = vector<string>{"ttf"};
if(find(fontFormats.begin(), fontFormats.end(), format) != fontFormats.end())
assetReader = FontReader::getSingleton();
assets.push_back(assetReader->readAsset(path));
}
+2 -1
View File
@@ -11,10 +11,11 @@ namespace vb01{
class AssetManager{
public:
static AssetManager* getSingleton();
void load(AbstractAssetReader*, std::string);
void load(std::string);
Asset* getAsset(std::string);
private:
AssetManager(){}
std::vector<Asset*> assets;
};
}
+7
View File
@@ -5,6 +5,7 @@
#include "keyframeChannel.h"
#include "animationController.h"
#include "animationChannel.h"
#include "assetManager.h"
using namespace std;
using namespace vb01;
@@ -19,6 +20,12 @@ int main(){
TEX_PATH + "front.jpg",
TEX_PATH + "back.jpg"
};
AssetManager::getSingleton()->load(skyboxTextures[0]);
AssetManager::getSingleton()->load(skyboxTextures[1]);
AssetManager::getSingleton()->load(skyboxTextures[2]);
AssetManager::getSingleton()->load(skyboxTextures[3]);
AssetManager::getSingleton()->load(skyboxTextures[4]);
AssetManager::getSingleton()->load(skyboxTextures[5]);
/*
* Gets Root object to start the sample,
+9
View File
@@ -5,6 +5,9 @@
#include "skeleton.h"
#include "animationController.h"
#include "animationChannel.h"
#include "assetManager.h"
#include "imageReader.h"
#include <ft2build.h>
#include FT_FREETYPE_H
@@ -22,6 +25,12 @@ int main(){
TEX_PATH + "front.jpg",
TEX_PATH + "back.jpg"
};
AssetManager::getSingleton()->load(skyboxTextures[0]);
AssetManager::getSingleton()->load(skyboxTextures[1]);
AssetManager::getSingleton()->load(skyboxTextures[2]);
AssetManager::getSingleton()->load(skyboxTextures[3]);
AssetManager::getSingleton()->load(skyboxTextures[4]);
AssetManager::getSingleton()->load(skyboxTextures[5]);
/*
* Gets Root object to start the sample,
+3 -3
View File
@@ -58,13 +58,13 @@ int main(){
textMat->addBoolUniform("texturingEnabled", true);
string frames[]{TEX_PATH + "bricks.jpg", TEX_PATH + "defaultTexture.jpg"};
AssetManager::getSingleton()->load(ImageReader::getSingleton(), frames[0]);
AssetManager::getSingleton()->load(ImageReader::getSingleton(), frames[1]);
AssetManager::getSingleton()->load(frames[0]);
AssetManager::getSingleton()->load(frames[1]);
Texture *texture = new Texture(frames, 2, false);
textMat->addTexUniform("textures[0]", texture, true);
for(int i = 0; i < numTexts; i++){
AssetManager::getSingleton()->load(FontReader::getSingleton(), FONT_PATH + fonts[i]);
AssetManager::getSingleton()->load(FONT_PATH + fonts[i]);
Text *text = new Text(FONT_PATH + fonts[i], texts[i], 0, 60000);
text->setLeftToRight(leftToRight[i]);