FR2_CSV.cs 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using System.Text;
  5. using UnityEditor;
  6. using UnityEngine;
  7. using vietlabs.fr2;
  8. public class FR2_CSV
  9. {
  10. private const string SEPARATOR = ",";
  11. public static string GetCSVRow(FR2_Ref r, params string[] suffixes)
  12. {
  13. var asset = r.asset;
  14. var sr = r.isSceneRef ? (FR2_SceneRef) r : null;
  15. var go = (GameObject)null;
  16. if (sr != null)
  17. {
  18. if (sr.component is Component)
  19. {
  20. go = ((Component) sr.component).gameObject;
  21. }
  22. if (sr.component is GameObject)
  23. {
  24. go = (GameObject)sr.component;
  25. }
  26. }
  27. var sb = new StringBuilder();
  28. sb.Append(r.depth);
  29. sb.Append(SEPARATOR);
  30. sb.Append(r.isSceneRef ? sr.component.name : asset.assetName);
  31. sb.Append(SEPARATOR);
  32. sb.Append(r.isSceneRef ? FR2_SceneRef.FindUsageScene(new []{go}, false).Count : asset.UsageCount());
  33. sb.Append(SEPARATOR);
  34. sb.Append(r.isSceneRef ? string.Empty : asset.extension);
  35. sb.Append(SEPARATOR);
  36. sb.Append(r.isSceneRef ? "0" : asset.fileSize.ToString());
  37. sb.Append(SEPARATOR);
  38. var type = r.isSceneRef ? "SceneObject": "(missing)";
  39. if (!r.isSceneRef)
  40. {
  41. var obj = AssetDatabase.GetMainAssetTypeAtPath(asset.assetPath);
  42. if (obj != null) type = obj.ToString();
  43. if (type.StartsWith("UnityEngine.") || type.StartsWith("UnityEditor."))
  44. {
  45. var idx = type.LastIndexOf(".", StringComparison.Ordinal) + 1;
  46. type = type.Substring(idx, type.Length-idx);
  47. }
  48. }
  49. sb.Append(type);
  50. sb.Append(SEPARATOR);
  51. sb.Append(r.isSceneRef ? string.Empty : asset.guid);
  52. sb.Append(SEPARATOR);
  53. sb.Append(r.isSceneRef ? string.Empty : asset.AtlasName);
  54. sb.Append(SEPARATOR);
  55. sb.Append(r.isSceneRef ? string.Empty : asset.AssetBundleName);
  56. sb.Append(SEPARATOR);
  57. sb.Append(r.group);
  58. sb.Append(SEPARATOR);
  59. sb.Append(r.isSceneRef ? sr.sceneFullPath : asset.assetPath);
  60. foreach (var t in suffixes)
  61. {
  62. sb.Append(SEPARATOR);
  63. sb.Append(t);
  64. }
  65. return sb.ToString();
  66. }
  67. public static string GetCSVTitle()
  68. {
  69. var sb = new StringBuilder();
  70. sb.Append("depth");
  71. sb.Append(SEPARATOR);
  72. sb.Append("name");
  73. sb.Append(SEPARATOR);
  74. sb.Append("usage count");
  75. sb.Append(SEPARATOR);
  76. sb.Append("extension");
  77. sb.Append(SEPARATOR);
  78. sb.Append("size");
  79. sb.Append(SEPARATOR);
  80. sb.Append("type");
  81. sb.Append(SEPARATOR);
  82. sb.Append("guid");
  83. sb.Append(SEPARATOR);
  84. sb.Append("atlas");
  85. sb.Append(SEPARATOR);
  86. sb.Append("assetbundle");
  87. sb.Append(SEPARATOR);
  88. sb.Append("group");
  89. sb.Append(SEPARATOR);
  90. sb.Append("full path");
  91. return sb.ToString();
  92. }
  93. public static string GetCSVRows(FR2_Ref[] source)
  94. {
  95. if (source == null)
  96. {
  97. //Debug.LogWarning("source should not be null!");
  98. return string.Empty;
  99. }
  100. var sb = new StringBuilder();
  101. sb.AppendLine(GetCSVTitle());
  102. foreach (var s in source)
  103. {
  104. if (s == null) continue;
  105. sb.AppendLine(GetCSVRow(s));
  106. }
  107. return sb.ToString();
  108. }
  109. }