* Tilemode selections
* Selection TileMode
* Fixed some bugs with the ORIGINAL tile mode
Image brushes needed to be adjusted
* remove behaviour checkbutton
* fixed remaining things
* formating
* formatting
* formatting
* formatting
* fix crash on rotating image
* Fix Color getting transparent on double chicking
same swatch twice
* typo
* typo
* Update RotateImage.gd
* Use sheckbox instead of option button
* make checkbox directly under select menu
* Implement 3D layers
* Remove unneeded files
* Fix bug where a single hidden layer would ignore all of the layers on top when exporting
* Fix pxo loading
* Remove junk nodes from 3DShapeEdit
Seems like they were created when I copied from the old 3D Options.tscn panel to the new 3D Shape Edit tool.
* Make light gizmos half the size, and hide gizmos when rotating
* Fix crash when using the 3D shape edit tool on a group layer
* Remove unneeded code in Canvas.gd
* Add torus in the Cel3DObject.Type enumerator
Torus isn't currently supported in Godot 3.5, but it is in 3.6 and 4.0, so this is just future-proofing. May break compatibility with .pxo files that were exported with 3D layers before this change.
* Toggle 3D object visibility
* Change texts and some variable names
* Fill translation strings
* Fix crash on group blending, and make the code in Export.blend_layers() more general
* Fix errors when attempting to draw on a 3D cel
Can occur when multiple cels are selected, some of them 3D and some of them pixel
* Make scene properties and objects be per-cel instead of per-layer
Breaks compatibility with previous .pxo files that had 3D layers. Also introduces serialize() and deserialize() methods to BaseCel
* Use if not layer is get_script() in GroupLayer.blend_children()
* Flip the condition in GroupLayer.blend_children()
* Fix bug where locked/invisible layers could get drawn
Regression from c2f6bf0f3f
* Move gizmo code to 3DShapeEdit's draw_start(), move some undo/redo logic to 3DShapeEdit
* Move all of the undo/redo code to 3DShapeEdit, simplify code in Cel3D
* Store Cel3D image data to pxo, for easy usage by external software
This makes importing projects with 3D layers to other software, such as Godot using godot_pixelorama_importer easier.
* Make the linter happy
* Fix bug where the previously selected object would remain selected when it got removed with undo
Also fixes a bug with the inconsistent behavior caused by resizing a selection with gizmos without pressing Shift, while the keep ratio button was pressed.
* Added intial crop tool
* [skip ci] Removed unneeeded LINE_WIDTH constant from CropRect
* Added DimensionsLabel
* Cleaned up CropRect._draw
* Hide the CropRect after switching to a different tool
* Sets the crop values to the entire canvas size on setup
* [skip ci] Added crop tool tooltip
* Made Crop tools synced with eachother by placing the crop settings on CropRect
* Added new modes, refactored, added rule of thirds lines and darkened background
* [skip ci] reset optimization
* Renames
* [skip ci] Tweaked the darkened background
* Fixed bug with top/bottom/left/right sliders after rect refactor
* Changing width/height on locked aspect ratio bug
* Aspect ratio sliders rounding/setting a min of 1 px height/width
* Fixed bugs with drawing the crop rect, especially with locked aspect ratio
* Save the mode to config_cache
* Added size lock and renamed mode
* Added tooltip for size lock. Not sure if I did the translation file right
* removed signal that wasn't used
* Formatting
* Removed old TODO comment from one of my previous PRs that isn't true anymore
* Fixed definition order for linter
* Changed locked size modes moving to offset by @Variable-ind, reordered methods
---------
Co-authored-by: MrTriPie <MrTriPie>
* Image bruch now obeys dynamics as well
* Added a signal that resets dynamics
* formatting
* change uncheck.png
* added preview for pressure
* Added the requested changes
* Code Improvements to Perspective editor
* formatting
* fixed a bug
* Some drastic changes
* Delete src/UI/Tools directory
* Delete src/UI/UI/PerspectiveEditor directory
* Some drastic changes
* i messed up so here's the fix
* Added easy movement and rotation
* formatting
* useless script
* fix some things and add tracker disabler
* formatting
* fix incorrect length on redo
* remove useless code
The previous method was not working for perspective guides rotated at 315 degrees, due to the test line being parallel to it. Thanks to Variable for the solution.
* Added Code for cursor snapping
* Added the Snap option
* typo
* Fix snapvector not updating properly
* formatting
* better snapping system
This makes the stroke snapping more accurate by preferring the snap point nearest to the cursor
* changed Snap mode to spacing
* Code Improvements
* more changes
* Update Pencil.gd
* formatting
* fix max line length
---------
Co-authored-by: Emmanouil Papadeas <35376950+OverloadedOrama@users.noreply.github.com>
Snap to the rectangular grid and guides (excluding symmetry guides). Can be toggled from the View menu. Currently affects the following tools: Pencil, Eraser, Shading, Line, all shape tool and all selection tools. Although maybe this should not affect the Magic Wand and Select By Color? The snapping distance is currently unaffected by the zoom (should change), and it will be exposed as a parameter in the preferences at a later commit.
* Upgrade the brushes popup
* upgrade brushes popup
* Formatting
* fix name of 1st brush not written
* use grid container instead of vbox
and added categories
* Some UI Changes
* typo
* Fix autowrap
* fix node paths
* formatting
* more formatting
* more formatting
And hopefully the final commit
* sigh... more formatting
Prior to this commit, the transformation (moving/scaling content with selections) of only one of the selected cels would appear, and the rest would only have a visible effect on transformation confirm.
* Fix move tool preview (without selection)
* typo
* Dont snap if transformation hasn't started
* Added a can_layer_get_drawn() check
* Formatting
* remove useless line
* Formatting (Again cause i am DUMB)
* Formatting (Again cause i am DUMB)
* Better Code
* Fix a typo
this is required because this is "Paint" Selection
(so it's not supposed to cancel selection if we click outside the canvas)
* Added Selction Modes
Default, Add, Subtract, Intersect
* removed whitespace
* better options
* Removed Separators from headers
* formatting
* more formatting that i didnt notice
* Solved Shortcut conflict
* remove whitespace
Prevents errors (and potentially unwanted behavior) if attempting to undo while in the middle of drawing with the Pencil, Eraser of Shading tools. Needs more testing in case I broke something else.
* Fixed issues with Shading tool Saturation and Value not always being right in Hue Shading mode
* Shading tool hue shifting fixes and tweaks
* Bringing over changes from layer groups brach, without any changes to layer blending
* Some quick fixes to make it work again
* Fixed some of the places where GroupLayers cause errors. Cel Buttons are now hidden when groups are collapsed
* Layer drag highlighting (need to actually drop them correctly, also need to do cels)
* Added more layer hierarchy related functions, organized the function order in the Layer classes a bit
* Switched the layer type changing from string to int
* Moved layer type enum to Global
* Added get_layer_type_name(), currently used for the default layer name
* Renamed the layer get_children/is_a_parent_of functions
* changed get_layer_type_name() to get_default_name(number)
* New layer drag and dropping behavior
* Added read/write_image_data_from/to_pxo functions to Cel classes to handle saving/loading the binary image data for each cel type
* Fixed warning
* Added a line to child layers wich makes it easier to see where they are in the hierarchy
* Fixed debugger warning
* Fixed all cel types loading as PixelCels
* Fixed spacing issue with cels when collapsing groups
* Fixed bug when dropping a child layer to the bottom region of its parent group, where it would end up to far down (maybe disappearing)
* updated temporary todo comments
* Created a base scene for layer buttons and merged layer button script into one
* Prevent the case of parenting to itself in layer drag and drop, fixed static reference to LayerButton still being BaseLayerButton
* Use a base scene for CelButtons
* First bit of the refactoring work
* Several bits of refactoring
* Fixed moving cels
* Cleaned up Project.move_cel function
* Fixed project_layer_removed
* Updated change_frame_order on FrameButton. Some (not all) work on getting the layer UI updated when pressing buttons such as collapse/visible/lock
* Bug fixes. Updating layer button's buttons
* Fixed timeline selection issues when creating a new project. Some code cleanup
* tweaks
* Removed a bunch of commented out code
* Removing more commented out code
* Fixed bugs with timeline selectio. Fixed cels being placed in the reverse layer order when adding a frame
* Changed add/remove_frame to add/remove_frames (multiple support)
* Refactored copy_frames in animation timeline
* added copy function to cel classes
* added layer copy function
* simplifed copy_frames a tiny bit
* Updated TODO comments to categorize them and remove any that were already done
* Turned Project.add/remove_layer into Project.add/remove_layers (multiple support), not yet tested
* Seperated the layer cloning functionality in timeline's add_layer to its own function, since they're only used by one button, renamed to _on_Button_pressed naming scheme, added children support to the delete layer button
* some TODOs
* Added layer swapping
* Added priorities to refactor TODOs
* Simplified layer swapping code a little
* Fixed performance regression on changing project, updated TODOs
* Included _on_MergeDownLayer_pressed in timeline refactor
* Cleaned up _on_MergeDownLayer_pressed refactor
* If all frames are selected, prevent being able to remove all of them
* Fixed cel linking when cloning layers/frames. Moved the copy function from cel classes to layer classes, splitting into copy_cel and copy_all_cels
* Combined and rewrote the 2 project _toggle_layer_buttons_.. functions into 1 simpler _toggle_layer_buttons function
* Simplified _toggle_layer_buttons some more
* Added hierarchy support for move up/down layer buttons
* Added toggle_frame_buttons method to project (extracted from _frame_changed). Called from main when setting up startup project. Removed _ from start of _toggle_layer_buttons name
* Fixed duplicate_layers parent references being to the original layers
* cleaned up project.move_layers method a bit
* TODOs
* moved the transform_content_confirm calls for the layer buttons in AnimationTimeline (Add/remove/clone) to the project layer modification functions
* animation first/last_frame tweaks and un-press play buttons when the first/last_frame are the same in _on_AnimationTimer_timeout in AnimationTimeline
* Cleaned up project_changed in ANimationTimeline a bit
* Cleaned up project_layer_added in AnimationTimeline
* Changed Layer classes get_default_name to set_name_to_default
* Cleaned up LayerButton.drop_data slightly
* Looked at some of my TODOs
* cleaned up copying cels
* Fixed CelButton linked_indicator not showing up right away when becoming linked
* Cleand up link/unlink cel menu option a little. Fixed situatoin where trying to call button_setup on cel_button that doesn't exist anymore due to undo/redo
* Fixed regression with copy_cel (linked) in when cloning a frame
* Minor cleanup, more detailed comments, updated TODOs
* more improved comments
* Made focus_mode on Cel/Layer/FrameButton NONE to fix bug where it looks like one is selected after pressing it and adding a new Layer/Frame (but its just in the focus state, not the pressed state
* Made AnimationTimeline.change_layer_order work a little more consistantly with LayerButton.drop_data, and fixed a minor bug in it
* Updated comments and TODOs
* cleanup
* removed some code that should no longer be needed
* updated comment
* removed Project's frames and layers setters _frames_changed and _layers_changed
* Made some 'for x in range(array.size())' just 'for x in array.size()'
* updated comments/TODOs
* Cel content changes intial
* Added 'content' methods to Cel classes
* Removed image var from PixelCelButton
* Reusing PixelCelButton.gd on GroupCelButton scene
* Renamed PixelCelButton.gd to CelButton.gd (as it will be used for all Cel Buttons) and deleted GroupCelButton.gd
* Hide the TransparentChecker on GroupCelButton.tscn until a preview texture is added for GroupCels
* TODOs, prevent memory leak when closing projects
* Link/unlink cel cleanup
:
* Added _project param to _init methods of Layer classes
* Added update_texture method to Cel classes (moving part from the update_texture and update_selected_cels_textures methods from Canvas.gd
* Removed a temporary check (which also fixed another bug)
* Clone child layers when cloning a layer
* Added temp dummy get_image method to GroupCel, and use get_image when copying or picking colors
* TODOs
* Made open_image_as_spritesheet_layer work after the timeline refactor (still doesn't work with groups yet though). TODO comment updates
* Added create_new_cel methods to Layer classes
* Updated TODOs and comments
* Renamed Layer class's create_empty_cel to new_empty_cel to match Project's new_emtpy_frame
* Renamed create_layer/cel_button to instantiate_layer/cel_button
* updated TODOs
* prioritized TODOs
* Fixed some warnings
* removed commented out code from previous commit
* Fixed export
* Made open_image_as_new_frame work after timeline refactor
* Fixed open_image_as_new_layer after timeline refactor
* Some linked cel fixes
* More linked cels fixes
* cleanup
* Optimized importing spreadsheet as new layer
* Fixed Scale Image crash with Groups
* Fixed onion skin with groups
* Removed blend_mode from BaseLayer for now
* Mostly fixed image effects
* Fixed resize canvas
* Fixed drag and drop not working with Cel Buttons on Group Layers
* updated TODOs
* Renamed Replace Frame (in open image) to Replace Cel
* Continued renaming Replace Frame to Replace Cel
* Made open_image_at_cels work after timeline refactor
* Added get_layer_path method to BaseLayer
* Replaced AtLayerSpinbox with AtLayerOption for Open Image as New Frame or Replace Cel
* Updated TODOs
* updated TODOs
* Comments for cel content methods
* fixed right clicking group cel button deselecting the button (even though cel is still selected
* frame/layer modification methods comments
* Removed unneeded size flags
* TODO updates
* Removed a loop that would never run from open_image_as_spritesheet_tab
* TODO update
* Combined BaseLayer.get_children_direct and get_children_recursive into a single get_children method with a bool for recursive. Added a get_child_count method
* Removed unneeded frame paramaters from _on_DeleteFrame_pressed and _on_CopyFrame_pressed
* TODO Updates
* Removed unneeded code from delete_frames
* Made delete_frames variable names more consistent with my other changes
* Continuation
* made variable names in copy_frames more consistent with rest of changes
* Update TODOs
* Removed TODOs for after this PR (moved to my notes)
* Fixed crash when pasting image on Group
* Fixed layer .visible check to be is_visible_in_hierarchy()
* Removed some drag highlight polish code that didn't work
* Removed code from Canvas update_texture and update_selected_cels_textures that was redundant
* gdformat
* gdformat
* gdlint fixes
* Fixed Cel button not having its linked indicator show when enabling new cels linked on a layer other than the current layer
* Fixed crop image and centralize image
* Added '# gdlint: ignore=max-public-methods' to the top of Project'
* Fixed dragging cels to layer of different type crash
* Formatted CelButton.gd
Co-authored-by: MrTriPie <MrTriPie>
Also fix issue with similar area and color fill where if the selected color is the same as the pixel's color in mouse position, the operation stops even if there are other cels selected.