UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
DistributionFloat.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 "DistributionFloat.generated.h"
12
14
15#if !CPP //noexport struct
17USTRUCT(noexport)
24#endif
25
26USTRUCT()
28{
30
31private:
32 UPROPERTY()
33 float MinValue;
34
35 UPROPERTY()
36 float MaxValue;
37
38public:
39 UPROPERTY(EditAnywhere, export, noclear, Category=RawDistributionFloat)
40 TObjectPtr<class UDistributionFloat> Distribution;
41
42
44 : MinValue(0)
45 , MaxValue(0)
46 , Distribution(NULL)
47 {
48 }
49
51 ENGINE_API bool IsCreated();
52
53#if WITH_EDITOR
58#endif
59
63 ENGINE_API const FRawDistribution* GetFastRawDistribution();
64
68 ENGINE_API float GetValue(float F=0.0f, UObject* Data=NULL, struct FRandomStream* InRandomStream = NULL);
69
73 ENGINE_API void GetOutRange(float& MinOut, float& MaxOut);
74
78 inline bool IsUniform() { return LookupTable.SubEntryStride != 0; }
79
80 ENGINE_API void InitLookupTable();
81
82 inline bool HasLookupTable(bool bInitializeIfNeeded = true)
83 {
84#if WITH_EDITOR
86 {
87 InitLookupTable();
88 }
89#endif
90 return GDistributionType != 0 && !LookupTable.IsEmpty();
91 }
92
93 inline bool OkForParallel()
94 {
95 HasLookupTable(); // initialize if required
96 return true; // even if they stay distributions, this should probably be ok as long as nobody is changing them at runtime
97 //return !Distribution || HasLookupTable();
98 }
99};
100
103{
105
106
107 UPROPERTY(EditAnywhere, Category=Baked)
108 uint8 bCanBeBaked:1;
109
111 uint8 bIsDirty:1;
112
113protected:
114 UPROPERTY()
115 uint8 bBakedDataSuccesfully:1; //It's possible that even though we want to bake we are not able to because of content or code.
116public:
117
119 ENGINE_API virtual float GetFloatValue(float F = 0);
120
121
123 : Super(ObjectInitializer)
124 , bCanBeBaked(true)
125 , bIsDirty(true) // make sure the FRawDistribution is initialized
126 {
127 }
128
129 //@todo.CONSOLE: Currently, consoles need this? At least until we have some sort of cooking/packaging step!
134
138 virtual uint8 GetLockFlag() const { return 0; }
139
147 ENGINE_API virtual uint32 InitializeRawEntry(float Time, float* Values) const;
148
150 ENGINE_API virtual float GetValue( float F = 0.f, UObject* Data = NULL, struct FRandomStream* InRandomStream = NULL ) const;
151
152 //~ Begin FCurveEdInterface Interface
153 ENGINE_API virtual void GetInRange(float& MinIn, float& MaxIn) const override;
154 ENGINE_API virtual void GetOutRange(float& MinOut, float& MaxOut) const override;
155 //~ End FCurveEdInterface Interface
156
158 virtual bool CanBeBaked() const
159 {
160 return bCanBeBaked;
161 }
162
164 {
165 return bBakedDataSuccesfully;
166 }
167
172 {
173 return 1;
174 }
175
177#if WITH_EDITOR
178 ENGINE_API virtual void PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent) override;
179#endif // WITH_EDITOR
180 ENGINE_API virtual bool NeedsLoadForClient() const override;
181 ENGINE_API virtual bool NeedsLoadForServer() const override;
182 ENGINE_API virtual bool NeedsLoadForEditorGame() const override;
183 ENGINE_API virtual void Serialize(FStructuredArchive::FRecord Record) override;
185};
186
#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
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 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 DistributionFloat.h:103
virtual uint8 GetLockFlag() const
Definition DistributionFloat.h:138
int32 GetValueCount() const
Definition DistributionFloat.h:171
virtual bool CanBeBaked() const
Definition DistributionFloat.h:158
bool HasBakedSuccesfully() const
Definition DistributionFloat.h:163
virtual ERawDistributionOperation GetOperation() const
Definition DistributionFloat.h:133
Definition Distribution.h:66
Definition Object.h:95
Definition Distribution.h:27
uint8 SubEntryStride
Definition Distribution.h:47
bool IsEmpty() const
Definition Distributions.h:76
Definition DistributionFloat.h:19
FDistributionLookupTable Table
Definition DistributionFloat.h:21
void GetValue(float Time, float *RESTRICT OutValue) const
Definition Distributions.h:263
Definition UnrealType.h:6865
Definition RandomStream.h:20
Definition DistributionFloat.h:28
bool IsUniform()
Definition DistributionFloat.h:78
bool HasLookupTable(bool bInitializeIfNeeded=true)
Definition DistributionFloat.h:82
bool OkForParallel()
Definition DistributionFloat.h:93
Definition Distribution.h:58
Definition ObjectPtr.h:488