[Unity] SpineAttributeBase & EventDataAttribute

This commit is contained in:
John 2015-12-30 15:31:00 +08:00
parent da10b70b84
commit 7d002f99e5

View File

@ -7,9 +7,12 @@
using UnityEngine; using UnityEngine;
using System.Collections; using System.Collections;
public class SpineSlot : PropertyAttribute { public abstract class SpineAttributeBase : PropertyAttribute {
public string startsWith = "";
public string dataField = ""; public string dataField = "";
public string startsWith = "";
}
public class SpineSlot : SpineAttributeBase {
public bool containsBoundingBoxes = false; public bool containsBoundingBoxes = false;
/// <summary> /// <summary>
@ -21,17 +24,29 @@ public class SpineSlot : PropertyAttribute {
/// 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>
/// <param name="containsBoundingBoxes">Disables popup results that don't contain bounding box attachments when true.</param> /// <param name="containsBoundingBoxes">Disables popup results that don't contain bounding box attachments when true.</param>
public SpineSlot (string startsWith = "", string dataField = "", bool containsBoundingBoxes = false) { public SpineSlot(string startsWith = "", string dataField = "", bool containsBoundingBoxes = false) {
this.startsWith = startsWith; this.startsWith = startsWith;
this.dataField = dataField; this.dataField = dataField;
this.containsBoundingBoxes = containsBoundingBoxes; this.containsBoundingBoxes = containsBoundingBoxes;
} }
} }
public class SpineSkin : PropertyAttribute { public class SpineEventData : SpineAttributeBase {
public string startsWith = ""; /// <summary>
public string dataField = ""; /// Smart popup menu for Spine Events (Spine.EventData)
/// </summary>
/// <param name="startsWith">Filters popup results to elements that begin with supplied string.</param>
/// <param name="dataField">If specified, a locally scoped field with the name supplied by in dataField will be used to fill the popup results.
/// 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.
/// </param>
public SpineEventData(string startsWith = "", string dataField = "") {
this.startsWith = startsWith;
this.dataField = dataField;
}
}
public class SpineSkin : SpineAttributeBase {
/// <summary> /// <summary>
/// Smart popup menu for Spine Skins /// Smart popup menu for Spine Skins
/// </summary> /// </summary>
@ -40,15 +55,12 @@ public class SpineSkin : PropertyAttribute {
/// 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 SpineSkin (string startsWith = "", string dataField = "") { public SpineSkin(string startsWith = "", string dataField = "") {
this.startsWith = startsWith; this.startsWith = startsWith;
this.dataField = dataField; this.dataField = dataField;
} }
} }
public class SpineAnimation : PropertyAttribute { public class SpineAnimation : SpineAttributeBase {
public string startsWith = "";
public string dataField = "";
/// <summary> /// <summary>
/// Smart popup menu for Spine Animations /// Smart popup menu for Spine Animations
/// </summary> /// </summary>
@ -57,24 +69,18 @@ public class SpineAnimation : PropertyAttribute {
/// 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 = "") { public SpineAnimation(string startsWith = "", string dataField = "") {
this.startsWith = startsWith; this.startsWith = startsWith;
this.dataField = dataField; this.dataField = dataField;
} }
} }
public class SpineAttachment : PropertyAttribute { public class SpineAttachment : SpineAttributeBase {
public bool returnAttachmentPath = false; public bool returnAttachmentPath = false;
public bool currentSkinOnly = false; public bool currentSkinOnly = false;
public bool placeholdersOnly = false; public bool placeholdersOnly = false;
public string dataField = "";
public string slotField = ""; public string slotField = "";
public SpineAttachment () {
}
/// <summary> /// <summary>
/// Smart popup menu for Spine Attachments /// Smart popup menu for Spine Attachments
/// </summary> /// </summary>
@ -86,7 +92,7 @@ public class SpineAttachment : PropertyAttribute {
/// 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 SpineAttachment (bool currentSkinOnly = true, bool returnAttachmentPath = false, bool placeholdersOnly = false, string slotField = "", string dataField = "") { public SpineAttachment(bool currentSkinOnly = true, bool returnAttachmentPath = false, bool placeholdersOnly = false, string slotField = "", string dataField = "") {
this.currentSkinOnly = currentSkinOnly; this.currentSkinOnly = currentSkinOnly;
this.returnAttachmentPath = returnAttachmentPath; this.returnAttachmentPath = returnAttachmentPath;
this.placeholdersOnly = placeholdersOnly; this.placeholdersOnly = placeholdersOnly;
@ -94,11 +100,11 @@ public class SpineAttachment : PropertyAttribute {
this.dataField = dataField; this.dataField = dataField;
} }
public static Hierarchy GetHierarchy (string fullPath) { public static Hierarchy GetHierarchy(string fullPath) {
return new Hierarchy(fullPath); return new Hierarchy(fullPath);
} }
public static Spine.Attachment GetAttachment (string attachmentPath, Spine.SkeletonData skeletonData) { public static Spine.Attachment GetAttachment(string attachmentPath, Spine.SkeletonData skeletonData) {
var hierarchy = SpineAttachment.GetHierarchy(attachmentPath); var hierarchy = SpineAttachment.GetHierarchy(attachmentPath);
if (hierarchy.name == "") if (hierarchy.name == "")
return null; return null;
@ -106,7 +112,7 @@ public class SpineAttachment : PropertyAttribute {
return skeletonData.FindSkin(hierarchy.skin).GetAttachment(skeletonData.FindSlotIndex(hierarchy.slot), hierarchy.name); return skeletonData.FindSkin(hierarchy.skin).GetAttachment(skeletonData.FindSlotIndex(hierarchy.slot), hierarchy.name);
} }
public static Spine.Attachment GetAttachment (string attachmentPath, SkeletonDataAsset skeletonDataAsset) { public static Spine.Attachment GetAttachment(string attachmentPath, SkeletonDataAsset skeletonDataAsset) {
return GetAttachment(attachmentPath, skeletonDataAsset.GetSkeletonData(true)); return GetAttachment(attachmentPath, skeletonDataAsset.GetSkeletonData(true));
} }
@ -115,14 +121,15 @@ public class SpineAttachment : PropertyAttribute {
public string slot; public string slot;
public string name; public string name;
public Hierarchy (string fullPath) { public Hierarchy(string fullPath) {
string[] chunks = fullPath.Split(new char[] { '/' }, System.StringSplitOptions.RemoveEmptyEntries); string[] chunks = fullPath.Split(new char[]{'/'}, System.StringSplitOptions.RemoveEmptyEntries);
if (chunks.Length == 0) { if (chunks.Length == 0) {
skin = ""; skin = "";
slot = ""; slot = "";
name = ""; name = "";
return; return;
} else if (chunks.Length < 2) { }
else if (chunks.Length < 2) {
throw new System.Exception("Cannot generate Attachment Hierarchy from string! Not enough components! [" + fullPath + "]"); throw new System.Exception("Cannot generate Attachment Hierarchy from string! Not enough components! [" + fullPath + "]");
} }
skin = chunks[0]; skin = chunks[0];
@ -135,10 +142,7 @@ public class SpineAttachment : PropertyAttribute {
} }
} }
public class SpineBone : PropertyAttribute { public class SpineBone : SpineAttributeBase {
public string startsWith = "";
public string dataField = "";
/// <summary> /// <summary>
/// Smart popup menu for Spine Bones /// Smart popup menu for Spine Bones
/// </summary> /// </summary>
@ -147,19 +151,19 @@ public class SpineBone : PropertyAttribute {
/// 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 SpineBone (string startsWith = "", string dataField = "") { public SpineBone(string startsWith = "", string dataField = "") {
this.startsWith = startsWith; this.startsWith = startsWith;
this.dataField = dataField; this.dataField = dataField;
} }
public static Spine.Bone GetBone (string boneName, SkeletonRenderer renderer) { public static Spine.Bone GetBone(string boneName, SkeletonRenderer renderer) {
if (renderer.skeleton == null) if (renderer.skeleton == null)
return null; return null;
return renderer.skeleton.FindBone(boneName); return renderer.skeleton.FindBone(boneName);
} }
public static Spine.BoneData GetBoneData (string boneName, SkeletonDataAsset skeletonDataAsset) { public static Spine.BoneData GetBoneData(string boneName, SkeletonDataAsset skeletonDataAsset) {
var data = skeletonDataAsset.GetSkeletonData(true); var data = skeletonDataAsset.GetSkeletonData(true);
return data.FindBone(boneName); return data.FindBone(boneName);