123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170 |
- /*
- * Copyright (c) Contributors to the Open 3D Engine Project.
- * For complete copyright and license terms please see the LICENSE at the root of this distribution.
- *
- * SPDX-License-Identifier: Apache-2.0 OR MIT
- *
- */
- #include "AudioEngineWwiseGemSystemComponent.h"
- #include <AzCore/PlatformIncl.h> // This include is needed to include WinSock2.h before including Windows.h
- // As AK/SoundEngine/Common/AkTypes.h eventually includes Windows.h
- #include <AzCore/Console/ILogger.h>
- #include <AzCore/Serialization/SerializeContext.h>
- #include <AzCore/Serialization/EditContext.h>
- #include <AzCore/Serialization/EditContextConstants.inl>
- #include <AzCore/Settings/SettingsRegistryMergeUtils.h>
- #include <AzFramework/Platform/PlatformDefaults.h>
- #include <AudioAllocators.h>
- #include <AudioSystemImplCVars.h>
- #include <AudioSystemImpl_wwise.h>
- #include <Common_wwise.h>
- #include <Config_wwise.h>
- #if defined(AUDIO_ENGINE_WWISE_EDITOR)
- #include <AudioSystemEditor_wwise.h>
- #endif // AUDIO_ENGINE_WWISE_EDITOR
- namespace Audio
- {
- namespace Platform
- {
- void* InitializeSecondaryMemoryPool(size_t& secondarySize);
- }
- } // namespace Audio
- namespace AudioEngineWwiseGem
- {
- void AudioEngineWwiseGemSystemComponent::Reflect(AZ::ReflectContext* context)
- {
- if (AZ::SerializeContext* serialize = azrtti_cast<AZ::SerializeContext*>(context))
- {
- serialize->Class<AudioEngineWwiseGemSystemComponent, AZ::Component>()
- ->Version(0)
- ;
- if (AZ::EditContext* ec = serialize->GetEditContext())
- {
- ec->Class<AudioEngineWwiseGemSystemComponent>("Audio Engine Wwise Gem", "Wwise implementation of the Audio Engine interfaces")
- ->ClassElement(AZ::Edit::ClassElements::EditorData, "")
- ->Attribute(AZ::Edit::Attributes::AutoExpand, true)
- ;
- }
- }
- Audio::Wwise::ConfigurationSettings::Reflect(context);
- }
- void AudioEngineWwiseGemSystemComponent::GetProvidedServices(AZ::ComponentDescriptor::DependencyArrayType& provided)
- {
- provided.push_back(AZ_CRC("AudioEngineService"));
- }
- void AudioEngineWwiseGemSystemComponent::GetIncompatibleServices(AZ::ComponentDescriptor::DependencyArrayType& incompatible)
- {
- incompatible.push_back(AZ_CRC("AudioEngineService"));
- }
- void AudioEngineWwiseGemSystemComponent::GetRequiredServices(AZ::ComponentDescriptor::DependencyArrayType& required)
- {
- required.push_back(AZ_CRC("AudioSystemService"));
- }
- void AudioEngineWwiseGemSystemComponent::GetDependentServices(AZ::ComponentDescriptor::DependencyArrayType& dependent)
- {
- dependent.push_back(AZ_CRC("AudioSystemService"));
- }
- void AudioEngineWwiseGemSystemComponent::Init()
- {
- }
- void AudioEngineWwiseGemSystemComponent::Activate()
- {
- Audio::Gem::EngineRequestBus::Handler::BusConnect();
- #if defined(AUDIO_ENGINE_WWISE_EDITOR)
- AudioControlsEditor::EditorImplPluginEventBus::Handler::BusConnect();
- #endif // AUDIO_ENGINE_WWISE_EDITOR
- }
- void AudioEngineWwiseGemSystemComponent::Deactivate()
- {
- Audio::Gem::EngineRequestBus::Handler::BusDisconnect();
- #if defined(AUDIO_ENGINE_WWISE_EDITOR)
- AudioControlsEditor::EditorImplPluginEventBus::Handler::BusDisconnect();
- #endif // AUDIO_ENGINE_WWISE_EDITOR
- }
- bool AudioEngineWwiseGemSystemComponent::Initialize()
- {
- bool success = false;
- // Check memory-related Wwise Cvars...
- [[maybe_unused]] const AZ::u64 memorySubpartitionSizes = Audio::Wwise::Cvars::s_StreamDeviceMemorySize
- #if !defined(WWISE_RELEASE)
- + Audio::Wwise::Cvars::s_MonitorQueueMemorySize
- #endif // !WWISE_RELEASE
- + Audio::Wwise::Cvars::s_CommandQueueMemorySize;
- AZ_Assert(Audio::Wwise::Cvars::s_PrimaryMemorySize > memorySubpartitionSizes,
- "Wwise memory sizes of sub-categories add up to more than the primary memory pool size!")
- AZ::SettingsRegistryInterface::FixedValueString assetPlatform = AzFramework::OSPlatformToDefaultAssetPlatform(
- AZ_TRAIT_OS_PLATFORM_CODENAME);
- if (assetPlatform.empty())
- {
- if (const auto settingsRegistry = AZ::SettingsRegistry::Get(); settingsRegistry != nullptr)
- {
- AZ::SettingsRegistryMergeUtils::PlatformGet(*settingsRegistry, assetPlatform,
- AZ::SettingsRegistryMergeUtils::BootstrapSettingsRootKey, "assets");
- }
- }
- m_engineWwise = AZStd::make_unique<Audio::CAudioSystemImpl_wwise>(assetPlatform.c_str());
- if (m_engineWwise)
- {
- AZLOG_INFO("%s", "AudioEngineWwise created!");
- Audio::SystemRequest::Initialize initRequest;
- AZ::Interface<Audio::IAudioSystem>::Get()->PushRequestBlocking(AZStd::move(initRequest));
- success = true;
- }
- else
- {
- AZLOG_ERROR("%s", "Could not create AudioEngineWwise!");
- }
- return success;
- }
- void AudioEngineWwiseGemSystemComponent::Release()
- {
- m_engineWwise.reset();
- }
- #if defined(AUDIO_ENGINE_WWISE_EDITOR)
- void AudioEngineWwiseGemSystemComponent::InitializeEditorImplPlugin()
- {
- m_editorImplPlugin.reset(new AudioControls::CAudioSystemEditor_wwise());
- }
- void AudioEngineWwiseGemSystemComponent::ReleaseEditorImplPlugin()
- {
- m_editorImplPlugin.reset();
- }
- AudioControls::IAudioSystemEditor* AudioEngineWwiseGemSystemComponent::GetEditorImplPlugin()
- {
- return m_editorImplPlugin.get();
- }
- #endif // AUDIO_ENGINE_WWISE_EDITOR
- } // namespace AudioEngineWwiseGem
|