Beispiel #1
0
 /// <summary>
 /// Play selected animation
 /// </summary>
 /// <param name="animation">animation to play</param>
 /// <param name="lastTime">the last time the animation was applied</param>
 /// <param name="time">the time in duration to start animation at</param>
 /// <param name="isLoop">should animation loop</param>
 /// <param name="trackIndex">track to play animation in</param>
 /// <param name="individualTimeScale">time scale of this animation</param>
 public void Play(SpineAnimationsEnum animation, float lastTime = 0, float time = 0, bool isLoop = false, int trackIndex = 0, float individualTimeScale = 1f)
 {
     if (currentAnimation == animation)
     {
         return;
     }
     lastAnimation    = currentAnimation;
     currentAnimation = animation;
     //if (animation != Animations.hit)
     //{
     //    if (currentAnimation == animation)
     //        return;
     //    lastAnimation = currentAnimation;
     //    currentAnimation = animation;
     //}
     //else
     //{
     //    if (currentAnimation != Animations.idle || currentAnimation != Animations.move || currentAnimation != Animations.up_move)
     //        return;
     //}
     //Spine.Animation curAnimation = null;
     //if (lastAnimation != currentAnimation) {
     //    if (spine.state.GetCurrent(trackIndex) != null) {
     //        spine.state.GetCurrent(trackIndex).Loop = false;
     //        curAnimation = spine.state.GetCurrent(trackIndex).Animation;
     //    }
     //} else return;
     Spine.Animation loadedAnim = getSpineAnimation(animation);
     //loadedAnim.Name(spine.Skeleton, lastTime, time, isLoop, null, alphaMix);
     if (lastAnimation != currentAnimation)
     {
         //if (lastAnimation != Animations.idle
         //    && lastAnimation != Animations.move
         //    && lastAnimation != Animations.knock_back
         //    && lastAnimation != Animations.knock_down
         //    && lastAnimation != Animations.stand_up)
         spine.Skeleton.SetToSetupPose();
     }
     //if (trackIndex == Constant.DEFAULT_TRACK_INDEX) {
     spine.state.ClearTrack(trackIndex);
     //}
     //if (curAnimation != null) {
     //    if (lastAnimation == Animations.idle
     //        || lastAnimation == Animations.move
     //        /*|| lastAnimation == Animations.knock_down*/
     //        /*|| lastAnimation == Animations.stand_up*/
     //        /*|| lastAnimation == Animations.stunned*/) {
     //        curAnimation.Apply(spine.skeleton, 0f, 0f, false, null);
     //        spine.state.AddAnimation(trackIndex, curAnimation, false, 0f);
     //    }
     //}
     spine.state.AddAnimation(trackIndex, loadedAnim, isLoop, Time.deltaTime);
     spine.state.GetCurrent(trackIndex).TimeScale = individualTimeScale;
 }
Beispiel #2
0
 public Spine.Animation getSpineAnimation(SpineAnimationsEnum animation)
 {
     // check in cached
     Spine.Animation load = cachedAnimations.Find(a => a.Name == animation.ToString());
     if (load == null)
     {
         // load from spine
         load = spine.Skeleton.Data.FindAnimation(animation.ToString());
         if (load == null)
         {
             throw new ArgumentNullException("Can not find animation '" + animation.ToString() + "'" + " on " + name);
         }
     }
     return(load);
 }
Beispiel #3
0
    /// <summary>
    /// Play selected animation
    /// </summary>
    /// <param name="animation">animation name to play</param>
    /// <param name="lastTime">the last time the animation was applied</param>
    /// <param name="time">the time in duration to start animation at</param>
    /// <param name="isLoop">should animation loop</param>
    /// <param name="trackIndex">track to play animation in</param>
    /// <param name="individualTimeScale">time scale of this animation</param>
    public void Play(string animation, float lastTime = 0, float time = 0, bool isLoop = false, int trackIndex = 0, float individualTimeScale = 1f)
    {
        SpineAnimationsEnum anim = (SpineAnimationsEnum)Enum.Parse(typeof(SpineAnimationsEnum), animation);

        this.Play(anim, lastTime, time, isLoop, trackIndex, individualTimeScale);
    }