diff options
author | LaG1924 <12997935+LaG1924@users.noreply.github.com> | 2017-05-12 15:49:50 +0200 |
---|---|---|
committer | LaG1924 <12997935+LaG1924@users.noreply.github.com> | 2017-05-12 15:49:50 +0200 |
commit | e62817b8252974b8a98393275874ee303840bf13 (patch) | |
tree | 4565935f06e369f4a84410b0c098958e07a750c7 /graphics/AssetManager.cpp | |
parent | 2017-05-10 (diff) | |
download | AltCraft-e62817b8252974b8a98393275874ee303840bf13.tar AltCraft-e62817b8252974b8a98393275874ee303840bf13.tar.gz AltCraft-e62817b8252974b8a98393275874ee303840bf13.tar.bz2 AltCraft-e62817b8252974b8a98393275874ee303840bf13.tar.lz AltCraft-e62817b8252974b8a98393275874ee303840bf13.tar.xz AltCraft-e62817b8252974b8a98393275874ee303840bf13.tar.zst AltCraft-e62817b8252974b8a98393275874ee303840bf13.zip |
Diffstat (limited to 'graphics/AssetManager.cpp')
-rw-r--r-- | graphics/AssetManager.cpp | 39 |
1 files changed, 29 insertions, 10 deletions
diff --git a/graphics/AssetManager.cpp b/graphics/AssetManager.cpp index 3f68617..62dac64 100644 --- a/graphics/AssetManager.cpp +++ b/graphics/AssetManager.cpp @@ -1,6 +1,9 @@ #include "AssetManager.hpp" -const std::string pathToIndexFile = "./assets/indexes/1.11.json"; +const std::string pathToAssets = "./assets/"; +const std::string pathToObjects = pathToAssets + "objects/"; +const std::string pathToIndexFile = pathToAssets + "indexes/1.11.json"; +const std::string pathToAssetsMc = "./assetsMc/"; const std::map<Asset::AssetType, std::string> assetTypeFileExtensions{ std::make_pair(Asset::AssetType::Texture, ".png"), @@ -37,30 +40,46 @@ AssetManager::~AssetManager() { } Asset &AssetManager::GetAsset(std::string AssetName) { - Asset &asset = instance().assets[AssetName]; - if (!asset.isParsed()) + if (instance().assets.find(AssetName) == instance().assets.end() || !instance().assets[AssetName].isParsed()) LoadAsset(AssetName); - return asset; + return instance().assets[AssetName]; } void AssetManager::LoadAsset(std::string AssetName) { - if (instance().assets[AssetName].isParsed()) + if (instance().assets.find(AssetName) != instance().assets.end() && instance().assets[AssetName].isParsed()) return; + std::string AssetFileName = GetPathToAsset(AssetName); Asset &asset = instance().assets[AssetName]; + + if (asset.type == Asset::Texture) { - asset.data.texture.imageData = SOIL_load_image((asset.name + assetTypeFileExtensions.at(asset.type)).c_str(), - &asset.data.texture.width, &asset.data.texture.height, 0, - SOIL_LOAD_RGBA); + asset.data.texture = new Texture(AssetFileName,GL_CLAMP_TO_BORDER,GL_NEAREST); + //asset.data.texture.loadFromFile((asset.name + assetTypeFileExtensions.at(asset.type))); } } +std::string AssetManager::GetPathToAsset(std::string AssetName) { + if (instance().assets.find(AssetName) != instance().assets.end()){ + auto it = instance().assets.find(AssetName); + return pathToObjects + std::string(instance().assets[AssetName].hash.c_str(), 2) + "/" + + instance().assets[AssetName].hash; + } + + instance().assets[AssetName].hash=""; + instance().assets[AssetName].type=Asset::AssetType::Texture; + instance().assets[AssetName].name=AssetName; + instance().assets[AssetName].size=0; + return pathToAssetsMc + "" + instance().assets[AssetName].name + + assetTypeFileExtensions.at(instance().assets[AssetName].type); +} + bool Asset::isParsed() { switch (type) { case Unknown: return false; break; case Texture: - return this->data.texture.imageData != nullptr; + return this->data.texture != nullptr; break; case Sound: return false; @@ -79,7 +98,7 @@ Asset::~Asset() { case Unknown: break; case Texture: - SOIL_free_image_data(this->data.texture.imageData); + delete this->data.texture; break; case Sound: break; |