UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
DistributionVector.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 "Distributions.h"
11#include "DistributionVector.generated.h"
12
14
15UENUM()
17{
18 EDVLF_None UMETA(DisplayName="None"),
19 EDVLF_XY UMETA(DisplayName="XY"),
20 EDVLF_XZ UMETA(DisplayName="XZ"),
21 EDVLF_YZ UMETA(DisplayName="YZ"),
22 EDVLF_XYZ UMETA(DisplayName="XYZ"),
24};
25
26UENUM()
28{
29 EDVMF_Same UMETA(DisplayName="Same"),
30 EDVMF_Different UMETA(DisplayName="Different"),
31 EDVMF_Mirror UMETA(DisplayName="Mirror"),
33};
34
35#if !CPP //noexport struct
37USTRUCT(noexport)
44#endif
45
46#if !CPP //noexport struct
48USTRUCT(noexport)
55#endif
56
57USTRUCT()
59{
61
62private:
63 UPROPERTY()
64 float MinValue;
65
66 UPROPERTY()
67 float MaxValue;
68
69 UPROPERTY()
70 FVector MinValueVec;
71
72 UPROPERTY()
73 FVector MaxValueVec;
74
75public:
76 UPROPERTY(EditAnywhere, export, noclear, Category=RawDistributionVector)
77 TObjectPtr<class UDistributionVector> Distribution;
78
80 ENGINE_API bool IsCreated();
81
83 : MinValue(0)
84 , MaxValue(0)
85 , MinValueVec(FVector::ZeroVector)
86 , MaxValueVec(FVector::ZeroVector)
87 , Distribution(NULL)
88 {
89 }
90
91
92#if WITH_EDITOR
97#endif
98
102 ENGINE_API const FRawDistribution *GetFastRawDistribution();
103
107 ENGINE_API FVector GetValue(float F=0.0f, UObject* Data=NULL, int32 LastExtreme=0, struct FRandomStream* InRandomStream = NULL);
108
112 ENGINE_API void GetOutRange(float& MinOut, float& MaxOut);
113
117 ENGINE_API void GetRange(FVector& MinOut, FVector& MaxOut);
118
122 inline bool IsUniform() { return LookupTable.SubEntryStride != 0; }
123
124 ENGINE_API void InitLookupTable();
125
126 inline bool HasLookupTable(bool bInitializeIfNeeded = true)
127 {
128#if WITH_EDITOR
130 {
131 InitLookupTable();
132 }
133#endif
134 return GDistributionType != 0 && !LookupTable.IsEmpty();
135 }
136
137 inline bool OkForParallel()
138 {
139 HasLookupTable(); // initialize if required
140 return true; // even if they stay distributions, this should probably be ok as long as nobody is changing them at runtime
141 //return !Distribution || HasLookupTable();
142 }
143};
144
145
148{
150
151
152 UPROPERTY(EditAnywhere, Category=Baked)
153 uint8 bCanBeBaked:1;
154
156 UPROPERTY()
157 uint8 bIsDirty:1;
158protected:
159 UPROPERTY()
160 uint8 bBakedDataSuccesfully:1; //It's possible that even though we want to bake we are not able to because of content or code.
161public:
162
164 ENGINE_API virtual FVector GetVectorValue(float F = 0);
165
166
168 : Super(ObjectInitializer)
169 , bCanBeBaked(true)
170 , bIsDirty(true) // make sure the FRawDistribution is initialized
171 {
172 }
173
174 //@todo.CONSOLE: Currently, consoles need this? At least until we have some sort of cooking/packaging step!
179
183 virtual uint8 GetLockFlag() const { return 0; }
184
192 ENGINE_API virtual uint32 InitializeRawEntry(float Time, float* Values) const;
193
194 ENGINE_API virtual FVector GetValue( float F = 0.f, UObject* Data = NULL, int32 LastExtreme = 0, struct FRandomStream* InRandomStream = NULL ) const;
195
196 //~ Begin FCurveEdInterface Interface
197 ENGINE_API virtual void GetInRange(float& MinIn, float& MaxIn) const override;
198 ENGINE_API virtual void GetOutRange(float& MinOut, float& MaxOut) const override;
199 ENGINE_API virtual void GetRange(FVector& OutMin, FVector& OutMax) const;
200 //~ End FCurveEdInterface Interface
201
203 virtual bool CanBeBaked() const
204 {
205 return bCanBeBaked;
206 }
207
209 {
210 return bBakedDataSuccesfully;
211 }
212
217 {
218 return 3;
219 }
220
222#if WITH_EDITOR
223 ENGINE_API virtual void PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent) override;
224#endif // WITH_EDITOR
225 ENGINE_API virtual bool NeedsLoadForClient() const override;
226 ENGINE_API virtual bool NeedsLoadForServer() const override;
227 ENGINE_API virtual bool NeedsLoadForEditorGame() const override;
228 ENGINE_API virtual void Serialize(FStructuredArchive::FRecord Record) override;
231};
232
#define NULL
Definition oodle2base.h:134
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
EDistributionVectorLockFlags
Definition DistributionVector.h:17
@ EDVLF_MAX
Definition DistributionVector.h:23
EDistributionVectorMirrorFlags
Definition DistributionVector.h:28
@ UMETA
Definition DistributionVector.h:18
@ EDVMF_MAX
Definition DistributionVector.h:32
ENGINE_API uint32 GDistributionType
Definition Distributions.cpp:32
ERawDistributionOperation
Definition Distributions.h:19
@ RDO_None
Definition Distributions.h:21
return true
Definition ExternalRpcRegistry.cpp:601
#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
#define USTRUCT(...)
Definition ObjectMacros.h:746
#define GENERATED_USTRUCT_BODY(...)
Definition ObjectMacros.h:767
uint8_t uint8
Definition binka_ue_file_header.h:8
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition UObjectGlobals.h:1292
Definition StructuredArchiveSlots.h:144
Definition DistributionVector.h:148
bool HasBakedSuccesfully() const
Definition DistributionVector.h:208
virtual bool CanBeBaked() const
Definition DistributionVector.h:203
virtual ERawDistributionOperation GetOperation() const
Definition DistributionVector.h:178
virtual uint8 GetLockFlag() const
Definition DistributionVector.h:183
int32 GetValueCount() const
Definition DistributionVector.h:216
Definition Distribution.h:66
Definition Object.h:95
Definition Distribution.h:27
Definition UnrealType.h:6865
Definition RandomStream.h:20
Definition DistributionVector.h:59
bool OkForParallel()
Definition DistributionVector.h:137
bool HasLookupTable(bool bInitializeIfNeeded=true)
Definition DistributionVector.h:126
bool IsUniform()
Definition DistributionVector.h:122
Definition Distribution.h:58
Definition DistributionVector.h:50
Definition DistributionVector.h:39
FDistributionLookupTable Table
Definition DistributionVector.h:41
Definition ObjectPtr.h:488