123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397 |
- #pragma once
- #include "AkAudioType.h"
- #include "AkGameplayTypes.h"
- #include "Wwise/CookedData/WwiseLocalizedEventCookedData.h"
- #include "Wwise/Loaded/WwiseLoadedEvent.h"
- #if WITH_EDITORONLY_DATA
- #include "Wwise/Info/WwiseEventInfo.h"
- #endif
- #include "AkAudioEvent.generated.h"
- class UAkGameObject;
- class UAkGroupValue;
- class UAkAuxBus;
- class UAkAudioBank;
- class UAkTrigger;
- UCLASS(BlueprintType)
- class AKAUDIO_API UAkAudioEvent : public UAkAudioType
- {
- GENERATED_BODY()
-
-
-
- public:
- UPROPERTY(Transient, VisibleAnywhere, BlueprintReadOnly, Category = "AkAudioEvent")
- float MaxAttenuationRadius = .0f;
-
- UPROPERTY(Transient, VisibleAnywhere, BlueprintReadOnly, Category = "AkAudioEvent")
- bool IsInfinite = false;
-
- UPROPERTY(Transient, VisibleAnywhere, BlueprintReadOnly, Category = "AkAudioEvent")
- float MinimumDuration = .0f;
-
- UPROPERTY(Transient, VisibleAnywhere, BlueprintReadOnly, Category = "AkAudioEvent")
- float MaximumDuration = .0f;
- #if WITH_EDITORONLY_DATA
- UPROPERTY(EditAnywhere, Category = "AkAudioEvent")
- FWwiseEventInfo EventInfo;
- #endif
- UPROPERTY(Transient, VisibleAnywhere, Category = "AkAudioEvent")
- FWwiseLocalizedEventCookedData EventCookedData;
- UPROPERTY(meta = (DeprecatedProperty, DeprecationMessage = "Used for migration"))
- UAkAudioBank* RequiredBank_DEPRECATED = nullptr;
- public:
-
- UFUNCTION(BlueprintCallable, BlueprintCosmetic, Category="Audiokinetic|Actor", meta=(AdvancedDisplay="1", AutoCreateRefTerm = "Delegate"))
- int32 PostOnActor(const AActor* Actor,
- const FOnAkPostEventCallback& Delegate,
- UPARAM(meta = (Bitmask, BitmaskEnum = "/Script/AkAudio.EAkCallbackType")) const int32 CallbackMask,
- const bool bStopWhenAttachedObjectDestroyed);
-
- UFUNCTION(BlueprintCallable, BlueprintCosmetic, Category="Audiokinetic|AkComponent", meta=(AdvancedDisplay="1", AutoCreateRefTerm = "Delegate"))
- int32 PostOnComponent(UAkComponent* Component,
- const FOnAkPostEventCallback& Delegate,
- UPARAM(meta = (Bitmask, BitmaskEnum = "/Script/AkAudio.EAkCallbackType")) const int32 CallbackMask,
- const bool bStopWhenAttachedObjectDestroyed);
-
- UFUNCTION(BlueprintCallable, BlueprintCosmetic, Category="Audiokinetic|AkGameObject", meta=(AdvancedDisplay="1", AutoCreateRefTerm = "Delegate"))
- int32 PostOnGameObject(UAkGameObject* GameObject,
- const FOnAkPostEventCallback& Delegate,
- UPARAM(meta = (Bitmask, BitmaskEnum = "/Script/AkAudio.EAkCallbackType")) const int32 CallbackMask);
-
- UFUNCTION(BlueprintCallable, Category = "Audiokinetic|Actor", meta = (Latent, LatentInfo = "LatentActionInfo", AdvancedDisplay = "1", bStopWhenAttachedObjectDestroyed="false"))
- int32 PostOnActorAndWait(const AActor* Actor,
- const bool bStopWhenAttachedObjectDestroyed,
- const FLatentActionInfo LatentActionInfo);
-
- UFUNCTION(BlueprintCallable, Category = "Audiokinetic|AkComponent", meta = (Latent, LatentInfo = "LatentActionInfo", AdvancedDisplay = "1", bStopWhenAttachedObjectDestroyed="false"))
- int32 PostOnComponentAndWait(UAkComponent* Component,
- const bool bStopWhenAttachedObjectDestroyed,
- const FLatentActionInfo LatentActionInfo);
-
- UFUNCTION(BlueprintCallable, Category = "Audiokinetic|AkGameObject", meta = (Latent, LatentInfo = "LatentActionInfo", AdvancedDisplay = "1", bStopWhenAttachedObjectDestroyed="false"))
- int32 PostOnGameObjectAndWait(UAkGameObject* GameObject,
- const FLatentActionInfo LatentActionInfo);
-
- UFUNCTION(BlueprintCallable, BlueprintCosmetic, Category="Audiokinetic", meta=(WorldContext="WorldContextObject", AdvancedDisplay = "2"))
- int32 PostAtLocation(const FVector Location,
- const FRotator Orientation,
- const FOnAkPostEventCallback& Callback,
- UPARAM(meta = (Bitmask, BitmaskEnum = "/Script/AkAudio.EAkCallbackType")) const int32 CallbackMask,
- const UObject* WorldContextObject);
-
- UFUNCTION(BlueprintCallable, BlueprintCosmetic, Category = "Audiokinetic|Actor", meta=(AdvancedDisplay = "2"))
- int32 ExecuteAction(const AkActionOnEventType ActionType,
- const AActor* Actor,
- const int32 PlayingID = 0,
- const int32 TransitionDuration = 0,
- const EAkCurveInterpolation FadeCurve = EAkCurveInterpolation::Linear);
- public:
-
- AkPlayingID PostOnActor(const AActor* Actor,
- const FOnAkPostEventCallback* Delegate,
- AkCallbackFunc Callback,
- void* Cookie,
- const AkCallbackType CallbackMask,
- FWaitEndOfEventAction* LatentAction,
- const bool bStopWhenAttachedObjectDestroyed,
- const EAkAudioContext AudioContext = EAkAudioContext::GameplayAudio);
-
- AkPlayingID PostOnComponent(UAkComponent* Component,
- const FOnAkPostEventCallback* Delegate,
- AkCallbackFunc Callback,
- void* Cookie,
- const AkCallbackType CallbackMask,
- FWaitEndOfEventAction* LatentAction,
- const bool bStopWhenAttachedObjectDestroyed,
- const EAkAudioContext AudioContext = EAkAudioContext::GameplayAudio);
-
- AkPlayingID PostAtLocation(const FVector& Location, const FRotator& Orientation, const UWorld* World,
- const FOnAkPostEventCallback* Delegate,
- AkCallbackFunc Callback,
- void* Cookie,
- const AkCallbackType CallbackMask,
- FWaitEndOfEventAction* LatentAction,
- const EAkAudioContext AudioContext = EAkAudioContext::GameplayAudio);
-
- AkPlayingID PostAmbient(
- const FOnAkPostEventCallback* Delegate,
- AkCallbackFunc Callback,
- void* Cookie,
- const AkCallbackType CallbackMask,
- FWaitEndOfEventAction* LatentAction,
- const EAkAudioContext AudioContext = EAkAudioContext::GameplayAudio);
-
- AkPlayingID PostOnGameObject(UAkGameObject* GameObject,
- const FOnAkPostEventCallback* Delegate,
- AkCallbackFunc Callback,
- void* Cookie,
- const AkCallbackType CallbackMask,
- FWaitEndOfEventAction* LatentAction,
- const EAkAudioContext AudioContext = EAkAudioContext::GameplayAudio);
-
- AkPlayingID PostOnGameObjectID(const AkGameObjectID GameObjectID,
- const FOnAkPostEventCallback* Delegate,
- AkCallbackFunc Callback,
- void* Cookie,
- const AkCallbackType CallbackMask,
- FWaitEndOfEventAction* LatentAction,
- const EAkAudioContext AudioContext = EAkAudioContext::GameplayAudio);
- private:
- template<typename FCreateCallbackPackage>
- AkPlayingID PostEvent(const AkGameObjectID GameObjectID,
- FCreateCallbackPackage&& CreateCallbackPackage,
- const EAkAudioContext AudioContext
- );
- public:
- void Serialize(FArchive& Ar) override;
- void BeginDestroy() override;
- virtual void LoadData() override {LoadEventData();}
- virtual void UnloadData(bool bAsync = false) override {UnloadEventData(bAsync);}
- virtual AkUInt32 GetShortID() const override {return EventCookedData.EventId;}
- bool IsDataFullyLoaded() const;
- bool IsLoaded() const;
- #if WITH_EDITOR
-
-
-
-
- void LoadEventDataForContentBrowserPreview();
- private:
- void OnBeginPIE(const bool bIsSimulating);
- FDelegateHandle OnBeginPIEDelegateHandle;
- #endif
- #if WITH_EDITORONLY_DATA
- public:
- virtual void FillInfo() override;
- virtual void FillMetadata(FWwiseProjectDatabase* ProjectDatabase) override;
- void CookAdditionalFilesOverride(const TCHAR* PackageFilename, const ITargetPlatform* TargetPlatform,
- TFunctionRef<void(const TCHAR* Filename, void* Data, int64 Size)> WriteAdditionalFile) override;
- virtual FWwiseObjectInfo* GetInfoMutable() override {return &EventInfo;}
- virtual FWwiseObjectInfo GetInfo() const override{return EventInfo;}
- virtual bool ObjectIsInSoundBanks() override;
- #endif
- TArray<FWwiseExternalSourceCookedData> GetAllExternalSources() const;
- private:
- void LoadEventData();
- void UnloadEventData(bool bAsync);
- FWwiseLoadedEventPtrAtomic LoadedEvent{nullptr};
- };
|