mirror of
https://github.com/Orama-Interactive/Pixelorama.git
synced 2025-01-19 01:29:49 +00:00
4e4a526332
- Added support for custom brushes. When you Ctrl-C a selection, it gets added to the list of custom brushes. Each mouse button can have a different brush, and the user can choose whether their color comes from the brush itself or the selected color in the tool options. They can also be resized based on the selected brush size. - Custom brushes are also being saved on .pxo files. - You can now crop images (per frame). All layers of that frame are taken into account and are affected. - Added split screen support. The user can toggle between single screen and split screen, where a second canvas is being shown. Note that you cannot draw on the second canvas. - Added an About Pixelorama selection on the new Help menu. - Project assets are re-organized.
37 lines
1.2 KiB
GDScript
37 lines
1.2 KiB
GDScript
extends Camera2D
|
|
|
|
var zoom_min := Vector2(0.005, 0.005)
|
|
var zoom_max := Vector2.ONE
|
|
var viewport_container : ViewportContainer
|
|
var drag := false
|
|
|
|
func _ready() -> void:
|
|
viewport_container = get_parent().get_parent()
|
|
|
|
func _input(event) -> void:
|
|
var mouse_pos := viewport_container.get_local_mouse_position()
|
|
var viewport_size := viewport_container.rect_size
|
|
if event.is_action_pressed("camera_drag"):
|
|
drag = true
|
|
elif event.is_action_released("camera_drag"):
|
|
drag = false
|
|
|
|
if Global.can_draw && Global.has_focus && Rect2(Vector2.ZERO, viewport_size).has_point(mouse_pos):
|
|
if event.is_action_pressed("zoom_in"): # Wheel Up Event
|
|
zoom_camera(-1)
|
|
elif event.is_action_pressed("zoom_out"): # Wheel Down Event
|
|
zoom_camera(1)
|
|
elif event is InputEventMouseMotion && drag:
|
|
offset = offset - event.relative * zoom
|
|
|
|
# Zoom Camera
|
|
func zoom_camera(dir : int) -> void:
|
|
var zoom_margin = zoom * dir / 10
|
|
#if zoom + zoom_margin > zoom_min && zoom + zoom_margin < zoom_max:
|
|
if zoom + zoom_margin > zoom_min:
|
|
zoom += zoom_margin
|
|
|
|
if zoom > zoom_max:
|
|
zoom = zoom_max
|
|
if name == "Camera2D":
|
|
Global.zoom_level_label.text = "Zoom: x%s" % [stepify(1 / zoom.x, 0.01)] |