12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- #pragma once
- #include "Wwise/WwiseExternalSourceManager.h"
- #include "Wwise/CookedData/WwiseExternalSourceCookedData.h"
- #include "Wwise/WwiseFileState.h"
- #include "Wwise/WwiseFileHandlerBase.h"
- class FWwiseExternalSourceFileState;
- struct WWISEFILEHANDLER_API FWwiseExternalSourceState : public FWwiseExternalSourceCookedData
- {
- FWwiseExternalSourceState(const FWwiseExternalSourceCookedData& InCookedData);
- ~FWwiseExternalSourceState();
- TAtomic<int> LoadCount;
- void IncrementLoadCount();
- bool DecrementLoadCount();
- };
- using FWwiseExternalSourceStateSharedPtr = TSharedPtr<FWwiseExternalSourceState>;
- class WWISEFILEHANDLER_API FWwiseExternalSourceManagerImpl : public IWwiseExternalSourceManager, public FWwiseFileHandlerBase
- {
- public:
- FWwiseExternalSourceManagerImpl();
- ~FWwiseExternalSourceManagerImpl();
- virtual const TCHAR* GetManagingTypeName() const override { return TEXT("External Source"); }
- virtual void LoadExternalSource(const FWwiseExternalSourceCookedData& InExternalSourceCookedData, const FName& InRootPath,
- const FWwiseLanguageCookedData& InLanguage, FLoadExternalSourceCallback&& InCallback) override;
- virtual void UnloadExternalSource(const FWwiseExternalSourceCookedData& InExternalSourceCookedData, const FName& InRootPath,
- const FWwiseLanguageCookedData& InLanguage, FUnloadExternalSourceCallback&& InCallback) override;
- virtual void SetGranularity(AkUInt32 InStreamingGranularity) override;
- IWwiseStreamingManagerHooks& GetStreamingHooks() override final { return *this; }
- virtual TArray<uint32> PrepareExternalSourceInfos(TArray<AkExternalSourceInfo>& OutInfo,
- const TArray<FWwiseExternalSourceCookedData>&& InCookedData) override;
- virtual void BindPlayingIdToExternalSources(const uint32 InPlayingId, const TArray<uint32>& InMediaIds) override;
- virtual void OnEndOfEvent(const uint32 InPlayingID) override;
- virtual void SetExternalSourceMediaById(const FName& ExternalSourceName, const int32 MediaId) override;
- virtual void SetExternalSourceMediaByName(const FName& ExternalSourceName, const FName& MediaName) override;
- virtual void SetExternalSourceMediaWithIds(const int32 ExternalSourceCookie, const int32 MediaId) override;
- #if WITH_EDITORONLY_DATA
- virtual void Cook(FWwiseResourceCooker& InResourceCooker, const FWwiseExternalSourceCookedData& InCookedData,
- TFunctionRef<void(const TCHAR* Filename, void* Data, int64 Size)> WriteAdditionalFile,
- const FWwiseSharedPlatformId& InPlatform, const FWwiseSharedLanguageId& InLanguage) override;
- #endif
- protected:
-
- FRWLock CookieToMediaLock;
- TMap<uint32, FWwiseExternalSourceFileState*> CookieToMedia;
- TMultiMap<uint32, uint32> PlayingIdToMediaIds;
- uint32 StreamingGranularity;
- TMap<uint32, FWwiseExternalSourceStateSharedPtr> ExternalSourceStatesById;
- virtual void LoadExternalSourceImpl(const FWwiseExternalSourceCookedData& InExternalSourceCookedData, const FName& InRootPath,
- const FWwiseLanguageCookedData& InLanguage, FLoadExternalSourceCallback&& InCallback);
- virtual void UnloadExternalSourceImpl(const FWwiseExternalSourceCookedData& InExternalSourceCookedData, const FName& InRootPath,
- const FWwiseLanguageCookedData& InLanguage, FUnloadExternalSourceCallback&& InCallback);
- virtual FWwiseExternalSourceStateSharedPtr CreateExternalSourceState(const FWwiseExternalSourceCookedData& InExternalSourceCookedData, const FName& InRootPath);
- virtual bool CloseExternalSourceState(FWwiseExternalSourceState& InExternalSourceState);
- virtual void LoadExternalSourceMedia(const uint32 InExternalSourceCookie, const FName& InExternalSourceName, const FName& InRootPath, FLoadExternalSourceCallback&& InCallback);
- virtual void UnloadExternalSourceMedia(const uint32 InExternalSourceCookie, const FName& InExternalSourceName, const FName& InRootPath, FUnloadExternalSourceCallback&& InCallback);
- virtual uint32 PrepareExternalSourceInfo(AkExternalSourceInfo& OutInfo, const FWwiseExternalSourceCookedData& InCookedData);
- virtual void OnDeleteState(uint32 InShortId, FWwiseFileState& InFileState, EWwiseFileStateOperationOrigin InOperationOrigin, FDecrementStateCallback&& InCallback) override;
- };
|