public static void UnrefSharedWebpTexture(Texture2D sharedTexture) { if (sharedTexture == null) { return; } for (int i = 0; i < sharedWebpTextures.Count; i++) { SharedWebpTextureEntry sharedWebpTextureEntry = sharedWebpTextures [i]; if (sharedWebpTextureEntry == null) { continue; } if (sharedWebpTextureEntry.texture == sharedTexture) { sharedWebpTextureEntry.refCount--; if (sharedWebpTextureEntry.refCount <= 0) { sharedWebpTextures.Remove(sharedWebpTextureEntry); } return; } } }
public static Texture2D RefSharedWebpTexture(TextAsset webpAsset) { if (webpAsset == null) { return(null); } Texture2D sharedTexture = null; string sharedTextureKey = webpAsset.GetInstanceID().ToString(); SharedWebpTextureEntry sharedWebpTextureEntry = GetSharedWebpTextureEntry(sharedTextureKey); if (sharedWebpTextureEntry != null) { // The texture might be already GCed if (sharedWebpTextureEntry.texture == null) { sharedWebpTextures.Remove(sharedWebpTextureEntry); sharedWebpTextureEntry = null; } } if (sharedWebpTextureEntry != null) { sharedWebpTextureEntry.refCount++; sharedTexture = sharedWebpTextureEntry.texture; } else { Status lError; sharedTexture = Texture2DExt.CreateTexture2DFromWebP(webpAsset.bytes, false, true, out lError, Texture2DExt.ScaleBy(1f)); if (lError != Status.SUCCESS) { // Debug.LogError ("SharedWebpTexture::RefSharedAlphaMaterial Webp Load Error : " + lError.ToString ()); return(null); } sharedWebpTextureEntry = new SharedWebpTextureEntry() { assetId = sharedTextureKey, texture = sharedTexture, refCount = 1 }; sharedWebpTextures.Add(sharedWebpTextureEntry); } return(sharedTexture); }
public static bool ContainSharedTexture(Texture2D sharedTexture) { if (sharedTexture == null) { return(false); } for (int i = 0; i < sharedWebpTextures.Count; i++) { SharedWebpTextureEntry sharedWebpTextureEntry = sharedWebpTextures [i]; if (sharedWebpTextureEntry == null) { continue; } if (sharedWebpTextureEntry.texture == sharedTexture) { return(true); } } return(false); }