Now also implemented rotation tool.

This commit is contained in:
Mono 2021-11-27 11:27:42 +01:00
parent 1e77a3868d
commit 831145dda8
5 changed files with 49 additions and 4 deletions

View File

@ -4,6 +4,7 @@ class_name SummerDayHandCanvasTool
func _init():
priority = 1
modifier_layer = 1
var hand_grabbed = false

View File

@ -0,0 +1,40 @@
extends SummerDayTool
class_name SummerDayRotationCanvasTool
var rotation_activated := false
var initial_transform: Transform2D
var initial_angle: float
func _init():
priority = 1
modifier_layer = 2
func _check_for_use(event: InputEvent, tool_context: SummerDayToolContext):
if event is InputEventMouseButton:
if event.button_index == BUTTON_LEFT:
if event.is_pressed() and event.shift and event.control:
initial_transform = tool_context.canvas_state.canvas_transform
var canvas_center = tool_context.canvas_state.rect_size * 0.5
initial_angle = event.position.angle_to_point(canvas_center)
rotation_activated = true
else:
rotation_activated = false
if event is InputEventMouseMotion:
return rotation_activated
return false
func _run(event: InputEvent, tool_context: SummerDayToolContext):
var canvas_center = tool_context.canvas_state.rect_size * 0.5
var canvas_transform = initial_transform
canvas_transform.origin -= canvas_center
var current_angle = event.position.angle_to_point(canvas_center)
var rotation_angle = current_angle - initial_angle
canvas_transform = canvas_transform.rotated(rotation_angle)
canvas_transform.origin += canvas_center
tool_context.canvas_state.canvas_transform = canvas_transform

View File

@ -9,6 +9,7 @@ var initial_mouse_position: Vector2
func _init():
priority = 1
modifier_layer = 1
func _check_for_use(event: InputEvent, tool_context: SummerDayToolContext):

View File

@ -7,6 +7,7 @@ func _init():
SummerDayFreeTransformCanvasTool.new(),
SummerDayHandCanvasTool.new(),
SummerDayZoomCanvasTool.new(),
SummerDayRotationCanvasTool.new(),
]
# Called every frame. 'delta' is the elapsed time since the previous frame.

View File

@ -79,6 +79,11 @@ _global_script_classes=[ {
"language": "GDScript",
"path": "res://addons/summer_day/utilities/math_helper.gd"
}, {
"base": "SummerDayTool",
"class": "SummerDayRotationCanvasTool",
"language": "GDScript",
"path": "res://addons/summer_day/tool/canvas/tools/general_use/rotation.gd"
}, {
"base": "Resource",
"class": "SummerDayScene",
"language": "GDScript",
@ -129,6 +134,7 @@ _global_script_class_icons={
"SummerDayHandCanvasTool": "",
"SummerDayMainScreen": "",
"SummerDayMathHelper": "",
"SummerDayRotationCanvasTool": "",
"SummerDayScene": "",
"SummerDayTimeline": "",
"SummerDayTool": "",
@ -148,10 +154,6 @@ config/icon="res://icon.png"
Util="res://addons/summer_day/utilities/math_helper.gd"
[editor_plugins]
enabled=PoolStringArray( "res://addons/summer_day/plugin.cfg" )
[gdnative]
singletons=[ "res://addons/godot-git-plugin/git_api.gdnlib" ]