123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141 |
- /*******************************************************************************
- The content of this file includes portions of the proprietary AUDIOKINETIC Wwise
- Technology released in source code form as part of the game integration package.
- The content of this file may not be used without valid licenses to the
- AUDIOKINETIC Wwise Technology.
- Note that the use of the game engine is subject to the Unreal(R) Engine End User
- License Agreement at https://www.unrealengine.com/en-US/eula/unreal
-
- License Usage
-
- Licensees holding valid licenses to the AUDIOKINETIC Wwise Technology may use
- this file in accordance with the end user license agreement provided with the
- software or, alternatively, in accordance with the terms contained
- in a written agreement between you and Audiokinetic Inc.
- Copyright (c) 2023 Audiokinetic Inc.
- *******************************************************************************/
- /*=============================================================================
- AkWaapiCalls.cpp:
- =============================================================================*/
- #include "AkWaapiBlueprints/AkWaapiCalls.h"
- #include "AkAudioDevice.h"
- #include "AkWaapiBlueprints/AkWaapiUriCustomization.h"
- #include "AkWaapiBlueprints/AkWaapiFieldNamesCustomization.h"
- #include "Async/Async.h"
- #include "Modules/ModuleManager.h"
- /*-----------------------------------------------------------------------------
- AkWaapiCalls.
- -----------------------------------------------------------------------------*/
- UAkWaapiCalls::UAkWaapiCalls(const class FObjectInitializer& ObjectInitializer)
- : Super(ObjectInitializer)
- {
- #if WITH_EDITOR
- // Property initialization
- FPropertyEditorModule& PropertyModule = FModuleManager::GetModuleChecked<FPropertyEditorModule>("PropertyEditor");
- PropertyModule.RegisterCustomPropertyTypeLayout("AkWaapiUri", FOnGetPropertyTypeCustomizationInstance::CreateStatic(&FAkWaapiUriCustomization::MakeInstance));
- PropertyModule.RegisterCustomPropertyTypeLayout("AkWaapiFieldNames", FOnGetPropertyTypeCustomizationInstance::CreateStatic(&FAkWaapiFieldNamesCustomization::MakeInstance));
- PropertyModule.NotifyCustomizationModuleChanged();
- #endif
- }
- void UAkWaapiCalls::SetSubscriptionID(const FAkWaapiSubscriptionId& Subscription, int id)
- {
- Subscription.SubscriptionId = (uint64_t)id;
- }
- int UAkWaapiCalls::GetSubscriptionID(const FAkWaapiSubscriptionId& Subscription)
- {
- return Subscription.SubscriptionId;
- }
- bool UAkWaapiCalls::RegisterWaapiProjectLoadedCallback(const FOnWaapiProjectLoaded& Callback)
- {
- if (auto waapiClient = FAkWaapiClient::Get())
- {
- waapiClient->OnProjectLoaded.AddLambda([Callback]() { Callback.ExecuteIfBound(); });
- return true;
- }
- return false;
- }
- bool UAkWaapiCalls::RegisterWaapiConnectionLostCallback(const FOnWaapiConnectionLost& Callback)
- {
- if (auto waapiClient = FAkWaapiClient::Get())
- {
- waapiClient->OnConnectionLost.AddLambda([Callback]()
- {
- Callback.ExecuteIfBound();
- });
- return true;
- }
- return false;
- }
- FAKWaapiJsonObject UAkWaapiCalls::CallWaapi(const FAkWaapiUri& WaapiUri, const FAKWaapiJsonObject& WaapiArgs, const FAKWaapiJsonObject& WaapiOptions)
- {
- FAKWaapiJsonObject outJsonResult = FAKWaapiJsonObject();
- // Connect to Wwise Authoring on localhost.
- if (auto waapiClient = FAkWaapiClient::Get())
- {
- // Request data from Wwise using WAAPI
- if (!waapiClient->Call(TCHAR_TO_ANSI(*WaapiUri.Uri), WaapiArgs.WaapiJsonObj.ToSharedRef(), WaapiOptions.WaapiJsonObj.ToSharedRef(), outJsonResult.WaapiJsonObj))
- {
- UE_LOG(LogAkAudio, Log, TEXT("Call Failed"));
- }
- }
- else
- {
- UE_LOG(LogAkAudio, Log, TEXT("Unable to connect to localhost"));
- }
- return outJsonResult;
- }
- FAKWaapiJsonObject UAkWaapiCalls::SubscribeToWaapi(const FAkWaapiUri& WaapiUri, const FAKWaapiJsonObject& WaapiOptions, const FOnEventCallback& CallBack, FAkWaapiSubscriptionId& SubscriptionId, bool& SubscriptionDone)
- {
- FAKWaapiJsonObject outJsonResult = FAKWaapiJsonObject();
- // Connect to Wwise Authoring on localhost.
- if (auto waapiClient = FAkWaapiClient::Get())
- {
- auto wampEventCallback = WampEventCallback::CreateLambda([CallBack](uint64_t id, TSharedPtr<FJsonObject> in_UEJsonObject)
- {
- AsyncTask(ENamedThreads::GameThread,[CallBack,id,in_UEJsonObject]
- {
- FAKWaapiJsonObject outWaapiObj = FAKWaapiJsonObject();
- outWaapiObj.WaapiJsonObj = in_UEJsonObject;
- CallBack.ExecuteIfBound(id, outWaapiObj);
- });
- });
- // Subscribe to action notifications.
- SubscriptionDone = waapiClient->Subscribe(TCHAR_TO_ANSI(*WaapiUri.Uri), WaapiOptions.WaapiJsonObj.ToSharedRef(), wampEventCallback, SubscriptionId.SubscriptionId, outJsonResult.WaapiJsonObj);
- }
- return outJsonResult;
- }
- FAKWaapiJsonObject UAkWaapiCalls::Unsubscribe(const FAkWaapiSubscriptionId& SubscriptionId, bool& UnsubscriptionDone)
- {
- FAKWaapiJsonObject outJsonResult = FAKWaapiJsonObject();
- // Connect to Wwise Authoring on localhost.
- if (auto waapiClient = FAkWaapiClient::Get())
- {
- // Subscribe to action notifications.
- UnsubscriptionDone = waapiClient->Unsubscribe(SubscriptionId.SubscriptionId, outJsonResult.WaapiJsonObj);
- }
- return outJsonResult;
- }
- FString UAkWaapiCalls::Conv_FAkWaapiSubscriptionIdToString(const FAkWaapiSubscriptionId& INAkWaapiSubscriptionId)
- {
- return FString::Printf(TEXT("%u"), INAkWaapiSubscriptionId.SubscriptionId);
- }
- FText UAkWaapiCalls::Conv_FAkWaapiSubscriptionIdToText(const FAkWaapiSubscriptionId& INAkWaapiSubscriptionId)
- {
- return FText::FromString(*Conv_FAkWaapiSubscriptionIdToString(INAkWaapiSubscriptionId));
- }
|