Static helper that dispatches mesh loading based on file extension. It exposes supported extensions and Load(byte[] data, string fileName) which picks the appropriate importer (OBJ, glTF/GLB, FBX) and returns a RigMesh or throws FormatException for unknown extensions.
using AutoRig.Formats.Fbx;
using AutoRig.Formats.Gltf;
using AutoRig.Formats.Wavefront;
using AutoRig.Mesh;
namespace AutoRig.Formats;
/// <summary>Extension-dispatched mesh loading for all supported formats.</summary>
public static class MeshLoader
{
/// <summary>Supported file extensions (lower case, with dot).</summary>
public static readonly string[] Extensions = [ ".obj", ".glb", ".gltf", ".fbx" ];
/// <exception cref="FormatException">Unknown extension or malformed content.</exception>
public static RigMesh Load( byte[] data, string fileName )
{
ArgumentNullException.ThrowIfNull( data );
ArgumentNullException.ThrowIfNull( fileName );
var dot = fileName.LastIndexOf( '.' );
var extension = dot >= 0 ? fileName[dot..].ToLowerInvariant() : "";
return extension switch
{
".obj" => ObjImporter.Import( data, fileName ),
".glb" or ".gltf" => GltfMeshImporter.Import( data, fileName ),
".fbx" => FbxMeshImporter.Import( data, fileName ),
_ => throw new FormatException(
$"Unsupported model format '{extension}' - supported: {string.Join( ", ", Extensions )}." ),
};
}
}