Files
2025-11-30 08:35:03 +02:00

57 lines
1.2 KiB
C#

using System.IO;
using System.Threading.Tasks;
namespace UnityGLTF.Loader
{
#pragma warning disable CS0618 // Type or member is obsolete
/// <summary>
/// Wrapper utility for exposing an <see cref="ILoader"/> as a <see cref="IDataLoader"/> (and if appropriate, <see cref="IDataLoader2"/>).
/// </summary>
public static class LegacyLoaderWrapper
{
public static IDataLoader Wrap(ILoader loader)
{
if (loader == null)
{
return null;
}
if (loader.HasSyncLoadMethod)
{
return new LegacyLoader2(loader);
}
return new LegacyLoader(loader);
}
private class LegacyLoader : IDataLoader
{
protected readonly ILoader _loader;
public LegacyLoader(ILoader loader)
{
_loader = loader;
}
public Task<Stream> LoadStreamAsync(string relativeFilePath)
{
_loader.LoadStream(relativeFilePath);
return Task.FromResult(_loader.LoadedStream);
}
}
private class LegacyLoader2 : LegacyLoader, IDataLoader2
{
public LegacyLoader2(ILoader loader) :
base(loader)
{
}
public Stream LoadStream(string relativeFilePath)
{
_loader.LoadStreamSync(relativeFilePath);
return _loader.LoadedStream;
}
}
}
#pragma warning restore CS0618 // Type or member is obsolete
}