Note that due to limitations with the TextEdit node, horizontal alignment cannot be previewed until the text has been placed in the canvas. This will be fixed once https://github.com/godotengine/godot-proposals/issues/7352 is implemented.
Icons made by @Erevoid.
* Initial work on audio layers
* Load ogg audio files
* Fix playback position
* Support mp3 files
* Play audio at the appropriate position when the animation runs, and stop when the pause button is pressed
* Change audio cel textures for the cels where audio is playing
* Fix audio not playing at the appropriate position
* Don't play audio is layer is invisible
* Set the audio layer names to be the imported audio file names
* Import audio from videos
* Export videos with audio
Only works with mp3 for now
* Remove support for ogg audio files as they cannot be saved
At least until I find a way to save them. Wav files will be supported with Godot 4.4
* Fix adding/removing in-between frames breaking the visual indication of audio cels
* Minor code improvements
* Export audio in videos with custom delay
* Support frame delay
* Change the frame where the audio plays at
* Fix crashes when the audio layer has no track
* Remove unneeded cel properties for audio cels
* Pxo loading/saving
* Load audio files from the audio layer properties
* Change the audio driver to Dummy from the Preferences for performance reasons
* Clone audio layers, disable layer merge and FX buttons when an audio layer is selected
* Easily change the playback frame of an audio layer from the right click menu of cel buttons
* Update Translations.pot
* Some code improvements and documentation
* Stop audio from playing when looping, and the audio does not play at the first frame
* Update audio cel buttons when changing the audio of the layer
* Mute audio layer when hiding it mid-play
* Only plays the portion of the sound that corresponds to the specific frame so maybe we should do that as well
When the animation is not running. If it is running, play the sound properly.
* Some code changes to allow for potential negative frames placement for audio
This woud allow audio to be placed in negative frames, which essentially means that audio would start before the first frame. This is not yet supported, however, because I don't know how to make it work with FFMPEG.
* Initial port of the text tool to Godot 4
* Change font (WIP)
* Add antialiasing option and remove some old unneeded lines
* Remove outline code
* Add horizontal alignment and update the text edit font size
* Improve the text edit
* Don't activate tools while typing
* Format
* Give input priority to the text edit so the key X and shortcuts such as control-z work in the text edit
* Add style settings for bold and italic
* Fix text going blank when changing font
* Use `font.draw_multiline_string()`
* Change the move behavior of the text tool, add confirm and cancel buttons
* Compress images on undo/redo
* Fix text position
The "Animation plays only on frames of the same tag" button has been moved to the general timeline settings, along with a new slider that resizes the cel buttons in the timeline.
A very simple implementation, not as complex as something like #768 yet, but it can be done in the future.
The main current limitation is that it doesn't work with group layers as of right now.
This way, Pixelorama remembers the changes users make to the UI, without them having to go to Window, Manage Layouts and clicking on Edit, which was an unintuitive and slow way. Needs testing because bugs may linger.
This commit also adds a new `save_on_change` variable and a `save` method on layout.gd of the dockable_container plugin. Perhaps I should also add this upstream as well.
I also need to add a way to create new layouts based off the default ones (which are permanently stored within Pixelorama's pck file and cannot be modified), so users will always have the option to resort to the default layouts.
* Reference Image Updates
* Fixed static typing
Fixed static typing in "src\UI
\ReferenceImages\ReferenceEditPanel.gd"
Changed "ri == null" to "!ri" in "src\UI\Canvas\ReferenceImages.gd"
* Tried fixing the static typing again
Removed lambda functions for the confirmation dialog.
Removed irrelevant print statement.
* Tried fixing static typing again
I think its fixed now
* Changed Spacing
* Fixed Trailing Whitespaces and tabs
* Fixed Final Trailing Whitespace
* Fixed styling and removed useless enum
* Removed double tabs left over from previous commit
* Fixed remove ConfirmDialog Showing on startusp
* Tried Fixing gdlint issues
* Fixed Linting
* Fixed Spelling issues
* Drag and drop to rearrange reference images
Added the ability to drag and drop Reference Images similar to dragging and dropping layers. These can be dragged or used with buttons (similar to the buttons that move frames). With full undo/redo support.
Added tool buttons these should help people who draw on tablets that cannot use keyboard shortcuts (icons still need to be created)
Renamed ReferenceEditPanel.gd to ReferenceEdit.gd (because it is no longer the script of a panel) and changed the base class of the Reference Panel.
Added some more translations.
Remade ReferenceImageButton.tscn to allow for drag and drop
Added drag highlight
* Added Icons
Added icons for the tools of the Reference Images
* Applied the icons to the UI
* Fix Scripting Issues
* Fixed Linting
* Rename Move.png to move.png
* Update Canvas.gd
* Updated the tooltips
Also added the correct translations
* Rename Select.png to select.png
* Rename Select.png.import to select.png.import
* Rename Move.png.import to move.png.import
* Rename Rotate.png to rotate.png
* Rename Rotate.png.import to rotate.png.import
* Fixed import files
* Rename Scale.png to scale.png
* Rename Scale.png.import to scale.png.import
* Added logic to update the reference panel when the project changes
Also fixed visual bugs related to highlighting the current reference image.
Made it so the reference image that was selected in a project get selected again when the project opens instead of going back to -1 (nothing)
* Update Project.gd
* Initial work of a color picker that is always visible
* Make the new color picker fully functional
* Minor UI fixes
* Change the UI a bit so the color picker buttons look like they used to
To save horizontal space
* Add sliders as a separate panel and rename some file names
* Move the left/right color buttons next to the hex text edit
* Add color picker sliders to the same panel as the rest of the color picker, as an expandable/collapsible area
* Change default layout
* Some minor UI improvements
* Remove guides from ColorPicker.tscn
* Reduce the lines of code that calculate the average color
* Make Pixelorama remember if the color picker is expanded and its color mode
* Update tallscreen.tres
* Update tallscreen.tres
* Pixelorama now also remembers the last used picker shape
* Add some extra comments in the code
* Fix typo
* Add some translation strings
* Basic logic for layer effects
* Add an FX button and the ability to add effects, no way to remove or change properties of effects yet
* Basic and ugly UI for adding and removing effects, no property changing yet
* Swap effects
* Fix preload shader paths
* Change parameters for layer effects
* Change gradient parameter in layer effect shaders, and other fixes
* Use CollapsibleContainers for the shader properties
* Set the correct gradient interpolation mode and color space in the UI
* Make effects of group layers apply to children
* Change `apply_fx` to `apply_effects`, formatting, some extra doc comments
* Apply effects to other canvases, when merging layers and when exporting
* Display humanized names of the shader unifrms
* Some UI improvements to the LayerEffectsSettings
* Add an Enabled button in the layer effects window, and change checkboxes to checkbuttons
* Change BaseLayer.apply_effects() to take a cel as a parameter instead
* Make layer effect buttons be affected by the modulate icon color
* Add option in the View menu whether layer effects are displayed in the canvas or not
* Rename `apply_effects()` to `display_effects()`
* Add translation strings
* Add nearest filter to the gradient map
* Don't change Main.tscn
* Fix more translations
* Change the default cursor shape of the generated UI elements of the layer effects
* Add undo/redo and effect application (apply effect destructively)
There are some errors due to the usage of anonymous lambda methods in undo/redo, but it seems to be working well regardless.
* Make layer effect application work on all cels