A Project class contains project-specific data like name, undo_redo, frames, layers, tags and brushes. These variables have been moved from Global. This is the first step towards multiple tab support, where each tab will be a different Project.
The Canvas is now single node, instead of having multiple canvases for each frame. This should also be a performance optimization, since there are less canvas nodes, so there are less _input() calls. It should also fix a rare Undo/Redo issue with motion drawing and making lines. Could be unstable, needs more testing.
As a side effect, the guides are now the same for all frames, so this should also close #246.
Replaces nested Global.animation_tags arrays. Also replaced array.duplicate(true) with looping through the array and creating a new class for each array element, because duplicate(true) does not create new classes, unfortunately, which was causing issues with undo/redo.
Moved code from Global.gd and Canvas.gd to DrawingAlgos.gd. Will also move the fill_gaps and draw_brush methods of Canvas.gd next. Maybe even refactor the inside of them a bit to make them easier to read.
* Added selective frame tag export for Spritesheets
* Changes LinesCount value and max_value to canvas_size
This does not allow the spritesheet to contain more frames than the tag has, because it limits its size to the number of frames the currently selected tag has.
Co-authored-by: Manolis Papadeas <35376950+OverloadedOrama@users.noreply.github.com>
process_frame() was being called twice when the export dialog appeared, and the frame number was different than the one already stored in the export dialog