#include "Resources/TextureLoader.h" #include "Resources/ResourceManager.h" namespace XCEngine { namespace Resources { TextureLoader::TextureLoader() = default; TextureLoader::~TextureLoader() = default; Containers::Array TextureLoader::GetSupportedExtensions() const { Containers::Array extensions; extensions.PushBack(Containers::String("png")); extensions.PushBack(Containers::String("jpg")); extensions.PushBack(Containers::String("jpeg")); extensions.PushBack(Containers::String("tga")); extensions.PushBack(Containers::String("bmp")); extensions.PushBack(Containers::String("gif")); extensions.PushBack(Containers::String("hdr")); extensions.PushBack(Containers::String("dds")); return extensions; } bool TextureLoader::CanLoad(const Containers::String& path) const { Containers::String ext = GetExtension(path); ext.ToLower(); return ext == "png" || ext == "jpg" || ext == "jpeg" || ext == "tga" || ext == "bmp" || ext == "gif" || ext == "hdr" || ext == "dds"; } LoadResult TextureLoader::Load(const Containers::String& path, const ImportSettings* settings) { (void)settings; Containers::String ext = GetExtension(path); ext.ToLower(); if (!CanLoad(path)) { return LoadResult(Containers::String("Unsupported texture format: ") + ext); } Containers::Array fileData = ReadFileData(path); if (fileData.Empty()) { return LoadResult(Containers::String("Failed to read file: ") + path); } auto* texture = new Texture(); IResource::ConstructParams params; params.name = path; params.path = path; params.guid = ResourceGUID::Generate(path); params.memorySize = fileData.Size(); texture->Initialize(params); return LoadResult(texture); } ImportSettings* TextureLoader::GetDefaultSettings() const { return nullptr; } REGISTER_RESOURCE_LOADER(TextureLoader); } // namespace Resources } // namespace XCEngine