77 lines
2.7 KiB
C#
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;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|