UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
SoundNode.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3
4#pragma once
5
6#include "CoreMinimal.h"
7#include "Math/RandomStream.h"
9#include "UObject/Object.h"
10#include "UObject/Class.h"
11#include "Sound/SoundWave.h"
12#include "SoundNode.generated.h"
13
14class FAudioDevice;
15class UEdGraphNode;
16struct FActiveSound;
18struct FWaveInstance;
19
20/*-----------------------------------------------------------------------------
21 USoundNode helper macros.
22-----------------------------------------------------------------------------*/
23
24struct FActiveSound;
25
26#define DECLARE_SOUNDNODE_ELEMENT(Type,Name) \
27 Type& Name = *((Type*)(Payload)); \
28 Payload += sizeof(Type);
29
30#define DECLARE_SOUNDNODE_ELEMENT_PTR(Type,Name) \
31 Type* Name = (Type*)(Payload); \
32 Payload += sizeof(Type);
33
34#define RETRIEVE_SOUNDNODE_PAYLOAD( Size ) \
35 uint8* Payload = NULL; \
36 uint32* RequiresInitialization = NULL; \
37 { \
38 uint32* TempOffset = ActiveSound.SoundNodeOffsetMap.Find(NodeWaveInstanceHash); \
39 uint32 Offset; \
40 if( !TempOffset ) \
41 { \
42 Offset = ActiveSound.SoundNodeData.AddZeroed( Size + sizeof(uint32)); \
43 ActiveSound.SoundNodeOffsetMap.Add( NodeWaveInstanceHash, Offset ); \
44 RequiresInitialization = (uint32*) &ActiveSound.SoundNodeData[Offset]; \
45 *RequiresInitialization = 1; \
46 Offset += sizeof(uint32); \
47 } \
48 else \
49 { \
50 RequiresInitialization = (uint32*) &ActiveSound.SoundNodeData[*TempOffset]; \
51 Offset = *TempOffset + sizeof(uint32); \
52 } \
53 Payload = &ActiveSound.SoundNodeData[Offset]; \
54 }
55
56UCLASS(abstract, hidecategories=Object, editinlinenew, MinimalAPI)
58{
60
61 static const int32 MAX_ALLOWED_CHILD_NODES = 32;
62
63 UPROPERTY(BlueprintReadOnly, Category = "SoundNode")
65
66#if WITH_EDITORONLY_DATA
68 UPROPERTY()
70
71 ENGINE_API class UEdGraphNode* GetGraphNode() const;
72#endif
73
76
77 bool bIsRetainingAudio;
78
79public:
80 //~ Begin UObject Interface
81#if WITH_EDITOR
82 ENGINE_API virtual void PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent) override;
83 ENGINE_API virtual void PostLoad() override;
85#endif //WITH_EDITOR
86 ENGINE_API virtual void Serialize(FArchive& Ar) override;
87 ENGINE_API virtual bool CanBeClusterRoot() const override;
88 ENGINE_API virtual bool CanBeInCluster() const override;
89 ENGINE_API virtual void BeginDestroy() override;
90 //~ End UObject Interface
91
92 //
93 //~ Begin USoundNode Interface.
94 //
95
101 virtual bool NotifyWaveInstanceFinished( struct FWaveInstance* WaveInstance )
102 {
103 return( false );
104 }
105
109 ENGINE_API virtual float GetMaxDistance() const;
110
112 virtual bool SupportsSubtitles() const
113 {
114 return false;
115 }
116
122 ENGINE_API virtual float GetDuration();
123
125 ENGINE_API virtual bool HasDelayNode() const;
126
128 ENGINE_API virtual bool HasConcatenatorNode() const;
129
131 ENGINE_API virtual bool HasAttenuationNode() const;
132
134 ENGINE_API virtual bool IsPlayWhenSilent() const;
135
136 ENGINE_API virtual void ParseNodes( FAudioDevice* AudioDevice, const UPTRINT NodeWaveInstanceHash, FActiveSound& ActiveSound, const struct FSoundParseParameters& ParseParams, TArray<FWaveInstance*>& WaveInstances );
137
141 ENGINE_API virtual void GetAllNodes( TArray<USoundNode*>& SoundNodes );
142
146 virtual int32 GetMaxChildNodes() const
147 {
148 return 1 ;
149 }
150
152 virtual int32 GetMinChildNodes() const
153 {
154 return 0;
155 }
156
158 ENGINE_API virtual int32 GetNumSounds(const UPTRINT NodeWaveInstanceHash, FActiveSound& ActiveSound) const;
159
160
169 ENGINE_API virtual void CreateStartingConnectors( void );
170 ENGINE_API virtual void InsertChildNode( int32 Index );
171 ENGINE_API virtual void RemoveChildNode( int32 Index );
172#if WITH_EDITOR
178
180 virtual FText GetInputPinName(int32 PinIndex) const { return FText::GetEmpty(); }
181
182 virtual FText GetTitle() const { return GetClass()->GetDisplayNameText(); }
183
185 ENGINE_API void PlaceNode(int32 NodeColumn, int32 NodeRow, int32 RowCount );
186
188 virtual void OnBeginPIE(const bool bIsSimulating) {};
189
191 virtual void OnEndPIE(const bool bIsSimulating) {};
192#endif //WITH_EDITOR
193
197 static ENGINE_API UPTRINT GetNodeWaveInstanceHash(const UPTRINT ParentWaveInstanceHash, const USoundNode* ChildNode, const uint32 ChildIndex);
198 static ENGINE_API UPTRINT GetNodeWaveInstanceHash(const UPTRINT ParentWaveInstanceHash, const UPTRINT ChildNodeHash, const uint32 ChildIndex);
199
200
208 ENGINE_API virtual void PrimeChildWavePlayers(bool bRecurse);
209
217 ENGINE_API virtual void RetainChildWavePlayers(bool bRecurse);
218
228 ENGINE_API virtual void OverrideLoadingBehaviorOnChildWaves(const bool bRecurse, const ESoundWaveLoadingBehavior InLoadingBehavior);
229
230 ENGINE_API virtual void ReleaseRetainerOnChildWavePlayers(bool bRecurse);
231
237 ENGINE_API virtual void RemoveSoundWaveOnChildWavePlayers();
238
245 ENGINE_API virtual void LoadChildWavePlayerAssets(bool bAddToRoot, bool bRecurse);
246};
247
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
FPlatformTypes::UPTRINT UPTRINT
An unsigned integer the same size as a pointer.
Definition Platform.h:1146
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
int32 ParseParams(const FString &ParamStr, TArray< FString > &OutArray)
Definition NativeJSScripting.cpp:193
#define UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
#define GENERATED_UCLASS_BODY(...)
Definition ObjectMacros.h:768
#define UCLASS(...)
Definition ObjectMacros.h:776
ESoundWaveLoadingBehavior
Definition SoundWaveLoadingBehavior.h:24
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition Archive.h:1208
Definition AudioDevice.h:417
Definition UObjectGlobals.h:2492
Definition Text.h:385
static CORE_API const FText & GetEmpty()
Definition Text.cpp:252
Definition Array.h:670
Definition EdGraphNode.h:289
virtual bool CanBeClusterRoot() const
Definition UObjectBaseUtility.h:396
virtual COREUOBJECT_API bool CanBeInCluster() const
Definition UObjectClusters.cpp:922
FORCEINLINE UClass * GetClass() const
Definition UObjectBase.h:217
Definition Object.h:95
virtual COREUOBJECT_API void BeginDestroy()
Definition Obj.cpp:1071
static COREUOBJECT_API void AddReferencedObjects(UObject *InThis, FReferenceCollector &Collector)
Definition GarbageCollection.cpp:6401
Definition SoundNode.h:58
virtual bool NotifyWaveInstanceFinished(struct FWaveInstance *WaveInstance)
Definition SoundNode.h:101
virtual bool SupportsSubtitles() const
Definition SoundNode.h:112
virtual int32 GetMaxChildNodes() const
Definition SoundNode.h:146
virtual int32 GetMinChildNodes() const
Definition SoundNode.h:152
U16 Index
Definition radfft.cpp:71
Definition ActiveSound.h:283
Definition UnrealType.h:6865
Definition RandomStream.h:20
Definition ActiveSound.h:64
Definition Audio.h:180
Definition ObjectPtr.h:488