Project::OSiRiON - Git repositories
Project::OSiRiON
News . About . Screenshots . Downloads . Forum . Wiki . Tracker . Git
summaryrefslogtreecommitdiff
path: root/src/audio
diff options
context:
space:
mode:
authorStijn Buys <ingar@osirion.org>2013-11-17 15:17:04 +0000
committerStijn Buys <ingar@osirion.org>2013-11-17 15:17:04 +0000
commitc68a2899dc63850d77f79eaa65125f6d503fc83a (patch)
tree8fdb2d522736744c766ea2de30d38097b7644491 /src/audio
parent302f11ce816ffe4b51f48c42972bb58475bcca5d (diff)
Added support for explosion sounds,
updated list of attributions, updated starsystem roadmap.
Diffstat (limited to 'src/audio')
-rw-r--r--src/audio/audio.cc15
-rw-r--r--src/audio/audio.h3
2 files changed, 18 insertions, 0 deletions
diff --git a/src/audio/audio.cc b/src/audio/audio.cc
index 304174c..3f505c0 100644
--- a/src/audio/audio.cc
+++ b/src/audio/audio.cc
@@ -193,6 +193,21 @@ size_t loop(size_t source_index, size_t buffer_index, float pitch, float gain)
return buffer_index;
}
+size_t stop(size_t source_index)
+{
+ if (!audio_initialized)
+ return 0;
+
+ ALuint source = Sources::source(source_index);
+ ALint srcstate = 0;
+ alGetSourcei(source , AL_SOURCE_STATE , &srcstate);
+ if (srcstate == AL_PLAYING) {
+ alSourceStop(source);
+ }
+
+ return source_index;
+}
+
size_t loop(size_t source_index, const char *name, float pitch, float gain)
{
if (!audio_initialized)
diff --git a/src/audio/audio.h b/src/audio/audio.h
index bab3402..f95e872 100644
--- a/src/audio/audio.h
+++ b/src/audio/audio.h
@@ -54,6 +54,9 @@ size_t loop(size_t source_index, const char *name, float pitch = 1.0f, float gai
/// play a looping sound from a specified buffer on a specified source
size_t loop(size_t source_index, size_t buffer_index, float pitch, float gain);
+/// stop playback of a specific source
+size_t stop(size_t source_index);
+
/// update source parameters
void update_source(size_t source_index, math::Vector3f const & location, math::Vector3f const & velocity, float pitch = 1.0f, float gain = 1.0f);