I really do like the custom attributes that you have for the property drawers you have for accessing spine properties like bones, skins, etc. I'd love it if it wasn't string-based and instead imported and reused scriptableobjects so that it survives renames.
However, why I'm posting is I'm seeing some of these attributes not respecting all of the attribute properties for example. The SpineSkinDrawer doesn't seem to populate the NONE label properly even when the default is to have it there.
protected override void PopulateMenu (GenericMenu menu, SerializedProperty property, SpineSkin targetAttribute, SkeletonData data) {
menu.AddDisabledItem(new GUIContent(skeletonDataAsset.name));
menu.AddSeparator("");
// add NONE option if enabled on the attribute
if (targetAttribute.includeNone) {
menu.AddItem(new GUIContent(NoneString), !property.hasMultipleDifferentValues && string.IsNullOrEmpty(property.stringValue), HandleSelect, new SpineDrawerValuePair(string.Empty, property));
}
for (int i = 0; i < data.Skins.Count; i++) {
string name = data.Skins.Items[i].Name;
if (name.StartsWith(targetAttribute.startsWith, StringComparison.Ordinal)) {
bool isDefault = string.Equals(name, DefaultSkinName, StringComparison.Ordinal);
string choiceValue = TargetAttribute.defaultAsEmptyString && isDefault ? string.Empty : name;
menu.AddItem(new GUIContent(name), !property.hasMultipleDifferentValues && choiceValue == property.stringValue, HandleSelect, new SpineDrawerValuePair(choiceValue, property));
}
}
}