* Added the pivot system
* Some re-arrangement
* a bug-fix
* fixed a conversion scale bug
The problem was the conversion from rect to pixel scale was not properly done, i changed it so that it sets conversion factor of shorter side according to the longer side
* Fix to allow manual pivoting
* remove an update()
i may have added it my self but i think its not needed now
* made shader pivot consistent with gd script
by doing `pivot + Vector2(0.5, 0.5)` for "Nearest neighbour (Shader)"
* Cosmetics
* Formatting
* more formatting
* an optimization
* add limit change with brush
* Delete Draw.gd
* Delete BaseTool.gd
* added error calculation
* revert last commit
* Implemented OS.clipboard (using var2str())
* some sanity checks
* formatting
* use text system instead of os clibboard
* 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
* Refactored `draw_tool`
In draw.gd, efactored the `draw_tool(position)` function to memorize a
few preliminary steps that may be skipped on every pixel.
* Reformat
* Reformat
* Improved _set_pixel
Memorized a few results per-stroke rather than recomputing them on each
pixel.
* Refactor
* Improved draw_tool_circle
Memorized the shape of the circle as a vector of displacements from
the center to avoid recomputing the whole circle at every position.
* Refactor
* Reworked drat tool methods
I changed the implementations to use private functions that return the
array of points that would be affected by the tool. This way, when we
are drawing a stroke of a tool, we can get all points affected by the
stroke, filter out duplicates, and only set pixels once.
* refactor