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); if (assets != null) { foreach (var item in assets) { if (Utility.IsScriptAsset(item)) { hasScriptAssets = true; break; } } } if (hasScriptAssets) { APCache.SaveToLocalAsync(); } }
private static bool HandleNewAnimationClipOnSelection(UnityEngine.Object obj) { string assetPath = AssetDatabase.GetAssetPath(obj); if (Utility.IsUntyNewAnimation(assetPath)) { var guid = AssetDatabase.AssetPathToGUID(assetPath); var animationInCache = APCache.GetValue(guid) as APAnimation; if (animationInCache == null) { return(false); } var currentAnimation = APResources.GetAPAnimationFromClip(obj as AnimationClip); currentAnimation.Id = guid; if (animationInCache.CycleOffset - currentAnimation.CycleOffset > 0.001f || animationInCache.LoopPose != currentAnimation.LoopPose || animationInCache.LoopTime != currentAnimation.LoopTime || animationInCache.FPS != currentAnimation.FPS || animationInCache.InAssetBundle != currentAnimation.InAssetBundle || animationInCache.Length - currentAnimation.Length > 0.001f) { webCommunicationService.UpdateObjectsIntoCache(APAssetType.AnimationClip, currentAnimation, SyncManager.ModifiedAssets); return(true); } } return(false); }
private static bool HandlePrefabOnSelection(UnityEngine.Object obj) { string assetPath = AssetDatabase.GetAssetPath(obj); if (Utility.IsPrefab(assetPath)) { var guid = AssetDatabase.AssetPathToGUID(assetPath); var prefabInCache = APCache.GetValue(guid) as APPrefab; if (prefabInCache == null) { return(false); } var currentPrefab = APResources.GetAPPrefabFromAssetGuid(guid); if (prefabInCache.InLayers != currentPrefab.InLayers || prefabInCache.InAssetBundle != currentPrefab.InAssetBundle || prefabInCache.ContainTags != currentPrefab.ContainTags) { webCommunicationService.UpdateObjectsIntoCache(APAssetType.Prefab, currentPrefab, SyncManager.ModifiedAssets); return(true); } } return(false); }
private static void CheckUsedUpdate() { var markFile = AssetsUsageChecker.GetMarkFile(); if (File.Exists(markFile)) { if (!APCache.LoadFromLocal()) { APCache.LoadDataIntoCache(CheckUnusedState); } else { CheckUnusedState(); } } if (File.Exists(AFTERBUILD_A_PLUS)) { if (APlusWindow.Instance != null && APlusWindow.Instance.webview != null && AssetNotification.webCommunicationService != null) { AssetNotification.webCommunicationService.RefreshAll(); AssetNotification.webCommunicationService.Refresh(); File.Delete(AFTERBUILD_A_PLUS); } } }
private static void HandleDeletedAssets(string[] deletedAssets) { var animationClips = APCache.GetAssetsListByTypeFromCache <APAnimation>(APAssetType.AnimationClip); foreach (var assetPath in deletedAssets) { Utility.DebugLog(string.Format("Deleted: {0}", assetPath)); if (Utility.IsModelPath(assetPath)) { foreach (var clip in animationClips) { if (clip.Path.Contains(assetPath)) { APCache.Remove(APAssetType.AnimationClip, clip.Id); SyncManager.DeleteAssets.Enqueue(clip); SyncManager.DeleteAssets.Enqueue(APResources.GetBlackListAPAsset(assetPath)); } } } var id = AssetDatabase.AssetPathToGUID(assetPath); var asset = APCache.GetValue(AssetDatabase.AssetPathToGUID(assetPath)); if (asset != null) { APCache.Remove(id); APCache.RemoveFromBlacklist(assetPath); SyncManager.DeleteAssets.Enqueue(asset); SyncManager.DeleteAssets.Enqueue(APResources.GetBlackListAPAsset(assetPath)); } } }
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(); }
public static void Process(WebViewCommunicationService service, bool saveToLocal = false) { if (!Enable) { return; } 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); if (saveToLocal) { APCache.SaveToLocalAsync(); } Resources.UnloadUnusedAssets(); }
public static List <string> GetReferencesByType <T>(string assetPath, APAssetType type, string progressInfo, float startProgress, float endProcess, ref bool cancel) where T : APAsset { List <string> references = new List <string>(); var lookForSet = APCache.GetAssetsListByTypeFromCache <T>(type); string title = "Find references"; float progress = 0; for (int i = 0; i < lookForSet.Count; i++) { var dependences = AssetDatabase.GetDependencies(new string[] { lookForSet[i].Path }); if (dependences.Any(denpend => denpend.Equals(assetPath, StringComparison.CurrentCultureIgnoreCase))) { references.Add(lookForSet[i].Path); } progress = startProgress + (endProcess - startProgress) * (i + 1) * 1f / lookForSet.Count; if (EditorUtility.DisplayCancelableProgressBar(title, progressInfo, progress)) { cancel = true; break; } ; } return(references); }
private static void SelectReferencesByType(string assetType) { HashSet <string> references = new HashSet <string>(); var objects = Selection.objects; bool Cancel = false; for (int i = 0; i < objects.Length; i++) { var path = AssetDatabase.GetAssetPath(objects[i]); string message = "Find references of " + path; float startProgress = i * 1f / objects.Length; float endProgress = (i + 1) * 1f / objects.Length; List <string> referencesAssets = new List <string>(); switch (assetType) { case AssetType.MODELS: referencesAssets = APCache.GetReferencesByType <APModel>(path, APAssetType.Model, message, startProgress, endProgress, ref Cancel); break; case AssetType.MATERIALS: referencesAssets = APCache.GetReferencesByType <APMaterial>(path, APAssetType.Material, message, startProgress, endProgress, ref Cancel); break; case AssetType.PREFABS: referencesAssets = APCache.GetReferencesByType <APPrefab>(path, APAssetType.Prefab, message, startProgress, endProgress, ref Cancel); break; case AssetType.SCENE: referencesAssets = APCache.GetReferencesInScene(path, ref Cancel, true, message, startProgress, endProgress); break; default: break; } foreach (var item in referencesAssets) { if (!item.Equals(path, StringComparison.CurrentCultureIgnoreCase)) { references.Add(item); } } if (Cancel) { break; } } if (!Cancel) { SelectReferences(references.ToList()); } else { EditorUtility.ClearProgressBar(); } }
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); }
private static void PlaymodeStateChanged() { if (EditorApplication.isPlayingOrWillChangePlaymode && !EditorApplication.isPlaying) { Utility.DebugLog("APCache.SaveToLocalAsync()"); APCache.SaveToLocalAsync(); } }
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); }
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); } try { 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()); // Thanks Axel Garcia for fixing the read icon texture exception. // var bytes = new byte[0]; try { bytes = newTexture.EncodeToPNG(); } catch (Exception e) { Debug.Log(string.Format("Get Icon of {0} failed\r\n Exception: \r\n {1}", assetPath, e)); return(GetNullKey()); } if (bytes != null && bytes.Length > 0) { var iconData = System.Convert.ToBase64String(newTexture.EncodeToPNG()); var key = Utility.MD5(iconData); APCache.AddIcon(key, iconData); return(key); } else { return(GetNullKey()); } } catch { return(GetNullKey()); } }
public static void RefreshCache() { EditorPrefs.DeleteKey(APCache.LOAD_FROM_LOCAL_KEY); APCache.ReloadCache(() => { AssetNotification.webCommunicationService.RefreshAll(); AssetNotification.webCommunicationService.Refresh(); }); }
public void UpdateObjectsIntoCache(APAssetType type, APAsset asset, Queue <APAsset> modifedAssets = null) { if (APCache.HasAsset(type, asset.Id)) { APCache.SetValue(type, asset.Id, asset); if (modifedAssets != null) { modifedAssets.Enqueue(asset); } } }
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 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); }
static PrepareOnLoad() { Utility.DebugLog("Executing PrepareOnLoad"); webCommunicationService = ScriptableObject.CreateInstance <WebViewCommunicationService>(); webCommunicationService.hideFlags = HideFlags.HideAndDontSave; EditorApplication.update -= BackgroundUpdate; EditorApplication.update -= CheckUsedUpdate; EditorApplication.update += BackgroundUpdate; EditorApplication.update += CheckUsedUpdate; #if UNITY_2017_1_OR_NEWER EditorApplication.playModeStateChanged += e => { PlaymodeStateChanged(); }; #else EditorApplication.playmodeStateChanged += PlaymodeStateChanged; #endif time = EditorApplication.timeSinceStartup; // Load black list data form local file APCache.LoadBlacklist(); if (PreferencesItems.AutoRefreshCacheOnProjectLoad) { APCache.LoadDataIntoCache(CheckUnusedState); } else { if (EditorApplication.isPlayingOrWillChangePlaymode || EditorApplication.isCompiling) { if (!APCache.LoadFromLocal()) { APCache.LoadDataIntoCache(CheckUnusedState); } else { CheckUnusedState(); } } else { if (!APCache.LoadFromLocal()) { APCache.LoadDataIntoCache(CheckUnusedState); } } } }
private static bool HandleMaterialOnSelection(UnityEngine.Object obj) { string assetPath = AssetDatabase.GetAssetPath(obj); var currentMaterial = (obj as Material); var guid = AssetDatabase.AssetPathToGUID(assetPath); var materialInCache = APCache.GetValue(APAssetType.Material, guid) as APMaterial; if (materialInCache != null && !currentMaterial.shader.name.Equals(materialInCache.Shader, StringComparison.CurrentCultureIgnoreCase)) { webCommunicationService.UpdateObjectsIntoCache(APAssetType.Material, guid, SyncManager.ModifiedAssets); return(true); } return(false); }
private static List <string> GetReferences <T>(string assetPath, APAssetType type) where T : APAsset { List <string> references = new List <string>(); var lookForSet = APCache.GetAssetsListByTypeFromCache <T>(type); foreach (var asset in lookForSet) { var dependences = AssetDatabase.GetDependencies(new string[] { asset.Path }); if (dependences.Any(denpend => denpend.Equals(assetPath, StringComparison.CurrentCultureIgnoreCase))) { references.Add(asset.Path); } } return(references); }
private void DeleteFromBlacklist(string paths, object callback) { var assetPaths = paths.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); if (assetPaths.Length == 0) { return; } foreach (string path in assetPaths) { APCache.RemoveFromBlacklist(path); } APCache.CommitBlacklistChange(); }
private string GetHierarchyAssetsListJson() { var assets = EditorUtility.CollectDependencies(GameObject.FindObjectsOfType(typeof(GameObject))); Dictionary <string, APHierarchyAsset> realAssets = new Dictionary <string, APHierarchyAsset>(); foreach (var item in assets) { var assetPath = AssetDatabase.GetAssetPath(item); if (string.IsNullOrEmpty(assetPath) || assetPath.Contains("unity_builtin_extra") || assetPath.Contains("unity default resources") || assetPath.Contains("unity editor resources")) { continue; } var guid = AssetDatabase.AssetPathToGUID(assetPath); if (realAssets.ContainsKey(guid)) { Utility.UpdateJsonInAsset(realAssets[guid]); } else { APHierarchyAsset aphAsset = new APHierarchyAsset(); if (Utility.IsModelPath(assetPath) && (item is AnimationClip)) { aphAsset.Id = Utility.GetAssetId(guid, Utility.GetLocalIndentifierOfObject(item).ToString()); aphAsset.Name = item.name; } else { aphAsset.Id = guid; aphAsset.Name = Utility.GetFileName(assetPath); } aphAsset.FileType = Utility.GetFileExtension(assetPath); aphAsset.Icon = APResources.GetIconID(assetPath, item is AnimationClip); Utility.UpdateJsonInAsset(aphAsset); realAssets.Add(guid, aphAsset); } } return(APCache.GetJsonFromList(realAssets.Values.ToArray())); }
private static void AddModelInCache(string modelAssetPath) { var guid = AssetDatabase.AssetPathToGUID(modelAssetPath); var asset = APResources.GetAPAssetByPath(APAssetType.Model, guid); APCache.SetValue(APAssetType.Model, guid, asset); SyncManager.AddedAssets.Enqueue(asset); var animationClipAssetids = APResources.GetAnimationClipAssetIdInModel(modelAssetPath); foreach (var id in animationClipAssetids) { var clip = APResources.GetAPAssetByPath(APAssetType.AnimationClip, id); APCache.SetValue(APAssetType.AnimationClip, id, clip); SyncManager.AddedAssets.Enqueue(clip); } }
private static void HandleImportedAssets(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); } } } }
public static void AddToBlacklist() { List <APAsset> newBlacklist = new List <APAsset>(); foreach (var item in Selection.objects) { var path = GetPathOfSelectedAssets(item); if (!APCache.ExistsInBlacklist(path)) { var asset = APResources.GetBlackListAPAsset(path); APCache.AddToBlacklist(path, asset); newBlacklist.Add(asset); } } AssetNotification.webCommunicationService.AddAssets(newBlacklist); APCache.CommitBlacklistChange(); }
public static List <APOtherFile> GetOthers() { List <APOtherFile> files = new List <APOtherFile>(); var allfiles = Utility.GetFilesInRelativePath(Application.dataPath); foreach (var file in allfiles) { string filePath = "Assets" + file; var guid = AssetDatabase.AssetPathToGUID(filePath); if (APCache.HasAsset(guid)) { continue; } files.Add(GetOtherFile(filePath)); } return(files); }
private static void UpdateModelInCache(string modelAssetPath) { var guid = AssetDatabase.AssetPathToGUID(modelAssetPath); webCommunicationService.UpdateObjectsIntoCache(APAssetType.Model, guid, SyncManager.ModifiedAssets); var animationsInCache = APCache.GetAssetsListByTypeFromCache <APAnimation>(APAssetType.AnimationClip); HashSet <string> animationsAssetIdInCache = new HashSet <string>(); foreach (var animation in animationsInCache) { if (animation.Id.ToLower().Contains(guid.ToLower())) { animationsAssetIdInCache.Add(animation.Id); } } var clipIds = APResources.GetAnimationClipAssetIdInModel(modelAssetPath); foreach (var id in clipIds) { if (animationsAssetIdInCache.Contains(id)) { webCommunicationService.UpdateObjectsIntoCache(APAssetType.AnimationClip, id, SyncManager.ModifiedAssets); } else { var clip = APResources.GetAPAssetByPath(APAssetType.AnimationClip, id); APCache.SetValue(APAssetType.AnimationClip, id, clip); SyncManager.AddedAssets.Enqueue(clip); } } foreach (var id in animationsAssetIdInCache) { if (!clipIds.Contains(id)) { var clip = APCache.GetValue(APAssetType.AnimationClip, id); APCache.Remove(id); SyncManager.DeleteAssets.Enqueue(clip); } } }
public static void RemoveBlacklist() { List <APAsset> deleteAssets = new List <APAsset>(); foreach (var item in Selection.objects) { var path = GetPathOfSelectedAssets(item); if (APCache.ExistsInBlacklist(path)) { var asset = APResources.GetBlackListAPAsset(path); APCache.RemoveFromBlacklist(path); Utility.UpdateJsonInAsset(asset); deleteAssets.Add(asset); } } AssetNotification.webCommunicationService.DeleteAssets(deleteAssets.ToArray().ToList());; APCache.CommitBlacklistChange(); }
static PrepareOnLoad() { Utility.DebugLog("Executing PrepareOnLoad"); webCommunicationService = ScriptableObject.CreateInstance <WebViewCommunicationService>(); webCommunicationService.hideFlags = HideFlags.HideAndDontSave; EditorApplication.update += BackgroundUpdate; EditorApplication.playmodeStateChanged += PlaymodeStateChanged; time = EditorApplication.timeSinceStartup; bool hasLoadFromLocalKey = EditorPrefs.HasKey(APCache.LOAD_FROM_LOCAL_KEY); if (PreferencesItems.AutoRefreshCacheOnProjectLoad) { APCache.LoadDataIntoCache(CheckUnusedState); } else { if (hasLoadFromLocalKey || EditorApplication.isPlayingOrWillChangePlaymode || EditorApplication.isCompiling) { if (!APCache.LoadFromLocal()) { APCache.LoadDataIntoCache(CheckUnusedState); } else { CheckUnusedState(); } } else { if (!APCache.LoadFromLocal()) { APCache.LoadDataIntoCache(CheckUnusedState); } } } }