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; } } }