Now also implemented rotation tool.
This commit is contained in:
parent
1e77a3868d
commit
831145dda8
|
@ -4,6 +4,7 @@ class_name SummerDayHandCanvasTool
|
|||
|
||||
func _init():
|
||||
priority = 1
|
||||
modifier_layer = 1
|
||||
|
||||
|
||||
var hand_grabbed = false
|
||||
|
|
|
@ -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
|
|
@ -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):
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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" ]
|
||||
|
|
Loading…
Reference in New Issue
Block a user