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(): #connect("resized", self, "_size_changed") pass 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() $Label.text = str(scene) + "\n" + str(scene.aspect_ratio) func _on_Canvas_resized(): _update_fill_transform() range(-1, 1, 2) 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 translation.x = rect_size.x * 0.5 - aspect_ratio * scale * 0.5 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) 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)