using System.Collections.Generic;
using System.Threading.Tasks;
using UnityEngine;
using UnityEngine.Assertions;
namespace WebP.Experiment.Animation
{
///
/// Entry of all the loading logic.
///
public class WebP
{
#if USE_FAIRYGUI
///
/// Async loading webp files, and return WebPRender for render.
/// This function return NTextures which would work with fairygui: https://en.fairygui.com/
///
/// Remote urls to download or project related absolute path(based on platform)
/// WebPRederer to provide NTexture for rendering
public static async Task> LoadNTexturesAsync(string url)
{
var bytes = await WebPLoader.Load(url);
if (bytes == null || bytes.Length <= 0) return null;
var sw = new Stopwatch();
var textures = await WebPDecoderWrapper.Decode(bytes);
var nTextures = textures.ConvertAll(ret =>
{
var (texture, timestamp) = ret;
return (new NTexture(texture), timestamp);
});
var renderer = new WebPRendererWrapper(nTextures);
Debug.Log($"[WebP] Decode webp into textures in: {sw.ElapsedMilliseconds}");
sw.Stop();
return renderer;
}
#endif
///
/// Async loading webp files, and return WebPRender for render.
///
/// Remote urls to download or project related absolute path(based on platform)
/// WebPRederer to provide Texture for rendering
public static async Task> LoadTexturesAsync(string url)
{
byte[] bytes = await WebPLoader.Load(url);
if (bytes == null || bytes.Length <= 0)
{
return null;
}
List<(Texture2D, int)> textures = await WebPDecoderWrapper.Decode(bytes);
WebPRendererWrapper renderer = new WebPRendererWrapper(textures);
return renderer;
}
public static async Task> LoadTexturesAsync(byte[] bytes)
{
Assert.IsNotNull(bytes);
List<(Texture2D, int)> textures = await WebPDecoderWrapper.Decode(bytes);
WebPRendererWrapper renderer = new WebPRendererWrapper(textures);
return renderer;
}
}
}