diff options
author | max-001 <maxsmits21@kpnmail.nl> | 2024-10-16 13:09:28 +0200 |
---|---|---|
committer | max-001 <maxsmits21@kpnmail.nl> | 2024-10-16 13:09:28 +0200 |
commit | 85514636cbf9ae34afc8d6c863e9760f291e6478 (patch) | |
tree | 4e745d504a0c55386aa20f079dfdaa0d32ac31aa /src/crepe/api | |
parent | 809db83cd515c6c2b1d404811354208cf97a5c07 (diff) | |
parent | 579824011d5e8776e2079d6624a39535517760ff (diff) |
Merge remote-tracking branch 'origin/master' into max/POC-ECS-memory-efficient
Diffstat (limited to 'src/crepe/api')
-rw-r--r-- | src/crepe/api/AudioSource.cpp | 22 | ||||
-rw-r--r-- | src/crepe/api/AudioSource.h | 41 | ||||
-rw-r--r-- | src/crepe/api/BehaviorScript.cpp | 10 | ||||
-rw-r--r-- | src/crepe/api/BehaviorScript.h | 17 | ||||
-rw-r--r-- | src/crepe/api/CMakeLists.txt | 10 |
5 files changed, 100 insertions, 0 deletions
diff --git a/src/crepe/api/AudioSource.cpp b/src/crepe/api/AudioSource.cpp new file mode 100644 index 0000000..b512d27 --- /dev/null +++ b/src/crepe/api/AudioSource.cpp @@ -0,0 +1,22 @@ +#include "AudioSource.h" + +#include "../Sound.h" +#include <memory> + +using namespace crepe::api; + +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); } + +void AudioSource::play(bool looping) { + this->sound->set_looping(looping); + this->sound->play(); +} + +void AudioSource::stop() { + this->sound->pause(); + this->sound->rewind(); +} diff --git a/src/crepe/api/AudioSource.h b/src/crepe/api/AudioSource.h new file mode 100644 index 0000000..2d26cda --- /dev/null +++ b/src/crepe/api/AudioSource.h @@ -0,0 +1,41 @@ +#pragma once + +#include <memory> + +#include "Asset.h" +#include "Component.h" + +namespace crepe { +class Sound; +} + +namespace crepe::api { + +//! Audio source component +class AudioSource : Component { +public: + AudioSource(std::unique_ptr<Asset> audio_clip); + virtual ~AudioSource() = default; + +public: + //! Start or resume this audio source + void play(); + void play(bool looping); + //! Stop this audio source + void stop(); + +public: + //! Sample file location + std::unique_ptr<Asset> audio_clip; + //! TODO: ????? + bool play_on_awake; + //! Repeat the current audio clip during playback + bool loop; + //! Normalized volume (0.0 - 1.0) + float volume; + +private: + std::unique_ptr<crepe::Sound> sound; +}; + +} // namespace crepe::api diff --git a/src/crepe/api/BehaviorScript.cpp b/src/crepe/api/BehaviorScript.cpp new file mode 100644 index 0000000..2dd933e --- /dev/null +++ b/src/crepe/api/BehaviorScript.cpp @@ -0,0 +1,10 @@ +#include "../util/log.h" + +#include "BehaviorScript.h" + +using namespace crepe::api; + +BehaviorScript::BehaviorScript() { + dbg_trace(); +} + diff --git a/src/crepe/api/BehaviorScript.h b/src/crepe/api/BehaviorScript.h new file mode 100644 index 0000000..e9542c1 --- /dev/null +++ b/src/crepe/api/BehaviorScript.h @@ -0,0 +1,17 @@ +#pragma once + +#include "../Script.h" +#include "../Component.h" + +namespace crepe::api { + +class BehaviorScript : public Script, public Component { + // only allow ComponentManager to instantiate scripts + friend class ComponentManager; + +protected: + BehaviorScript(); +}; + +} + diff --git a/src/crepe/api/CMakeLists.txt b/src/crepe/api/CMakeLists.txt new file mode 100644 index 0000000..86623de --- /dev/null +++ b/src/crepe/api/CMakeLists.txt @@ -0,0 +1,10 @@ +target_sources(crepe PUBLIC + # AudioSource.cpp + BehaviorScript.cpp +) + +target_sources(crepe PUBLIC FILE_SET HEADERS FILES + # AudioSource.h + BehaviorScript.h +) + |