WwiseResourceLoader.h 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  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. class IWwiseSoundBankManager;
  19. class IWwiseExternalSourceManager;
  20. class IWwiseMediaManager;
  21. /**
  22. * @brief Operations available to manage and handle Wwise SoundBanks in Unreal.
  23. */
  24. class WWISERESOURCELOADER_API FWwiseResourceLoader
  25. {
  26. public:
  27. using FWwiseSetLanguageFuture = TWwiseFuture<void>;
  28. using FWwiseSetLanguagePromise = TWwisePromise<void>;
  29. inline static FWwiseResourceLoader* Get()
  30. {
  31. if (auto* Module = IWwiseResourceLoaderModule::GetModule())
  32. {
  33. return Module->GetResourceLoader();
  34. }
  35. return nullptr;
  36. }
  37. static FWwiseResourceLoader* Instantiate()
  38. {
  39. if (auto* Module = IWwiseResourceLoaderModule::GetModule())
  40. {
  41. return Module->InstantiateResourceLoader();
  42. }
  43. return nullptr;
  44. }
  45. virtual bool IsEnabled() const;
  46. virtual void Enable();
  47. virtual void Disable();
  48. FWwiseResourceLoader();
  49. virtual ~FWwiseResourceLoader() {}
  50. //
  51. // User-facing operations
  52. //
  53. FWwiseLanguageCookedData GetCurrentLanguage() const;
  54. FWwiseSharedPlatformId GetCurrentPlatform() const;
  55. /**
  56. * @brief Returns the actual Unreal file path needed in order to retrieve this particular Wwise Path.
  57. *
  58. * This method acts differently depending on usage in ResourceLoaderImpl or Editor. In Editor, this will return
  59. * the full path to the Generated SoundBanks folder. In a packaged game, this will return the full
  60. * path to the staged file.
  61. *
  62. * @param WwisePath Requested file path, as found in SoundBanksInfo.
  63. * @return The corresponding Unreal path.
  64. */
  65. virtual FString GetUnrealPath(const FName& InPath) const { return GetUnrealPath(InPath.ToString()); }
  66. virtual FString GetUnrealPath(const FString& InPath) const;
  67. virtual FName GetUnrealExternalSourcePath() const;
  68. virtual FString GetUnrealStagePath(const FName& InPath) const { return GetUnrealStagePath(InPath.ToString()); }
  69. virtual FString GetUnrealStagePath(const FString& InPath) const;
  70. #if WITH_EDITORONLY_DATA
  71. virtual FString GetUnrealGeneratedSoundBanksPath(const FName& InPath) const { return GetUnrealGeneratedSoundBanksPath(InPath.ToString()); }
  72. virtual FString GetUnrealGeneratedSoundBanksPath(const FString& InPath) const;
  73. virtual void SetUnrealGeneratedSoundBanksPath(const FDirectoryPath& DirectoryPath);
  74. virtual const FDirectoryPath& GetUnrealGeneratedSoundBanksPath();
  75. #endif
  76. /**
  77. * @brief Sets the language for the current runtime, optionally reloading all affected assets immediately
  78. * @param LanguageId The current language being processed, or 0 if none
  79. * @param ReloadLanguage What reload strategy should be used for language changes
  80. */
  81. virtual void SetLanguage(FWwiseLanguageCookedData InLanguage, EWwiseReloadLanguage InReloadLanguage);
  82. virtual void SetPlatform(const FWwiseSharedPlatformId& InPlatform);
  83. virtual FWwiseLoadedAuxBusPtr LoadAuxBus(const FWwiseLocalizedAuxBusCookedData& InAuxBusCookedData, const FWwiseLanguageCookedData* InLanguageOverride = nullptr);
  84. virtual void UnloadAuxBus(FWwiseLoadedAuxBusPtr&& InAuxBus);
  85. virtual FWwiseLoadedEventPtr LoadEvent(const FWwiseLocalizedEventCookedData& InEventCookedData, const FWwiseLanguageCookedData* InLanguageOverride = nullptr);
  86. virtual void UnloadEvent(FWwiseLoadedEventPtr&& InEvent);
  87. virtual FWwiseLoadedExternalSourcePtr LoadExternalSource(const FWwiseExternalSourceCookedData& InExternalSourceCookedData);
  88. virtual void UnloadExternalSource(FWwiseLoadedExternalSourcePtr&& InExternalSource);
  89. virtual FWwiseLoadedGroupValuePtr LoadGroupValue(const FWwiseGroupValueCookedData& InGroupValueCookedData);
  90. virtual void UnloadGroupValue(FWwiseLoadedGroupValuePtr&& InGroupValue);
  91. virtual FWwiseLoadedInitBankPtr LoadInitBank(const FWwiseInitBankCookedData& InInitBankCookedData);
  92. virtual void UnloadInitBank(FWwiseLoadedInitBankPtr&& InInitBank);
  93. virtual FWwiseLoadedMediaPtr LoadMedia(const FWwiseMediaCookedData& InMediaCookedData);
  94. virtual void UnloadMedia(FWwiseLoadedMediaPtr&& InMedia);
  95. virtual FWwiseLoadedShareSetPtr LoadShareSet(const FWwiseLocalizedShareSetCookedData& InShareSetCookedData, const FWwiseLanguageCookedData* InLanguageOverride = nullptr);
  96. virtual void UnloadShareSet(FWwiseLoadedShareSetPtr&& InShareSet);
  97. virtual FWwiseLoadedSoundBankPtr LoadSoundBank(const FWwiseLocalizedSoundBankCookedData& InSoundBankCookedData, const FWwiseLanguageCookedData* InLanguageOverride = nullptr);
  98. virtual void UnloadSoundBank(FWwiseLoadedSoundBankPtr&& InSoundBank);
  99. virtual FWwiseSetLanguageFuture SetLanguageAsync(FWwiseLanguageCookedData InLanguage, EWwiseReloadLanguage InReloadLanguage);
  100. virtual FWwiseLoadedAuxBusFuture LoadAuxBusAsync(const FWwiseLocalizedAuxBusCookedData& InAuxBusCookedData, const FWwiseLanguageCookedData* InLanguageOverride = nullptr);
  101. virtual FWwiseResourceUnloadFuture UnloadAuxBusAsync(FWwiseLoadedAuxBusFuture&& InAuxBus);
  102. virtual FWwiseLoadedEventFuture LoadEventAsync(const FWwiseLocalizedEventCookedData& InEventCookedData, const FWwiseLanguageCookedData* InLanguageOverride = nullptr);
  103. virtual FWwiseResourceUnloadFuture UnloadEventAsync(FWwiseLoadedEventFuture&& InEvent);
  104. virtual FWwiseLoadedExternalSourceFuture LoadExternalSourceAsync(const FWwiseExternalSourceCookedData& InExternalSourceCookedData);
  105. virtual FWwiseResourceUnloadFuture UnloadExternalSourceAsync(FWwiseLoadedExternalSourceFuture&& InExternalSource);
  106. virtual FWwiseLoadedGroupValueFuture LoadGroupValueAsync(const FWwiseGroupValueCookedData& InGroupValueCookedData);
  107. virtual FWwiseResourceUnloadFuture UnloadGroupValueAsync(FWwiseLoadedGroupValueFuture&& InGroupValue);
  108. virtual FWwiseLoadedInitBankFuture LoadInitBankAsync(const FWwiseInitBankCookedData& InInitBankCookedData);
  109. virtual FWwiseResourceUnloadFuture UnloadInitBankAsync(FWwiseLoadedInitBankFuture&& InInitBank);
  110. virtual FWwiseLoadedMediaFuture LoadMediaAsync(const FWwiseMediaCookedData& InMediaCookedData);
  111. virtual FWwiseResourceUnloadFuture UnloadMediaAsync(FWwiseLoadedMediaFuture&& InMedia);
  112. virtual FWwiseLoadedShareSetFuture LoadShareSetAsync(const FWwiseLocalizedShareSetCookedData& InShareSetCookedData, const FWwiseLanguageCookedData* InLanguageOverride = nullptr);
  113. virtual FWwiseResourceUnloadFuture UnloadShareSetAsync(FWwiseLoadedShareSetFuture&& InShareSet);
  114. virtual FWwiseLoadedSoundBankFuture LoadSoundBankAsync(const FWwiseLocalizedSoundBankCookedData& InSoundBankCookedData, const FWwiseLanguageCookedData* InLanguageOverride = nullptr);
  115. virtual FWwiseResourceUnloadFuture UnloadSoundBankAsync(FWwiseLoadedSoundBankFuture&& InSoundBank);
  116. virtual FWwiseSharedPlatformId SystemPlatform() const;
  117. virtual FWwiseLanguageCookedData SystemLanguage() const;
  118. TUniquePtr<FWwiseResourceLoaderImpl> ResourceLoaderImpl;
  119. };