/// <summary>
        /// Generates an animation preview based on the current settings
        /// </summary>
        private void GenerateAnimationPreview()
        {
            if (_spriteSheet != null)
            {
                if (_currentPreviewAnimation != null)
                {
                    _currentPreviewAnimation.Dispose();
                    _currentPreviewAnimation = null;
                }

                if (nud_frameCount.Value != 0)
                {
                    _currentPreviewAnimation = new PreviewAnimation
                    {
                        SourceBitmap  = (Bitmap)_spriteSheet,
                        SheetSettings = _sheetSettings,
                        FrameBounds   = _controller.DefaultImporter.GenerateFrameBounds(_spriteSheet, _sheetSettings)
                    };

                    var playback = _currentPreviewAnimation.PlaybackSettings;

                    playback.FPS       = (int)nud_fps.Value;
                    playback.FrameSkip = cb_frameskip.Checked;

                    _currentPreviewAnimation.PlaybackSettings = playback;
                }

                ap_animationPreview.LoadAnimation(_currentPreviewAnimation);
            }
        }
Exemple #2
0
        private void TimerTick(object obj)
        {
            DateTime animationStart = DateTime.Now;

            if (obj == null)
            {
                animationTimer.Change(Timeout.Infinite, Timeout.Infinite);
                return;
            }
            //PreviewAnimation animation = obj as PreviewAnimation;
            WindowOnPreview  window    = (obj as WindowOnPreview);
            PreviewAnimation animation = window.CurrentAnimation;

            if (animation == null)
            {
                //animationTimer.Change(Timeout.Infinite, Timeout.Infinite);
                return;
            }

            if (animation.lastFrame && (animation.staticBitmapPixels.Length == 1 ||
                                        (animation.staticBitmapPixels.Length > 1 && animation.currentBitmap == animation.staticBitmapPixels.Length - 1)))
            {
                //animation.lastFrame = true;
                int stay = animation.StayTime * 1000;
                window.CurrentAnimationNumber++;
                animation = window.CurrentAnimation;
                int timerInterval = (CurrentAnimation.PlaybillItem.ItemType == PlayWindowItemType.Animator) ?
                                    1 : (Convert.ToInt32((1 - ((CurrentAnimation.Speed - 1) / 100.0)) * 10 * 100));
                animation.currentBitmap = 0;
                animationTimer.Change(stay, timerInterval);
            }
            animation.animateNext = animateAll;
            animation.AnimateFrame();
            //if(!animation.running)
            //animation.Animate(animateAll);
            //animation.ShowStatic();
            this.Redraw();
            animation.changedPixels.Clear();


            DateTime animationEnd = DateTime.Now;
        }
        /// <summary>
        /// Imports the animation to the current bundle
        /// </summary>
        private void ImportAnimation()
        {
            // Quit if no valid animation is currently being displayed
            if (nud_frameCount.Value == 0 || _currentPreviewAnimation == null || _currentPreviewAnimation.FrameCount <= 0)
            {
                return;
            }

            var anim = _controller.DefaultImporter.ImportAnimationFromImage(txt_animationName.Text, _spriteSheet, _sheetSettings);

            var playback = _currentPreviewAnimation.PlaybackSettings;

            playback.FPS       = (int)nud_fps.Value;
            playback.FrameSkip = cb_frameskip.Checked;

            anim.PlaybackSettings = playback;

            anim.Name = txt_animationName.Text;

            _controller.AddAnimation(anim, true, _parentSheet);

            _currentPreviewAnimation = null;
            ap_animationPreview.LoadAnimation(null);
        }
 //
 // Form Closing event handler
 //
 private void ImportAnimationView_FormClosed(object sender, FormClosedEventArgs e)
 {
     _spriteSheet?.Dispose();
     _currentPreviewAnimation = null;
     ap_animationPreview.LoadAnimation(null);
 }