audio: clear mixer routes on destruction
This commit is contained in:
@@ -14,6 +14,7 @@
|
||||
namespace XCEngine {
|
||||
namespace Components {
|
||||
class AudioSourceComponent;
|
||||
class AudioListenerComponent;
|
||||
}
|
||||
|
||||
namespace Audio {
|
||||
@@ -63,6 +64,12 @@ public:
|
||||
|
||||
void RegisterSource(Components::AudioSourceComponent* source);
|
||||
void UnregisterSource(Components::AudioSourceComponent* source);
|
||||
void RegisterSourceComponent(Components::AudioSourceComponent* source);
|
||||
void UnregisterSourceComponent(Components::AudioSourceComponent* source);
|
||||
void RegisterListenerComponent(Components::AudioListenerComponent* listener);
|
||||
void UnregisterListenerComponent(Components::AudioListenerComponent* listener);
|
||||
void RegisterMixer(AudioMixer* mixer);
|
||||
void UnregisterMixer(AudioMixer* mixer);
|
||||
|
||||
struct Stats {
|
||||
uint32_t activeSources;
|
||||
@@ -81,6 +88,7 @@ private:
|
||||
|
||||
void ProcessSource(Components::AudioSourceComponent* source, float* buffer, uint32 frameCount, uint32 channels, uint32 sampleRate);
|
||||
void RenderAudioBlock(uint32 frameCount, uint32 channels, uint32 sampleRate);
|
||||
void DetachMixerReferences(AudioMixer* mixer);
|
||||
|
||||
private:
|
||||
std::unique_ptr<IAudioBackend> m_backend;
|
||||
@@ -94,6 +102,9 @@ private:
|
||||
Math::Quaternion m_listenerRotation = Math::Quaternion::Identity();
|
||||
Math::Vector3 m_listenerVelocity = Math::Vector3::Zero();
|
||||
|
||||
std::vector<AudioMixer*> m_registeredMixers;
|
||||
std::vector<Components::AudioSourceComponent*> m_registeredSourceComponents;
|
||||
std::vector<Components::AudioListenerComponent*> m_registeredListenerComponents;
|
||||
std::vector<Components::AudioSourceComponent*> m_activeSources;
|
||||
std::vector<Components::AudioSourceComponent*> m_activeSourceSnapshot;
|
||||
std::vector<float> m_mixScratchBuffer;
|
||||
|
||||
Reference in New Issue
Block a user