Finalize audio clip movement, fix being able to drag audio clips out of bounds.

This commit is contained in:
2025-02-16 22:12:22 +01:00
parent cac8c85dec
commit 7301a65acd
3 changed files with 33 additions and 12 deletions

View File

@@ -15,6 +15,9 @@ var timeline: Timeline
var dragging: bool
var selected: bool
var accumulated_movement := 0.0
var was_snapping := false
func _ready():
timeline = get_parent()
%ClipName.text = clip_name
@@ -50,10 +53,7 @@ func _input(event):
if selected and dragging:
if event is InputEventMouseMotion:
var movement = event.relative / timeline.get_pixels_per_unit() * timeline.time_interval
var mouse_position_timeline = (timeline.get_local_mouse_position().x / timeline.get_pixels_per_unit()) * timeline.time_interval
var mouse_position_snapped = snapped(mouse_position_timeline, timeline.time_interval)
var movement_time = event.relative.x / timeline.get_pixels_per_unit() * timeline.time_interval
var track = timeline.get_track_idx_by_y(event.position.y)
@@ -61,12 +61,28 @@ func _input(event):
track_idx = track
if event.is_command_or_control_pressed():
var clip_length = end_time - start_time
start_time = mouse_position_snapped
end_time = start_time + clip_length
if not was_snapping:
var clip_length = end_time - start_time
start_time = snapped(start_time, timeline.time_interval)
end_time = start_time + clip_length
accumulated_movement = 0
was_snapping = true
accumulated_movement += movement_time
var snapped_movement = snapped(accumulated_movement, timeline.time_interval)
if snapped_movement != 0:
if start_time + snapped_movement < 0:
return
start_time += snapped_movement
end_time += snapped_movement
accumulated_movement -= snapped_movement
else:
start_time += movement.x
end_time += movement.x
if start_time + movement_time < 0:
return
start_time += movement_time
end_time += movement_time
was_snapping = false
timeline.queue_sort()
pass