mirror of
https://github.com/EsotericSoftware/spine-runtimes.git
synced 2026-03-26 22:49:01 +08:00
[unity] Added missing attribute drawer changes of last commits for ui-toolkit package (on spine-unity side).
This commit is contained in:
parent
369dfb8b83
commit
e076a1c7d9
@ -152,9 +152,24 @@ namespace Spine.Unity.Editor {
|
|||||||
Texture2D image = Icon;
|
Texture2D image = Icon;
|
||||||
GUIStyle usedStyle = IsValueValid(property) ? EditorStyles.popup : ErrorPopupStyle;
|
GUIStyle usedStyle = IsValueValid(property) ? EditorStyles.popup : ErrorPopupStyle;
|
||||||
string propertyStringValue = (property.hasMultipleDifferentValues) ? SpineInspectorUtility.EmDash : property.stringValue;
|
string propertyStringValue = (property.hasMultipleDifferentValues) ? SpineInspectorUtility.EmDash : property.stringValue;
|
||||||
if (GUI.Button(position, string.IsNullOrEmpty(propertyStringValue) ? NoneLabel(image) :
|
|
||||||
SpineInspectorUtility.TempContent(propertyStringValue, image), usedStyle))
|
if (!TargetAttribute.avoidGenericMenu) {
|
||||||
Selector(property);
|
if (GUI.Button(position, string.IsNullOrEmpty(propertyStringValue) ? NoneLabel(image) :
|
||||||
|
SpineInspectorUtility.TempContent(propertyStringValue, image), usedStyle))
|
||||||
|
Selector(property);
|
||||||
|
} else {
|
||||||
|
SkeletonData skeletonData = skeletonDataAsset.GetSkeletonData(false);
|
||||||
|
List<GUIContent> contentList = new List<GUIContent>();
|
||||||
|
List<string> valueList = new List<string>();
|
||||||
|
PopulatePopupList(ref contentList, ref valueList, image, property, TargetAttribute, skeletonData);
|
||||||
|
int currentIndex = valueList.IndexOf(propertyStringValue);
|
||||||
|
int previousIndex = currentIndex;
|
||||||
|
currentIndex = EditorGUI.Popup(position, currentIndex, contentList.ToArray());
|
||||||
|
if (previousIndex != currentIndex) {
|
||||||
|
property.stringValue = valueList[currentIndex];
|
||||||
|
property.serializedObject.ApplyModifiedProperties();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public ISkeletonComponent GetTargetSkeletonComponent (SerializedProperty property) {
|
public ISkeletonComponent GetTargetSkeletonComponent (SerializedProperty property) {
|
||||||
@ -192,6 +207,12 @@ namespace Spine.Unity.Editor {
|
|||||||
serializedProperty.serializedObject.ApplyModifiedProperties();
|
serializedProperty.serializedObject.ApplyModifiedProperties();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected virtual void PopulatePopupList (ref List<GUIContent> contentList, ref List<string> valueList,
|
||||||
|
Texture2D image, SerializedProperty property, T targetAttribute, SkeletonData data) {
|
||||||
|
contentList.Add(new GUIContent ("Type Not Supported"));
|
||||||
|
valueList.Add(string.Empty);
|
||||||
|
}
|
||||||
|
|
||||||
public override float GetPropertyHeight (SerializedProperty property, GUIContent label) {
|
public override float GetPropertyHeight (SerializedProperty property, GUIContent label) {
|
||||||
return 18;
|
return 18;
|
||||||
}
|
}
|
||||||
@ -302,6 +323,25 @@ namespace Spine.Unity.Editor {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected override void PopulatePopupList (ref List<GUIContent> contentList, ref List<string> valueList,
|
||||||
|
Texture2D image, SerializedProperty property, SpineSkin targetAttribute, SkeletonData data) {
|
||||||
|
|
||||||
|
if (targetAttribute.includeNone) {
|
||||||
|
contentList.Add(new GUIContent(NoneStringConstant, image));
|
||||||
|
valueList.Add(string.Empty);
|
||||||
|
}
|
||||||
|
|
||||||
|
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;
|
||||||
|
contentList.Add(new GUIContent(name, image));
|
||||||
|
valueList.Add(choiceValue);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
[CustomPropertyDrawer(typeof(SpineAnimation))]
|
[CustomPropertyDrawer(typeof(SpineAnimation))]
|
||||||
@ -348,6 +388,24 @@ namespace Spine.Unity.Editor {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected override void PopulatePopupList (ref List<GUIContent> contentList, ref List<string> valueList,
|
||||||
|
Texture2D image, SerializedProperty property, SpineAnimation targetAttribute, SkeletonData data) {
|
||||||
|
|
||||||
|
ExposedList<Animation> animations = data.Animations;
|
||||||
|
if (targetAttribute.includeNone) {
|
||||||
|
contentList.Add(new GUIContent(NoneString, image));
|
||||||
|
valueList.Add(string.Empty);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < animations.Count; i++) {
|
||||||
|
string name = animations.Items[i].Name;
|
||||||
|
if (name.StartsWith(targetAttribute.startsWith, StringComparison.Ordinal)) {
|
||||||
|
contentList.Add(new GUIContent(name, image));
|
||||||
|
valueList.Add(name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
[CustomPropertyDrawer(typeof(SpineEvent))]
|
[CustomPropertyDrawer(typeof(SpineEvent))]
|
||||||
|
|||||||
@ -33,12 +33,13 @@ using UnityEngine;
|
|||||||
|
|
||||||
namespace Spine.Unity {
|
namespace Spine.Unity {
|
||||||
|
|
||||||
[AttributeUsage(AttributeTargets.Field, Inherited = true, AllowMultiple = false)]
|
[AttributeUsage(AttributeTargets.Property | AttributeTargets.Field, Inherited = true, AllowMultiple = false)]
|
||||||
public abstract class SpineAttributeBase : PropertyAttribute {
|
public abstract class SpineAttributeBase : PropertyAttribute {
|
||||||
public string dataField = "";
|
public string dataField = "";
|
||||||
public string startsWith = "";
|
public string startsWith = "";
|
||||||
public bool includeNone = true;
|
public bool includeNone = true;
|
||||||
public bool fallbackToTextField = false;
|
public bool fallbackToTextField = false;
|
||||||
|
public bool avoidGenericMenu = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public class SpineBone : SpineAttributeBase {
|
public class SpineBone : SpineAttributeBase {
|
||||||
@ -103,11 +104,14 @@ namespace Spine.Unity {
|
|||||||
/// Valid types are SkeletonDataAsset and SkeletonRenderer (and derivatives)
|
/// Valid types are SkeletonDataAsset and SkeletonRenderer (and derivatives)
|
||||||
/// If left empty and the script the attribute is applied to is derived from Component, GetComponent<SkeletonRenderer>() will be called as a fallback.
|
/// If left empty and the script the attribute is applied to is derived from Component, GetComponent<SkeletonRenderer>() will be called as a fallback.
|
||||||
/// </param>
|
/// </param>
|
||||||
public SpineAnimation (string startsWith = "", string dataField = "", bool includeNone = true, bool fallbackToTextField = false) {
|
public SpineAnimation (string startsWith = "", string dataField = "",
|
||||||
|
bool includeNone = true, bool fallbackToTextField = false, bool avoidGenericMenu = false) {
|
||||||
|
|
||||||
this.startsWith = startsWith;
|
this.startsWith = startsWith;
|
||||||
this.dataField = dataField;
|
this.dataField = dataField;
|
||||||
this.includeNone = includeNone;
|
this.includeNone = includeNone;
|
||||||
this.fallbackToTextField = fallbackToTextField;
|
this.fallbackToTextField = fallbackToTextField;
|
||||||
|
this.avoidGenericMenu = avoidGenericMenu;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -205,12 +209,15 @@ namespace Spine.Unity {
|
|||||||
|
|
||||||
public bool defaultAsEmptyString = false;
|
public bool defaultAsEmptyString = false;
|
||||||
|
|
||||||
public SpineSkin (string startsWith = "", string dataField = "", bool includeNone = false, bool fallbackToTextField = false, bool defaultAsEmptyString = false) {
|
public SpineSkin (string startsWith = "", string dataField = "", bool includeNone = false,
|
||||||
|
bool fallbackToTextField = false, bool defaultAsEmptyString = false, bool avoidGenericMenu = false) {
|
||||||
|
|
||||||
this.startsWith = startsWith;
|
this.startsWith = startsWith;
|
||||||
this.dataField = dataField;
|
this.dataField = dataField;
|
||||||
this.includeNone = includeNone;
|
this.includeNone = includeNone;
|
||||||
this.fallbackToTextField = fallbackToTextField;
|
this.fallbackToTextField = fallbackToTextField;
|
||||||
this.defaultAsEmptyString = defaultAsEmptyString;
|
this.defaultAsEmptyString = defaultAsEmptyString;
|
||||||
|
this.avoidGenericMenu = avoidGenericMenu;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
"name": "com.esotericsoftware.spine.spine-unity",
|
"name": "com.esotericsoftware.spine.spine-unity",
|
||||||
"displayName": "spine-unity Runtime",
|
"displayName": "spine-unity Runtime",
|
||||||
"description": "This plugin provides the spine-unity runtime core.",
|
"description": "This plugin provides the spine-unity runtime core.",
|
||||||
"version": "4.2.74",
|
"version": "4.2.75",
|
||||||
"unity": "2018.3",
|
"unity": "2018.3",
|
||||||
"author": {
|
"author": {
|
||||||
"name": "Esoteric Software",
|
"name": "Esoteric Software",
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "com.esotericsoftware.spine.ui-toolkit",
|
"name": "com.esotericsoftware.spine.ui-toolkit",
|
||||||
"displayName": "Spine UI Toolkit [Experimental]",
|
"displayName": "Spine UI Toolkit [Experimental]",
|
||||||
"description": "This plugin provides UI Toolkit integration for the spine-unity runtime.\n\nPrerequisites:\nIt requires a working installation of the spine-unity runtime, version 4.2.\n(See http://esotericsoftware.com/git/spine-runtimes/spine-unity)",
|
"description": "This plugin provides UI Toolkit integration for the spine-unity runtime.\n\nPrerequisites:\nIt requires a working installation of the spine-unity runtime, version 4.2.75 or newer.\n(See http://esotericsoftware.com/git/spine-runtimes/spine-unity)",
|
||||||
"version": "4.2.0-preview.1",
|
"version": "4.2.0-preview.1",
|
||||||
"unity": "2023.2",
|
"unity": "2023.2",
|
||||||
"author": {
|
"author": {
|
||||||
@ -11,7 +11,7 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"com.unity.modules.uielements": "1.0.0",
|
"com.unity.modules.uielements": "1.0.0",
|
||||||
"com.esotericsoftware.spine.spine-unity": "4.2.21"
|
"com.esotericsoftware.spine.spine-unity": "4.2.75"
|
||||||
},
|
},
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"spine",
|
"spine",
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user