private void CheckDependencyLegality() { var abInfosProvider = new AssetBundleInfosProvider(Organizer); abInfosProvider.PopulateData(); var abInfos = abInfosProvider.AssetBundleInfos; abInfosProvider.CheckCycleAssetDependencies(); var cycleDeps = abInfosProvider.CycleAssetDependencies; if (cycleDeps.Count > 0) { var sb = new StringBuilder(); sb.AppendLine("Cycle asset dependencies:"); foreach (var scc in cycleDeps) { sb.Append("["); sb.Append(AssetDatabase.GUIDToAssetPath(scc[0].Guid)); for (int i = 1; i < scc.Count; i++) { sb.Append(", "); sb.Append(AssetDatabase.GUIDToAssetPath(scc[i].Guid)); } sb.Append("]\n"); } Debug.LogWarning(sb.ToString()); EditorUtility.DisplayDialog(m_EditorWindow.titleContent.text, Core.Utility.Text.Format("There are cycle asset dependencies. See console log for details."), "Okay"); return; } abInfosProvider.CheckIllegalGroupDependencies(); var illegalGroupDeps = abInfosProvider.IllegalGroupDependencies; if (illegalGroupDeps.Count > 0) { var sb = new StringBuilder(); sb.AppendLine("Illegal group dependencies:"); foreach (var pair in illegalGroupDeps) { var firstAssetInfo = pair.Key; var firstABInfo = abInfos[firstAssetInfo.AssetBundlePath]; var secondAssetInfo = pair.Value; var secondABInfo = abInfos[secondAssetInfo.AssetBundlePath]; sb.AppendFormat("'{0}' (AssetBundle '{1}' in Group {2}) --> '{3}' (AssetBundle '{4}' in Group {5})\n", AssetDatabase.GUIDToAssetPath(firstAssetInfo.Guid), firstAssetInfo.AssetBundlePath, firstABInfo.GroupId, AssetDatabase.GUIDToAssetPath(secondAssetInfo.Guid), secondAssetInfo.AssetBundlePath, secondABInfo.GroupId); } Debug.LogWarning(sb.ToString()); EditorUtility.DisplayDialog(m_EditorWindow.titleContent.text, Core.Utility.Text.Format("{0} illegal group dependency(ies) detected. See console log for details.", illegalGroupDeps.Count), "Okay"); return; } EditorUtility.DisplayDialog(m_EditorWindow.titleContent.text, "Dependencies are all legal.", "Okay"); }
private AssetBundleInfosProvider PopulateAssetBundleInfos() { var organizer = new AssetBundleOrganizer(); organizer.RefreshAssetForest(); organizer.RefreshAssetBundleTree(); var provider = new AssetBundleInfosProvider(organizer); provider.PopulateData(); return(provider); }
public AssetBundleRedundancyAnalyser(AssetBundleInfosProvider assetBundleInfosProvider) { Guard.RequireNotNull <ArgumentNullException>(assetBundleInfosProvider, $"Invalid '{nameof(assetBundleInfosProvider)}'."); m_AssetBundleInfosProvider = assetBundleInfosProvider; }