aboutsummaryrefslogtreecommitdiff
path: root/src/crepe/system
diff options
context:
space:
mode:
authorLoek Le Blansch <loek@pipeframe.xyz>2024-12-02 16:13:08 +0100
committerLoek Le Blansch <loek@pipeframe.xyz>2024-12-02 16:13:08 +0100
commit7a8657dfe019104aced61a5b63e63f61ad919f7a (patch)
treefd8e7aa148aac0a4f50fca8fe05e5016dfd16e47 /src/crepe/system
parentb8194e02679dc88f5c0a240da83a4700ec5200cf (diff)
remove `Private`
Diffstat (limited to 'src/crepe/system')
-rw-r--r--src/crepe/system/AudioSystem.cpp44
-rw-r--r--src/crepe/system/AudioSystem.h29
2 files changed, 25 insertions, 48 deletions
diff --git a/src/crepe/system/AudioSystem.cpp b/src/crepe/system/AudioSystem.cpp
index 26913c0..c1cde8b 100644
--- a/src/crepe/system/AudioSystem.cpp
+++ b/src/crepe/system/AudioSystem.cpp
@@ -16,56 +16,50 @@ void AudioSystem::update() {
for (AudioSource & component : components) {
Sound & resource = resource_manager.get<Sound>(component.source);
- if (component.private_data.empty()) {
- auto & data = component.private_data.set<ComponentPrivate>();
- this->update_last(component, data);
- data.last_active = false;
- }
- auto & data = component.private_data.get<ComponentPrivate>();
-
- this->diff_update(component, data, resource);
+ this->diff_update(component, resource);
- this->update_last(component, data);
+ this->update_last(component);
}
}
-void AudioSystem::diff_update(AudioSource & component, ComponentPrivate & data,
- Sound & resource) {
+void AudioSystem::diff_update(AudioSource & component, Sound & resource) {
SoundContext & context = this->get_context();
- if (component.active != data.last_active) {
+ if (component.active != component.last_active) {
if (component.active) {
component.oneshot_play = component.play_on_awake;
} else {
- context.stop(data.handle);
+ context.stop(component.voice);
return;
}
}
if (!component.active) return;
if (component.oneshot_play) {
- data.handle = context.play(resource);
+ component.voice = context.play(resource);
component.oneshot_play = false;
}
if (component.oneshot_stop) {
- context.stop(data.handle);
+ context.stop(component.voice);
component.oneshot_stop = false;
}
- if (component.volume != data.last_volume) {
- context.set_volume(data.handle, component.volume);
+ if (component.volume != component.last_volume) {
+ context.set_volume(component.voice, component.volume);
}
- if (component.loop != data.last_loop) {
- context.set_loop(data.handle, component.loop);
+ if (component.loop != component.last_loop) {
+ context.set_loop(component.voice, component.loop);
}
}
-void AudioSystem::update_last(const AudioSource & component, ComponentPrivate & data) {
- data.last_active = component.active;
- data.last_loop = component.loop;
- data.last_volume = component.volume;
+void AudioSystem::update_last(AudioSource & component) {
+ component.last_active = component.active;
+ component.last_loop = component.loop;
+ component.last_volume = component.volume;
}
SoundContext & AudioSystem::get_context() {
- if (this->context.empty()) this->context.set<SoundContext>();
- return this->context.get<SoundContext>();
+ if (this->context == nullptr)
+ this->context = make_unique<SoundContext>();
+ return *this->context.get();
}
+
diff --git a/src/crepe/system/AudioSystem.h b/src/crepe/system/AudioSystem.h
index 4d21883..2ddc443 100644
--- a/src/crepe/system/AudioSystem.h
+++ b/src/crepe/system/AudioSystem.h
@@ -14,30 +14,14 @@ public:
void update() override;
private:
- //! Private data stored by AudioSystem on AudioSource component
- struct ComponentPrivate {
- //! This sample's voice handle
- Sound::Handle handle;
-
- /**
- * \name State diffing variables
- * \{
- */
- typeof(AudioSource::active) last_active;
- typeof(AudioSource::volume) last_volume;
- typeof(AudioSource::loop) last_loop;
- //! \}
- };
-
/**
- * \brief Update `last_*` members of \c data
+ * \brief Update `last_*` members of \c component
*
* Copies all component properties stored for comparison between AudioSystem::update() calls
*
- * \param component Source properties
- * \param data Destination properties
+ * \param component AudioSource component to update
*/
- void update_last(const AudioSource & component, ComponentPrivate & data);
+ void update_last(AudioSource & component);
/**
* \brief Compare update component
@@ -46,10 +30,9 @@ private:
* applicable.
*
* \param component AudioSource component to update
- * \param data AudioSource's private data
* \param resource Sound instance for AudioSource's Asset
*/
- void diff_update(AudioSource & component, ComponentPrivate & data, Sound & resource);
+ void diff_update(AudioSource & component, Sound & resource);
protected:
/**
@@ -61,8 +44,8 @@ protected:
virtual SoundContext & get_context();
private:
- //! Actually stores SoundContext if the base AudioSystem::get_context implementation is used
- Private context;
+ //! SoundContext
+ std::unique_ptr<SoundContext> context = nullptr;
};
} // namespace crepe