Skip to content

Commit fe2d647

Browse files
authored
Add support ambient/background sounds (#24)
1 parent 75e2e38 commit fe2d647

11 files changed

Lines changed: 384 additions & 193 deletions

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ Enable `SoundManager` in project plugins.
2525
## Documentation
2626

2727
- [Sound effects](docs/Sounds.md)
28+
- [Ambient sounds](docs/AmbientSounds.md)
2829
- [Music](docs/Music.md)
2930
- [C#](docs/CSharp.md)
3031

Sound Manager.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<Project Sdk="Godot.NET.Sdk/4.1.1">
1+
<Project Sdk="Godot.NET.Sdk/4.2.1">
22
<PropertyGroup>
33
<TargetFramework>net6.0</TargetFramework>
44
<EnableDynamicLoading>true</EnableDynamicLoading>

addons/sound_manager/SoundManager.cs

Lines changed: 192 additions & 127 deletions
Original file line numberDiff line numberDiff line change
@@ -3,188 +3,253 @@
33

44
namespace NathanHoad
55
{
6-
public partial class SoundManager : Node
7-
{
8-
private static Node instance;
9-
public static Node Instance
10-
{
11-
get
12-
{
13-
if (instance == null)
14-
{
15-
instance = (Node)Engine.GetSingleton("SoundManager");
16-
}
17-
return instance;
18-
}
19-
}
6+
public partial class SoundManager : Node
7+
{
8+
private static Node instance;
9+
public static Node Instance
10+
{
11+
get
12+
{
13+
if (instance == null)
14+
{
15+
instance = (Node)Engine.GetSingleton("SoundManager");
16+
}
17+
return instance;
18+
}
19+
}
2020

2121

22-
#region Sounds
22+
public static ProcessModeEnum SoundProcessMode
23+
{
24+
get => ((Node)Instance.Get("sound_effects")).ProcessMode;
25+
set
26+
{
27+
((Node)Instance.Get("sound_effects")).ProcessMode = value;
28+
}
29+
}
30+
31+
public static ProcessModeEnum UISoundProcessMode
32+
{
33+
get => ((Node)Instance.Get("ui_sound_effects")).ProcessMode;
34+
set
35+
{
36+
((Node)Instance.Get("ui_sound_effects")).ProcessMode = value;
37+
}
38+
}
2339

24-
public static float GetSoundVolume()
25-
{
26-
return (float)Instance.Call("get_sound_volume");
27-
}
40+
public static ProcessModeEnum AmbientSoundProcessMode
41+
{
42+
get => ((Node)Instance.Get("ambient_sounds")).ProcessMode;
43+
set
44+
{
45+
((Node)Instance.Get("ambient_sounds")).ProcessMode = value;
46+
}
47+
}
2848

49+
public static ProcessModeEnum MusicProcessMode
50+
{
51+
get => ((Node)Instance.Get("music")).ProcessMode;
52+
set
53+
{
54+
((Node)Instance.Get("music")).ProcessMode = value;
55+
}
56+
}
2957

30-
public static float GetUISoundVolume()
31-
{
32-
return (float)Instance.Call("get_ui_sound_volume");
33-
}
3458

59+
#region Sounds
3560

36-
public static void SetSoundVolume(float volume)
37-
{
38-
Instance.Call("set_sound_volume", volume);
39-
}
61+
public static float GetSoundVolume()
62+
{
63+
return (float)Instance.Call("get_sound_volume");
64+
}
4065

4166

42-
public static AudioStreamPlayer PlaySound(AudioStream resource, string overrideBus = "")
43-
{
44-
return (AudioStreamPlayer)Instance.Call("play_sound", resource, overrideBus);
45-
}
67+
public static float GetUISoundVolume()
68+
{
69+
return (float)Instance.Call("get_ui_sound_volume");
70+
}
4671

4772

48-
public static AudioStreamPlayer PlaySoundWithPitch(AudioStream resource, float pitch, string overrideBus = "")
49-
{
50-
return (AudioStreamPlayer)Instance.Call("play_sound_with_pitch", resource, pitch, overrideBus);
51-
}
73+
public static void SetSoundVolume(float volume)
74+
{
75+
Instance.Call("set_sound_volume", volume);
76+
}
5277

5378

54-
public static void StopSound(AudioStream resource)
55-
{
56-
Instance.Call("stop_sound", resource);
57-
}
79+
public static AudioStreamPlayer PlaySound(AudioStream resource, string overrideBus = "")
80+
{
81+
return (AudioStreamPlayer)Instance.Call("play_sound", resource, overrideBus);
82+
}
5883

5984

60-
public static AudioStreamPlayer PlayUISound(AudioStream resource, string overrideBus = "")
61-
{
62-
return (AudioStreamPlayer)Instance.Call("play_ui_sound", resource, overrideBus);
63-
}
85+
public static AudioStreamPlayer PlaySoundWithPitch(AudioStream resource, float pitch, string overrideBus = "")
86+
{
87+
return (AudioStreamPlayer)Instance.Call("play_sound_with_pitch", resource, pitch, overrideBus);
88+
}
6489

6590

66-
public static AudioStreamPlayer PlayUISoundWithPitch(AudioStream resource, float pitch, string overrideBus = "")
67-
{
68-
return (AudioStreamPlayer)Instance.Call("play_ui_sound_with_pitch", resource, pitch, overrideBus);
69-
}
91+
public static void StopSound(AudioStream resource)
92+
{
93+
Instance.Call("stop_sound", resource);
94+
}
7095

7196

72-
public static void StopSound(AudioStream resource)
73-
{
74-
Instance.Call("stop_ui_sound", resource);
75-
}
97+
public static AudioStreamPlayer PlayUISound(AudioStream resource, string overrideBus = "")
98+
{
99+
return (AudioStreamPlayer)Instance.Call("play_ui_sound", resource, overrideBus);
100+
}
76101

77102

78-
public static void SetDefaultSoundBus(string bus)
79-
{
80-
Instance.Call("set_default_sound_bus", bus);
81-
}
103+
public static AudioStreamPlayer PlayUISoundWithPitch(AudioStream resource, float pitch, string overrideBus = "")
104+
{
105+
return (AudioStreamPlayer)Instance.Call("play_ui_sound_with_pitch", resource, pitch, overrideBus);
106+
}
82107

83108

84-
public static void SetDefaultUISoundBus(string bus)
85-
{
86-
Instance.Call("set_default_ui_sound_bus", bus);
87-
}
109+
public static void StopUISound(AudioStream resource)
110+
{
111+
Instance.Call("stop_ui_sound", resource);
112+
}
88113

89-
#endregion
90114

115+
public static void SetDefaultSoundBus(string bus)
116+
{
117+
Instance.Call("set_default_sound_bus", bus);
118+
}
91119

92-
#region Music
93120

94-
public static float GetMusicVolume()
95-
{
96-
return (float)Instance.Call("get_music_volume");
97-
}
121+
public static void SetDefaultUISoundBus(string bus)
122+
{
123+
Instance.Call("set_default_ui_sound_bus", bus);
124+
}
98125

126+
#endregion
99127

100-
public static void SetMusicVolume(float volume)
101-
{
102-
Instance.Call("set_music_volume", volume);
103-
}
104128

129+
#region Ambient sounds
105130

106-
public static AudioStreamPlayer PlayMusic(AudioStream resource, float crossFadeDuration = 0.0f, string overrideBus = "")
107-
{
108-
return (AudioStreamPlayer)Instance.Call("play_music", resource, crossFadeDuration, overrideBus);
109-
}
131+
public static AudioStreamPlayer PlayAmbientSound(AudioStream resource, float fadeInDuration, string overrideBus = "")
132+
{
133+
return (AudioStreamPlayer)Instance.Call("play_ambient_sound", resource, fadeInDuration);
134+
}
110135

111136

112-
public static AudioStreamPlayer PlayMusicFromPosition(AudioStream resource, float position, float crossFadeDuration = 0.0f, string overrideBus = "")
113-
{
114-
return (AudioStreamPlayer)Instance.Call("play_music_from_position", resource, position, crossFadeDuration, overrideBus);
115-
}
137+
public static void StopAmbientSound(AudioStream resource, float fadeOutDuration)
138+
{
139+
Instance.Call("stop_ambient_sound", resource, fadeOutDuration);
140+
}
116141

117142

118-
public static AudioStreamPlayer PlayMusicAtVolume(AudioStream resource, float volume, float crossFadeDuration = 0.0f, string overrideBus = "")
119-
{
120-
return (AudioStreamPlayer)Instance.Call("play_music_at_volume", resource, volume, crossFadeDuration, overrideBus);
121-
}
143+
public static void StopAllAmbientSounds(float fadeOutDuration)
144+
{
145+
Instance.Call("stop_all_ambient_sounds", fadeOutDuration);
146+
}
122147

123-
public static AudioStreamPlayer PlayMusicFromPositionAtVolume(AudioStream resource, float position, float volume, float crossFadeDuration = 0.0f, string overrideBus = "")
124-
{
125-
return (AudioStreamPlayer)Instance.Call("play_music_from_position_at_volume", resource, position, volume, crossFadeDuration, overrideBus);
126-
}
127148

149+
public static void SetDefaultAmbientSoundBus(string bus)
150+
{
151+
Instance.Call("set_default_ambient_sound_bus", bus);
152+
}
128153

129-
public static Array<string> GetMusicTrackHistory()
130-
{
131-
return (Array<string>)Instance.Call("get_music_track_history");
132-
}
154+
#endregion
133155

134156

135-
public static string GetLastPlayedMusicTrack()
136-
{
137-
return (string)Instance.Call("get_last_played_music_track");
138-
}
157+
#region Music
139158

159+
public static float GetMusicVolume()
160+
{
161+
return (float)Instance.Call("get_music_volume");
162+
}
140163

141-
public static bool IsMusicPlaying(AudioStream resource = null)
142-
{
143-
return (bool)Instance.Call("is_music_playing", resource);
144-
}
145164

165+
public static void SetMusicVolume(float volume)
166+
{
167+
Instance.Call("set_music_volume", volume);
168+
}
146169

147-
public static bool IsMusicTrackPlaying(string resource_path)
148-
{
149-
return (bool)Instance.Call("is_music_track_playing", resource_path);
150-
}
151170

171+
public static AudioStreamPlayer PlayMusic(AudioStream resource, float crossFadeDuration = 0.0f, string overrideBus = "")
172+
{
173+
return (AudioStreamPlayer)Instance.Call("play_music", resource, crossFadeDuration, overrideBus);
174+
}
152175

153-
public static Array<AudioStream> GetCurrentlyPlayingMusic()
154-
{
155-
return (Array<AudioStream>)Instance.Call("get_currently_playing_music");
156-
}
157176

177+
public static AudioStreamPlayer PlayMusicFromPosition(AudioStream resource, float position, float crossFadeDuration = 0.0f, string overrideBus = "")
178+
{
179+
return (AudioStreamPlayer)Instance.Call("play_music_from_position", resource, position, crossFadeDuration, overrideBus);
180+
}
158181

159-
public static Array<string> GetCurrentlyPlayingTracks()
160-
{
161-
return (Array<string>)Instance.Call("get_currently_playing_tracks");
162-
}
163182

183+
public static AudioStreamPlayer PlayMusicAtVolume(AudioStream resource, float volume, float crossFadeDuration = 0.0f, string overrideBus = "")
184+
{
185+
return (AudioStreamPlayer)Instance.Call("play_music_at_volume", resource, volume, crossFadeDuration, overrideBus);
186+
}
164187

165-
public static void PauseMusic(AudioStream resource = null)
166-
{
167-
Instance.Call("pause_music", resource);
168-
}
188+
public static AudioStreamPlayer PlayMusicFromPositionAtVolume(AudioStream resource, float position, float volume, float crossFadeDuration = 0.0f, string overrideBus = "")
189+
{
190+
return (AudioStreamPlayer)Instance.Call("play_music_from_position_at_volume", resource, position, volume, crossFadeDuration, overrideBus);
191+
}
169192

170193

171-
public static void ResumeMusic(AudioStream resource = null)
172-
{
173-
Instance.Call("resume_music", resource);
174-
}
194+
public static Array<string> GetMusicTrackHistory()
195+
{
196+
return (Array<string>)Instance.Call("get_music_track_history");
197+
}
175198

176199

177-
public static void StopMusic(float fadeOutDuration = 0.0f)
178-
{
179-
Instance.Call("stop_music", fadeOutDuration);
180-
}
200+
public static string GetLastPlayedMusicTrack()
201+
{
202+
return (string)Instance.Call("get_last_played_music_track");
203+
}
181204

182205

183-
public static void SetDefaultMusicBus(string bus)
184-
{
185-
Instance.Call("set_default_music_bus", bus);
186-
}
206+
public static bool IsMusicPlaying(AudioStream resource = null)
207+
{
208+
return (bool)Instance.Call("is_music_playing", resource);
209+
}
187210

188-
#endregion
189-
}
211+
212+
public static bool IsMusicTrackPlaying(string resource_path)
213+
{
214+
return (bool)Instance.Call("is_music_track_playing", resource_path);
215+
}
216+
217+
218+
public static Array<AudioStream> GetCurrentlyPlayingMusic()
219+
{
220+
return (Array<AudioStream>)Instance.Call("get_currently_playing_music");
221+
}
222+
223+
224+
public static Array<string> GetCurrentlyPlayingTracks()
225+
{
226+
return (Array<string>)Instance.Call("get_currently_playing_tracks");
227+
}
228+
229+
230+
public static void PauseMusic(AudioStream resource = null)
231+
{
232+
Instance.Call("pause_music", resource);
233+
}
234+
235+
236+
public static void ResumeMusic(AudioStream resource = null)
237+
{
238+
Instance.Call("resume_music", resource);
239+
}
240+
241+
242+
public static void StopMusic(float fadeOutDuration = 0.0f)
243+
{
244+
Instance.Call("stop_music", fadeOutDuration);
245+
}
246+
247+
248+
public static void SetDefaultMusicBus(string bus)
249+
{
250+
Instance.Call("set_default_music_bus", bus);
251+
}
252+
253+
#endregion
254+
}
190255
}

0 commit comments

Comments
 (0)