diff options
Diffstat (limited to 'src/crepe/api')
-rw-r--r-- | src/crepe/api/AudioSource.cpp | 21 | ||||
-rw-r--r-- | src/crepe/api/AudioSource.h | 34 |
2 files changed, 33 insertions, 22 deletions
diff --git a/src/crepe/api/AudioSource.cpp b/src/crepe/api/AudioSource.cpp index 63fd0d7..b0cf28c 100644 --- a/src/crepe/api/AudioSource.cpp +++ b/src/crepe/api/AudioSource.cpp @@ -1,23 +1,22 @@ #include <memory> -#include "../facade/Sound.h" - #include "AudioSource.h" using namespace crepe; +using namespace std; -AudioSource::AudioSource(std::unique_ptr<Asset> audio_clip) { - this->sound = std::make_unique<crepe::Sound>(std::move(audio_clip)); -} - -void AudioSource::play() { return this->play(false); } +AudioSource::AudioSource(game_object_id_t id, unique_ptr<Asset> audio_clip) : + Component(id), + audio_clip(std::move(audio_clip)) +{ } void AudioSource::play(bool looping) { - this->sound->set_looping(looping); - this->sound->play(); + this->loop = looping; + this->playing = true; } void AudioSource::stop() { - this->sound->pause(); - this->sound->rewind(); + this->playing = false; + this->rewind = true; } + diff --git a/src/crepe/api/AudioSource.h b/src/crepe/api/AudioSource.h index 1e24ae8..5bc70f9 100644 --- a/src/crepe/api/AudioSource.h +++ b/src/crepe/api/AudioSource.h @@ -4,36 +4,48 @@ #include "../Asset.h" #include "../Component.h" +#include "../types.h" namespace crepe { -class Sound; - //! Audio source component class AudioSource : public Component { public: - AudioSource(std::unique_ptr<Asset> audio_clip); + AudioSource(game_object_id_t id, const Asset & source); virtual ~AudioSource() = default; public: //! Start or resume this audio source - void play(); - void play(bool looping); + void play(bool looping = false); //! Stop this audio source void stop(); public: //! Sample file location - std::unique_ptr<Asset> audio_clip; - //! TODO: ????? - bool play_on_awake; + const std::unique_ptr<Asset> audio_clip; + //! Play when this component becomes active + bool play_on_awake = false; //! Repeat the current audio clip during playback - bool loop; + bool loop = false; //! Normalized volume (0.0 - 1.0) - float volume; + float volume = 1.0; + +private: + //! If this source is playing audio + bool playing = false; + //! Rewind the sample location + bool rewind = false; private: - std::unique_ptr<Sound> sound; + //! Value of \c active after last system update + bool last_active = false; + //! Value of \c playing after last system update + bool last_playing = false; + //! Value of \c volume after last system update + float last_volume = 1.0; + //! Value of \c loop after last system update + bool last_loop = false; }; } // namespace crepe + |