123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- #pragma once
- #include "AkAudioDevice.h"
- #include "AkComponent.h"
- struct AKAUDIO_API FWwiseEventTracker
- {
- static int GetScrubTimeMs() { return 100; }
-
- static void PostEventCallbackHandler(AkCallbackType in_eType, AkCallbackInfo* in_pCallbackInfo);
- void RemoveScheduledStop(AkPlayingID InID);
- void RemovePlayingID(AkPlayingID InID);
- void TryAddPlayingID(const AkPlayingID& PlayingID);
- void EmptyPlayingIDs();
- void EmptyScheduledStops();
- bool PlayingIDHasScheduledStop(AkPlayingID InID);
- void AddScheduledStop(AkPlayingID InID);
- bool IsDirty = false;
- bool IsPlaying() const { FScopeLock autoLock(&PlayingIDsLock); return PlayingIDs.Num() > 0; }
- bool HasScheduledStop() const { FScopeLock autoLock(&ScheduledStopsLock); return ScheduledStops.Num() > 0; }
- float GetClipDuration() const { return ClipEndTime - ClipStartTime; }
-
- TArray<AkPlayingID> PlayingIDs;
- TArray<AkPlayingID> ScheduledStops;
- FFloatRange EventDuration;
- FString EventName;
- UAkAudioEvent* Event;
- mutable FCriticalSection PlayingIDsLock;
- mutable FCriticalSection ScheduledStopsLock;
- float ClipStartTime = 0.0f;
- float ClipEndTime = 0.0f;
- int ScrubTailLengthMs = GetScrubTimeMs();
- float PreviousEventStartTime = -1.0f;
- float PreviousPlayingTime = -1.0f;
- float CurrentDurationEstimation = -1.0f;
- float CurrentDurationProportionRemaining = 1.0f;
- bool bStopAtSectionEnd = true;
- };
- namespace WwiseEventTriggering
- {
- AKAUDIO_API TArray<AkPlayingID, TInlineAllocator<16>> GetPlayingIds(FWwiseEventTracker& EventTracker);
- AKAUDIO_API void LogDirtyPlaybackWarning();
- AKAUDIO_API void StopAllPlayingIDs(FAkAudioDevice* AudioDevice, FWwiseEventTracker& EventTracker);
- AKAUDIO_API AkPlayingID PostEventOnDummyObject(FAkAudioDevice* AudioDevice, FWwiseEventTracker& EventTracker, float CurrentTime);
- AKAUDIO_API AkPlayingID PostEvent(UObject* Object, FAkAudioDevice* AudioDevice, FWwiseEventTracker& EventTracker, float CurrentTime);
- AKAUDIO_API void StopEvent(FAkAudioDevice* AudioDevice, AkPlayingID InPlayingID, FWwiseEventTracker* EventTracker);
- AKAUDIO_API void TriggerStopEvent(FAkAudioDevice* AudioDevice, FWwiseEventTracker& EventTracker, AkPlayingID PlayingID);
- AKAUDIO_API void ScheduleStopEventsForCurrentlyPlayingIDs(FAkAudioDevice* AudioDevice, FWwiseEventTracker& EventTracker);
-
- AKAUDIO_API void TriggerScrubSnippetOnDummyObject(FAkAudioDevice* AudioDevice, FWwiseEventTracker& EventTracker);
-
- AKAUDIO_API void TriggerScrubSnippet(UObject* Object, FAkAudioDevice* AudioDevice, FWwiseEventTracker& EventTracker);
- AKAUDIO_API void SeekOnEvent(UObject* Object, FAkAudioDevice* AudioDevice, AkReal32 in_fPercent, FWwiseEventTracker& EventTracker, AkPlayingID InPlayingID);
- AKAUDIO_API void SeekOnEvent(UObject* Object, FAkAudioDevice* AudioDevice, AkReal32 in_fPercent, FWwiseEventTracker& EventTracker);
- AKAUDIO_API void SeekOnEventWithDummyObject(FAkAudioDevice* AudioDevice, AkReal32 ProportionalTime, FWwiseEventTracker& EventTracker, AkPlayingID InPlayingID);
- AKAUDIO_API void SeekOnEventWithDummyObject(FAkAudioDevice* AudioDevice, AkReal32 ProportionalTime, FWwiseEventTracker& EventTracker);
- }
|