2021-11-18 17:23:37 +01:00
tool
extends Control
class_name SummerDayCanvas
signal fill_transform_changed ( fill_transform )
signal canvas_transform_changed ( canvas_transform )
signal view_transform_changed ( view_transform )
var scene : SummerDayScene
var fill_transform : = Transform2D . IDENTITY
var canvas_transform : = Transform2D . IDENTITY
var view_transform : = Transform2D . IDENTITY # fill_transform * canvas_transform
func _ready ( ) :
2021-11-19 21:05:44 +01:00
connect ( " view_transform_changed " ,
$ BackgroundLayer / EmptyCanvasLayer , " _on_view_transform_changed " )
2021-11-18 17:23:37 +01:00
func _gui_input ( event ) :
if event is InputEventMagnifyGesture :
print ( event . factor )
if event is InputEventMouseButton :
print ( event . pressed )
func _on_SummerDay_scene_changed ( new_scene ) :
scene = new_scene
_update_fill_transform ( )
2021-11-19 21:05:44 +01:00
scene . connect ( " aspect_ratio_changed " ,
self , " _on_scene_aspect_ratio_changed " )
2021-11-18 17:23:37 +01:00
$ Label . text = str ( scene ) + " \n " + str ( scene . aspect_ratio )
func _on_Canvas_resized ( ) :
_update_fill_transform ( )
2021-11-19 21:05:44 +01:00
func _on_scene_aspect_ratio_changed ( new_aspect_ratio ) :
$ BackgroundLayer / EmptyCanvasLayer . _update_size ( new_aspect_ratio )
_update_fill_transform ( )
2021-11-18 17:23:37 +01:00
func _update_fill_transform ( ) :
if scene == null :
fill_transform = Transform2D . IDENTITY
else :
var aspect_ratio = scene . aspect_ratio . x / scene . aspect_ratio . y
var size_ratio = rect_size . x / rect_size . y
var scale
var translation = Vector2 . ZERO
if aspect_ratio < = size_ratio :
scale = rect_size . y
2021-11-19 21:05:44 +01:00
print ( rect_size . y )
2021-11-18 17:23:37 +01:00
translation . x = rect_size . x * 0.5 - aspect_ratio * scale * 0.5
2021-11-19 21:05:44 +01:00
print ( rect_size . x * 0.5 )
print ( aspect_ratio * scale * 0.5 )
print ( translation )
2021-11-18 17:23:37 +01:00
else :
scale = rect_size . x / aspect_ratio
translation . y = rect_size . y * 0.5 - scale * 0.5
fill_transform = Transform2D . IDENTITY . scaled ( Vector2 ( scale , scale ) )
fill_transform = fill_transform . translated ( translation )
2021-11-19 21:05:44 +01:00
fill_transform = Transform2D (
Vector2 ( scale , 0.0 ) ,
Vector2 ( 0.0 , scale ) ,
translation
)
2021-11-18 17:23:37 +01:00
print ( fill_transform )
emit_signal ( " fill_transform_changed " , fill_transform )
func _update_view_transformation ( transform ) :
view_transform = fill_transform * canvas_transform
emit_signal ( " view_transform_changed " , view_transform )