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(); }
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; }