EditUtility.cs 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. // Magica Cloth.
  2. // Copyright (c) MagicaSoft, 2020-2022.
  3. // https://magicasoft.jp
  4. #if UNITY_EDITOR
  5. using UnityEditor;
  6. using UnityEngine;
  7. namespace MagicaCloth
  8. {
  9. /// <summary>
  10. /// エディター関連ユーティリティ
  11. /// </summary>
  12. public static class EditUtility
  13. {
  14. /// <summary>
  15. /// メッシュの最適化状態をビットフラグで返す
  16. /// (Define.OptimizeMeshを参照)
  17. /// </summary>
  18. /// <param name="mesh"></param>
  19. /// <returns></returns>
  20. public static int GetOptimizeMesh(Mesh mesh)
  21. {
  22. if (mesh == null)
  23. return 0;
  24. // アセットパス
  25. var path = AssetDatabase.GetAssetPath(mesh);
  26. if (string.IsNullOrEmpty(path))
  27. return 0;
  28. int flag = 0;
  29. // モデルインポーターを取得
  30. var importer = AssetImporter.GetAtPath(path) as ModelImporter;
  31. if (importer)
  32. {
  33. if (importer.optimizeMeshPolygons)
  34. flag |= Define.OptimizeMesh.Unity2019_PolygonOrder;
  35. if (importer.optimizeMeshVertices)
  36. flag |= Define.OptimizeMesh.Unity2019_VertexOrder;
  37. if (flag == 0)
  38. flag = Define.OptimizeMesh.Nothing;
  39. }
  40. else
  41. {
  42. // インポーターが取得できない場合はビルドインのメッシュ
  43. flag |= Define.OptimizeMesh.Unity2019_PolygonOrder;
  44. flag |= Define.OptimizeMesh.Unity2019_VertexOrder;
  45. }
  46. return flag;
  47. }
  48. /// <summary>
  49. /// メッシュがKeepQuadsでインポートされているか判定する
  50. /// </summary>
  51. /// <param name="mesh"></param>
  52. /// <returns></returns>
  53. internal static bool IsKeepQuadsMesh(Mesh mesh)
  54. {
  55. if (mesh == null)
  56. return false;
  57. // アセットパス
  58. var path = AssetDatabase.GetAssetPath(mesh);
  59. if (string.IsNullOrEmpty(path))
  60. return false;
  61. // モデルインポーターを取得
  62. var importer = AssetImporter.GetAtPath(path) as ModelImporter;
  63. if (importer)
  64. return importer.keepQuads;
  65. else
  66. return false;
  67. }
  68. }
  69. }
  70. #endif