aboutsummaryrefslogtreecommitdiff
path: root/src/crepe/facade/Sound.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/crepe/facade/Sound.h')
-rw-r--r--src/crepe/facade/Sound.h66
1 files changed, 10 insertions, 56 deletions
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