11#include "Containers/Queue.h"
22#define EFFECT_SETTINGS_NAME2(CLASS_NAME, SUFFIX) F ## CLASS_NAME ## SUFFIX
23#define EFFECT_SETTINGS_NAME1(CLASS_NAME, SUFFIX) EFFECT_SETTINGS_NAME2(CLASS_NAME, SUFFIX)
24#define EFFECT_SETTINGS_NAME(CLASS_NAME) EFFECT_SETTINGS_NAME1(CLASS_NAME, Settings)
26#define EFFECT_PRESET_NAME2(CLASS_NAME, SUFFIX) U ## CLASS_NAME ## SUFFIX
27#define EFFECT_PRESET_NAME1(CLASS_NAME, SUFFIX) EFFECT_PRESET_NAME2(CLASS_NAME, SUFFIX)
28#define EFFECT_PRESET_NAME(CLASS_NAME) EFFECT_PRESET_NAME1(CLASS_NAME, Preset)
30#define GET_EFFECT_SETTINGS(EFFECT_NAME) \
31 U##EFFECT_NAME##Preset* _Preset = Cast<U##EFFECT_NAME##Preset>(Preset); \
32 F##EFFECT_NAME##Settings Settings = _Preset != nullptr ? _Preset->GetSettings() : F##EFFECT_NAME##Settings(); \
34#define EFFECT_PRESET_METHODS(EFFECT_NAME) \
35 virtual bool CanFilter() const override { return false; } \
36 virtual bool HasAssetActions() const { return true; } \
37 virtual FText GetAssetActionName() const override { return FText::FromString(#EFFECT_NAME); } \
38 virtual UClass* GetSupportedClass() const override { return EFFECT_PRESET_NAME(EFFECT_NAME)::StaticClass(); } \
39 virtual FSoundEffectBase* CreateNewEffect() const override { return new F##EFFECT_NAME; } \
40 virtual USoundEffectPreset* CreateNewPreset(UObject* InParent, FName Name, EObjectFlags Flags) const override \
42 USoundEffectPreset* NewPreset = NewObject<EFFECT_PRESET_NAME(EFFECT_NAME)>(InParent, GetSupportedClass(), Name, Flags); \
46 virtual void Init() override \
48 FScopeLock ScopeLock(&SettingsCritSect); \
49 SettingsCopy = Settings; \
51 void UpdateSettings(const F##EFFECT_NAME##Settings& InSettings) \
53 FScopeLock ScopeLock(&SettingsCritSect); \
54 SettingsCopy = InSettings; \
57 void UpdateSettings(TUniqueFunction<void(F##EFFECT_NAME##Settings&)> InCommand) \
59 FScopeLock ScopeLock(&SettingsCritSect); \
60 InCommand(SettingsCopy); \
63 F##EFFECT_NAME##Settings GetSettings() \
65 FScopeLock ScopeLock(&SettingsCritSect); \
66 return SettingsCopy; \
68 FCriticalSection SettingsCritSect; \
69 F##EFFECT_NAME##Settings SettingsCopy; \
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
@ INDEX_NONE
Definition CoreMiscDefines.h:150
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
UE::FPlatformRecursiveMutex FCriticalSection
Definition CriticalSection.h:53
Definition SoundEffectBase.h:72
FThreadSafeBool bChanged
Definition SoundEffectBase.h:109
FThreadSafeBool bIsRunning
Definition SoundEffectBase.h:113
ENGINE_API bool IsActive() const
Definition SoundEffectBase.cpp:14
ENGINE_API void EffectCommand(TUniqueFunction< void()> Command)
Definition SoundEffectBase.cpp:64
FThreadSafeBool bIsActive
Definition SoundEffectBase.h:114
ENGINE_API void SetEnabled(const bool bInIsEnabled)
Definition SoundEffectBase.cpp:19
ENGINE_API TWeakObjectPtr< USoundEffectPreset > & GetPresetPtr()
Definition SoundEffectBase.cpp:34
TWeakObjectPtr< USoundEffectPreset > Preset
Definition SoundEffectBase.h:110
uint32 GetParentPresetId() const
Definition SoundEffectBase.h:98
virtual ~FSoundEffectBase()=default
ENGINE_API USoundEffectPreset * GetPreset()
Definition SoundEffectBase.cpp:24
FCriticalSection SettingsCritSect
Definition SoundEffectBase.h:106
ENGINE_API void PumpPendingMessages()
Definition SoundEffectBase.cpp:69
virtual void OnPresetChanged()
Definition SoundEffectBase.h:77
TArray< uint8 > CurrentAudioThreadSettingsData
Definition SoundEffectBase.h:107
ENGINE_API bool IsPreset(USoundEffectPreset *InPreset) const
Definition SoundEffectBase.cpp:59
ENGINE_API bool Update()
Definition SoundEffectBase.cpp:44
TQueue< TUniqueFunction< void()> > CommandQueue
Definition SoundEffectBase.h:117
uint32 ParentPresetUniqueId
Definition SoundEffectBase.h:111
ENGINE_API FSoundEffectBase()
Definition SoundEffectBase.cpp:8
Definition ThreadSafeBool.h:17
Definition FunctionFwd.h:19
Definition SoundEffectPreset.h:24
Definition WeakObjectPtrTemplates.h:25