From 0b0ae02ce2b8b35ff507b4fd15140e6ca32c37f5 Mon Sep 17 00:00:00 2001 From: Emmanouil Papadeas <35376950+OverloadedOrama@users.noreply.github.com> Date: Tue, 10 Dec 2024 02:58:40 +0200 Subject: [PATCH] Load audio files from the audio layer properties --- src/UI/Timeline/LayerProperties.gd | 21 +++++++++++++++++++++ src/UI/Timeline/LayerProperties.tscn | 25 +++++++++++++++++++++++-- 2 files changed, 44 insertions(+), 2 deletions(-) diff --git a/src/UI/Timeline/LayerProperties.gd b/src/UI/Timeline/LayerProperties.gd index 9057ecc6a..028213732 100644 --- a/src/UI/Timeline/LayerProperties.gd +++ b/src/UI/Timeline/LayerProperties.gd @@ -11,6 +11,11 @@ var layer_indices: PackedInt32Array @onready var play_at_frame_slider := $GridContainer/PlayAtFrameSlider as ValueSlider @onready var user_data_text_edit := $GridContainer/UserDataTextEdit as TextEdit @onready var tileset_option_button := $GridContainer/TilesetOptionButton as OptionButton +@onready var audio_file_dialog := $AudioFileDialog as FileDialog + + +func _ready() -> void: + audio_file_dialog.use_native_dialog = Global.use_native_file_dialogs func _on_visibility_changed() -> void: @@ -158,6 +163,10 @@ func _on_tileset_option_button_item_selected(index: int) -> void: project.undo_redo.commit_action() +func _on_audio_file_button_pressed() -> void: + audio_file_dialog.popup_centered() + + func _on_play_at_frame_slider_value_changed(value: float) -> void: if layer_indices.size() == 0: return @@ -165,3 +174,15 @@ func _on_play_at_frame_slider_value_changed(value: float) -> void: var layer := Global.current_project.layers[layer_index] if layer is AudioLayer: layer.playback_frame = value - 1 + + +func _on_audio_file_dialog_file_selected(path: String) -> void: + var audio_stream: AudioStream + if path.get_extension() == "mp3": + var file := FileAccess.open(path, FileAccess.READ) + audio_stream = AudioStreamMP3.new() + audio_stream.data = file.get_buffer(file.get_length()) + for layer_index in layer_indices: + var layer := Global.current_project.layers[layer_index] + if layer is AudioLayer: + layer.audio = audio_stream diff --git a/src/UI/Timeline/LayerProperties.tscn b/src/UI/Timeline/LayerProperties.tscn index f2b92fe32..2f3cb52fc 100644 --- a/src/UI/Timeline/LayerProperties.tscn +++ b/src/UI/Timeline/LayerProperties.tscn @@ -5,14 +5,15 @@ [node name="LayerProperties" type="AcceptDialog"] title = "Layer properties" -size = Vector2i(300, 235) +position = Vector2i(0, 36) +size = Vector2i(300, 270) script = ExtResource("1_54q1t") [node name="GridContainer" type="GridContainer" parent="."] offset_left = 8.0 offset_top = 8.0 offset_right = 292.0 -offset_bottom = 186.0 +offset_bottom = 221.0 columns = 2 [node name="NameLabel" type="Label" parent="GridContainer"] @@ -52,6 +53,15 @@ layout_mode = 2 size_flags_horizontal = 3 mouse_default_cursor_shape = 2 +[node name="AudioFileLabel" type="Label" parent="GridContainer" groups=["AudioLayers"]] +layout_mode = 2 +text = "Audio file:" + +[node name="AudioFileButton" type="Button" parent="GridContainer" groups=["AudioLayers"]] +layout_mode = 2 +mouse_default_cursor_shape = 2 +text = "Load file" + [node name="PlayAtFrameLabel" type="Label" parent="GridContainer" groups=["AudioLayers"]] layout_mode = 2 text = "Play at frame:" @@ -92,10 +102,21 @@ text = "Tileset:" layout_mode = 2 mouse_default_cursor_shape = 2 +[node name="AudioFileDialog" type="FileDialog" parent="."] +title = "Open a File" +size = Vector2i(870, 400) +always_on_top = true +ok_button_text = "Open" +file_mode = 0 +access = 2 +filters = PackedStringArray("*.mp3 ; MP3 Audio") + [connection signal="visibility_changed" from="." to="." method="_on_visibility_changed"] [connection signal="text_changed" from="GridContainer/NameLineEdit" to="." method="_on_name_line_edit_text_changed"] [connection signal="value_changed" from="GridContainer/OpacitySlider" to="." method="_on_opacity_slider_value_changed"] [connection signal="item_selected" from="GridContainer/BlendModeOptionButton" to="." method="_on_blend_mode_option_button_item_selected"] +[connection signal="pressed" from="GridContainer/AudioFileButton" to="." method="_on_audio_file_button_pressed"] [connection signal="value_changed" from="GridContainer/PlayAtFrameSlider" to="." method="_on_play_at_frame_slider_value_changed"] [connection signal="text_changed" from="GridContainer/UserDataTextEdit" to="." method="_on_user_data_text_edit_text_changed"] [connection signal="item_selected" from="GridContainer/TilesetOptionButton" to="." method="_on_tileset_option_button_item_selected"] +[connection signal="file_selected" from="AudioFileDialog" to="." method="_on_audio_file_dialog_file_selected"]