Example #1
0
    private void FaceToDirection(string animationName, EntityAnimationDirection direction, float fps, Action <string> callback)
    {
        if (direction.Equals(lastDirection))
        {
            if (callback != null)
            {
                callback(animationName);
            }
            return;
        }
        var currentFrame = DirectionToFrame(lastDirection);
        var targetFrame  = DirectionToFrame(direction);

        animator.Sprite.FlipX = false;
        var deltaFrame = targetFrame - currentFrame;

        if (deltaFrame < 0)
        {
            deltaFrame += 16;
        }
        if (deltaFrame > 8)
        {
            if (reversedStand == null)
            {
                var stand = animator.GetClipByName(animationName);
                reversedStand = new tk2dSpriteAnimationClip();
                reversedStand.CopyFrom(stand);
                System.Array.Reverse(reversedStand.frames);
            }
            currentFrame = 15 - currentFrame;
            targetFrame  = 15 - targetFrame;
            animator.PlayFromFrame(reversedStand, currentFrame);
        }
        else
        {
            animator.PlayFromFrame(animationName, currentFrame);
        }

        SetAnimatorFpsFactor(fps);

        Assert.Should(animator.CurrentClip.frames.Length >= 16, "invalid frame count ... " + this.gameObject.name);

        //  设置 updater
        m_updateRotate = (dt) =>
        {
            if (animator.CurrentFrame != targetFrame)
            {
                return;
            }
            animator.Stop();
            lastDirection = direction;
            if (callback != null)
            {
                callback(animationName);
            }
            m_updateRotate = null;
        };
    }
Example #2
0
        public override tk2dSpriteAnimationClip OnAnimMenu(string menuEntry, List <tk2dSpriteAnimationClip> allClips, tk2dSpriteAnimationClip selectedClip)
        {
            tk2dSpriteAnimationClip newClip = new tk2dSpriteAnimationClip();

            newClip.CopyFrom(selectedClip);
            newClip.name = AnimOperatorUtil.UniqueClipName(allClips, "Copy of " + selectedClip.name);
            allClips.Add(newClip);

            operations = AnimEditOperations.NewClipCreated | AnimEditOperations.AllClipsChanged;
            return(newClip);
        }
Example #3
0
    public static tk2dSpriteAnimationClip Reverse(this tk2dSpriteAnimationClip clip)
    {
        reverseTable.Clear();
        tk2dSpriteAnimationClip reversed = null;

        if (!reverseTable.TryGetValue(clip, out reversed))
        {
            reversed = new tk2dSpriteAnimationClip();
            reversed.CopyFrom(clip);
            Array.Reverse(reversed.frames);
            reverseTable.Add(clip, reversed);
            reverseTable.Add(reversed, clip);
        }

        return(reversed);
    }
    void MirrorClips()
    {
        if (anim == null)
        {
            return;
        }

        allClips.Clear();
        if (anim.clips != null)
        {
            foreach (tk2dSpriteAnimationClip clip in anim.clips)
            {
                tk2dSpriteAnimationClip c = new tk2dSpriteAnimationClip();
                c.CopyFrom(clip);
                allClips.Add(c);
            }
        }
    }
		public override tk2dSpriteAnimationClip OnAnimMenu(string menuEntry, List<tk2dSpriteAnimationClip> allClips, tk2dSpriteAnimationClip selectedClip)
		{
			tk2dSpriteAnimationClip newClip = new tk2dSpriteAnimationClip();
			newClip.CopyFrom(selectedClip);
			newClip.name = AnimOperatorUtil.UniqueClipName( allClips, "Copy of " + selectedClip.name );
			allClips.Add(newClip);

			operations = AnimEditOperations.NewClipCreated | AnimEditOperations.AllClipsChanged;
			return newClip;	
		}
    void MirrorClips()
    {
        if (anim == null) return;

        allClips.Clear();
        if (anim.clips != null)
        {
            foreach (tk2dSpriteAnimationClip clip in anim.clips)
            {
                tk2dSpriteAnimationClip c = new tk2dSpriteAnimationClip();
                c.CopyFrom(clip);
                allClips.Add(c);
            }
        }
    }