/// <summary>
        /// Calculates the FrameData for the given entity with the given interval.
        /// </summary>
        public static Dictionary <string, FrameData[]> Calculate(SpriterEntity entity, int interval, Config config)
        {
            Dictionary <string, FrameData[]> results = new Dictionary <string, FrameData[]>();

            foreach (SpriterAnimation anim in entity.Animations)
            {
                int         length   = (int)Math.Ceiling(anim.Length / interval);
                FrameData[] animData = new FrameData[length];

                for (int i = 0; i < animData.Length; ++i)
                {
                    float time = i * interval;
                    if (time > anim.Length)
                    {
                        time = anim.Length;
                    }

                    ObjectPool pool = new ObjectPool(config);
                    FrameData  data = new FrameDataCalculator(config, pool).GetFrameData(anim, time, interval);
                    animData[i] = data;
                }

                results[anim.Name] = animData;
            }
            return(results);
        }
        public DefaultFrameDataProvider()
        {
            Config     config = new Config();
            ObjectPool pool   = new ObjectPool(config);

            Calculator = new FrameDataCalculator(config, pool);
        }
 public DefaultFrameDataProvider(Config config, ObjectPool pool)
 {
     Calculator = new FrameDataCalculator(config, pool);
 }