WwiseResourceCooker.h 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  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/WwiseProjectDatabase.h"
  17. #include "Wwise/WwiseResourceCookerModule.h"
  18. struct FWwiseSoundBankCookedData;
  19. struct FWwiseGameParameterCookedData;
  20. struct FWwiseTriggerCookedData;
  21. struct FWwiseAcousticTextureCookedData;
  22. class FWwiseCookingCache;
  23. class WWISERESOURCECOOKER_API FWwiseResourceCooker
  24. {
  25. public:
  26. using WriteAdditionalFileFunction = TFunctionRef<void(const TCHAR* Filename, void* Data, int64 Size)>;
  27. static FWwiseResourceCooker* GetDefault()
  28. {
  29. if (auto* Module = IWwiseResourceCookerModule::GetModule())
  30. {
  31. return Module->GetResourceCooker();
  32. }
  33. return nullptr;
  34. }
  35. static FWwiseResourceCooker* Instantiate()
  36. {
  37. if (auto* Module = IWwiseResourceCookerModule::GetModule())
  38. {
  39. return Module->InstantiateResourceCooker();
  40. }
  41. return nullptr;
  42. }
  43. static FWwiseResourceCooker* CreateForPlatform(
  44. const ITargetPlatform* TargetPlatform,
  45. const FWwiseSharedPlatformId& InPlatform,
  46. EWwiseExportDebugNameRule InExportDebugNameRule = EWwiseExportDebugNameRule::Release)
  47. {
  48. if (auto* Module = IWwiseResourceCookerModule::GetModule())
  49. {
  50. return Module->CreateCookerForPlatform(TargetPlatform, InPlatform, InExportDebugNameRule);
  51. }
  52. return nullptr;
  53. }
  54. static void DestroyForPlatform(const ITargetPlatform* TargetPlatform)
  55. {
  56. if (auto* Module = IWwiseResourceCookerModule::GetModule())
  57. {
  58. Module->DestroyCookerForPlatform(TargetPlatform);
  59. }
  60. }
  61. static FWwiseResourceCooker* GetForPlatform(const ITargetPlatform* TargetPlatform)
  62. {
  63. if (auto* Module = IWwiseResourceCookerModule::GetModule())
  64. {
  65. return Module->GetCookerForPlatform(TargetPlatform);
  66. }
  67. return nullptr;
  68. }
  69. static FWwiseResourceCooker* GetForArchive(const FArchive& InArchive)
  70. {
  71. if (auto* Module = IWwiseResourceCookerModule::GetModule())
  72. {
  73. return Module->GetCookerForArchive(InArchive);
  74. }
  75. return nullptr;
  76. }
  77. FWwiseResourceCooker() {}
  78. virtual ~FWwiseResourceCooker() {}
  79. void CookAuxBus(const FWwiseObjectInfo& InInfo, WriteAdditionalFileFunction WriteAdditionalFile);
  80. void CookEvent(const FWwiseEventInfo& InInfo, WriteAdditionalFileFunction WriteAdditionalFile);
  81. void CookExternalSource(uint32 InCookie, WriteAdditionalFileFunction WriteAdditionalFile);
  82. void CookInitBank(const FWwiseObjectInfo& InInfo, WriteAdditionalFileFunction WriteAdditionalFile);
  83. void CookMedia(const FWwiseObjectInfo& InInfo, WriteAdditionalFileFunction WriteAdditionalFile);
  84. void CookShareSet(const FWwiseObjectInfo& InInfo, WriteAdditionalFileFunction WriteAdditionalFile);
  85. void CookSoundBank(const FWwiseObjectInfo& InInfo, WriteAdditionalFileFunction WriteAdditionalFile);
  86. bool PrepareCookedData(FWwiseAcousticTextureCookedData& OutCookedData, const FWwiseObjectInfo& InInfo);
  87. bool PrepareCookedData(FWwiseLocalizedAuxBusCookedData& OutCookedData, const FWwiseObjectInfo& InInfo);
  88. bool PrepareCookedData(FWwiseLocalizedEventCookedData& OutCookedData, const FWwiseEventInfo& InInfo);
  89. bool PrepareCookedData(FWwiseExternalSourceCookedData& OutCookedData, uint32 InCookie);
  90. bool PrepareCookedData(FWwiseGameParameterCookedData& OutCookedData, const FWwiseObjectInfo& InInfo);
  91. bool PrepareCookedData(FWwiseGroupValueCookedData& OutCookedData, const FWwiseGroupValueInfo& InInfo, EWwiseGroupType InGroupType);
  92. bool PrepareCookedData(FWwiseInitBankCookedData& OutCookedData, const FWwiseObjectInfo& InInfo = FWwiseObjectInfo::DefaultInitBank);
  93. bool PrepareCookedData(FWwiseMediaCookedData& OutCookedData, const FWwiseObjectInfo& InInfo);
  94. bool PrepareCookedData(FWwiseLocalizedShareSetCookedData& OutCookedData, const FWwiseObjectInfo& InInfo);
  95. bool PrepareCookedData(FWwiseLocalizedSoundBankCookedData& OutCookedData, const FWwiseObjectInfo& InInfo);
  96. bool PrepareCookedData(FWwiseTriggerCookedData& OutCookedData, const FWwiseObjectInfo& InInfo);
  97. virtual FWwiseProjectDatabase* GetProjectDatabase() { return nullptr; }
  98. virtual const FWwiseProjectDatabase* GetProjectDatabase() const { return nullptr; }
  99. virtual void PrepareResourceCookerForPlatform(FWwiseProjectDatabase*&& InProjectDatabaseOverride, EWwiseExportDebugNameRule InExportDebugNameRule) {}
  100. virtual void SetSandboxRootPath(const TCHAR* InPackageFilename);
  101. FString GetSandboxRootPath() const {return SandboxRootPath;}
  102. FWwiseResourceLoader* GetResourceLoader();
  103. const FWwiseResourceLoader* GetResourceLoader() const;
  104. FWwiseSharedLanguageId GetCurrentLanguage() const;
  105. FWwiseSharedPlatformId GetCurrentPlatform() const;
  106. // Low-level operations
  107. virtual FWwiseCookingCache* GetCookingCache() { return nullptr; }
  108. void CookLocalizedAuxBusToSandbox(const FWwiseLocalizedAuxBusCookedData& InCookedData, WriteAdditionalFileFunction WriteAdditionalFile);
  109. void CookLocalizedSoundBankToSandbox(const FWwiseLocalizedSoundBankCookedData& InCookedData, WriteAdditionalFileFunction WriteAdditionalFile);
  110. void CookLocalizedEventToSandbox(const FWwiseLocalizedEventCookedData& InCookedData, WriteAdditionalFileFunction WriteAdditionalFile);
  111. void CookLocalizedShareSetToSandbox(const FWwiseLocalizedShareSetCookedData& InCookedData, WriteAdditionalFileFunction WriteAdditionalFile);
  112. virtual void CookAuxBusToSandbox(const FWwiseAuxBusCookedData& InCookedData, WriteAdditionalFileFunction WriteAdditionalFile) {}
  113. virtual void CookEventToSandbox(const FWwiseEventCookedData& InCookedData, WriteAdditionalFileFunction WriteAdditionalFile) {}
  114. virtual void CookExternalSourceToSandbox(const FWwiseExternalSourceCookedData& InCookedData, WriteAdditionalFileFunction WriteAdditionalFile) {}
  115. virtual void CookInitBankToSandbox(const FWwiseInitBankCookedData& InCookedData, WriteAdditionalFileFunction WriteAdditionalFile) {}
  116. virtual void CookMediaToSandbox(const FWwiseMediaCookedData& InCookedData, WriteAdditionalFileFunction WriteAdditionalFile) {}
  117. virtual void CookShareSetToSandbox(const FWwiseShareSetCookedData& InCookedData, WriteAdditionalFileFunction WriteAdditionalFile) {}
  118. virtual void CookSoundBankToSandbox(const FWwiseSoundBankCookedData& InCookedData, WriteAdditionalFileFunction WriteAdditionalFile) {}
  119. virtual void CookFileToSandbox(const FString& InInputPathName, const FName& InOutputPathName, WriteAdditionalFileFunction WriteAdditionalFile, bool bInStageRelativeToContent = false) {}
  120. virtual bool GetAcousticTextureCookedData(FWwiseAcousticTextureCookedData& OutCookedData, const FWwiseObjectInfo& InInfo) const { return false; }
  121. virtual bool GetAuxBusCookedData(FWwiseLocalizedAuxBusCookedData& OutCookedData, const FWwiseObjectInfo& InInfo) const { return false; }
  122. virtual bool GetEventCookedData(FWwiseLocalizedEventCookedData& OutCookedData, const FWwiseEventInfo& InInfo) const { return false; }
  123. virtual bool GetExternalSourceCookedData(FWwiseExternalSourceCookedData& OutCookedData, uint32 InCookie) const { return false; }
  124. virtual bool GetGameParameterCookedData(FWwiseGameParameterCookedData& OutCookedData, const FWwiseObjectInfo& InInfo) const { return false; }
  125. virtual bool GetInitBankCookedData(FWwiseInitBankCookedData& OutCookedData, const FWwiseObjectInfo& InInfo = FWwiseObjectInfo::DefaultInitBank) const { return false; }
  126. virtual bool GetMediaCookedData(FWwiseMediaCookedData& OutCookedData, const FWwiseObjectInfo& InInfo) const { return false; }
  127. virtual bool GetShareSetCookedData(FWwiseLocalizedShareSetCookedData& OutCookedData, const FWwiseObjectInfo& InInfo) const { return false; }
  128. virtual bool GetSoundBankCookedData(FWwiseLocalizedSoundBankCookedData& OutCookedData, const FWwiseObjectInfo& InInfo) const { return false; }
  129. virtual bool GetStateCookedData(FWwiseGroupValueCookedData& OutCookedData, const FWwiseGroupValueInfo& InInfo) const { return false; }
  130. virtual bool GetSwitchCookedData(FWwiseGroupValueCookedData& OutCookedData, const FWwiseGroupValueInfo& InInfo) const { return false; }
  131. virtual bool GetTriggerCookedData(FWwiseTriggerCookedData& OutCookedData, const FWwiseObjectInfo& InInfo) const { return false; }
  132. protected:
  133. FString SandboxRootPath;
  134. };