From 397187010fb365ef4d1bbcaa17a18fea407b99c0 Mon Sep 17 00:00:00 2001 From: pharan Date: Sun, 18 Jun 2017 22:00:56 +0800 Subject: [PATCH] [unity] More cleanup for SkeletonAnimator Update. --- .../Assets/spine-unity/SkeletonAnimator.cs | 71 +++++++++---------- 1 file changed, 35 insertions(+), 36 deletions(-) diff --git a/spine-unity/Assets/spine-unity/SkeletonAnimator.cs b/spine-unity/Assets/spine-unity/SkeletonAnimator.cs index db3416204..68e7780f2 100644 --- a/spine-unity/Assets/spine-unity/SkeletonAnimator.cs +++ b/spine-unity/Assets/spine-unity/SkeletonAnimator.cs @@ -36,6 +36,9 @@ using System.Collections.Generic; namespace Spine.Unity { [RequireComponent(typeof(Animator))] public class SkeletonAnimator : SkeletonRenderer, ISkeletonAnimation { + + [SerializeField] protected MecanimTranslator translator; + public MecanimTranslator Translator { get { return translator; } } #region Bone Callbacks (ISkeletonAnimation) protected event UpdateBonesDelegate _UpdateLocal; @@ -60,9 +63,35 @@ namespace Spine.Unity { public event UpdateBonesDelegate UpdateComplete { add { _UpdateComplete += value; } remove { _UpdateComplete -= value; } } #endregion - public bool AutoReset { - get { return mecanimTranslator.autoReset; } - set { mecanimTranslator.autoReset = value; } + public override void Initialize (bool overwrite) { + if (valid && !overwrite) return; + base.Initialize(overwrite); + if (!valid) return; + + if (translator == null) translator = new MecanimTranslator(); + translator.Initialize(GetComponent(), 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] @@ -79,6 +108,8 @@ namespace Spine.Unity { readonly List previousAnimations = new List(); Animator animator; + public Animator Animator { get { return this.animator; } } + public void Initialize (Animator animator, SkeletonDataAsset skeletonDataAsset) { this.animator = animator; animationTable.Clear(); @@ -92,7 +123,7 @@ namespace Spine.Unity { if (layerMixModes.Length < animator.layerCount) System.Array.Resize(ref layerMixModes, animator.layerCount); - + //skeleton.Update(Time.deltaTime); // Doesn't actually do anything, currently. (Spine 3.6). // Clear Previous @@ -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(), 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); - } - } } }