Add modified Fragmented project files
This commit is contained in:
parent
f99f1fbc9b
commit
77ce93fb15
57 changed files with 1696 additions and 0 deletions
50
src/Camera.gd
Normal file
50
src/Camera.gd
Normal file
|
@ -0,0 +1,50 @@
|
|||
extends Camera2D
|
||||
|
||||
@onready var image_viewport_display = %ImageViewportDisplay
|
||||
|
||||
var drag = false
|
||||
|
||||
func _input(event):
|
||||
if event.is_action_pressed("zoom_out"):
|
||||
zoom_out()
|
||||
elif event.is_action_pressed("zoom_in"):
|
||||
zoom_in()
|
||||
if event.is_action_pressed("drag"):
|
||||
self.drag = true
|
||||
elif event.is_action_released("drag"):
|
||||
self.drag = false
|
||||
if self.drag && event is InputEventMouseMotion:
|
||||
self.global_position -= event.relative / self.zoom
|
||||
|
||||
var old_zoom = self.zoom
|
||||
|
||||
func _process(_delta: float) -> void:
|
||||
if self.zoom != old_zoom:
|
||||
image_viewport_display.update_zoom_texture_filter(self.zoom)
|
||||
image_viewport_display.material.set_shader_parameter("zoom_level", self.zoom)
|
||||
old_zoom = self.zoom
|
||||
|
||||
func fit_image():
|
||||
if Filesystem.original_image != null:
|
||||
var image_size = Filesystem.original_image.get_size()
|
||||
var viewport_size = get_viewport_rect().size
|
||||
var zoomf = 1.0
|
||||
if viewport_size.x / image_size.x * image_size.y > viewport_size.y:
|
||||
zoomf = viewport_size.y / image_size.y / 1.25
|
||||
else:
|
||||
zoomf = viewport_size.x / image_size.x / 1.2
|
||||
self.zoom = Vector2(zoomf, zoomf)
|
||||
self.global_position = Vector2(0, 0)
|
||||
|
||||
func zoom_in():
|
||||
var old_mouse_pos = get_global_mouse_position()
|
||||
self.zoom *= 1.2
|
||||
self.global_position += old_mouse_pos - get_global_mouse_position()
|
||||
|
||||
func zoom_out():
|
||||
var old_mouse_pos = get_global_mouse_position()
|
||||
self.zoom *= 1/1.2
|
||||
self.global_position += old_mouse_pos - get_global_mouse_position()
|
||||
|
||||
func _on_fit_image_button_pressed():
|
||||
fit_image()
|
Loading…
Add table
Add a link
Reference in a new issue