private static void CheckUnusedState() { Utility.DebugLog("CheckUnusedState"); string key = AssetsUsageChecker.GetUniqueAssetCheckerKey(); Utility.DebugLog("Checking key: " + key + ", with result = " + EditorPrefs.HasKey(key)); if (EditorPrefs.HasKey(key)) { List <string> assets = AssetsUsageChecker.Check(); if (assets != null && assets.Count > 0) { HashSet <string> usedFiles = new HashSet <string>(); foreach (var item in assets) { usedFiles.Add(item); } APCache.UpdateUsedStatus(usedFiles); APCache.SaveToLocal(); EditorPrefs.SetString(AFTERBUILD_A_PLUS, AFTERBUILD_A_PLUS); EditorPrefs.DeleteKey(AssetsUsageChecker.GetUniqueAssetCheckerKey()); } } }
private void CopyAssetPropertyToClipboard(string msg, Func <APAsset, string> selector) { if (string.IsNullOrEmpty(msg)) { return; } var decompressedMessage = Encoding.UTF8.GetString(CLZF2.Decompress(Convert.FromBase64String(msg))); var assets = decompressedMessage.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); var names = new List <string>(); foreach (var assetId in assets) { var asset = APCache.GetValue(assetId); if (asset != null) { names.Add(selector(asset)); } } TextEditor textEditor = new TextEditor(); textEditor.ReplaceSelection(string.Join("\n", names.ToArray())); textEditor.OnFocus(); textEditor.Copy(); }
/// <summary> /// Get the texture and return the DESC sort order /// </summary> private void GetResByType(string message, object callback) { #if APLUS_DEV var now = DateTime.Now; #endif if (string.IsNullOrEmpty(message)) { throw new Exception("no message provide"); } string json = "[]"; switch (message.ToLower()) { case AssetType.TEXTURES: json = APCache.GetAssetsLitJsonByTypeFromCache(APAssetType.Texture); break; case AssetType.MOVIES: json = APCache.GetAssetsLitJsonByTypeFromCache(APAssetType.MovieTexture); break; default: break; } json = CLZF2_Base64(json); wrap = new CallbackWrapper(callback); wrap.Send(json); #if APLUS_DEV Utility.DebugLog(String.Format("Load Res {0} cost {1} ms", message, (DateTime.Now - now).TotalMilliseconds)); #endif }
static PrepareOnLoad() { webCommunicationService = ScriptableObject.CreateInstance <WebViewCommunicationService>(); webCommunicationService.hideFlags = HideFlags.HideAndDontSave; EditorApplication.update += BackgroundUpdate; EditorApplication.playmodeStateChanged += PlaymodeStateChanged; time = EditorApplication.timeSinceStartup; if (EditorPrefs.HasKey(APCache.LOAD_FROM_LOCAL_KEY) || EditorApplication.isPlayingOrWillChangePlaymode || EditorApplication.isCompiling || EditorApplication.isPaused || !PreferencesItems.AutoRefreshCacheOnProjectLoad) { EditorPrefs.DeleteKey(APCache.LOAD_FROM_LOCAL_KEY); if (!APCache.LoadFromLocal()) { APCache.LoadDataIntoCache(CheckUnusedState); } else { CheckUnusedState(); } } else { APCache.LoadDataIntoCache(CheckUnusedState); } }
private void GetIconCache(string message, object callback) { var json = APCache.GetIconCacheJSON(); json = Convert.ToBase64String(CLZF2.Compress(Encoding.UTF8.GetBytes(json))); wrap = new CallbackWrapper(callback); wrap.Send(json); }
private static void PlaymodeStateChanged() { if (EditorApplication.isPlayingOrWillChangePlaymode) { Utility.DebugLog("APCache.SaveToLocalAsync()"); APCache.SaveToLocalAsync(); } }
private static string GetNullKey() { var nullKey = "AA625B9BDB3AE0E4"; var nullIcon = "iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAFBUlEQVRYCdVXa0wcVRT+dvbN7rK0LE8tVBpJTLU/tBFC+OEPhURrfCQ1aSXRxkQwFZOKMdUmNYZqgqbBEEvBV4zGlNYfNlGDIGgULNrq1opoghEIBDbyKrvssju7OzOeMzC8dtqFJU30JGfuuXfuPee7555z5o4BiSTU1dWdThxeGVEUBQMDA+MdHR1v0qhILK+83Zxk0JmeMTc3d1VnHGyYWZZlSJKEeDyOcDiM6elplJaWGmnNpoHoAiClSQFoIKLRqArC5/OhrKxs0yBMejs1mXSHlz3AaxgAe4CJvZKVlYXJyUkpOzubF0vqiw08BL05giDgWmw0GtV33DJQbs1mM6xWK1wuF6amphiV/g50jOkCMBgM0GMGpY2zrIFgmcFYLBY4nU4GESNbZh17CUObArDaOMuaYfYAM/c1EBSYUbJmSbC4bmDDruJgY4rFYur5MwAtIzgWIpEIBgcHEQqFEAwG1cwgEKLH47HTsoi6WOehmwWkeE0WsIGv3zuO/Iw4Pursxf6yvfhrYggfnr2Cintuwvc/jeL5w4cwO34FcOyGYDejrv4k2ru8mJ+fR0lJiYNsL+jYx4YA8K6feOB27CjMRVG+G5+cu4jvBiZAAaF6of7cGDKz8sgzccTFBVh+roEjehX7jrSpHmOvFBcX83FwbKyh6wJgF7OrNWrqilCwWdguIVewGEDykkw1yKBQfkqIdj0DQZnBwaNn1YLFG+AjKigoWFG2pDRpDDR1BmGz2VQjDiuloEEiebHgCdQyEKoEBIZZhiIoaL9wCQfv360GJmcKMwcnEWNeUy11s4BnMvHun6twwkoxZDWIFNIibEIUNmMcaaYYsYQ0MzH1LTTHIodhkxfQ1vk77TikpqaWnksArIuaV57XBaBNSzMrZEiB06LATkbtJplASLCSLMgihHgIl/t9cGEEJ448hNKyclzw71U3sLpekL6EtEx6BAzCZmavyYhJClpbf8X0yC/kdRNM8gwkIR1Gu4CIrw25jz+M2oYP8G1zPb7p/BINd1TgaFU5q1CDlZqEGEgYoEkZq9NwaGgIj1a9A7MkwpBxM6RwACazHYJZxH1V+1B5dw5ciojuzs+x885KDP/Qh8eePoB3G0+hq/s8ent62L5K5I1tJMwtddUmKYBAIID91R/D4XbgpZcPIEyV3kUBpRCgsWgA2+UIFkJR7MpxIduThZgiofGV1/FI9VPI3+ZCjtulHgXHE3ECgKQx4HBQDZn0Ykd2DkZDIooyLch0K/D5w7jNZoYjFsF4/48403QCf7Y3o/bBPZgb6cH5k8fgou/C+lRevXuWk3qAJ/0z40f/rB0FGUYcf7IczZ/2YoLKrX8+iJ62M7joD2KP24K/L/fBmeGBNTyLW2/xQLJtR82Lr2kpmJoHGEBOphtTaSF8deoFFOWmY7zvfXzRcBjDnzXiN28fKnflQYjOI9OTjsDsBNVcCX0DY1STYmoNYB3Xog15gBf7RoeQV1Ck6vF6vbDb7cjNzVXvAJzrr77xFuaGvQgHpiErBqQ7HdhZWIhnj/G1cZH0YmBDAERRXP7casrWt3zWraffxh+Xuqn8yrir7F4cqq5VA1CbmzIATcFWWz0ASbNgq0aTrf//AaipqYHf71/eGPe3Qil5wO12L9tsaWnhS+hyf7NCSgDWG+F/glRpQ2mYqvL16/6TWaDnAb4j8FfrRhDfthf/526E9lR0/gs8uBE8u4t8mgAAAABJRU5ErkJggg=="; APCache.AddIcon(nullKey, nullIcon); return(nullKey); }
public static void RefreshCache() { EditorPrefs.DeleteKey(APCache.LOAD_FROM_LOCAL_KEY); APCache.ReloadCache(() => { AssetNotification.webCommunicationService.RefreshAll(); }); }
public void Destroy() { if (webview != null) { webview.OnDestory(); } Instance = null; APCache.SaveToLocal(); }
public static void FindUnusedAssets() { string title = "Find unused files?"; string message = "Press 'OK' to launch a build setting dialog to start a build.\r\n\r\n"; if (EditorUtility.DisplayDialog(title, message, "OK", "Cancel")) { EditorWindow.GetWindow(System.Type.GetType("UnityEditor.BuildPlayerWindow,UnityEditor")); APCache.SaveToLocal(); EditorPrefs.SetString(APCache.LOAD_FROM_LOCAL_KEY, APCache.LOAD_FROM_LOCAL_KEY); } }
private static string GenerateCSV <T>(string header, APAssetType type, Func <T, string> rowDataGenerator) where T : APAsset { var dataSet = APCache.GetAssetsListByTypeFromCache <T>(type); StringBuilder sb = new StringBuilder(); sb.AppendLine(header); foreach (var item in dataSet) { sb.AppendLine(rowDataGenerator(item)); } return(sb.ToString()); }
public static string GetIconID(string assetPath, bool isAnimation = false) { if (isAnimation) { var iconData1 = "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"; var key1 = Utility.MD5(iconData1); APCache.AddIcon(key1, iconData1); return(key1); } var texture = AssetDatabase.GetCachedIcon(assetPath); if (texture == null) { return(GetNullKey()); } var format = (texture as Texture2D).format; if (!IsSupportedFormat(format)) { return(GetNullKey()); } var newTexture = new Texture2D(texture.width, texture.height, (texture as Texture2D).format, false); newTexture.LoadRawTextureData((texture as Texture2D).GetRawTextureData()); var bytes = new byte[0]; try { bytes = newTexture.EncodeToPNG(); } catch { return(GetNullKey()); } if (bytes.Length > 0) { var iconData = System.Convert.ToBase64String(newTexture.EncodeToPNG()); var key = Utility.MD5(iconData); APCache.AddIcon(key, iconData); return(key); } else { return(GetNullKey()); } }
private static void HandleDeletedAssets(string[] deletedAssets) { foreach (var assetPath in deletedAssets) { Utility.DebugLog(string.Format("Deleted: {0}", assetPath)); var id = AssetDatabase.AssetPathToGUID(assetPath); var asset = APCache.GetValue(AssetDatabase.AssetPathToGUID(assetPath)); if (asset != null) { APCache.Remove(id); SyncManager.DeleteAssets.Enqueue(asset); } } }
public static void Process(WebViewCommunicationService service) { if (!IfNeedToProcess()) { return; } var modifed = LoopDequeueToList(ModifiedAssets); var deleted = LoopDequeueToList(DeleteAssets); var movedFrom = LoopDequeueToList(MovedFromAssets); var movedTo = LoopDequeueToList(MovedToAssets); var added = LoopDequeueToList(AddedAssets); service.DoAssetsChange(added, deleted, modifed, movedFrom, movedTo); APCache.SaveToLocalAsync(); }
private static void HandleMovedAssets(string[] movedAssets, string[] movedFromAssetPaths) { for (var i = 0; i < movedAssets.Length; i++) { Utility.DebugLog(string.Format("moved {0} to {1}", movedFromAssetPaths[i], movedAssets[i])); var sid = AssetDatabase.AssetPathToGUID(movedAssets[i]); APCache.MoveTo(sid, movedAssets[i]); var asset = APCache.GetValue(sid); if (asset != null) { Utility.DebugLog(asset.ToString()); SyncManager.MovedFromAssets.Enqueue(sid); SyncManager.MovedToAssets.Enqueue(asset); } } }
private static void HanleImportedAssets(string[] importedAssets) { foreach (var assetPath in importedAssets) { var id = AssetDatabase.AssetPathToGUID(assetPath); if (!APCache.HasAsset(id)) { AddNewImportAssets(assetPath); } else { UpdateReimportExistAssets(assetPath); } } webCommunicationService.RefreshIconCache(); }
public void UpdateObjectsIntoCache(APAssetType type, string assetid, Queue <APAsset> modifedAssets = null) { APAsset asset = APResources.GetAPAssetByPath(type, assetid); if (APCache.HasAsset(type, assetid)) { var previousAssets = APCache.GetValue(type, assetid); if (asset != null && previousAssets != null) { asset.Used = previousAssets.Used; APCache.SetValue(type, assetid, asset); if (modifedAssets != null) { modifedAssets.Enqueue(asset); } } } }
private static void AddNewImportAssets(string assetPath) { Utility.DebugLog(string.Format("New: {0}", assetPath)); if (!File.Exists(assetPath) && Directory.Exists(assetPath)) { return; } var guid = AssetDatabase.AssetPathToGUID(assetPath); UnityEngine.Object obj = AssetDatabase.LoadAssetAtPath(assetPath, typeof(UnityEngine.Object)); APAsset asset = null; // if new path // if (obj is Texture) { if (obj is MovieTexture) { var movie = APResources.GetAPAssetByPath(APAssetType.MovieTexture, guid); if (movie != null) { APCache.SetValue(APAssetType.MovieTexture, movie.Id, movie); } SyncManager.AddedAssets.Enqueue(movie); return; } asset = APResources.GetAPAssetByPath(APAssetType.Texture, guid); if (asset != null) { APCache.SetValue(APAssetType.Texture, asset.Id, asset); } } if (asset != null) { SyncManager.AddedAssets.Enqueue(asset); } Resources.UnloadUnusedAssets(); }
private static void HandleScriptsChange(string[] importedAssets, string[] deletedAssets, string[] movedAssets) { bool hasScriptAssets = false; string[] assets = new string[0]; ArrayUtility.AddRange(ref assets, importedAssets); ArrayUtility.AddRange(ref assets, deletedAssets); ArrayUtility.AddRange(ref assets, movedAssets); foreach (var item in assets) { if (Utility.IsScriptAsset(item)) { hasScriptAssets = true; break; } } if (hasScriptAssets) { APCache.SaveToLocal(); } }
private string EncodeJsonFromList(List <APAsset> assets) { string json = APCache.GetJsonFromList(assets); return(CLZF2_Base64(json)); }