public override void UpdateCurrentFrame(int frame)
        {
            var data = DeshakerData.FirstOrDefault(d => d.FrameNumber == frame);

            if (data == null)
            {
                return;
            }

            var scaledTranslation = new Vector3D(-data.PanX, -data.PanY, -data.Zoom) / 10000;

            Logger.Instance.Info(string.Format("Translation: ({0},{1},{2})", scaledTranslation.X, scaledTranslation.Y, scaledTranslation.Z));
            Translation = new Vector3D(scaledTranslation.X * TranslationFactor, scaledTranslation.Y * TranslationFactor, scaledTranslation.Z * ZoomFactor);
            Rotation    = QuaternionHelper.EulerAnglesInDegToQuaternion(0, 0, data.Rotation * RotationFactor);
        }
 public override int GetFramesCount()
 {
     return(DeshakerData == null ? 0 : DeshakerData.Count());
 }