WIP: clip drag and drop

This commit is contained in:
2025-02-16 19:42:58 +01:00
parent 10feabb9bf
commit cac8c85dec
9 changed files with 77 additions and 24 deletions

View File

@@ -1,4 +1,3 @@
@tool
class_name Timeline
extends Container
@@ -19,6 +18,8 @@ extends Container
@export var min_zoom: float = 0.1
@export var audio_clip_scene: PackedScene
func format_time_ms_hours(ms: float) -> String:
var total_seconds = ms / 1000
var hours = int(total_seconds / 3600)
@@ -130,3 +131,27 @@ func _gui_input(event):
zoom = max(min_zoom, zoom)
time_offset = max(0.0, time_offset)
func local_x_to_timeline(x: float) -> float:
return (x / get_pixels_per_unit()) * time_interval + time_offset
func clip_dropped(at_position: Vector2, clip_name: String, clip_start_time: float, clip_end_time: float):
var local_position = at_position - global_position
var timeline_position = local_x_to_timeline(local_position.x)
print(timeline_position)
print(time_offset)
var track_idx = get_track_idx_by_y(at_position.y)
add_audio_clip(clip_name, track_idx, timeline_position + clip_start_time, timeline_position + clip_end_time)
pass
func add_audio_clip(clip_name: String, track_idx: int, clip_start_time: float, clip_end_time: float):
var audio_clip = audio_clip_scene.instantiate() as AudioClip
audio_clip.clip_name = clip_name
audio_clip.track_idx = track_idx
audio_clip.start_time = clip_start_time
audio_clip.end_time = clip_end_time
add_child(audio_clip)
queue_redraw()
pass