UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
ParticleModuleLocationSkelVertSurface.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"
9#include "ParticleModuleLocationSkelVertSurface.generated.h"
10
13class UParticleSystemComponent;
14class USkeletalMeshComponent;
18
19UENUM()
26
65
72
73
74UCLASS(editinlinenew, hidecategories=Object, meta=(DisplayName = "Skel Vert/Surf Location"), MinimalAPI)
76{
78
79
85 UPROPERTY(EditAnywhere, Category=VertSurface)
87
89 UPROPERTY(EditAnywhere, Category=VertSurface)
90 FVector UniversalOffset;
91
93 UPROPERTY(EditAnywhere, Category=VertSurface)
94 uint32 bUpdatePositionEachFrame:1;
95
97 UPROPERTY(EditAnywhere, Category=VertSurface)
98 uint32 bOrientMeshEmitters:1;
99
101 UPROPERTY(EditAnywhere, Category=VertSurface)
102 uint32 bInheritBoneVelocity:1;
103
105 UPROPERTY(EditAnywhere, Category=VertSurface)
106 float InheritVelocityScale;
107
111 UPROPERTY(EditAnywhere, Category=VertSurface)
112 FName SkelMeshActorParamName;
113
114#if WITH_EDITORONLY_DATA
116 UPROPERTY(EditAnywhere, Category=VertSurface)
118
119#endif // WITH_EDITORONLY_DATA
121 UPROPERTY(EditAnywhere, Category=VertSurface)
122 TArray<FName> ValidAssociatedBones;
123
125 UPROPERTY(EditAnywhere, Category=VertSurface)
126 uint32 bEnforceNormalCheck:1;
127
129 UPROPERTY(EditAnywhere, Category=VertSurface)
130 FVector NormalToCompare;
131
133 UPROPERTY(EditAnywhere, Category=VertSurface)
134 float NormalCheckToleranceDegrees;
135
138 UPROPERTY()
139 float NormalCheckTolerance;
140
145 UPROPERTY(EditAnywhere, Category=VertSurface)
146 TArray<int32> ValidMaterialIndices;
147
149 UPROPERTY(EditAnywhere, Category = VertSurface)
150 uint32 bInheritVertexColor : 1;
151
153 UPROPERTY(EditAnywhere, Category = VertSurface)
154 uint32 bInheritUV : 1;
155
157 UPROPERTY(EditAnywhere, Category = VertSurface)
158 uint32 InheritUVChannel;
159
160 //~ Begin UObject Interface
161 ENGINE_API virtual void PostLoad() override;
162#if WITH_EDITOR
163 ENGINE_API virtual void PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent) override;
164#endif // WITH_EDITOR
165 //~ End UObject Interface
166
167 //Begin UParticleModule Interface
168 ENGINE_API virtual void Spawn(const FSpawnContext& Context) override;
169 ENGINE_API virtual void Update(const FUpdateContext& Context) override;
170 ENGINE_API virtual void FinalUpdate(const FUpdateContext& Context) override;
171 ENGINE_API virtual uint32 PrepPerInstanceBlock(FParticleEmitterInstance* Owner, void* InstData) override;
172 ENGINE_API virtual uint32 RequiredBytes(UParticleModuleTypeDataBase* TypeData) override;
173 ENGINE_API virtual uint32 RequiredBytesPerInstance() override;
174 virtual bool TouchesMeshRotation() const override { return true; }
175 ENGINE_API virtual void AutoPopulateInstanceProperties(UParticleSystemComponent* PSysComp) override;
176 virtual bool CanTickInAnyThread() override
177 {
178 return false;
179 }
180#if WITH_EDITOR
181 ENGINE_API virtual int32 GetNumberOfCustomMenuOptions() const override;
184 ENGINE_API virtual bool IsValidForLODLevel(UParticleLODLevel* LODLevel, FString& OutErrorString) override;
185#endif
186 //End UParticleModule Interface
187
195 ENGINE_API void GetSkeletalMeshComponentSource(const FContext& Context, FModuleLocationVertSurfaceInstancePayload* InstancePayload);
196
209 ENGINE_API bool GetParticleLocation(const FContext& Context, FModuleLocationVertSurfaceInstancePayload* InstPayload, USkeletalMeshComponent* InSkelMeshComponent, int32 InPrimaryVertexIndex, FVector& OutPosition, FQuat& OutRotation, bool bSpawning = false);
210
222
228 ENGINE_API void UpdateBoneIndicesList(FParticleEmitterInstance* Owner);
229
230private:
232 ENGINE_API bool VertInfluencedByActiveBoneTyped(FSkeletalMeshLODRenderData& LODData, int32 LODIndex, const FSkelMeshRenderSection& Section, int32 VertIndex, USkeletalMeshComponent* InSkelMeshComponent, FModuleLocationVertSurfaceInstancePayload* InstancePayload, int32* OutBoneIndex);
233};
#define NULL
Definition oodle2base.h:134
@ INDEX_NONE
Definition CoreMiscDefines.h:150
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
UE::Math::TVector< float > FVector3f
Definition MathFwd.h:73
#define UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
#define GENERATED_UCLASS_BODY(...)
Definition ObjectMacros.h:768
#define UCLASS(...)
Definition ObjectMacros.h:776
#define UENUM(...)
Definition ObjectMacros.h:749
ELocationSkelVertSurfaceSource
Definition ParticleModuleLocationSkelVertSurface.h:21
@ UMETA
Definition ParticleModuleLocationSkelVertSurface.h:22
@ VERTSURFACESOURCE_MAX
Definition ParticleModuleLocationSkelVertSurface.h:24
uint8_t uint8
Definition binka_ue_file_header.h:8
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition NameTypes.h:617
Definition SkeletalMeshLODRenderData.h:128
Definition Array.h:670
Definition EnumAsByte.h:22
Definition ParticleHelper.h:855
Definition ParticleLODLevel.h:22
Definition ParticleModuleLocationBase.h:13
Definition ParticleModuleLocationSkelVertSurface.h:76
Definition ParticleModuleTypeDataBase.h:18
Definition ParticleModuleLocationSkelVertSurface.h:29
TPreallocatedArrayProxy< int32 > ValidAssociatedBoneIndices
Definition ParticleModuleLocationSkelVertSurface.h:39
TPreallocatedArrayProxy< FVector3f > PrevFrameBonePositions
Definition ParticleModuleLocationSkelVertSurface.h:41
int32 VertIndex
Definition ParticleModuleLocationSkelVertSurface.h:35
bool MeshIsValid()
Definition ParticleModuleLocationSkelVertSurface.h:63
TWeakObjectPtr< USkeletalMeshComponent > SourceComponent
Definition ParticleModuleLocationSkelVertSurface.h:31
TWeakObjectPtr< AActor > CachedActor
Definition ParticleModuleLocationSkelVertSurface.h:33
TPreallocatedArrayProxy< FVector3f > BoneVelocities
Definition ParticleModuleLocationSkelVertSurface.h:43
int32 NumValidAssociatedBoneIndices
Definition ParticleModuleLocationSkelVertSurface.h:37
void InitArrayProxies(int32 FixedArraySize)
Definition ParticleModuleLocationSkelVertSurface.h:49
int32 MeshMinLOD
Definition ParticleModuleLocationSkelVertSurface.h:46
Definition ParticleModuleLocationSkelVertSurface.h:68
int32 SourceIndex
Definition ParticleModuleLocationSkelVertSurface.h:70
Definition ParticleEmitterInstances.h:226
Definition UnrealType.h:6865
Definition SkeletalMeshLODRenderData.h:28
Definition ObjectPtr.h:488
Definition WeakObjectPtrTemplates.h:25
FORCEINLINE bool IsValid(bool bEvenIfPendingKill, bool bThreadsafeTest=false) const
Definition WeakObjectPtrTemplates.h:232