#include "Resources/MeshLoader.h" #include "Resources/ResourceManager.h" namespace XCEngine { namespace Resources { MeshLoader::MeshLoader() = default; MeshLoader::~MeshLoader() = default; Containers::Array MeshLoader::GetSupportedExtensions() const { Containers::Array extensions; extensions.PushBack(Containers::String("fbx")); extensions.PushBack(Containers::String("obj")); extensions.PushBack(Containers::String("gltf")); extensions.PushBack(Containers::String("glb")); extensions.PushBack(Containers::String("dae")); extensions.PushBack(Containers::String("stl")); return extensions; } bool MeshLoader::CanLoad(const Containers::String& path) const { Containers::String ext = GetExtension(path); ext.ToLower(); return ext == "fbx" || ext == "obj" || ext == "gltf" || ext == "glb" || ext == "dae" || ext == "stl"; } LoadResult MeshLoader::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 mesh format: ") + ext); } Containers::Array fileData = ReadFileData(path); if (fileData.Empty()) { return LoadResult(Containers::String("Failed to read file: ") + path); } auto* mesh = new Mesh(); IResource::ConstructParams params; params.name = path; params.path = path; params.guid = ResourceGUID::Generate(path); params.memorySize = fileData.Size(); mesh->Initialize(params); return LoadResult(mesh); } ImportSettings* MeshLoader::GetDefaultSettings() const { return nullptr; } REGISTER_RESOURCE_LOADER(MeshLoader); } // namespace Resources } // namespace XCEngine