From f910daab21edc6a188bff701fe16e24bb2697c70 Mon Sep 17 00:00:00 2001 From: teatov Date: Mon, 7 Oct 2024 03:07:29 +1000 Subject: [PATCH] add ambient sounds --- .gitignore | 1 + assets/audio/ambient/ambient_1.ogg | 3 ++ assets/audio/ambient/ambient_1.ogg.import | 19 +++++++++++++ assets/audio/ambient/ambient_2.ogg | 3 ++ assets/audio/ambient/ambient_2.ogg.import | 19 +++++++++++++ assets/audio/ambient/ambient_3.ogg | 3 ++ assets/audio/ambient/ambient_3.ogg.import | 19 +++++++++++++ default_bus_layout.tres | 14 ++++++++++ scenes/test_world.tscn | 8 +++++- scripts/ambient_audio.gd | 34 +++++++++++++++++++++++ scripts/main_camera.gd | 9 ++++-- 11 files changed, 128 insertions(+), 4 deletions(-) create mode 100644 assets/audio/ambient/ambient_1.ogg create mode 100644 assets/audio/ambient/ambient_1.ogg.import create mode 100644 assets/audio/ambient/ambient_2.ogg create mode 100644 assets/audio/ambient/ambient_2.ogg.import create mode 100644 assets/audio/ambient/ambient_3.ogg create mode 100644 assets/audio/ambient/ambient_3.ogg.import create mode 100644 default_bus_layout.tres create mode 100644 scripts/ambient_audio.gd diff --git a/.gitignore b/.gitignore index a770906..6de166a 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,4 @@ !.gdignore *.tmp +*.*~ diff --git a/assets/audio/ambient/ambient_1.ogg b/assets/audio/ambient/ambient_1.ogg new file mode 100644 index 0000000..7b422b8 --- /dev/null +++ b/assets/audio/ambient/ambient_1.ogg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9e932cca790d501a2e1665e0ac94ed8358a56426037cb146d236e4d7ebf2a543 +size 1425092 diff --git a/assets/audio/ambient/ambient_1.ogg.import b/assets/audio/ambient/ambient_1.ogg.import new file mode 100644 index 0000000..745a205 --- /dev/null +++ b/assets/audio/ambient/ambient_1.ogg.import @@ -0,0 +1,19 @@ +[remap] + +importer="oggvorbisstr" +type="AudioStreamOggVorbis" +uid="uid://xcflll7pg3ou" +path="res://.godot/imported/ambient_1.ogg-9dce9b12b9b553370aa400c3c144cfe3.oggvorbisstr" + +[deps] + +source_file="res://assets/audio/ambient/ambient_1.ogg" +dest_files=["res://.godot/imported/ambient_1.ogg-9dce9b12b9b553370aa400c3c144cfe3.oggvorbisstr"] + +[params] + +loop=true +loop_offset=0.0 +bpm=0.0 +beat_count=0 +bar_beats=4 diff --git a/assets/audio/ambient/ambient_2.ogg b/assets/audio/ambient/ambient_2.ogg new file mode 100644 index 0000000..d9bcbb6 --- /dev/null +++ b/assets/audio/ambient/ambient_2.ogg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:05654ea7a7993a371794724344bc9b861f42c041e16eff94fcc437a73a555ef1 +size 706875 diff --git a/assets/audio/ambient/ambient_2.ogg.import b/assets/audio/ambient/ambient_2.ogg.import new file mode 100644 index 0000000..b32274f --- /dev/null +++ b/assets/audio/ambient/ambient_2.ogg.import @@ -0,0 +1,19 @@ +[remap] + +importer="oggvorbisstr" +type="AudioStreamOggVorbis" +uid="uid://c00xm63xawjah" +path="res://.godot/imported/ambient_2.ogg-9fd262e07a9da4fd8af8e1e718d5f2a2.oggvorbisstr" + +[deps] + +source_file="res://assets/audio/ambient/ambient_2.ogg" +dest_files=["res://.godot/imported/ambient_2.ogg-9fd262e07a9da4fd8af8e1e718d5f2a2.oggvorbisstr"] + +[params] + +loop=true +loop_offset=0.0 +bpm=0.0 +beat_count=0 +bar_beats=4 diff --git a/assets/audio/ambient/ambient_3.ogg b/assets/audio/ambient/ambient_3.ogg new file mode 100644 index 0000000..708181b --- /dev/null +++ b/assets/audio/ambient/ambient_3.ogg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:251b652bd05a215ab3d632aaa4491d318b4ae211c118a379c211d40c1d33d532 +size 928892 diff --git a/assets/audio/ambient/ambient_3.ogg.import b/assets/audio/ambient/ambient_3.ogg.import new file mode 100644 index 0000000..035455c --- /dev/null +++ b/assets/audio/ambient/ambient_3.ogg.import @@ -0,0 +1,19 @@ +[remap] + +importer="oggvorbisstr" +type="AudioStreamOggVorbis" +uid="uid://bk3pj7hspvmiy" +path="res://.godot/imported/ambient_3.ogg-3c3ea051c9a5d56729a6b7174c8100c9.oggvorbisstr" + +[deps] + +source_file="res://assets/audio/ambient/ambient_3.ogg" +dest_files=["res://.godot/imported/ambient_3.ogg-3c3ea051c9a5d56729a6b7174c8100c9.oggvorbisstr"] + +[params] + +loop=true +loop_offset=0.0 +bpm=0.0 +beat_count=0 +bar_beats=4 diff --git a/default_bus_layout.tres b/default_bus_layout.tres new file mode 100644 index 0000000..765c984 --- /dev/null +++ b/default_bus_layout.tres @@ -0,0 +1,14 @@ +[gd_resource type="AudioBusLayout" load_steps=2 format=3 uid="uid://cunpi1eovxtlu"] + +[sub_resource type="AudioEffectHighPassFilter" id="AudioEffectHighPassFilter_dfyge"] +resource_name = "HighPassFilter" + +[resource] +bus/1/name = &"ambient" +bus/1/solo = false +bus/1/mute = false +bus/1/bypass_fx = false +bus/1/volume_db = 0.0 +bus/1/send = &"Master" +bus/1/effect/0/effect = SubResource("AudioEffectHighPassFilter_dfyge") +bus/1/effect/0/enabled = true diff --git a/scenes/test_world.tscn b/scenes/test_world.tscn index ca511e8..3b7d66b 100644 --- a/scenes/test_world.tscn +++ b/scenes/test_world.tscn @@ -1,9 +1,10 @@ -[gd_scene load_steps=15 format=3 uid="uid://ceru75se7ifkb"] +[gd_scene load_steps=16 format=3 uid="uid://ceru75se7ifkb"] [ext_resource type="Script" path="res://scripts/main_camera.gd" id="1_gnxhh"] [ext_resource type="PackedScene" uid="uid://d4c6ujs1ra1ob" path="res://scenes/units/aphid.tscn" id="3_eh22j"] [ext_resource type="PackedScene" uid="uid://c70rhvk2okkcu" path="res://scenes/ui/buy_ants.tscn" id="4_irvxk"] [ext_resource type="PackedScene" uid="uid://davys5ol18oyo" path="res://scenes/ui/pause_menu.tscn" id="5_ljrsn"] +[ext_resource type="Script" path="res://scripts/ambient_audio.gd" id="7_413eh"] [ext_resource type="PackedScene" uid="uid://clftjlaotf2g2" path="res://scenes/structures/anthill.tscn" id="7_f30w3"] [ext_resource type="PackedScene" uid="uid://d8ut24fit87x" path="res://scenes/ui/anthill_info.tscn" id="8_ohyy4"] @@ -107,3 +108,8 @@ transform = Transform3D(1, 0, 0, 0, 0.819152, 0.573576, 0, -0.573576, 0.819152, current = true far = 200.0 script = ExtResource("1_gnxhh") + +[node name="AmbientAudio" type="AudioStreamPlayer" parent="."] +process_mode = 3 +bus = &"ambient" +script = ExtResource("7_413eh") diff --git a/scripts/ambient_audio.gd b/scripts/ambient_audio.gd new file mode 100644 index 0000000..3a88cbf --- /dev/null +++ b/scripts/ambient_audio.gd @@ -0,0 +1,34 @@ +extends AudioStreamPlayer + +const ZOOMED_IN_CUTOFF = 10000 +const ZOOMED_OUT_CUTOFF = 10 + +var audio_1 := preload("res://assets/audio/ambient/ambient_1.ogg") +var audio_2 := preload("res://assets/audio/ambient/ambient_2.ogg") +var audio_3 := preload("res://assets/audio/ambient/ambient_3.ogg") + +var streams: Array[AudioStream] = [audio_1, audio_2, audio_3] +var filter: AudioEffectHighPassFilter + +@onready var main_camera: MainCamera = $/root/World/MainCamera + + +func _ready() -> void: + assert(main_camera != null, "main_camera missing!") + + var bus_idx := AudioServer.get_bus_index(bus) + for effect_idx in AudioServer.get_bus_effect_count(bus_idx): + var effect := AudioServer.get_bus_effect(bus_idx, effect_idx) + if effect is AudioEffectHighPassFilter: + filter = effect + + stream = streams.pick_random() + play() + + +func _process(_delta: float) -> void: + filter.cutoff_hz = lerp( + ZOOMED_IN_CUTOFF, + ZOOMED_OUT_CUTOFF, + main_camera.zoom_value, + ) diff --git a/scripts/main_camera.gd b/scripts/main_camera.gd index 6c8439a..6b099c4 100644 --- a/scripts/main_camera.gd +++ b/scripts/main_camera.gd @@ -1,4 +1,5 @@ extends Camera3D +class_name MainCamera enum CameraState { FREE, @@ -39,6 +40,8 @@ var state: CameraState = CameraState.FREE var window_out_of_focus: bool = false +@onready var anthill: Anthill = $/root/World/Structures/Anthill + func _process(delta: float) -> void: _handle_heading_to(delta) @@ -71,7 +74,7 @@ func _input(event: InputEvent) -> void: zoom_raw = clamp(zoom_raw, 0, 1) if event.is_action_pressed("reset_camera"): - head_to(Vector3.ZERO) + head_to(anthill.global_position) func _notification(what: int) -> void: @@ -93,8 +96,8 @@ func head_to(to: Vector3, zoom: float = ZOOM_VALUE_DEFAULT) -> void: func _handle_movement(delta: float) -> void: if ( - window_out_of_focus - or state != CameraState.FREE + window_out_of_focus + or state != CameraState.FREE or CursorManager.disable_confinement or SelectionManager.selecting ):