[unity] SkeletonRenderer cleanup.

This commit is contained in:
pharan 2018-11-19 11:06:50 +08:00
parent eccb124604
commit 12e7ebf78f

View File

@ -39,26 +39,14 @@ namespace Spine.Unity {
[ExecuteInEditMode, RequireComponent(typeof(MeshFilter), typeof(MeshRenderer)), DisallowMultipleComponent] [ExecuteInEditMode, RequireComponent(typeof(MeshFilter), typeof(MeshRenderer)), DisallowMultipleComponent]
[HelpURL("http://esotericsoftware.com/spine-unity-rendering")] [HelpURL("http://esotericsoftware.com/spine-unity-rendering")]
public class SkeletonRenderer : MonoBehaviour, ISkeletonComponent, IHasSkeletonDataAsset { public class SkeletonRenderer : MonoBehaviour, ISkeletonComponent, IHasSkeletonDataAsset {
[SerializeField] public SkeletonDataAsset skeletonDataAsset;
public bool logErrors = false;
public delegate void SkeletonRendererDelegate (SkeletonRenderer skeletonRenderer);
/// <summary>OnRebuild is raised after the Skeleton is successfully initialized.</summary>
public event SkeletonRendererDelegate OnRebuild;
/// <summary> Occurs after the vertex data is populated every frame, before the vertices are pushed into the mesh.</summary>
public event Spine.Unity.MeshGeneratorDelegate OnPostProcessVertices;
public SkeletonDataAsset skeletonDataAsset;
public SkeletonDataAsset SkeletonDataAsset { get { return skeletonDataAsset; } } // ISkeletonComponent
#region Initialization settings #region Initialization settings
/// <summary>Skin name to use when the Skeleton is initialized.</summary> /// <summary>Skin name to use when the Skeleton is initialized.</summary>
[SpineSkin(defaultAsEmptyString:true)] public string initialSkinName; [SerializeField] [SpineSkin(defaultAsEmptyString:true)] public string initialSkinName;
/// <summary>Flip X and Y to use when the Skeleton is initialized.</summary> /// <summary>Flip X and Y to use when the Skeleton is initialized.</summary>
public bool initialFlipX, initialFlipY; [SerializeField] public bool initialFlipX, initialFlipY;
#endregion #endregion
#region Advanced Render Settings #region Advanced Render Settings
@ -121,6 +109,9 @@ namespace Spine.Unity {
} }
} }
} }
/// <summary> Occurs after the vertex data is populated every frame, before the vertices are pushed into the mesh.</summary>
public event Spine.Unity.MeshGeneratorDelegate OnPostProcessVertices;
#endif #endif
#if SPINE_OPTIONAL_MATERIALOVERRIDE #if SPINE_OPTIONAL_MATERIALOVERRIDE
@ -156,6 +147,13 @@ namespace Spine.Unity {
} }
#endregion #endregion
public delegate void SkeletonRendererDelegate (SkeletonRenderer skeletonRenderer);
/// <summary>OnRebuild is raised after the Skeleton is successfully initialized.</summary>
public event SkeletonRendererDelegate OnRebuild;
public SkeletonDataAsset SkeletonDataAsset { get { return skeletonDataAsset; } } // ISkeletonComponent
#region Runtime Instantiation #region Runtime Instantiation
public static T NewSpineGameObject<T> (SkeletonDataAsset skeletonDataAsset) where T : SkeletonRenderer { public static T NewSpineGameObject<T> (SkeletonDataAsset skeletonDataAsset) where T : SkeletonRenderer {
return SkeletonRenderer.AddSpineComponent<T>(new GameObject("New Spine GameObject"), skeletonDataAsset); return SkeletonRenderer.AddSpineComponent<T>(new GameObject("New Spine GameObject"), skeletonDataAsset);
@ -185,6 +183,7 @@ namespace Spine.Unity {
} }
#endregion #endregion
public virtual void Awake () { public virtual void Awake () {
Initialize(false); Initialize(false);
} }
@ -237,10 +236,8 @@ namespace Spine.Unity {
valid = false; valid = false;
} }
if (skeletonDataAsset == null) { if (skeletonDataAsset == null)
if (logErrors) Debug.LogError("Missing SkeletonData asset.", this);
return; return;
}
SkeletonData skeletonData = skeletonDataAsset.GetSkeletonData(false); SkeletonData skeletonData = skeletonDataAsset.GetSkeletonData(false);
if (skeletonData == null) return; if (skeletonData == null) return;