aboutsummaryrefslogtreecommitdiff
path: root/src/crepe/facade
diff options
context:
space:
mode:
authorLoek Le Blansch <loek@pipeframe.xyz>2024-11-29 17:30:45 +0100
committerLoek Le Blansch <loek@pipeframe.xyz>2024-11-29 17:30:45 +0100
commit693355f55193cb2ea4c29616073227e37665afc1 (patch)
tree37d2bd3e916b909fbac58ae836e8001166edf384 /src/crepe/facade
parentc59d460f12e1393e0ddbaaa1c6f5522eb12f8ff9 (diff)
more audio system WIP
Diffstat (limited to 'src/crepe/facade')
-rw-r--r--src/crepe/facade/Sound.cpp64
-rw-r--r--src/crepe/facade/Sound.h66
-rw-r--r--src/crepe/facade/SoundContext.h3
3 files changed, 43 insertions, 90 deletions
diff --git a/src/crepe/facade/Sound.cpp b/src/crepe/facade/Sound.cpp
index 52496af..0df1f48 100644
--- a/src/crepe/facade/Sound.cpp
+++ b/src/crepe/facade/Sound.cpp
@@ -13,36 +13,36 @@ Sound::Sound(const Asset & src) : Resource(src) {
}
Sound::~Sound() { dbg_trace(); }
-void Sound::play(SoundContext & ctx) {
- if (ctx.engine.getPause(this->handle)) {
- // resume if paused
- ctx.engine.setPause(this->handle, false);
- } else {
- // or start new sound
- this->handle = ctx.engine.play(this->sample, this->volume);
- ctx.engine.setLooping(this->handle, this->looping);
- }
-}
-
-void Sound::pause(SoundContext & ctx) {
- if (ctx.engine.getPause(this->handle)) return;
- ctx.engine.setPause(this->handle, true);
-}
-
-void Sound::rewind(SoundContext & ctx) {
- if (!ctx.engine.isValidVoiceHandle(this->handle)) return;
- ctx.engine.seek(this->handle, 0);
-}
-
-void Sound::set_volume(SoundContext & ctx, float volume) {
- this->volume = volume;
- if (!ctx.engine.isValidVoiceHandle(this->handle)) return;
- ctx.engine.setVolume(this->handle, this->volume);
-}
-
-void Sound::set_looping(SoundContext & ctx, bool looping) {
- this->looping = looping;
- if (!ctx.engine.isValidVoiceHandle(this->handle)) return;
- ctx.engine.setLooping(this->handle, this->looping);
-}
+// void Sound::play(SoundContext & ctx) {
+// if (ctx.engine.getPause(this->handle)) {
+// // resume if paused
+// ctx.engine.setPause(this->handle, false);
+// } else {
+// // or start new sound
+// this->handle = ctx.engine.play(this->sample, this->volume);
+// ctx.engine.setLooping(this->handle, this->looping);
+// }
+// }
+//
+// void Sound::pause(SoundContext & ctx) {
+// if (ctx.engine.getPause(this->handle)) return;
+// ctx.engine.setPause(this->handle, true);
+// }
+//
+// void Sound::rewind(SoundContext & ctx) {
+// if (!ctx.engine.isValidVoiceHandle(this->handle)) return;
+// ctx.engine.seek(this->handle, 0);
+// }
+//
+// void Sound::set_volume(SoundContext & ctx, float volume) {
+// this->volume = volume;
+// if (!ctx.engine.isValidVoiceHandle(this->handle)) return;
+// ctx.engine.setVolume(this->handle, this->volume);
+// }
+//
+// void Sound::set_looping(SoundContext & ctx, bool looping) {
+// this->looping = looping;
+// if (!ctx.engine.isValidVoiceHandle(this->handle)) return;
+// ctx.engine.setLooping(this->handle, this->looping);
+// }
diff --git a/src/crepe/facade/Sound.h b/src/crepe/facade/Sound.h
index f33ee58..10d7c3c 100644
--- a/src/crepe/facade/Sound.h
+++ b/src/crepe/facade/Sound.h
@@ -9,10 +9,6 @@ namespace crepe {
class SoundContext;
-struct SoundHandle {
- SoLoud::handle handle;
-};
-
/**
* \brief Sound resource facade
*
@@ -23,62 +19,20 @@ class Sound : public Resource {
public:
Sound(const Asset & src);
~Sound(); // dbg_trace
- /**
- * \brief Pause this sample
- *
- * Pauses this sound if it is playing, or does nothing if it is already paused. The playhead
- * position is saved, such that calling \c play() after this function makes the sound resume.
- */
- void pause(SoundContext & ctx);
- /**
- * \brief Play this sample
- *
- * Resume playback if this sound is paused, or start from the beginning of the sample.
- *
- * \note This class only saves a reference to the most recent 'voice' of this sound. Calling
- * \c play() while the sound is already playing causes multiple instances of the sample to
- * play simultaniously. The sample started last is the one that is controlled afterwards.
- */
- void play(SoundContext & ctx);
- /**
- * \brief Reset playhead position
- *
- * Resets the playhead position so that calling \c play() after this function makes it play
- * from the start of the sample. If the sound is not paused before calling this function,
- * this function will stop playback.
- */
- void rewind(SoundContext & ctx);
- /**
- * \brief Set playback volume / gain
- *
- * \param volume Volume (0 = muted, 1 = full volume)
- */
- void set_volume(SoundContext & ctx, float volume);
- /**
- * \brief Get playback volume / gain
- *
- * \return Volume
- */
- float get_volume() const { return this->volume; }
- /**
- * \brief Set looping behavior for this sample
- *
- * \param looping Looping behavior (false = one-shot, true = loop)
- */
- void set_looping(SoundContext & ctx, bool looping);
- /**
- * \brief Get looping behavior
- *
- * \return true if looping, false if one-shot
- */
- bool get_looping() const { return this->looping; }
+
+ class Handle {
+ private:
+ SoLoud::handle handle;
+ float volume = 1.0f;
+ bool looping = false;
+
+ friend class SoundContext;
+ };
private:
SoLoud::Wav sample;
- SoLoud::handle handle;
- float volume = 1.0f;
- bool looping = false;
+ friend class SoundContext;
};
} // namespace crepe
diff --git a/src/crepe/facade/SoundContext.h b/src/crepe/facade/SoundContext.h
index d22ff7a..286ced8 100644
--- a/src/crepe/facade/SoundContext.h
+++ b/src/crepe/facade/SoundContext.h
@@ -22,10 +22,9 @@ public:
SoundContext & operator=(const SoundContext &) = delete;
SoundContext & operator=(SoundContext &&) = delete;
+
private:
SoLoud::Soloud engine;
- //! Sound directly calls methods on \c engine
- friend class Sound;
};
} // namespace crepe