Neg_Utils/Editor/SerializationExtentions.cs
2024-02-12 21:26:24 +01:00

27 lines
919 B
C#

using UnityEditor;
namespace NEG.Utils.Serialization
{
public static class SerializationExtentions
{
public static SerializedProperty FindAutoProperty(this SerializedObject @this, string name) =>
@this.FindProperty(GetBackingFieldName(name));
public static SerializedProperty FindAutoPropertyRelative(this SerializedProperty @this, string name) =>
@this.FindPropertyRelative(GetBackingFieldName(name));
public static string GetBackingFieldName(string name)
{
#if NET_STANDARD || NET_STANDARD_2_1
return string.Create(1/*<*/ + name.Length + 16/*>k__BackingField*/, name, static (span, name) =>
{
span[0] = '<';
name.AsSpan().CopyTo(span[1..]);
">k__BackingField".AsSpan().CopyTo(span[(name.Length + 1)..]);
});
#else
return '<' + name + ">k__BackingField";
#endif
}
}
}