BITFALL/Assets/MagicaCloth2/Scripts/Editor/EditorExtension/SharePreBuildDataDrawer.cs

77 lines
2.7 KiB
C#

// Magica Cloth 2.
// Copyright (c) 2024 MagicaSoft.
// https://magicasoft.jp
using UnityEditor;
using UnityEngine;
namespace MagicaCloth2
{
[CustomPropertyDrawer(typeof(SharePreBuildData))]
public class SharePreBuildDataDrawer : PropertyDrawer
{
public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
{
EditorGUI.BeginProperty(position, label, property);
// サイズ
float lineHight = EditorGUIUtility.singleLineHeight;
// 子のフィールドをインデントしない
var indent = EditorGUI.indentLevel;
EditorGUI.indentLevel = 0;
var buildIdProperty = property.FindPropertyRelative("buildId");
var versionProperty = property.FindPropertyRelative("version");
var resultProperty = property.FindPropertyRelative("buildResult.result");
// テキスト幅調整
EditorGUIUtility.labelWidth = position.width;
// build Id
string buildId = string.IsNullOrEmpty(buildIdProperty.stringValue) ? "(Empty)" : buildIdProperty.stringValue;
EditorGUI.PrefixLabel(position, GUIUtility.GetControlID(FocusType.Passive), new GUIContent(buildId));
position.y += lineHight;
// インデント+1
EditorGUI.indentLevel = indent + 1;
// result
Define.Result ret = (Define.Result)resultProperty.enumValueIndex;
var result = new ResultCode(ret);
if (result.IsFaild() == false)
{
// バージョン確認
if (versionProperty.intValue != Define.System.LatestPreBuildVersion)
result.SetError(Define.Result.PreBuildData_VersionMismatch);
}
// result text
var backColor = GUI.color;
if (result.IsSuccess())
{
GUI.color = Color.green;
EditorGUI.PrefixLabel(position, GUIUtility.GetControlID(FocusType.Passive), new GUIContent($"{result.Result}"));
}
else
{
GUI.color = Color.red;
EditorGUI.PrefixLabel(position, GUIUtility.GetControlID(FocusType.Passive), new GUIContent($"Error: {result.Result}"));
}
GUI.color = backColor;
// インデントを元通りに戻します
EditorGUI.indentLevel = indent;
EditorGUI.EndProperty();
}
public override float GetPropertyHeight(SerializedProperty property, GUIContent label)
{
float h = EditorGUIUtility.singleLineHeight;
h *= 2;
return h;
}
}
}