WwiseStreamableFileStateInfo.h 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  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/WwiseFileStateTools.h"
  17. #include "Wwise/Stats/FileHandler.h"
  18. #include "AkInclude.h"
  19. #include "WwiseDefines.h"
  20. #include "Wwise/WwiseFileCache.h"
  21. class WWISEFILEHANDLER_API FWwiseStreamableFileStateInfo: protected AkFileDesc
  22. {
  23. public:
  24. static FWwiseStreamableFileStateInfo* GetFromFileDesc(AkFileDesc& InFileDesc)
  25. {
  26. #if WWISE_2023_1_OR_LATER
  27. return static_cast<FWwiseStreamableFileStateInfo*>(&InFileDesc);
  28. #else
  29. return static_cast<FWwiseStreamableFileStateInfo*>(static_cast<AkFileDesc*>(InFileDesc.pCustomParam));
  30. #endif
  31. }
  32. AkFileDesc* GetFileDesc()
  33. {
  34. return this;
  35. }
  36. virtual ~FWwiseStreamableFileStateInfo() {}
  37. virtual bool CanProcessFileOp() const
  38. {
  39. UE_LOG(LogWwiseFileHandler, Error, TEXT("Cannot process read on a non-streaming asset"));
  40. return false;
  41. }
  42. virtual AKRESULT ProcessRead(AkFileDesc& InFileDesc, const AkIoHeuristics& InHeuristics, AkAsyncIOTransferInfo& OutTransferInfo, FWwiseAkFileOperationDone&& InFileOpDoneCallback)
  43. {
  44. UE_LOG(LogWwiseFileHandler, Error, TEXT("Cannot process read on a non-streaming asset"));
  45. return AK_Fail;
  46. }
  47. virtual AKRESULT ProcessWrite(AkFileDesc& InFileDesc, const AkIoHeuristics& InHeuristics, AkAsyncIOTransferInfo& OutTransferInfo, FWwiseAkFileOperationDone&& InFileOpDoneCallback)
  48. {
  49. UE_LOG(LogWwiseFileHandler, Error, TEXT("Cannot process write on a non-writable asset"));
  50. return AK_Fail;
  51. }
  52. virtual void CloseStreaming() {}
  53. protected:
  54. FWwiseStreamableFileStateInfo()
  55. {
  56. FMemory::Memset(*static_cast<AkFileDesc*>(this), 0);
  57. }
  58. };