UniVRM/Assets/UniGLTF/MeshUtility/Runtime/Validation.cs
ousttrue 51dbcb76e5 MeshUtility を UniGLTF 下に移動
意図しない MeshUtility => UniGLTF 向きの参照が残っていて UPM が動作しなかった。次バージョンで予定していたファイル移動を繰り上げ
2021-01-06 20:20:14 +09:00

108 lines
2.7 KiB
C#

using System;
using System.Collections.Generic;
#if UNITY_EDITOR
using UnityEditor;
#endif
namespace MeshUtility
{
public enum ErrorLevels
{
// Exportできる。お知らせ
Info,
// Exportできる。不具合の可能性
Warning,
// Exportするために修正が必用
Error,
// Exportの前提を満たさない
Critical,
}
public struct Validation
{
/// <summary>
/// エクスポート可能か否か。
/// true のメッセージは警告
/// false のメッセージはエラー
/// </summary>
public readonly ErrorLevels ErrorLevel;
public bool CanExport
{
get
{
switch (ErrorLevel)
{
case ErrorLevels.Info:
case ErrorLevels.Warning:
return true;
case ErrorLevels.Error:
case ErrorLevels.Critical:
return false;
}
throw new NotImplementedException();
}
}
public readonly String Message;
Validation(ErrorLevels canExport, string message)
{
ErrorLevel = canExport;
Message = message;
}
#if UNITY_EDITOR
public void DrawGUI()
{
if (string.IsNullOrEmpty(Message))
{
return;
}
switch (ErrorLevel)
{
case ErrorLevels.Info:
EditorGUILayout.HelpBox(Message, MessageType.Info);
break;
case ErrorLevels.Warning:
EditorGUILayout.HelpBox(Message, MessageType.Warning);
break;
case ErrorLevels.Critical:
case ErrorLevels.Error:
EditorGUILayout.HelpBox(Message, MessageType.Error);
break;
default:
throw new NotImplementedException();
}
}
#endif
public static Validation Critical(string msg)
{
return new Validation(ErrorLevels.Critical, msg);
}
public static Validation Error(string msg)
{
return new Validation(ErrorLevels.Error, msg);
}
public static Validation Warning(string msg)
{
return new Validation(ErrorLevels.Warning, msg);
}
public static Validation Info(string msg)
{
return new Validation(ErrorLevels.Info, msg);
}
public void AddTo(IList<Validation> dst)
{
dst.Add(this);
}
}
}