ErrorDefine.cs 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206
  1. // Magica Cloth.
  2. // Copyright (c) MagicaSoft, 2020-2022.
  3. // https://magicasoft.jp
  4. using System.Text;
  5. namespace MagicaCloth
  6. {
  7. public static partial class Define
  8. {
  9. /// <summary>
  10. /// 結果コード
  11. /// </summary>
  12. public enum Error
  13. {
  14. None = 0, // なし(成功)
  15. Cancel = 1,
  16. // エラー
  17. EmptyData = 100,
  18. InvalidDataHash = 101,
  19. TooOldDataVersion = 102,
  20. HigherDataVersion = 103,
  21. MeshDataNull = 200,
  22. MeshDataHashMismatch = 201,
  23. MeshDataVersionMismatch = 202,
  24. ClothDataNull = 300,
  25. ClothDataHashMismatch = 301,
  26. ClothDataVersionMismatch = 302,
  27. ClothSelectionHashMismatch = 400,
  28. ClothSelectionVersionMismatch = 401,
  29. ClothTargetRootCountMismatch = 500,
  30. UseTransformNull = 600,
  31. UseTransformCountZero = 601,
  32. UseTransformCountMismatch = 602,
  33. DeformerNull = 700,
  34. DeformerHashMismatch = 701,
  35. DeformerVersionMismatch = 702,
  36. DeformerCountZero = 703,
  37. DeformerCountMismatch = 704,
  38. VertexCountZero = 800,
  39. VertexUseCountZero = 801,
  40. VertexCountMismatch = 802,
  41. RootListCountMismatch = 900,
  42. SelectionDataCountMismatch = 1000,
  43. SelectionCountZero = 1001,
  44. CenterTransformNull = 1100,
  45. SpringDataNull = 1200,
  46. SpringDataHashMismatch = 1201,
  47. SpringDataVersionMismatch = 1202,
  48. TargetObjectNull = 1300,
  49. SharedMeshNull = 1400,
  50. SharedMeshCannotRead = 1401,
  51. SharedMeshDifferent = 1402,
  52. SharedMeshDifferentVertexCount = 1403,
  53. MeshOptimizeMismatch = 1500,
  54. MeshVertexCount65535Over = 1501,
  55. MeshKeepQuads = 1502,
  56. BoneListZero = 1600,
  57. BoneListNull = 1601,
  58. RendererNotFound = 1700,
  59. MeshFilterNotFound = 1701,
  60. BuildNoTransformList = 8000,
  61. BuildReadOnlyPrefab = 8001,
  62. BuildFailedSaveAssets = 8002,
  63. BuildPrefabCannotSaved = 8003,
  64. BuildNotSceneObject = 8004,
  65. BuildInvalidComponent = 8100,
  66. BuildInvalidData = 8101,
  67. BuildInvalidMeshData = 8102,
  68. BuildInvalidGameObject = 8103,
  69. BuildInvalidPrefab = 8104,
  70. BuildInvalidRenderDeformer = 8105,
  71. BuildInvalidScene = 8106,
  72. BuildInvalidSelection = 8107,
  73. BuildMissingDeformer = 8200,
  74. BuildMissingSelection = 8201,
  75. BuildMissingMesh = 8202,
  76. BuildMissingScriptOnPrefab = 8203,
  77. // ここからはランタイムエラー(10000~)
  78. // ここからはワーニング(20000~)
  79. OverlappingTransform = 20000,
  80. AddOverlappingTransform = 20001,
  81. OldDataVersion = 20002,
  82. OldAlgorithm = 20003,
  83. }
  84. /// <summary>
  85. /// コードがエラーが無く正常か判定する
  86. /// </summary>
  87. /// <param name="err"></param>
  88. /// <returns></returns>
  89. public static bool IsNormal(Error err)
  90. {
  91. return err == Error.None;
  92. }
  93. /// <summary>
  94. /// コードがエラーか判定する
  95. /// </summary>
  96. /// <param name="err"></param>
  97. /// <returns></returns>
  98. public static bool IsError(Error err)
  99. {
  100. return err != Error.None && (int)err >= 100 && (int)err < 20000;
  101. }
  102. /// <summary>
  103. /// コードがワーニングか判定する
  104. /// </summary>
  105. /// <param name="err"></param>
  106. /// <returns></returns>
  107. public static bool IsWarning(Error err)
  108. {
  109. return (int)err >= 20000;
  110. }
  111. /// <summary>
  112. /// エラーメッセージを取得する
  113. /// </summary>
  114. /// <param name="err"></param>
  115. /// <returns></returns>
  116. public static string GetErrorMessage(Error err)
  117. {
  118. StringBuilder sb = new StringBuilder(512);
  119. // 基本エラーコード
  120. sb.AppendFormat("{0} ({1}) : {2}", IsError(err) ? "Error" : "Warning", (int)err, err.ToString());
  121. //if ((int)err < 20000)
  122. // sb.AppendFormat("Error ({0}) : {1}", (int)err, err.ToString());
  123. //else
  124. // sb.AppendFormat("Warning ({0}) : {1}", (int)err, err.ToString());
  125. // 個別の詳細メッセージ
  126. switch (err)
  127. {
  128. case Error.SharedMeshCannotRead:
  129. sb.AppendLine();
  130. sb.Append("Please turn On the [Read/Write Enabled] flag of the model importer.");
  131. break;
  132. case Error.OldDataVersion:
  133. sb.Clear();
  134. sb.Append("Old data format!");
  135. sb.AppendLine();
  136. sb.Append("It may not work or the latest features may not be available.");
  137. sb.AppendLine();
  138. sb.Append("It is recommended to press the [Create] button and rebuild the data.");
  139. break;
  140. case Error.EmptyData:
  141. sb.Clear();
  142. sb.Append("No Data.");
  143. break;
  144. case Error.OldAlgorithm:
  145. sb.Clear();
  146. sb.Append("Old algorithms.");
  147. sb.AppendLine();
  148. sb.Append("Old algorithms will be removed in the future.");
  149. sb.AppendLine();
  150. sb.Append("Please use a more stable and up-to-date algorithm.");
  151. sb.AppendLine();
  152. sb.Append("The settings can be made from the [Algorithm] panel.");
  153. break;
  154. case Error.MeshKeepQuads:
  155. sb.AppendLine();
  156. sb.Append("Keep Quads configuration is not supported.");
  157. sb.AppendLine();
  158. sb.Append("Please turn Off the [Keep Quads] flag of the model importer.");
  159. break;
  160. case Error.RendererNotFound:
  161. sb.AppendLine();
  162. sb.Append("Creation failed. Renderer not found.");
  163. break;
  164. case Error.MeshFilterNotFound:
  165. sb.AppendLine();
  166. sb.Append("Creation failed. MeshFilter not found.");
  167. break;
  168. }
  169. return sb.ToString();
  170. }
  171. }
  172. }