57 lines
1.2 KiB
C#
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
|
|
}
|