示例#1
0
    public static int Animate(GiraffeSpriteAnimation animation, float time, ref bool isPlaying)
    {
        switch (animation.mode)
        {
        case GiraffeAnimationMode.Loop:
        {
            isPlaying = true;
            if (Mathf.Approximately(time, animation.length))
            {
                return(animation.frames.Count - 1);
            }
            time = time % animation.length;
            float frameRate = animation.frames.Count / animation.length;
            int   frame     = (int)(time * frameRate);
            return(frame);
        }

        case GiraffeAnimationMode.Once:
        {
            isPlaying = true;
            if (time >= animation.length)
            {
                isPlaying = false;
                return(animation.frames.Count - 1);
            }
            float frameRate = animation.frames.Count / animation.length;
            int   frame     = Mathf.Min((int)(time * frameRate), animation.frames.Count - 1);
            return(frame);
        }
        }
        return(1);
    }
    void RefreshPreview()
    {
        mAnimationSprite = null;

        if (mAnimation.atlas != null)
        {
            bool isPlayingIgnored = true;
            mAnimationSpriteId = GiraffeSpriteAnimation.Animate(mAnimation, mAnimationTime, ref isPlayingIgnored);
            mAnimationSprite   = mAnimation.frameSprites[mAnimationSpriteId];
        }
    }
 void OnEnable()
 {
     mAnimation = (GiraffeSpriteAnimation)this.target;
     GiraffeAtlas._GetNames(mAnimation.atlas, ref mSpriteNames);
     RefreshFrameNamesIds();
     if (mAnimation.atlas != null)
     {
         mAnimation.atlas.RefreshSprites();
         mAnimation.FetchSprites();
     }
     RefreshPreview();
 }
示例#4
0
    void UpdateAnimation()
    {
        if (mSpriteAnimation == null)
        {
            return;
        }

        int frame = GiraffeSpriteAnimation.Animate(mSpriteAnimation, mTime, ref mPlaying);

        if (frame != mCurrentFrame)
        {
            GiraffeSprite sprite = mSpriteAnimation.frameSprites[frame];
            mRenderer.sprite = sprite;
            mCurrentFrame    = frame;
        }
    }
    static void CreateAtlas()
    {
        GiraffeSpriteAnimation font = ScriptableObject.CreateInstance <GiraffeSpriteAnimation>();

        string path = AssetDatabase.GetAssetPath(Selection.activeObject);

        if (path == "")
        {
            path = "Assets";
        }
        else if (Path.GetExtension(path) != "")
        {
            path = path.Replace(Path.GetFileName(AssetDatabase.GetAssetPath(Selection.activeObject)), "");
        }

        string fontPath = AssetDatabase.GenerateUniqueAssetPath(path + "/New Giraffe Spite Animation.asset");

        AssetDatabase.CreateAsset(font, fontPath);
        AssetDatabase.SaveAssets();
        AssetDatabase.Refresh();

        EditorUtility.FocusProjectWindow();
        Selection.activeObject = font;
    }