102 lines
No EOL
3.4 KiB
C#
Executable file
102 lines
No EOL
3.4 KiB
C#
Executable file
using ABI.CCK.Components;
|
|
using UnityEditor;
|
|
using UnityEngine;
|
|
|
|
namespace ABI.CCK.Scripts.Editor
|
|
{
|
|
[CustomEditor(typeof(CVRDescription))]
|
|
public class CCK_CVRDescriptionEditor : UnityEditor.Editor
|
|
{
|
|
private CVRDescription _description;
|
|
|
|
#region Unity Events
|
|
|
|
private void OnEnable()
|
|
{
|
|
if (target == null) return;
|
|
_description = (CVRDescription)target;
|
|
}
|
|
|
|
public override void OnInspectorGUI()
|
|
{
|
|
if (_description == null)
|
|
return;
|
|
|
|
EditorGUI.BeginChangeCheck();
|
|
|
|
if (_description.locked)
|
|
DrawLockedDescription();
|
|
else
|
|
DrawEditableDescription();
|
|
|
|
if (EditorGUI.EndChangeCheck())
|
|
EditorUtility.SetDirty(_description);
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region GUI Drawing
|
|
|
|
private void DrawLockedDescription()
|
|
{
|
|
GUIStyle helpBoxStyle = new GUIStyle(EditorStyles.helpBox)
|
|
{
|
|
padding = new RectOffset(10, 10, 10, 10)
|
|
};
|
|
|
|
GUIStyle descriptionStyle = new GUIStyle(EditorStyles.label)
|
|
{
|
|
richText = true,
|
|
wordWrap = true
|
|
};
|
|
|
|
EditorGUILayout.BeginVertical(helpBoxStyle);
|
|
EditorGUILayout.BeginHorizontal();
|
|
|
|
GUIContent iconContent = GUIContent.none;
|
|
switch (_description.type)
|
|
{
|
|
case 1: // Info
|
|
iconContent = EditorGUIUtility.IconContent("console.infoicon");
|
|
break;
|
|
case 2: // Warning
|
|
iconContent = EditorGUIUtility.IconContent("console.warnicon");
|
|
break;
|
|
case 3: // Error
|
|
iconContent = EditorGUIUtility.IconContent("console.erroricon");
|
|
break;
|
|
}
|
|
|
|
if (iconContent != GUIContent.none)
|
|
{
|
|
GUILayout.Label(iconContent, GUILayout.Width(40), GUILayout.Height(40));
|
|
GUILayout.Space(10);
|
|
}
|
|
|
|
using (new EditorGUILayout.ScrollViewScope(Vector2.zero, GUILayout.ExpandWidth(true)))
|
|
EditorGUILayout.LabelField(_description.description, descriptionStyle);
|
|
|
|
EditorGUILayout.EndHorizontal();
|
|
EditorGUILayout.EndVertical();
|
|
|
|
if (!string.IsNullOrEmpty(_description.url) && GUILayout.Button("Read more about this topic"))
|
|
Application.OpenURL(_description.url);
|
|
}
|
|
|
|
private void DrawEditableDescription()
|
|
{
|
|
EditorGUILayout.LabelField("Description:", new GUIStyle(EditorStyles.label));
|
|
_description.description = EditorGUILayout.TextArea(_description.description,
|
|
new GUIStyle(EditorStyles.textArea) { richText = true },
|
|
GUILayout.Height(100));
|
|
|
|
_description.url = EditorGUILayout.TextField("Documentation Url", _description.url);
|
|
_description.type = EditorGUILayout.Popup("Icon Type", _description.type, new[] { "None", "Info", "Warning", "Error" });
|
|
|
|
if (GUILayout.Button("Lock info"))
|
|
_description.locked = true;
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
} |