diff --git a/Main.tscn b/Main.tscn index e42a00900..38e767db9 100644 --- a/Main.tscn +++ b/Main.tscn @@ -16,16 +16,15 @@ anchor_bottom = 1.0 script = ExtResource( 1 ) [node name="UI" type="HBoxContainer" parent="."] -editor/display_folded = true anchor_right = 1.0 anchor_bottom = 1.0 size_flags_horizontal = 3 custom_constants/separation = 0 [node name="ToolPanel" type="Panel" parent="UI"] -margin_right = 320.0 +margin_right = 230.0 margin_bottom = 600.0 -rect_min_size = Vector2( 320, 0 ) +rect_min_size = Vector2( 230, 0 ) size_flags_vertical = 3 [node name="Tools" type="VBoxContainer" parent="UI/ToolPanel"] @@ -35,12 +34,14 @@ size_flags_horizontal = 3 size_flags_vertical = 3 [node name="MenusAndTools" type="VBoxContainer" parent="UI/ToolPanel/Tools"] -margin_right = 320.0 +editor/display_folded = true +margin_right = 230.0 margin_bottom = 266.0 size_flags_vertical = 3 [node name="MenuItems" type="HBoxContainer" parent="UI/ToolPanel/Tools/MenusAndTools"] -margin_right = 320.0 +editor/display_folded = true +margin_right = 230.0 margin_bottom = 20.0 [node name="FileMenu" type="MenuButton" parent="UI/ToolPanel/Tools/MenusAndTools/MenuItems"] @@ -70,12 +71,12 @@ margin_bottom = 20.0 mouse_default_cursor_shape = 2 text = "Help" -[node name="ToolsContainer" type="HBoxContainer" parent="UI/ToolPanel/Tools/MenusAndTools"] +[node name="PaintToolsContainer" type="HBoxContainer" parent="UI/ToolPanel/Tools/MenusAndTools"] margin_top = 24.0 -margin_right = 320.0 +margin_right = 230.0 margin_bottom = 44.0 -[node name="Pencil" type="Button" parent="UI/ToolPanel/Tools/MenusAndTools/ToolsContainer"] +[node name="Pencil" type="Button" parent="UI/ToolPanel/Tools/MenusAndTools/PaintToolsContainer"] margin_right = 51.0 margin_bottom = 20.0 hint_tooltip = "P for left mouse button @@ -85,12 +86,12 @@ mouse_default_cursor_shape = 2 button_mask = 3 text = "Pencil" -[node name="LeftIndicator" type="Sprite" parent="UI/ToolPanel/Tools/MenusAndTools/ToolsContainer/Pencil"] +[node name="LeftIndicator" type="Sprite" parent="UI/ToolPanel/Tools/MenusAndTools/PaintToolsContainer/Pencil"] texture = ExtResource( 2 ) centered = false offset = Vector2( 0, -10 ) -[node name="Eraser" type="Button" parent="UI/ToolPanel/Tools/MenusAndTools/ToolsContainer"] +[node name="Eraser" type="Button" parent="UI/ToolPanel/Tools/MenusAndTools/PaintToolsContainer"] margin_left = 55.0 margin_right = 106.0 margin_bottom = 20.0 @@ -101,12 +102,12 @@ mouse_default_cursor_shape = 2 button_mask = 3 text = "Eraser" -[node name="RightIndicator" type="Sprite" parent="UI/ToolPanel/Tools/MenusAndTools/ToolsContainer/Eraser"] +[node name="RightIndicator" type="Sprite" parent="UI/ToolPanel/Tools/MenusAndTools/PaintToolsContainer/Eraser"] texture = ExtResource( 3 ) centered = false offset = Vector2( 35, -10 ) -[node name="Fill" type="Button" parent="UI/ToolPanel/Tools/MenusAndTools/ToolsContainer"] +[node name="Fill" type="Button" parent="UI/ToolPanel/Tools/MenusAndTools/PaintToolsContainer"] margin_left = 110.0 margin_right = 166.0 margin_bottom = 20.0 @@ -116,9 +117,13 @@ mouse_default_cursor_shape = 2 button_mask = 3 text = "Bucket" -[node name="RectSelect" type="Button" parent="UI/ToolPanel/Tools/MenusAndTools/ToolsContainer"] -margin_left = 170.0 -margin_right = 249.0 +[node name="SelectionToolsContainer" type="HBoxContainer" parent="UI/ToolPanel/Tools/MenusAndTools"] +margin_top = 48.0 +margin_right = 230.0 +margin_bottom = 68.0 + +[node name="RectSelect" type="Button" parent="UI/ToolPanel/Tools/MenusAndTools/SelectionToolsContainer"] +margin_right = 79.0 margin_bottom = 20.0 hint_tooltip = "R for left mouse button Alt + R for right mouse button @@ -129,32 +134,34 @@ text = "RectSelect" [node name="HSeparator" type="HSeparator" parent="UI/ToolPanel/Tools"] margin_top = 270.0 -margin_right = 320.0 +margin_right = 230.0 margin_bottom = 274.0 [node name="ToolOptions" type="HBoxContainer" parent="UI/ToolPanel/Tools"] margin_top = 278.0 -margin_right = 320.0 +margin_right = 230.0 margin_bottom = 544.0 size_flags_vertical = 3 +custom_constants/separation = 0 [node name="LeftToolOptions" type="VBoxContainer" parent="UI/ToolPanel/Tools/ToolOptions"] -margin_right = 154.0 +margin_right = 113.0 margin_bottom = 266.0 size_flags_horizontal = 3 [node name="LeftLabel" type="Label" parent="UI/ToolPanel/Tools/ToolOptions/LeftToolOptions"] -margin_right = 154.0 +margin_right = 113.0 margin_bottom = 14.0 text = "Left tool options" [node name="LeftIndicatorCheckbox" type="CheckBox" parent="UI/ToolPanel/Tools/ToolOptions/LeftToolOptions"] margin_top = 18.0 -margin_right = 154.0 +margin_right = 113.0 margin_bottom = 42.0 +hint_tooltip = "Show left mouse indicator when drawing" mouse_default_cursor_shape = 2 pressed = true -text = "Show left indicator" +text = "Left cursor" [node name="LeftColorPickerButton" type="ColorPickerButton" parent="UI/ToolPanel/Tools/ToolOptions/LeftToolOptions"] margin_top = 46.0 @@ -166,48 +173,44 @@ mouse_default_cursor_shape = 2 size_flags_horizontal = 0 size_flags_vertical = 0 -[node name="BrushSize" type="HBoxContainer" parent="UI/ToolPanel/Tools/ToolOptions/LeftToolOptions"] +[node name="BrushSizeLabel" type="Label" parent="UI/ToolPanel/Tools/ToolOptions/LeftToolOptions"] margin_top = 82.0 -margin_right = 154.0 -margin_bottom = 106.0 - -[node name="BrushSizeLabel" type="Label" parent="UI/ToolPanel/Tools/ToolOptions/LeftToolOptions/BrushSize"] -margin_top = 5.0 -margin_right = 75.0 -margin_bottom = 19.0 +margin_right = 113.0 +margin_bottom = 96.0 text = "Brush size: " -[node name="LeftBrushSizeEdit" type="SpinBox" parent="UI/ToolPanel/Tools/ToolOptions/LeftToolOptions/BrushSize"] -margin_left = 79.0 -margin_right = 153.0 -margin_bottom = 24.0 +[node name="LeftBrushSizeEdit" type="SpinBox" parent="UI/ToolPanel/Tools/ToolOptions/LeftToolOptions"] +margin_top = 100.0 +margin_right = 113.0 +margin_bottom = 124.0 mouse_default_cursor_shape = 2 min_value = 1.0 value = 1.0 suffix = "px" [node name="ColorComesFrom" type="Label" parent="UI/ToolPanel/Tools/ToolOptions/LeftToolOptions"] -margin_top = 110.0 -margin_right = 154.0 -margin_bottom = 124.0 -text = "Brush's color from" +margin_top = 128.0 +margin_right = 113.0 +margin_bottom = 142.0 +text = "Brush color from" [node name="InterpolateColor" type="HBoxContainer" parent="UI/ToolPanel/Tools/ToolOptions/LeftToolOptions"] -margin_top = 128.0 -margin_right = 154.0 -margin_bottom = 144.0 +margin_top = 146.0 +margin_right = 113.0 +margin_bottom = 162.0 [node name="BrushColorLabel" type="Label" parent="UI/ToolPanel/Tools/ToolOptions/LeftToolOptions/InterpolateColor"] margin_top = 1.0 -margin_right = 37.0 +margin_right = 9.0 margin_bottom = 15.0 rect_pivot_offset = Vector2( -90, -47 ) -text = "Brush" +text = "B" [node name="LeftInterpolateFactor" type="HSlider" parent="UI/ToolPanel/Tools/ToolOptions/LeftToolOptions/InterpolateColor"] -margin_left = 41.0 -margin_right = 117.0 +margin_left = 13.0 +margin_right = 101.0 margin_bottom = 16.0 +hint_tooltip = "Choose if the brush's color should come from the brush itself (left), or the currently selected color (right)" size_flags_horizontal = 3 max_value = 1.0 step = 0.01 @@ -215,36 +218,36 @@ value = 0.5 ticks_on_borders = true [node name="SelectedColorLabel" type="Label" parent="UI/ToolPanel/Tools/ToolOptions/LeftToolOptions/InterpolateColor"] -margin_left = 121.0 +margin_left = 105.0 margin_top = 1.0 -margin_right = 154.0 +margin_right = 113.0 margin_bottom = 15.0 rect_pivot_offset = Vector2( -90, -47 ) -text = "Color" +text = "C" [node name="VSeparator" type="VSeparator" parent="UI/ToolPanel/Tools/ToolOptions"] -margin_left = 158.0 -margin_right = 162.0 +margin_left = 113.0 +margin_right = 117.0 margin_bottom = 266.0 [node name="RightToolOptions" type="VBoxContainer" parent="UI/ToolPanel/Tools/ToolOptions"] -editor/display_folded = true -margin_left = 166.0 -margin_right = 320.0 +margin_left = 117.0 +margin_right = 230.0 margin_bottom = 266.0 size_flags_horizontal = 3 [node name="RightLabel" type="Label" parent="UI/ToolPanel/Tools/ToolOptions/RightToolOptions"] -margin_right = 154.0 +margin_right = 113.0 margin_bottom = 14.0 text = "Right tool options" [node name="RightIndicatorCheckbox" type="CheckBox" parent="UI/ToolPanel/Tools/ToolOptions/RightToolOptions"] margin_top = 18.0 -margin_right = 154.0 +margin_right = 113.0 margin_bottom = 42.0 +hint_tooltip = "Show right mouse indicator when drawing" mouse_default_cursor_shape = 2 -text = "Show right indicator" +text = "Right cursor" [node name="RightColorPickerButton" type="ColorPickerButton" parent="UI/ToolPanel/Tools/ToolOptions/RightToolOptions"] margin_top = 46.0 @@ -256,48 +259,44 @@ mouse_default_cursor_shape = 2 size_flags_horizontal = 0 size_flags_vertical = 0 -[node name="BrushSize" type="HBoxContainer" parent="UI/ToolPanel/Tools/ToolOptions/RightToolOptions"] +[node name="BrushSizeLabel" type="Label" parent="UI/ToolPanel/Tools/ToolOptions/RightToolOptions"] margin_top = 82.0 -margin_right = 154.0 -margin_bottom = 106.0 - -[node name="BrushSizeLabel" type="Label" parent="UI/ToolPanel/Tools/ToolOptions/RightToolOptions/BrushSize"] -margin_top = 5.0 -margin_right = 75.0 -margin_bottom = 19.0 +margin_right = 113.0 +margin_bottom = 96.0 text = "Brush size: " -[node name="RightBrushSizeEdit" type="SpinBox" parent="UI/ToolPanel/Tools/ToolOptions/RightToolOptions/BrushSize"] -margin_left = 79.0 -margin_right = 153.0 -margin_bottom = 24.0 +[node name="RightBrushSizeEdit" type="SpinBox" parent="UI/ToolPanel/Tools/ToolOptions/RightToolOptions"] +margin_top = 100.0 +margin_right = 113.0 +margin_bottom = 124.0 mouse_default_cursor_shape = 2 min_value = 1.0 value = 1.0 suffix = "px" [node name="ColorComesFrom" type="Label" parent="UI/ToolPanel/Tools/ToolOptions/RightToolOptions"] -margin_top = 110.0 -margin_right = 154.0 -margin_bottom = 124.0 -text = "Brush's color from" +margin_top = 128.0 +margin_right = 113.0 +margin_bottom = 142.0 +text = "Brush color from" [node name="InterpolateColor" type="HBoxContainer" parent="UI/ToolPanel/Tools/ToolOptions/RightToolOptions"] -margin_top = 128.0 -margin_right = 154.0 -margin_bottom = 144.0 +margin_top = 146.0 +margin_right = 113.0 +margin_bottom = 162.0 [node name="BrushColorLabel" type="Label" parent="UI/ToolPanel/Tools/ToolOptions/RightToolOptions/InterpolateColor"] margin_top = 1.0 -margin_right = 37.0 +margin_right = 9.0 margin_bottom = 15.0 rect_pivot_offset = Vector2( -90, -47 ) -text = "Brush" +text = "B" [node name="RightInterpolateFactor" type="HSlider" parent="UI/ToolPanel/Tools/ToolOptions/RightToolOptions/InterpolateColor"] -margin_left = 41.0 -margin_right = 117.0 +margin_left = 13.0 +margin_right = 101.0 margin_bottom = 16.0 +hint_tooltip = "Choose if the brush's color should come from the brush itself (left), or the currently selected color (right)" size_flags_horizontal = 3 max_value = 1.0 step = 0.01 @@ -305,21 +304,21 @@ value = 0.5 ticks_on_borders = true [node name="SelectedColorLabel" type="Label" parent="UI/ToolPanel/Tools/ToolOptions/RightToolOptions/InterpolateColor"] -margin_left = 121.0 +margin_left = 105.0 margin_top = 1.0 -margin_right = 154.0 +margin_right = 113.0 margin_bottom = 15.0 rect_pivot_offset = Vector2( -90, -47 ) -text = "Color" +text = "C" [node name="HSeparator2" type="HSeparator" parent="UI/ToolPanel/Tools"] margin_top = 548.0 -margin_right = 320.0 +margin_right = 230.0 margin_bottom = 552.0 [node name="BrushesContainer" type="ScrollContainer" parent="UI/ToolPanel/Tools"] margin_top = 556.0 -margin_right = 320.0 +margin_right = 230.0 margin_bottom = 592.0 size_flags_horizontal = 3 scroll_vertical_enabled = false @@ -329,6 +328,7 @@ margin_right = 36.0 margin_bottom = 36.0 [node name="PixelBrushButton" parent="UI/ToolPanel/Tools/BrushesContainer/BrushHBoxContainer" instance=ExtResource( 4 )] +hint_tooltip = "Pixel brush" [node name="LeftBrushIndicator" type="Sprite" parent="UI/ToolPanel/Tools/BrushesContainer/BrushHBoxContainer/PixelBrushButton"] scale = Vector2( 0.8, 0.8 ) @@ -343,23 +343,24 @@ offset = Vector2( 28, 0 ) [node name="HSeparator3" type="HSeparator" parent="UI/ToolPanel/Tools"] margin_top = 596.0 -margin_right = 320.0 +margin_right = 230.0 margin_bottom = 600.0 [node name="CanvasAndTimeline" type="VBoxContainer" parent="UI"] -margin_left = 320.0 +margin_left = 230.0 margin_right = 864.0 margin_bottom = 600.0 size_flags_horizontal = 3 [node name="HBoxContainer" type="HBoxContainer" parent="UI/CanvasAndTimeline"] -margin_right = 544.0 +editor/display_folded = true +margin_right = 634.0 margin_bottom = 464.0 size_flags_horizontal = 3 size_flags_vertical = 3 [node name="ViewportContainer" type="ViewportContainer" parent="UI/CanvasAndTimeline/HBoxContainer"] -margin_right = 544.0 +margin_right = 634.0 margin_bottom = 464.0 mouse_default_cursor_shape = 3 size_flags_horizontal = 3 @@ -367,7 +368,7 @@ size_flags_vertical = 3 stretch = true [node name="Viewport" type="Viewport" parent="UI/CanvasAndTimeline/HBoxContainer/ViewportContainer"] -size = Vector2( 544, 464 ) +size = Vector2( 634, 464 ) handle_input_locally = false render_target_update_mode = 3 @@ -386,14 +387,15 @@ script = ExtResource( 7 ) [node name="ViewportSeparator" type="VSeparator" parent="UI/CanvasAndTimeline/HBoxContainer"] visible = false -margin_left = 532.0 -margin_right = 536.0 +margin_left = 315.0 +margin_right = 319.0 margin_bottom = 464.0 [node name="ViewportContainer2" type="ViewportContainer" parent="UI/CanvasAndTimeline/HBoxContainer"] +editor/display_folded = true visible = false -margin_left = 270.0 -margin_right = 536.0 +margin_left = 319.0 +margin_right = 634.0 margin_bottom = 464.0 mouse_default_cursor_shape = 3 size_flags_horizontal = 3 @@ -401,7 +403,7 @@ size_flags_vertical = 3 stretch = true [node name="Viewport" type="Viewport" parent="UI/CanvasAndTimeline/HBoxContainer/ViewportContainer2"] -size = Vector2( 266, 464 ) +size = Vector2( 315, 464 ) handle_input_locally = false render_target_update_mode = 0 script = ExtResource( 8 ) @@ -412,9 +414,8 @@ zoom = Vector2( 0.15, 0.15 ) script = ExtResource( 6 ) [node name="AnimationTimeline" type="Panel" parent="UI/CanvasAndTimeline"] -editor/display_folded = true margin_top = 468.0 -margin_right = 544.0 +margin_right = 634.0 margin_bottom = 600.0 rect_min_size = Vector2( 0, 132 ) size_flags_horizontal = 3 @@ -425,12 +426,12 @@ anchor_bottom = 1.0 size_flags_horizontal = 3 [node name="ButtonContainer" type="CenterContainer" parent="UI/CanvasAndTimeline/AnimationTimeline/TimelineContainer"] -margin_right = 544.0 +margin_right = 634.0 margin_bottom = 24.0 [node name="AnimationButtons" type="HBoxContainer" parent="UI/CanvasAndTimeline/AnimationTimeline/TimelineContainer/ButtonContainer"] -margin_left = 94.0 -margin_right = 450.0 +margin_left = 139.0 +margin_right = 495.0 margin_bottom = 24.0 [node name="LoopLabel" type="Label" parent="UI/CanvasAndTimeline/AnimationTimeline/TimelineContainer/ButtonContainer/AnimationButtons"] @@ -443,7 +444,9 @@ text = "Loop:" margin_left = 39.0 margin_right = 69.0 margin_bottom = 24.0 -hint_tooltip = "Should the animation loop (play again after it reached the end)?" +hint_tooltip = "No: Animation doesn't loop +Cycle: Animation plays again when it reaches the last frame +Ping-pong: Animation plays again but backwards when it reaches the last frame" mouse_default_cursor_shape = 2 text = "No" @@ -479,18 +482,18 @@ suffix = "FPS" [node name="HSeparator" type="HSeparator" parent="UI/CanvasAndTimeline/AnimationTimeline/TimelineContainer"] margin_top = 28.0 -margin_right = 544.0 +margin_right = 634.0 margin_bottom = 32.0 [node name="CenterContainer" type="CenterContainer" parent="UI/CanvasAndTimeline/AnimationTimeline/TimelineContainer"] editor/display_folded = true margin_top = 36.0 -margin_right = 544.0 +margin_right = 634.0 margin_bottom = 56.0 [node name="FrameButtons" type="HBoxContainer" parent="UI/CanvasAndTimeline/AnimationTimeline/TimelineContainer/CenterContainer"] -margin_left = 213.0 -margin_right = 330.0 +margin_left = 258.0 +margin_right = 375.0 margin_bottom = 20.0 [node name="AddFrame" type="Button" parent="UI/CanvasAndTimeline/AnimationTimeline/TimelineContainer/CenterContainer/FrameButtons"] @@ -539,12 +542,12 @@ text = "Cl" [node name="HSeparator2" type="HSeparator" parent="UI/CanvasAndTimeline/AnimationTimeline/TimelineContainer"] margin_top = 60.0 -margin_right = 544.0 +margin_right = 634.0 margin_bottom = 64.0 [node name="ScrollContainer" type="ScrollContainer" parent="UI/CanvasAndTimeline/AnimationTimeline/TimelineContainer"] margin_top = 68.0 -margin_right = 544.0 +margin_right = 634.0 margin_bottom = 132.0 size_flags_horizontal = 3 size_flags_vertical = 3 @@ -553,6 +556,7 @@ scroll_vertical_enabled = false [node name="FrameContainer" type="HBoxContainer" parent="UI/CanvasAndTimeline/AnimationTimeline/TimelineContainer/ScrollContainer"] [node name="LayerPanel" type="Panel" parent="UI"] +editor/display_folded = true margin_left = 864.0 margin_right = 1024.0 margin_bottom = 600.0 @@ -941,7 +945,7 @@ margin_right = 276.0 margin_bottom = 150.0 [node name="Pixelorama" type="Label" parent="AboutDialog/AboutUI"] -margin_right = 339.0 +margin_right = 268.0 margin_bottom = 31.0 text = "Pixelorama v0.3 " @@ -949,7 +953,7 @@ align = 1 [node name="MadeBy" type="Label" parent="AboutDialog/AboutUI"] margin_top = 35.0 -margin_right = 339.0 +margin_right = 268.0 margin_bottom = 83.0 text = "Your Free and Open Source Sprite Editor Developed by Orama Interactive @@ -958,12 +962,11 @@ align = 1 [node name="Links" type="CenterContainer" parent="AboutDialog/AboutUI"] margin_top = 87.0 -margin_right = 339.0 +margin_right = 268.0 margin_bottom = 107.0 [node name="LinkButtons" type="HBoxContainer" parent="AboutDialog/AboutUI/Links"] -margin_left = 35.0 -margin_right = 303.0 +margin_right = 268.0 margin_bottom = 20.0 [node name="Website" type="Button" parent="AboutDialog/AboutUI/Links/LinkButtons"] @@ -991,7 +994,7 @@ text = "Blog" [node name="Copyright" type="Label" parent="AboutDialog/AboutUI"] margin_top = 111.0 -margin_right = 339.0 +margin_right = 268.0 margin_bottom = 142.0 text = " Copyright 2019 - Orama Interactive" @@ -1002,13 +1005,13 @@ align = 1 [connection signal="color_changed" from="UI/ToolPanel/Tools/ToolOptions/LeftToolOptions/LeftColorPickerButton" to="." method="_on_LeftColorPickerButton_color_changed"] [connection signal="popup_closed" from="UI/ToolPanel/Tools/ToolOptions/LeftToolOptions/LeftColorPickerButton" to="." method="_can_draw_true"] [connection signal="pressed" from="UI/ToolPanel/Tools/ToolOptions/LeftToolOptions/LeftColorPickerButton" to="." method="_can_draw_false"] -[connection signal="value_changed" from="UI/ToolPanel/Tools/ToolOptions/LeftToolOptions/BrushSize/LeftBrushSizeEdit" to="." method="_on_LeftBrushSizeEdit_value_changed"] +[connection signal="value_changed" from="UI/ToolPanel/Tools/ToolOptions/LeftToolOptions/LeftBrushSizeEdit" to="." method="_on_LeftBrushSizeEdit_value_changed"] [connection signal="value_changed" from="UI/ToolPanel/Tools/ToolOptions/LeftToolOptions/InterpolateColor/LeftInterpolateFactor" to="." method="_on_LeftInterpolateFactor_value_changed"] [connection signal="toggled" from="UI/ToolPanel/Tools/ToolOptions/RightToolOptions/RightIndicatorCheckbox" to="." method="_on_RightIndicatorCheckbox_toggled"] [connection signal="color_changed" from="UI/ToolPanel/Tools/ToolOptions/RightToolOptions/RightColorPickerButton" to="." method="_on_RightColorPickerButton_color_changed"] [connection signal="popup_closed" from="UI/ToolPanel/Tools/ToolOptions/RightToolOptions/RightColorPickerButton" to="." method="_can_draw_true"] [connection signal="pressed" from="UI/ToolPanel/Tools/ToolOptions/RightToolOptions/RightColorPickerButton" to="." method="_can_draw_false"] -[connection signal="value_changed" from="UI/ToolPanel/Tools/ToolOptions/RightToolOptions/BrushSize/RightBrushSizeEdit" to="." method="_on_RightBrushSizeEdit_value_changed"] +[connection signal="value_changed" from="UI/ToolPanel/Tools/ToolOptions/RightToolOptions/RightBrushSizeEdit" to="." method="_on_RightBrushSizeEdit_value_changed"] [connection signal="value_changed" from="UI/ToolPanel/Tools/ToolOptions/RightToolOptions/InterpolateColor/RightInterpolateFactor" to="." method="_on_RightInterpolateFactor_value_changed"] [connection signal="mouse_entered" from="UI/CanvasAndTimeline/HBoxContainer/ViewportContainer" to="." method="_on_ViewportContainer_mouse_entered"] [connection signal="mouse_exited" from="UI/CanvasAndTimeline/HBoxContainer/ViewportContainer" to="." method="_on_ViewportContainer_mouse_exited"] diff --git a/README.md b/README.md index e0ebc4cfa..3508d36c0 100644 --- a/README.md +++ b/README.md @@ -1,22 +1,25 @@ # Pixelorama - your free and open-source sprite editor! A free & open-source 2D sprite editor, made with Godot Engine, using GDScript! - [![Pixelorama's horrible UI](https://functionoverload590613498.files.wordpress.com/2019/09/screenshot_260-3.png)](https://www.youtube.com/watch?v=f6u910HCT_E) + [![Pixelorama's horrible UI](https://functionoverload590613498.files.wordpress.com/2019/10/screenshot_265.png)](https://www.youtube.com/watch?v=L8o8QKB8lPs) -Current features as of version v0.2: +Current features as of version v0.3: -- Choosing between 3 tools – pencil, eraser and fill bucket – and mapping them to both of your left and right mouse buttons. That’s, pretty wild, huh? +- Choosing between 4 tools – pencil, eraser, fill bucket and rectangle select – and mapping them to both of your left and right mouse buttons. That’s, pretty wild, huh? - Different colors and brush sizes for each of the mouse buttons. +- Custom brush support. - Creating a new canvas with a size of your choosing. - Are you an animator? Then you've come to the right place! Pixelorama has its own Animation Timeline just for you!​ - Importing PNG and JPEG images, and edit them inside Pixelorama. If you import multiple files, they will be added as individual animation frames. - Export your gorgeous art as PNG files. +- Save snd open your projects as Pixelorama's custom file format, .pxo +- Tile Mode for pattern creation! +- Split screen mode to see your masterpiece twice! - Create straight lines for pencil and eraser by holding down Shift while you draw. - The middle mouse wheel isn’t forgotten, you can use it to pan around the canvas and by scrolling up and down, you can zoom in and out! - Keyboard shortcuts! I’m pretty sure this is a lifesaver for most of you. - Just like onions, Pixelorama has a multiple layer system! You can add, remove, move up and down, clone and merge as many layers as you like! -- Scale your images! -- It’s freeeeeee! And open source! +- Scale and crop your images! Make sure to read my blog post on Function(Overload) for more information! https://functionoverload590613498.wordpress.com/2019/08/18/i-made-my-own-sprite-editor-in-godot/ diff --git a/Scripts/Canvas.gd b/Scripts/Canvas.gd index b9717bc0b..76ca7d29d 100644 --- a/Scripts/Canvas.gd +++ b/Scripts/Canvas.gd @@ -366,8 +366,8 @@ func draw_pixel(pos : Vector2, color : Color, brush_size : int, brush_type : int var dst := rectangle_center(pos, custom_brush_size) var src_rect := Rect2(Vector2.ZERO, custom_brush_size + Vector2.ONE) #Rectangle with the same size as the brush, but at cursor's position - var pos_rect_position := rectangle_center(pos, custom_brush_size) - var pos_rect := Rect2(pos_rect_position, custom_brush_size + Vector2.ONE) + #var pos_rect_position := rectangle_center(pos, custom_brush_size) + var pos_rect := Rect2(dst, custom_brush_size + Vector2.ONE) #The selection rectangle #If there's no rectangle, the whole canvas is considered a selection @@ -380,19 +380,16 @@ func draw_pixel(pos : Vector2, color : Color, brush_size : int, brush_type : int if pos_rect_clipped.size == Vector2.ZERO: return - #According to the relative position of pos_rect to selection_rect, ... - #... manipulate src_rect so only the pixels INSIDE the selection get drawn - if pos_rect.position.x < selection_rect.position.x: - src_rect.position.x += pos_rect.size.x - pos_rect_clipped.size.x - dst.x += pos_rect.size.x - pos_rect_clipped.size.x - if pos_rect.end.x > selection_rect.end.x: - src_rect.size.x = pos_rect_clipped.size.x - - if pos_rect.position.y < selection_rect.position.y: - src_rect.position.y += pos_rect.size.y - pos_rect_clipped.size.y - dst.y += pos_rect.size.y - pos_rect_clipped.size.y - if pos_rect.end.y > selection_rect.end.y: - src_rect.size.y = pos_rect_clipped.size.y + #Re-position src_rect and dst based on the clipped position + var pos_difference := (pos_rect.position - pos_rect_clipped.position).abs() + #Obviously, if pos_rect and pos_rect_clipped are the same, pos_difference is Vector2.ZERO + src_rect.position = pos_difference + dst += pos_difference + src_rect.end -= pos_rect.end - pos_rect_clipped.end + #If the selection rectangle is smaller than the brush, ... + #... make sure pixels aren't being drawn outside the selection by adjusting src_rect's size + src_rect.size.x = min(src_rect.size.x, selection_rect.size.x) + src_rect.size.y = min(src_rect.size.y, selection_rect.size.y) if color.a > 0: #If it's the pencil layers[current_layer_index][0].blend_rect(custom_brush_image, src_rect, dst) diff --git a/Scripts/Main.gd b/Scripts/Main.gd index 99cf905fb..e51722b00 100644 --- a/Scripts/Main.gd +++ b/Scripts/Main.gd @@ -18,6 +18,7 @@ var animation_forward := true # Called when the node enters the scene tree for the first time. func _ready() -> void: + OS.set_window_title("Pixelorama %s" % ProjectSettings.get_setting("application/config/Version")) # Set a minimum window size to prevent UI elements from collapsing on each other. # This property is only available in 3.2alpha or later, so use `set()` to fail gracefully if it doesn't exist. OS.set("min_window_size", Vector2(1024, 600)) diff --git a/export_presets.cfg b/export_presets.cfg index a0440dc6c..5f6ed0d0c 100644 --- a/export_presets.cfg +++ b/export_presets.cfg @@ -7,7 +7,7 @@ custom_features="" export_filter="all_resources" include_filter="" exclude_filter="" -export_path="C:/Users/Overloaded/Dropbox/Orama Interactive/Projects/[Programa] Software/Pixelorama/Full of bugs/Pixelorama.exe" +export_path="C:/Users/Overloaded/Dropbox/Orama Interactive/Projects/[Programa Labs]/Pixelorama/Stable/Pixelorama.exe" patch_list=PoolStringArray( ) script_export_mode=1 script_encryption_key="" @@ -23,8 +23,8 @@ binary_format/64_bits=true custom_template/release="" custom_template/debug="" application/icon="" -application/file_version="0.2" -application/product_version="0.2" +application/file_version="0.3" +application/product_version="0.3" application/company_name="Orama Interactive" application/product_name="Pixelorama" application/file_description="" diff --git a/project.godot b/project.godot index 6a53442d5..c2c4da199 100644 --- a/project.godot +++ b/project.godot @@ -29,7 +29,7 @@ _global_script_class_icons={ config/name="Pixelorama" run/main_scene="res://Main.tscn" config/icon="res://icon.png" -config/Version="v0.2" +config/Version="v0.3" [autoload]