WwiseResourceLoader.h 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. /*******************************************************************************
  2. The content of this file includes portions of the proprietary AUDIOKINETIC Wwise
  3. Technology released in source code form as part of the game integration package.
  4. The content of this file may not be used without valid licenses to the
  5. AUDIOKINETIC Wwise Technology.
  6. Note that the use of the game engine is subject to the Unreal(R) Engine End User
  7. License Agreement at https://www.unrealengine.com/en-US/eula/unreal
  8. License Usage
  9. Licensees holding valid licenses to the AUDIOKINETIC Wwise Technology may use
  10. this file in accordance with the end user license agreement provided with the
  11. software or, alternatively, in accordance with the terms contained
  12. in a written agreement between you and Audiokinetic Inc.
  13. Copyright (c) 2023 Audiokinetic Inc.
  14. *******************************************************************************/
  15. #pragma once
  16. #include "Wwise/WwiseResourceLoaderImpl.h"
  17. #include "Wwise/WwiseResourceLoaderModule.h"
  18. /**
  19. * @brief Operations available to manage and handle Wwise SoundBanks in Unreal.
  20. */
  21. class WWISERESOURCELOADER_API FWwiseResourceLoader
  22. {
  23. public:
  24. using FWwiseSetLanguageFuture = TWwiseFuture<void>;
  25. using FWwiseSetLanguagePromise = TWwisePromise<void>;
  26. inline static FWwiseResourceLoader* Get()
  27. {
  28. if (auto* Module = IWwiseResourceLoaderModule::GetModule())
  29. {
  30. return Module->GetResourceLoader();
  31. }
  32. return nullptr;
  33. }
  34. static FWwiseResourceLoader* Instantiate()
  35. {
  36. if (auto* Module = IWwiseResourceLoaderModule::GetModule())
  37. {
  38. return Module->InstantiateResourceLoader();
  39. }
  40. return nullptr;
  41. }
  42. virtual bool IsEnabled() const;
  43. virtual void Enable();
  44. virtual void Disable();
  45. FWwiseResourceLoader();
  46. virtual ~FWwiseResourceLoader() {}
  47. //
  48. // User-facing operations
  49. //
  50. FWwiseLanguageCookedData GetCurrentLanguage() const;
  51. FWwiseSharedPlatformId GetCurrentPlatform() const;
  52. /**
  53. * @brief Returns the actual Unreal file path needed in order to retrieve this particular Wwise Path.
  54. *
  55. * This method acts differently depending on usage in ResourceLoaderImpl or Editor. In Editor, this will return
  56. * the full path to the Generated SoundBanks folder. In a packaged game, this will return the full
  57. * path to the staged file.
  58. *
  59. * @param WwisePath Requested file path, as found in SoundBanksInfo.
  60. * @return The corresponding Unreal path.
  61. */
  62. virtual FString GetUnrealPath(const FName& InPath) const { return GetUnrealPath(InPath.ToString()); }
  63. virtual FString GetUnrealPath(const FString& InPath) const;
  64. virtual FName GetUnrealExternalSourcePath() const;
  65. virtual FString GetUnrealStagePath(const FName& InPath) const { return GetUnrealStagePath(InPath.ToString()); }
  66. virtual FString GetUnrealStagePath(const FString& InPath) const;
  67. #if WITH_EDITORONLY_DATA
  68. virtual FString GetUnrealGeneratedSoundBanksPath(const FName& InPath) const { return GetUnrealGeneratedSoundBanksPath(InPath.ToString()); }
  69. virtual FString GetUnrealGeneratedSoundBanksPath(const FString& InPath) const;
  70. virtual void SetUnrealGeneratedSoundBanksPath(const FDirectoryPath& DirectoryPath);
  71. virtual const FDirectoryPath& GetUnrealGeneratedSoundBanksPath();
  72. #endif
  73. /**
  74. * @brief Sets the language for the current runtime, optionally reloading all affected assets immediately
  75. * @param LanguageId The current language being processed, or 0 if none
  76. * @param ReloadLanguage What reload strategy should be used for language changes
  77. */
  78. virtual void SetLanguage(FWwiseLanguageCookedData InLanguage, EWwiseReloadLanguage InReloadLanguage);
  79. virtual void SetPlatform(const FWwiseSharedPlatformId& InPlatform);
  80. virtual FWwiseLoadedAuxBus LoadAuxBus(const FWwiseLocalizedAuxBusCookedData& InAuxBusCookedData, const FWwiseLanguageCookedData* InLanguageOverride = nullptr);
  81. virtual void UnloadAuxBus(FWwiseLoadedAuxBus&& InAuxBus);
  82. virtual FWwiseLoadedEvent LoadEvent(const FWwiseLocalizedEventCookedData& InEventCookedData, const FWwiseLanguageCookedData* InLanguageOverride = nullptr);
  83. virtual void UnloadEvent(FWwiseLoadedEvent&& InEvent);
  84. virtual FWwiseLoadedExternalSource LoadExternalSource(const FWwiseExternalSourceCookedData& InExternalSourceCookedData);
  85. virtual void UnloadExternalSource(FWwiseLoadedExternalSource&& InExternalSource);
  86. virtual FWwiseLoadedGroupValue LoadGroupValue(const FWwiseGroupValueCookedData& InGroupValueCookedData);
  87. virtual void UnloadGroupValue(FWwiseLoadedGroupValue&& InGroupValue);
  88. virtual FWwiseLoadedInitBank LoadInitBank(const FWwiseInitBankCookedData& InInitBankCookedData);
  89. virtual void UnloadInitBank(FWwiseLoadedInitBank&& InInitBank);
  90. virtual FWwiseLoadedMedia LoadMedia(const FWwiseMediaCookedData& InMediaCookedData);
  91. virtual void UnloadMedia(FWwiseLoadedMedia&& InMedia);
  92. virtual FWwiseLoadedShareSet LoadShareSet(const FWwiseLocalizedShareSetCookedData& InShareSetCookedData, const FWwiseLanguageCookedData* InLanguageOverride = nullptr);
  93. virtual void UnloadShareSet(FWwiseLoadedShareSet&& InShareSet);
  94. virtual FWwiseLoadedSoundBank LoadSoundBank(const FWwiseLocalizedSoundBankCookedData& InSoundBankCookedData, const FWwiseLanguageCookedData* InLanguageOverride = nullptr);
  95. virtual void UnloadSoundBank(FWwiseLoadedSoundBank&& InSoundBank);
  96. virtual FWwiseSetLanguageFuture SetLanguageAsync(FWwiseLanguageCookedData InLanguage, EWwiseReloadLanguage InReloadLanguage);
  97. virtual FWwiseLoadedAuxBusFuture LoadAuxBusAsync(const FWwiseLocalizedAuxBusCookedData& InAuxBusCookedData, const FWwiseLanguageCookedData* InLanguageOverride = nullptr);
  98. virtual FWwiseResourceUnloadFuture UnloadAuxBusAsync(FWwiseLoadedAuxBusFuture&& InAuxBus);
  99. virtual FWwiseLoadedEventFuture LoadEventAsync(const FWwiseLocalizedEventCookedData& InEventCookedData, const FWwiseLanguageCookedData* InLanguageOverride = nullptr);
  100. virtual FWwiseResourceUnloadFuture UnloadEventAsync(FWwiseLoadedEventFuture&& InEvent);
  101. virtual FWwiseLoadedExternalSourceFuture LoadExternalSourceAsync(const FWwiseExternalSourceCookedData& InExternalSourceCookedData);
  102. virtual FWwiseResourceUnloadFuture UnloadExternalSourceAsync(FWwiseLoadedExternalSourceFuture&& InExternalSource);
  103. virtual FWwiseLoadedGroupValueFuture LoadGroupValueAsync(const FWwiseGroupValueCookedData& InGroupValueCookedData);
  104. virtual FWwiseResourceUnloadFuture UnloadGroupValueAsync(FWwiseLoadedGroupValueFuture&& InGroupValue);
  105. virtual FWwiseLoadedInitBankFuture LoadInitBankAsync(const FWwiseInitBankCookedData& InInitBankCookedData);
  106. virtual FWwiseResourceUnloadFuture UnloadInitBankAsync(FWwiseLoadedInitBankFuture&& InInitBank);
  107. virtual FWwiseLoadedMediaFuture LoadMediaAsync(const FWwiseMediaCookedData& InMediaCookedData);
  108. virtual FWwiseResourceUnloadFuture UnloadMediaAsync(FWwiseLoadedMediaFuture&& InMedia);
  109. virtual FWwiseLoadedShareSetFuture LoadShareSetAsync(const FWwiseLocalizedShareSetCookedData& InShareSetCookedData, const FWwiseLanguageCookedData* InLanguageOverride = nullptr);
  110. virtual FWwiseResourceUnloadFuture UnloadShareSetAsync(FWwiseLoadedShareSetFuture&& InShareSet);
  111. virtual FWwiseLoadedSoundBankFuture LoadSoundBankAsync(const FWwiseLocalizedSoundBankCookedData& InSoundBankCookedData, const FWwiseLanguageCookedData* InLanguageOverride = nullptr);
  112. virtual FWwiseResourceUnloadFuture UnloadSoundBankAsync(FWwiseLoadedSoundBankFuture&& InSoundBank);
  113. virtual FWwiseSharedPlatformId SystemPlatform() const;
  114. virtual FWwiseLanguageCookedData SystemLanguage() const;
  115. TUniquePtr<FWwiseResourceLoaderImpl> ResourceLoaderImpl;
  116. };