tool extends PanelContainer class_name SummerDayCanvas var scene: SummerDayScene var canvas_state := SummerDayCanvasState.new() var tool_pool := SummerDayCanvasToolPool.new() var tool_context: SummerDayToolContext # Provided by plugin root. func _ready(): tool_context.canvas_state = canvas_state canvas_state.connect("view_transform_changed", $Render/BackgroundLayer/EmptyCanvasLayer, "_on_view_transform_changed") func _gui_input(event): tool_pool.run_most_prior(event, tool_context) # _gui_input() cannot receive released event so we do this here. func _input(event): if event is InputEventScreenTouch and !event.is_pressed(): tool_pool.run_most_prior(event, tool_context) func _on_SummerDay_scene_changed(new_scene): scene = new_scene canvas_state.update_fill_transform(scene) scene.connect("aspect_ratio_changed", self, "_on_scene_aspect_ratio_changed") $Render/Label.text = str(scene) + "\n" + str(scene.aspect_ratio) $Render/BackgroundLayer/EmptyCanvasLayer.update_size(scene) canvas_state.update_fill_transform(scene) func _on_Canvas_resized(): canvas_state.rect_size = rect_size canvas_state.update_fill_transform(scene) func _on_scene_aspect_ratio_changed(new_aspect_ratio): $Render/BackgroundLayer/EmptyCanvasLayer.update_size(scene) canvas_state.update_fill_transform(scene)