using System.IO;
using System.Threading.Tasks;
namespace UnityGLTF.Loader
{
#pragma warning disable CS0618 // Type or member is obsolete
///
/// Wrapper utility for exposing an as a (and if appropriate, ).
///
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 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
}