UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
SoundEffectPreset.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2#pragma once
3
4#include "CoreMinimal.h"
7#include "UObject/Object.h"
10#include "SoundEffectBase.h"
11
12#include "SoundEffectPreset.generated.h"
13
14// Forward Declarations
15struct FAssetData;
16
17class FMenuBuilder;
19class IToolkitHost;
20
21
22UCLASS(config = Engine, abstract, editinlinenew, BlueprintType, MinimalAPI)
24{
26
27public:
29 virtual ~USoundEffectPreset() = default;
30
31
32 virtual bool CanFilter() const { return true; }
33 virtual FText GetAssetActionName() const PURE_VIRTUAL(USoundEffectPreset::GetAssetActionName, return FText(););
34 virtual UClass* GetSupportedClass() const PURE_VIRTUAL(USoundEffectPreset::GetSupportedClass, return nullptr;);
35 virtual USoundEffectPreset* CreateNewPreset(UObject* InParent, FName Name, EObjectFlags Flags) const PURE_VIRTUAL(USoundEffectPreset::CreateNewPreset, return nullptr;);
36 virtual FSoundEffectBase* CreateNewEffect() const PURE_VIRTUAL(USoundEffectPreset::CreateNewEffect, return nullptr;);
37 virtual bool HasAssetActions() const { return false; }
38 virtual void Init() PURE_VIRTUAL(USoundEffectPreset::Init, );
39 virtual void OnInit() {};
40 virtual FColor GetPresetColor() const { return FColor(200, 100, 100); }
41
42 ENGINE_API void Update();
43 ENGINE_API void AddEffectInstance(TSoundEffectPtr& InEffectPtr);
44 ENGINE_API void RemoveEffectInstance(TSoundEffectPtr& InEffectPtr);
45
46 ENGINE_API void AddReferencedEffects(FReferenceCollector& InCollector);
47
48 ENGINE_API virtual void BeginDestroy() override;
49
50protected:
51#if WITH_EDITOR
52 ENGINE_API virtual void PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent) override;
53#endif
54
56
57 // Array of instances which are using this preset
61
62 /* Immediately executes command for each active effect instance on the active thread */
63 template <typename T>
65 {
66 FScopeLock ScopeLock(&InstancesMutationCriticalSection);
67 for (TSoundEffectWeakPtr& Instance : Instances)
68 {
70 if (EffectStrongPtr.IsValid())
71 {
72 InForEachEffect(*static_cast<T*>(EffectStrongPtr.Get()));
73 }
74 }
75 }
76
77 /* Defers execution of command on each active effect instance on the audio render thread */
78 template <typename T>
80 {
82 {
83 T* InstancePtr = &OutInstance;
84 OutInstance.EffectCommand([InstancePtr, InForEachEffect]()
85 {
86 InForEachEffect(*InstancePtr);
87 });
88 });
89 }
90
91public:
92 // Creates a sound effect instance but does not initialize it.
93 template <typename TSoundEffectType>
107
108 // Creates a sound effect instance and initializes it
109 template <typename TInitData, typename TSoundEffectType>
125
126 static ENGINE_API void UnregisterInstance(TSoundEffectPtr InEffectPtr);
127
128 static ENGINE_API void RegisterInstance(USoundEffectPreset& InPreset, TSoundEffectPtr InEffectPtr);
129};
#define PURE_VIRTUAL(func,...)
Definition CoreMiscDefines.h:103
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
UE::FPlatformRecursiveMutex FCriticalSection
Definition CriticalSection.h:53
void Init()
Definition LockFreeList.h:4
#define GENERATED_BODY(...)
Definition ObjectMacros.h:765
EObjectFlags
Definition ObjectMacros.h:552
#define UCLASS(...)
Definition ObjectMacros.h:776
Definition Engine.Build.cs:7
Definition MultiBoxBuilder.h:310
Definition NameTypes.h:617
Definition UObjectGlobals.h:1292
Definition UObjectGlobals.h:2492
Definition ScopeLock.h:141
Definition SoundEffectBase.h:72
Definition Text.h:385
Definition Array.h:670
Definition AndroidPlatformMisc.h:14
Definition SharedPointer.h:692
Definition SharedPointer.h:1295
Definition Class.h:3793
Definition Object.h:95
Definition SoundEffectPreset.h:24
virtual ~USoundEffectPreset()=default
TArray< TSoundEffectWeakPtr > Instances
Definition SoundEffectPreset.h:58
bool bInitialized
Definition SoundEffectPreset.h:60
virtual bool CanFilter() const
Definition SoundEffectPreset.h:32
virtual FText GetAssetActionName() const PURE_VIRTUAL(USoundEffectPreset
Definition SoundEffectPreset.h:33
FCriticalSection InstancesMutationCriticalSection
Definition SoundEffectPreset.h:59
void EffectCommand(TFunction< void(T &)> InForEachEffect)
Definition SoundEffectPreset.h:79
static TSharedPtr< TSoundEffectType, ESPMode::ThreadSafe > CreateInstance(USoundEffectPreset &InOutPreset)
Definition SoundEffectPreset.h:94
void IterateEffects(TFunction< void(T &)> InForEachEffect)
Definition SoundEffectPreset.h:64
static TSharedPtr< TSoundEffectType, ESPMode::ThreadSafe > CreateInstance(const TInitData &InInitData, USoundEffectPreset &InOutPreset)
Definition SoundEffectPreset.h:110
virtual FColor GetPresetColor() const
Definition SoundEffectPreset.h:40
Definition AssetData.h:162
Definition Color.h:486
Definition UnrealType.h:6865