* Add preferences for tile mode basis vectors
Each tile is offset according to the x and y basis. For example, a tile (1,1) would be at basis_x + basis_y
* Update tools for custom tile modes
Show the indicator in the correct position, and only draw on the nearest tile.
* Fix style issues
* Move tile functionality to own class to prevent bloating Project
* Fix error in Tiles bounding box logic
* Make tile mode offsets project settings
Since the desired tile mode offsets depends on the tile being drawn, the tile mode offsets should be a project specific setting which is persisted in the project file.
* Update TileMode object immediately after closing dialog
* Don't draw center tile by default in TileMode
* Move tile mode offsets to view menu
* Move tile mode offsets dialog out of ImageEffects
When exporting an imported image, the export will happen immediately, without having the export dialog appear, unless "Export as..." is selected. For .png imported images, the menu option will display "Overwrite" instead of "Export". This makes it clear that if Control + E is pressed on an imported png, that file will be overwritten.
Instead of LA8. This should result in slightly less memory usage and is more on par with Godot's BitMap "convert_to_image" method, which will be exposed in Godot 3.5.
* Fixed issues with Shading tool Saturation and Value not always being right in Hue Shading mode
* Shading tool hue shifting fixes and tweaks
* Duplicate shader resource before modifying its code
* added line before comment
Co-authored-by: MrTriPie <MrTriPie>
Removed the "frame_container" property from Layer.gd, which used to hold a reference to a node, leading to orphan nodes being created and never freed. Memory management seems to be working okay now. Previously, every time the user made a change, memory kept going up and never coming down. Now, data that can never be recovered, like undo data that have been rewritten in history, are also removed from memory.
Now inherits from ImageEffect and uses a ShaderImageEffect to generate the image. We get to clear duplicate code that was shared between ShaderEffect.gd and ShaderImageEffect.gd this way, and it also uses the undo/redo logic from ImageEffect instead of Canvas.gd.
As a way to differentiate between public and private methods, as per the official GDScript naming convention. Haven't changed all of the codebase yet, just some scripts that had a lot of public methods. This fixed 4 of the 7 errors of the linter.
* gdformat .
* Lint code - Part 1
* Format code - Part 2
* Lint code - Part 2
Trying to fix the max allowed line length errors
* Add normal_map_invert_y to the image .import files
Because of Godot 3.4
* Do not call private methods outside of the script's scope
Lint code - Part 3
* Format code - Part 3
* Fixed more line length exceeded errors - Lint code Part 3
* Export array of licenses - Lint code part 4
* Clean hint_tooltip code from Global
Removes a lot of lines of code
* Create static-checks.yml
* Fix FreeType's license
* Animation tag fix (a)
fixed tag behavior in "Project.gd"
* Animation tag fix (b)
fixed tag behavior in "AnimationTimeline.gd"
* Animation tag fix (c)
fix top part of line not visible
* Animation tag fix (d)
a fix i forgot about earlier
* added a randomizer...
... to auto select colors of new tags
* Fix Tag scrolling without cels when scrolled on it
* removed randomize() cause it's not needed
* Open/Save Sprite Dialogs now have their directory cached so when reopening Pixelorama they will be set to that directory. Load last project and load recent project also syncs with the open/save dialogs and caches that directory
* Sets a projects default file path to the cached file directory (not sure about) and if the export directory is blank, use the cached file directory
* Changed 'file_dialog_dir' to 'current_dir'
Co-authored-by: MrTriPie <MrTriPie>
Not sure if this actually solves the issue or just makes it more rare, but I haven't been able to reproduce any PoolVector locking issues so far. The problem was that images were remained locked essentially all the time, which seemed to cause issues. Maybe other PoolVectors could not get locked?
Does not work with rotation. It might be a good idea to replace this whole system with one that uses a transformation matrix, to handle rotation and skewing more easily in the future. I'm not a huge fan of this current code.