/// <summary>
        /// Returns the current frame for the given animation, using a layer of
        ///   indirection to support hot reloading.
        /// </summary>
        public AssetNames GetCurrentFrame(IAnimationManager manager)
        {
            var template = manager.Get(Name);

            if (template.StepAfter == 0 || template.Frames.Length == 1)
            {
                return(template.Frames[0]);
            }

            var frameCount = TickCounter / template.StepAfter;
            var frameIx    = frameCount % template.Frames.Length;

            return(template.Frames[frameIx]);
        }
 public void Initialize(IAnimationManager manager, AnimationNames name, int startFrame)
 {
     Name        = name;
     TickCounter = (uint)(startFrame * manager.Get(name).StepAfter);
 }