67 std::filesystem::path fsPath = std::filesystem::absolute(resolvedPath);
68 std::string absPath = fsPath.string();
70 EE_CORE_TRACE(
"{}", absPath);
77 if (res.meta.Path == absPath)
91 .
Name(fsPath.filename().string())
103 instance().m_Textures[absPath] = tex;
109 std::thread([res]()
mutable {
113 res.
data = stbi_load(res.
meta.
Path.c_str(), &width, &height, &channels, 0);
115 .
size(
static_cast<uint32_t
>(width),
static_cast<uint32_t
>(height))
120 std::lock_guard<std::mutex> lock(instance().m_textureMutex);
121 instance().m_loadingTextures.push_back(res);
131 std::lock_guard<std::mutex> lock(manager.m_textureMutex);
133 auto it = manager.m_loadingTextures.begin();
134 while (it != manager.m_loadingTextures.end())
136 switch (it->meta.State)
139 if (manager.m_Textures.count(it->meta.Path))
141 EE_CORE_INFO(
"Loaded texture : {}, {}x{}", it->meta.Path, it->meta.Width, it->meta.Height);
142 manager.m_Textures[it->meta.Path]->SetData(it->data, it->meta);
143 stbi_image_free(it->data);
146 it = manager.m_loadingTextures.erase(it);
149 if (manager.m_Textures.count(it->meta.Path))
151 EE_CORE_ERROR(
"Failed to load texture : {}", it->meta.Path);
152 manager.m_Textures[it->meta.Path]->SetData(it->data, it->meta);
155 stbi_image_free(it->data);
159 it = manager.m_loadingTextures.erase(it);
static TexturePtr RegisterTexture(TexturePtr texture)
static TexturePtr GetTexture(const std::string &path)
FUNCTION TO LOAD AND GET A TEXTURE SYNCED WITH THE CURRENT THREAD.
static void UpdateLoadingTextures()
static TexturePtr LoadTextureAsync(const std::string &path, TextureType usage=TextureType::Diffuse)
static TexturePtr CreateFromData(unsigned char *data, TextureMetadata &meta)
static TexturePtr CreateFromColor(const glm::vec3 &color, const std::string &name, uint32_t width=1, uint32_t height=1)