private void MakeSpriteSheetFromSeparateImages(Bitmap[] images, bool addAnim) { var spriteSheetData = ResourcesManager.LoadSpriteSheetFromSeparateImages(images); var spriteSheet = new SpriteSheet(spriteSheetData.Texture) { Name = spriteSheetData.Name, Id = spriteSheetData.Id }; _spriteSheets.Add(spriteSheet.Id, spriteSheet); ShowSpriteSheet(spriteSheet.Id); if (CurrentShownAnimation != null) { UnloadCurrentShownAnimation(); } var eventArgs = new AppEventArgs { Type = EventType.AddedSpriteSheet, SpriteSheetModified = spriteSheet, AnimationModified = null }; MainWindow.UpdateBrowser(eventArgs); if (addAnim) { MakeAnimation(); } }
public void MakeAnimation(string name, float frameRate, bool loop, bool pingPong) { if (Guard.CheckNull(_currentShownSpriteSheet)) { Messager.ShowMessage(Messager.Mode.Exception, "Before creating an animation please import a sprite sheet image clicking on button 'Import Spritesheet' on topbar"); return; } Animation animation = new Animation(name, string.Format("{0}{1}", _currentShownSpriteSheet.Id, _animations.Count), _currentShownSpriteSheet.Id) { FrameRate = frameRate, Loop = loop, PingPong = pingPong }; _animations.Add(animation.Id, animation); ShowAnimation(animation.Id); var eventArgs = new AppEventArgs { Type = EventType.AddedAnimation, AnimationModified = animation, SpriteSheetModified = _currentShownSpriteSheet }; MainWindow.UpdateBrowser(eventArgs); }
public void DeleteBrowserNode() { if (Browser.Nodes.Count == 0) { return; } if (Browser.SelectedNode.Level == 0) { var spNode = Browser.SelectedNode; var spriteSheet = Application.GetSpriteSheet((string)spNode.Tag); var eventArgs = new AppEventArgs { Type = EventType.RemovedSpriteSheet, SpriteSheetModified = spriteSheet, AnimationModified = null }; UpdateBrowser(eventArgs); Application.RemoveSpriteSheet((string)spNode.Tag); foreach (TreeNode animNode in spNode.Nodes) { Application.RemoveAnimation((string)animNode.Tag); } } else { var animNode = Browser.SelectedNode; var animation = Application.GetAnimation((string)animNode.Tag); var spriteSheet = Application.GetSpriteSheet((string)animNode.Parent.Tag); var eventArgs = new AppEventArgs { Type = EventType.RemovedAnimation, SpriteSheetModified = spriteSheet, AnimationModified = animation }; UpdateBrowser(eventArgs); Application.RemoveAnimation((string)animNode.Tag); if (Application.Animations.Count == 0) { Application.MakeAnimation(); } } }
private void MakeSpriteSheet(string path, bool addAnim) { Bitmap imageBitmap = new Bitmap(path); var spriteSheetData = ResourcesManager.LoadSpriteSheetImage(path, imageBitmap); imageBitmap.Dispose(); var spriteSheet = new SpriteSheet(spriteSheetData.Texture) { Name = spriteSheetData.Name, Id = spriteSheetData.Id, FullPath = spriteSheetData.FullPath }; _spriteSheets.Add(spriteSheet.Id, spriteSheet); ShowSpriteSheet(spriteSheet.Id); if (CurrentShownAnimation != null) { UnloadCurrentShownAnimation(); } var eventArgs = new AppEventArgs { Type = EventType.AddedSpriteSheet, SpriteSheetModified = spriteSheet, AnimationModified = null }; MainWindow.UpdateBrowser(eventArgs); if (addAnim) { MakeAnimation(); } FoldersHistoryManager.WriteFolderPath(path); }
public void UpdateBrowser(AppEventArgs args) { switch (args.Type) { case EventType.AddedSpriteSheet: { TreeNode spNode = new TreeNode { Name = args.SpriteSheetModified.Id, Text = args.SpriteSheetModified.Name, Tag = args.SpriteSheetModified.Id }; spNode.ImageIndex = 2; spNode.SelectedImageIndex = 3; Browser.Nodes.Add(spNode); Browser.SelectedNode = spNode; } break; case EventType.RemovedSpriteSheet: { var nodeToBeRemoved = Browser.Nodes[args.SpriteSheetModified.Id]; var index = nodeToBeRemoved.Index; if (index == Browser.Nodes.Count - 1) { index -= 1; } Browser.Nodes.Remove(nodeToBeRemoved); Browser.SelectedNode = index >= 0 ? Browser.Nodes[index] : null; } break; case EventType.AddedAnimation: { TreeNode animNode = new TreeNode { Name = args.AnimationModified.Id, Text = args.AnimationModified.Name, Tag = args.AnimationModified.Id }; animNode.ImageIndex = 0; animNode.SelectedImageIndex = 1; Browser.Nodes[args.SpriteSheetModified.Id].Nodes.Add(animNode); Browser.SelectedNode = animNode; } break; case EventType.RemovedAnimation: { var parentNode = Browser.Nodes[args.SpriteSheetModified.Id]; var nodeToBeRemoved = parentNode.Nodes[args.AnimationModified.Id]; var index = nodeToBeRemoved.Index; if (index == parentNode.Nodes.Count - 1) { index -= 1; } parentNode.Nodes.Remove(nodeToBeRemoved); Browser.SelectedNode = index >= 0 ? parentNode.Nodes[index] : parentNode; } break; case EventType.RenamedAnimation: { Browser.Nodes[args.AnimationModified.Id].Text = args.AnimationModified.Name; Browser.Nodes[args.AnimationModified.Id].Name = args.AnimationModified.Name; } break; } Browser.ExpandAll(); }