From 81bac325388383be500a8769fe49d2db1c4f6892 Mon Sep 17 00:00:00 2001 From: Anders Ejlersen Date: Sat, 4 Dec 2021 12:36:50 +0100 Subject: [PATCH] Added FieldLabelFrom attribute --- Editor/Predrawers.meta | 3 +++ .../FieldLabelFromAttributeDrawer.cs | 25 +++++++++++++++++++ .../FieldLabelFromAttributeDrawer.cs.meta | 3 +++ Runtime/Predrawers.meta | 3 +++ Runtime/Predrawers/FieldLabelFromAttribute.cs | 23 +++++++++++++++++ .../FieldLabelFromAttribute.cs.meta | 3 +++ 6 files changed, 60 insertions(+) create mode 100644 Editor/Predrawers.meta create mode 100644 Editor/Predrawers/FieldLabelFromAttributeDrawer.cs create mode 100644 Editor/Predrawers/FieldLabelFromAttributeDrawer.cs.meta create mode 100644 Runtime/Predrawers.meta create mode 100644 Runtime/Predrawers/FieldLabelFromAttribute.cs create mode 100644 Runtime/Predrawers/FieldLabelFromAttribute.cs.meta diff --git a/Editor/Predrawers.meta b/Editor/Predrawers.meta new file mode 100644 index 0000000..ac12a7a --- /dev/null +++ b/Editor/Predrawers.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: b11bc545d74c48e4aaac5cd734c534a9 +timeCreated: 1638612721 \ No newline at end of file diff --git a/Editor/Predrawers/FieldLabelFromAttributeDrawer.cs b/Editor/Predrawers/FieldLabelFromAttributeDrawer.cs new file mode 100644 index 0000000..49ea717 --- /dev/null +++ b/Editor/Predrawers/FieldLabelFromAttributeDrawer.cs @@ -0,0 +1,25 @@ +using UnityEditor; +using UnityEngine; + +namespace Module.Inspector.Editor +{ + [CustomPropertyDrawer(typeof(FieldLabelFromAttribute))] + internal sealed class FieldLabelFromAttributeDrawer : PredrawerModifierPropertyDrawer + { + public override void Modify(PredrawerModifierPropertyAttribute attribute, SerializedProperty property, GUIContent label) + { + var att = (FieldLabelFromAttribute)attribute; + SerializedProperty sp = property.GetRelativeProperty(att.fieldName); + + if (sp == null) + return; + + string str = sp.GetValueAsString(); + + if (att.nicify) + str = ObjectNames.NicifyVariableName(str); + + label.text = str; + } + } +} \ No newline at end of file diff --git a/Editor/Predrawers/FieldLabelFromAttributeDrawer.cs.meta b/Editor/Predrawers/FieldLabelFromAttributeDrawer.cs.meta new file mode 100644 index 0000000..5be021c --- /dev/null +++ b/Editor/Predrawers/FieldLabelFromAttributeDrawer.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 30eda277627d4bca8ddce716ef21b657 +timeCreated: 1638612733 \ No newline at end of file diff --git a/Runtime/Predrawers.meta b/Runtime/Predrawers.meta new file mode 100644 index 0000000..21fca9c --- /dev/null +++ b/Runtime/Predrawers.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 968b630d4caa4605886ae1c1d7f3bdd8 +timeCreated: 1638612567 \ No newline at end of file diff --git a/Runtime/Predrawers/FieldLabelFromAttribute.cs b/Runtime/Predrawers/FieldLabelFromAttribute.cs new file mode 100644 index 0000000..62f0abd --- /dev/null +++ b/Runtime/Predrawers/FieldLabelFromAttribute.cs @@ -0,0 +1,23 @@ +using System; + +namespace Module.Inspector +{ + [AttributeUsage(AttributeTargets.Field, AllowMultiple = false, Inherited = true)] + public sealed class FieldLabelFromAttribute : PredrawerModifierPropertyAttribute + { + public readonly string fieldName; + public readonly bool nicify; + + public FieldLabelFromAttribute(string fieldName) + { + this.fieldName = fieldName; + nicify = true; + } + + public FieldLabelFromAttribute(string fieldName, bool nicify) + { + this.fieldName = fieldName; + this.nicify = nicify; + } + } +} \ No newline at end of file diff --git a/Runtime/Predrawers/FieldLabelFromAttribute.cs.meta b/Runtime/Predrawers/FieldLabelFromAttribute.cs.meta new file mode 100644 index 0000000..7d5b3d9 --- /dev/null +++ b/Runtime/Predrawers/FieldLabelFromAttribute.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: b3ebd4bca514492f87bc5660d98a1a6c +timeCreated: 1638612604 \ No newline at end of file