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