// Magica Cloth.
// Copyright (c) MagicaSoft, 2020-2022.
// https://magicasoft.jp
using System.Text;
namespace MagicaCloth
{
public static partial class Define
{
///
/// 結果コード
///
public enum Error
{
None = 0, // なし(成功)
Cancel = 1,
// エラー
EmptyData = 100,
InvalidDataHash = 101,
TooOldDataVersion = 102,
HigherDataVersion = 103,
MeshDataNull = 200,
MeshDataHashMismatch = 201,
MeshDataVersionMismatch = 202,
ClothDataNull = 300,
ClothDataHashMismatch = 301,
ClothDataVersionMismatch = 302,
ClothSelectionHashMismatch = 400,
ClothSelectionVersionMismatch = 401,
ClothTargetRootCountMismatch = 500,
UseTransformNull = 600,
UseTransformCountZero = 601,
UseTransformCountMismatch = 602,
DeformerNull = 700,
DeformerHashMismatch = 701,
DeformerVersionMismatch = 702,
DeformerCountZero = 703,
DeformerCountMismatch = 704,
VertexCountZero = 800,
VertexUseCountZero = 801,
VertexCountMismatch = 802,
RootListCountMismatch = 900,
SelectionDataCountMismatch = 1000,
SelectionCountZero = 1001,
CenterTransformNull = 1100,
SpringDataNull = 1200,
SpringDataHashMismatch = 1201,
SpringDataVersionMismatch = 1202,
TargetObjectNull = 1300,
SharedMeshNull = 1400,
SharedMeshCannotRead = 1401,
SharedMeshDifferent = 1402,
SharedMeshDifferentVertexCount = 1403,
MeshOptimizeMismatch = 1500,
MeshVertexCount65535Over = 1501,
MeshKeepQuads = 1502,
BoneListZero = 1600,
BoneListNull = 1601,
RendererNotFound = 1700,
MeshFilterNotFound = 1701,
BuildNoTransformList = 8000,
BuildReadOnlyPrefab = 8001,
BuildFailedSaveAssets = 8002,
BuildPrefabCannotSaved = 8003,
BuildNotSceneObject = 8004,
BuildInvalidComponent = 8100,
BuildInvalidData = 8101,
BuildInvalidMeshData = 8102,
BuildInvalidGameObject = 8103,
BuildInvalidPrefab = 8104,
BuildInvalidRenderDeformer = 8105,
BuildInvalidScene = 8106,
BuildInvalidSelection = 8107,
BuildMissingDeformer = 8200,
BuildMissingSelection = 8201,
BuildMissingMesh = 8202,
BuildMissingScriptOnPrefab = 8203,
// ここからはランタイムエラー(10000~)
// ここからはワーニング(20000~)
OverlappingTransform = 20000,
AddOverlappingTransform = 20001,
OldDataVersion = 20002,
OldAlgorithm = 20003,
}
///
/// コードがエラーが無く正常か判定する
///
///
///
public static bool IsNormal(Error err)
{
return err == Error.None;
}
///
/// コードがエラーか判定する
///
///
///
public static bool IsError(Error err)
{
return err != Error.None && (int)err >= 100 && (int)err < 20000;
}
///
/// コードがワーニングか判定する
///
///
///
public static bool IsWarning(Error err)
{
return (int)err >= 20000;
}
///
/// エラーメッセージを取得する
///
///
///
public static string GetErrorMessage(Error err)
{
StringBuilder sb = new StringBuilder(512);
// 基本エラーコード
sb.AppendFormat("{0} ({1}) : {2}", IsError(err) ? "Error" : "Warning", (int)err, err.ToString());
//if ((int)err < 20000)
// sb.AppendFormat("Error ({0}) : {1}", (int)err, err.ToString());
//else
// sb.AppendFormat("Warning ({0}) : {1}", (int)err, err.ToString());
// 個別の詳細メッセージ
switch (err)
{
case Error.SharedMeshCannotRead:
sb.AppendLine();
sb.Append("Please turn On the [Read/Write Enabled] flag of the model importer.");
break;
case Error.OldDataVersion:
sb.Clear();
sb.Append("Old data format!");
sb.AppendLine();
sb.Append("It may not work or the latest features may not be available.");
sb.AppendLine();
sb.Append("It is recommended to press the [Create] button and rebuild the data.");
break;
case Error.EmptyData:
sb.Clear();
sb.Append("No Data.");
break;
case Error.OldAlgorithm:
sb.Clear();
sb.Append("Old algorithms.");
sb.AppendLine();
sb.Append("Old algorithms will be removed in the future.");
sb.AppendLine();
sb.Append("Please use a more stable and up-to-date algorithm.");
sb.AppendLine();
sb.Append("The settings can be made from the [Algorithm] panel.");
break;
case Error.MeshKeepQuads:
sb.AppendLine();
sb.Append("Keep Quads configuration is not supported.");
sb.AppendLine();
sb.Append("Please turn Off the [Keep Quads] flag of the model importer.");
break;
case Error.RendererNotFound:
sb.AppendLine();
sb.Append("Creation failed. Renderer not found.");
break;
case Error.MeshFilterNotFound:
sb.AppendLine();
sb.Append("Creation failed. MeshFilter not found.");
break;
}
return sb.ToString();
}
}
}