ADD: Include Textures in Assetmanager

This commit is contained in:
sebastian 2026-02-14 15:44:17 +01:00
parent e62f3ffacc
commit 1941ee3690
3 changed files with 20 additions and 2 deletions

View File

@ -68,6 +68,21 @@ std::shared_ptr<ModelStageConfiguration> AssetManager::getModelStageConfiguratio
return nullptr; return nullptr;
} }
std::shared_ptr<ModelTexture> AssetManager::loadTexture(const std::string& name, const std::string &texturePath, Loader &loader) {
if (textures.contains(name)) {
return textures[name];
}
auto texture = std::make_shared<ModelTexture>(loader.loadTextureFromFile(texturePath));
textures[name] = texture;
return texture;
}
std::shared_ptr<ModelTexture> AssetManager::getTexture(const std::string &name) {
assert(textures.contains(name) && "Texture not found!");
return textures.at(name);
}
json AssetManager::readJsonFile(const std::string &path) { json AssetManager::readJsonFile(const std::string &path) {
if (fs::exists(path)) { if (fs::exists(path)) {

View File

@ -21,9 +21,12 @@ public:
static void loadAsset(const std::string& assetPath, Loader& loader); static void loadAsset(const std::string& assetPath, Loader& loader);
static std::shared_ptr<ModelStages> getModelStages(const std::string& modelName); static std::shared_ptr<ModelStages> getModelStages(const std::string& modelName);
static std::shared_ptr<ModelStageConfiguration> getModelStageConfiguration(const std::string& modelName, const std::string& stageName); static std::shared_ptr<ModelStageConfiguration> getModelStageConfiguration(const std::string& modelName, const std::string& stageName);
static std::shared_ptr<ModelTexture> loadTexture(const std::string &name, const std::string &texturePath, Loader &loader);
static std::shared_ptr<ModelTexture> getTexture(const std::string& texturePath);
private: private:
static inline std::unordered_map<std::string, std::shared_ptr<TexturedModel>> models; static inline std::unordered_map<std::string, std::shared_ptr<TexturedModel>> models;
static inline std::unordered_map<std::string, std::shared_ptr<ModelStages>> modelsWithStages; static inline std::unordered_map<std::string, std::shared_ptr<ModelStages>> modelsWithStages;
static inline std::unordered_map<std::string, std::shared_ptr<ModelTexture>> textures;
static nlohmann::json readJsonFile(const std::string &path); static nlohmann::json readJsonFile(const std::string &path);
}; };

View File

@ -58,12 +58,12 @@ void GameLayer::onAttach()
AssetManager::loadAsset("assets/buildings/stone_mason/stone_mason.json", loader); AssetManager::loadAsset("assets/buildings/stone_mason/stone_mason.json", loader);
AssetManager::loadAsset("assets/buildings/forest_hut/cabin.json", loader); AssetManager::loadAsset("assets/buildings/forest_hut/cabin.json", loader);
ModelTexture modelTexture = loader.loadTextureFromFile("assets/worldIcons/warning.png"); auto modelTexture = AssetManager::loadTexture("warning", "assets/worldIcons/warning.png", loader);
TransformComponent transformComponent(glm::vec3(0,0,0), glm::vec3(0), 1.0f); TransformComponent transformComponent(glm::vec3(0,0,0), glm::vec3(0), 1.0f);
testEntity = BuildingFactory::create(*entityManager, TemporaryBuildingDefinitionFactory::createForestHutDefinition(), transformComponent, 0, 0); testEntity = BuildingFactory::create(*entityManager, TemporaryBuildingDefinitionFactory::createForestHutDefinition(), transformComponent, 0, 0);
auto worldSpritePtr = std::make_shared<WorldSpriteComponent>(); auto worldSpritePtr = std::make_shared<WorldSpriteComponent>();
worldSpritePtr->texture = std::make_shared<ModelTexture>(modelTexture); worldSpritePtr->texture = modelTexture;
entityManager->addComponent(testEntity, worldSpritePtr); entityManager->addComponent(testEntity, worldSpritePtr);
auto anim = std::make_shared<AnimationComponent>(); auto anim = std::make_shared<AnimationComponent>();