63 lines
2.4 KiB
C#
63 lines
2.4 KiB
C#
// Copyright HTC Corporation All Rights Reserved.
|
|
|
|
#if UNITY_EDITOR
|
|
|
|
using System.Text.RegularExpressions;
|
|
using UnityEditor;
|
|
using UnityEngine;
|
|
|
|
namespace VIVE.OpenXR.Toolkits.Spectator.Helper
|
|
{
|
|
public static class EditorHelper
|
|
{
|
|
// Microsoft definition
|
|
// https://learn.microsoft.com/en-us/dotnet/api/microsoft.entityframeworkcore.metadata.conventions.backingfieldconvention?view=efcore-7.0#definition
|
|
private const string BackingFieldConventionPrefix = "<";
|
|
private const string BackingFieldConventionEndString = "k__BackingField";
|
|
|
|
public static void ShowDefaultInspector(SerializedObject obj)
|
|
{
|
|
EditorGUI.BeginChangeCheck();
|
|
obj.UpdateIfRequiredOrScript();
|
|
|
|
SerializedProperty iterator = obj.GetIterator();
|
|
for (bool enterChildren = true; iterator.NextVisible(enterChildren); enterChildren = false)
|
|
{
|
|
using (new EditorGUI.DisabledScope("m_Script" == iterator.propertyPath))
|
|
{
|
|
string originalLabelText = iterator.name;
|
|
if (originalLabelText.EndsWith(BackingFieldConventionEndString))
|
|
{
|
|
string fixLabelText = Regex.Replace(
|
|
originalLabelText.Substring(
|
|
1,
|
|
originalLabelText.Length - 1 - BackingFieldConventionPrefix.Length -
|
|
BackingFieldConventionEndString.Length),
|
|
"([a-z])([A-Z])",
|
|
"$1 $2");
|
|
|
|
EditorGUILayout.PropertyField(
|
|
property: iterator,
|
|
label: new GUIContent(fixLabelText),
|
|
includeChildren: true);
|
|
}
|
|
else
|
|
{
|
|
EditorGUILayout.PropertyField(iterator, true);
|
|
}
|
|
}
|
|
}
|
|
|
|
obj.ApplyModifiedProperties();
|
|
EditorGUI.EndChangeCheck();
|
|
}
|
|
|
|
public static string PropertyName(string propertyName)
|
|
{
|
|
// Microsoft definition
|
|
// https://learn.microsoft.com/en-us/dotnet/api/microsoft.entityframeworkcore.metadata.conventions.backingfieldconvention?view=efcore-7.0#definition
|
|
return $"<{propertyName}>k__BackingField";
|
|
}
|
|
}
|
|
}
|
|
#endif |