Implemented hand and zoom tools.
This commit is contained in:
parent
e882a33322
commit
1e77a3868d
|
@ -4,4 +4,4 @@
|
|||
|
||||
[resource]
|
||||
script = ExtResource( 1 )
|
||||
aspect_ratio = Vector2( 16, 9 )
|
||||
aspect_ratio = Vector2( 13.134, 9 )
|
||||
|
|
|
@ -34,7 +34,7 @@ func _enter_tree():
|
|||
add_control_to_bottom_panel(timeline_instance, "SummerDay Timeline")
|
||||
|
||||
add_custom_type("SummerDayScene", "Resource",
|
||||
load("res://addons/summer_day/data_structure/scene/scene.gd"),
|
||||
load("res://addons/summer_day/data/scene/scene.gd"),
|
||||
get_editor_interface().get_base_control().get_icon("Animation", "EditorIcons"))
|
||||
|
||||
add_custom_type("SummerDayDisplay", "Control",
|
||||
|
|
|
@ -6,9 +6,21 @@ func _init():
|
|||
priority = 1
|
||||
|
||||
|
||||
var hand_grabbed = false
|
||||
|
||||
|
||||
func _check_for_use(event: InputEvent, tool_context: SummerDayToolContext):
|
||||
pass
|
||||
if event is InputEventMouseButton:
|
||||
if event.button_index == BUTTON_LEFT:
|
||||
hand_grabbed = event.is_pressed() and event.control
|
||||
if event.button_index == BUTTON_MIDDLE:
|
||||
hand_grabbed = event.is_pressed()
|
||||
|
||||
if event is InputEventMouseMotion:
|
||||
return hand_grabbed
|
||||
|
||||
return false
|
||||
|
||||
|
||||
func _run(event: InputEvent, tool_context: SummerDayToolContext):
|
||||
pass
|
||||
tool_context.canvas_state.canvas_transform.origin += event.relative
|
||||
|
|
|
@ -0,0 +1,55 @@
|
|||
extends SummerDayTool
|
||||
class_name SummerDayZoomCanvasTool
|
||||
|
||||
|
||||
var zoom_activated := false
|
||||
var initial_transform: Transform2D
|
||||
var initial_mouse_position: Vector2
|
||||
|
||||
|
||||
func _init():
|
||||
priority = 1
|
||||
|
||||
|
||||
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:
|
||||
initial_transform = tool_context.canvas_state.canvas_transform
|
||||
initial_mouse_position = event.position
|
||||
zoom_activated = true
|
||||
else:
|
||||
zoom_activated = false
|
||||
elif event.factor != 0.0:
|
||||
initial_transform = tool_context.canvas_state.canvas_transform
|
||||
return true
|
||||
|
||||
if event is InputEventMouseMotion:
|
||||
return zoom_activated
|
||||
|
||||
return false
|
||||
|
||||
|
||||
func _run(event: InputEvent, tool_context: SummerDayToolContext):
|
||||
var zoom_point
|
||||
var zoom_strength
|
||||
|
||||
if event is InputEventMouseButton:
|
||||
print(event.button_index)
|
||||
print(event.button_mask)
|
||||
print(event.factor)
|
||||
print("\n")
|
||||
zoom_point = event.position
|
||||
zoom_strength = event.factor
|
||||
if event.button_index == BUTTON_WHEEL_DOWN:
|
||||
zoom_strength = -event.factor
|
||||
if event is InputEventMouseMotion:
|
||||
zoom_point = initial_mouse_position
|
||||
zoom_strength = (event.position.x - initial_mouse_position.x) * 0.5
|
||||
|
||||
var canvas_transform = initial_transform
|
||||
canvas_transform.origin -= zoom_point
|
||||
var scale = pow(1.03, zoom_strength)
|
||||
canvas_transform = canvas_transform.scaled(Vector2(scale, scale))
|
||||
canvas_transform.origin += zoom_point
|
||||
tool_context.canvas_state.canvas_transform = canvas_transform
|
|
@ -5,7 +5,8 @@ class_name SummerDayCanvasToolPool
|
|||
func _init():
|
||||
persistent_tool_pool = [
|
||||
SummerDayFreeTransformCanvasTool.new(),
|
||||
SummerDayHandCanvasTool.new()
|
||||
SummerDayHandCanvasTool.new(),
|
||||
SummerDayZoomCanvasTool.new(),
|
||||
]
|
||||
|
||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
|
|
|
@ -104,6 +104,11 @@ _global_script_classes=[ {
|
|||
"language": "GDScript",
|
||||
"path": "res://addons/summer_day/tool/tool_system/tool_pool.gd"
|
||||
}, {
|
||||
"base": "SummerDayTool",
|
||||
"class": "SummerDayZoomCanvasTool",
|
||||
"language": "GDScript",
|
||||
"path": "res://addons/summer_day/tool/canvas/tools/general_use/zoom.gd"
|
||||
}, {
|
||||
"base": "OH",
|
||||
"class": "VeryWorse",
|
||||
"language": "GDScript",
|
||||
|
@ -129,6 +134,7 @@ _global_script_class_icons={
|
|||
"SummerDayTool": "",
|
||||
"SummerDayToolContext": "",
|
||||
"SummerDayToolPool": "",
|
||||
"SummerDayZoomCanvasTool": "",
|
||||
"VeryWorse": ""
|
||||
}
|
||||
|
||||
|
@ -142,6 +148,10 @@ 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