123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- #include "AkAudioInputComponent.h"
- #include "AkAudioDevice.h"
- #include "AkAudioEvent.h"
- UAkAudioInputComponent::UAkAudioInputComponent(const class FObjectInitializer& ObjectInitializer) :
- Super(ObjectInitializer)
- {}
- int32 UAkAudioInputComponent::PostAssociatedAudioInputEvent()
- {
- AudioInputDelegate = FAkGlobalAudioInputDelegate::CreateLambda(
- [this](uint32 NumChannels, uint32 NumSamples, float** BufferToFill) -> bool
- {
- return FillSamplesBuffer(NumChannels, NumSamples, BufferToFill);
- });
- AudioFormatDelegate = FAkGlobalAudioFormatDelegate::CreateLambda([this](AkAudioFormat& AudioFormat)
- {
- return GetChannelConfig(AudioFormat);
- });
- AkPlayingID PlayingID = FAkAudioInputManager::PostAudioInputEvent(
- AkAudioEvent, this, AudioInputDelegate, AudioFormatDelegate);
- if (PlayingID != AK_INVALID_PLAYING_ID)
- {
- CurrentlyPlayingIDs.Add(PlayingID);
- }
- return PlayingID;
- }
- void UAkAudioInputComponent::PostUnregisterGameObject()
- {
- if (AudioInputDelegate.IsBound())
- {
- AudioInputDelegate.Unbind();
- }
- if (AudioFormatDelegate.IsBound())
- {
- AudioFormatDelegate.Unbind();
- }
- auto Device = FAkAudioDevice::Get();
- if (Device != nullptr)
- {
- for (int i = 0; i < CurrentlyPlayingIDs.Num(); ++i)
- {
- Device->StopPlayingID(CurrentlyPlayingIDs[i]);
- }
- }
- CurrentlyPlayingIDs.Empty();
- }
|