[unity] More cleanup for SkeletonAnimator Update.

This commit is contained in:
pharan 2017-06-18 22:00:56 +08:00
parent 08403fa7ca
commit 397187010f

View File

@ -37,6 +37,9 @@ namespace Spine.Unity {
[RequireComponent(typeof(Animator))] [RequireComponent(typeof(Animator))]
public class SkeletonAnimator : SkeletonRenderer, ISkeletonAnimation { public class SkeletonAnimator : SkeletonRenderer, ISkeletonAnimation {
[SerializeField] protected MecanimTranslator translator;
public MecanimTranslator Translator { get { return translator; } }
#region Bone Callbacks (ISkeletonAnimation) #region Bone Callbacks (ISkeletonAnimation)
protected event UpdateBonesDelegate _UpdateLocal; protected event UpdateBonesDelegate _UpdateLocal;
protected event UpdateBonesDelegate _UpdateWorld; protected event UpdateBonesDelegate _UpdateWorld;
@ -60,9 +63,35 @@ namespace Spine.Unity {
public event UpdateBonesDelegate UpdateComplete { add { _UpdateComplete += value; } remove { _UpdateComplete -= value; } } public event UpdateBonesDelegate UpdateComplete { add { _UpdateComplete += value; } remove { _UpdateComplete -= value; } }
#endregion #endregion
public bool AutoReset { public override void Initialize (bool overwrite) {
get { return mecanimTranslator.autoReset; } if (valid && !overwrite) return;
set { mecanimTranslator.autoReset = value; } base.Initialize(overwrite);
if (!valid) return;
if (translator == null) translator = new MecanimTranslator();
translator.Initialize(GetComponent<Animator>(), this.skeletonDataAsset);
}
public void Update () {
if (!valid) return;
translator.Apply(skeleton);
// UpdateWorldTransform and Bone Callbacks
{
if (_UpdateLocal != null)
_UpdateLocal(this);
skeleton.UpdateWorldTransform();
if (_UpdateWorld != null) {
_UpdateWorld(this);
skeleton.UpdateWorldTransform();
}
if (_UpdateComplete != null)
_UpdateComplete(this);
}
} }
[System.Serializable] [System.Serializable]
@ -79,6 +108,8 @@ namespace Spine.Unity {
readonly List<Animation> previousAnimations = new List<Animation>(); readonly List<Animation> previousAnimations = new List<Animation>();
Animator animator; Animator animator;
public Animator Animator { get { return this.animator; } }
public void Initialize (Animator animator, SkeletonDataAsset skeletonDataAsset) { public void Initialize (Animator animator, SkeletonDataAsset skeletonDataAsset) {
this.animator = animator; this.animator = animator;
animationTable.Clear(); animationTable.Clear();
@ -214,37 +245,5 @@ namespace Spine.Unity {
} }
} }
public MecanimTranslator mecanimTranslator;
public override void Initialize (bool overwrite) {
if (valid && !overwrite) return;
base.Initialize(overwrite);
if (!valid) return;
mecanimTranslator = mecanimTranslator ?? new MecanimTranslator();
mecanimTranslator.Initialize(GetComponent<Animator>(), this.skeletonDataAsset);
}
public void Update () {
if (!valid) return;
mecanimTranslator.Apply(skeleton);
// UpdateWorldTransform and Bone Callbacks
{
if (_UpdateLocal != null)
_UpdateLocal(this);
skeleton.UpdateWorldTransform();
if (_UpdateWorld != null) {
_UpdateWorld(this);
skeleton.UpdateWorldTransform();
}
if (_UpdateComplete != null)
_UpdateComplete(this);
}
}
} }
} }