UDocumentation
UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
ProceduralFoliageTile.h
Go to the documentation of this file.
1
// Copyright Epic Games, Inc. All Rights Reserved.
2
3
#pragma once
4
5
#include "
CoreMinimal.h
"
6
#include "
UObject/ObjectMacros.h
"
7
#include "
UObject/Object.h
"
8
#include "
Math/RandomStream.h
"
9
#include "
InstancedFoliage.h
"
10
#include "
ProceduralFoliageInstance.h
"
11
#include "
ProceduralFoliageBroadphase.h
"
12
#include "ProceduralFoliageTile.generated.h"
13
14
class
UFoliageType
;
15
class
UProceduralFoliageSpawner
;
16
struct
FBodyInstance
;
17
29
UCLASS
(MinimalAPI)
30
class
UProceduralFoliageTile
:
public
UObject
31
{
32
GENERATED_UCLASS_BODY
()
33
34
40
FOLIAGE_API
void
Simulate(
const
UProceduralFoliageSpawner
*
InFoliageSpawner
,
const
int32
RandomSeed,
const
int32
MaxNumSteps
,
const
int32
InLastCancel
);
41
45
FOLIAGE_API
void
ExtractDesiredInstances(
TArray<FDesiredFoliageInstance>
&
OutDesiredInstances
,
const
FTransform
&
WorldTM
,
const
FVector2D
&
ActorVolumeLocation
,
FVector::FReal
ActorVolumeMaxExtent
,
const
FGuid
& ProceduralGuid,
const
FVector::FReal
HalfHeight,
const
FBodyInstance
*
VolumeBodyInstance
,
bool
bEmptyTileInfo
=
true
);
46
54
FOLIAGE_API
void
CopyInstancesToTile(
UProceduralFoliageTile
*
ToTile
,
const
FBox2D
&
LocalAABB
,
const
FTransform
& RelativeTM,
const
float
Overlap
)
const
;
55
60
FOLIAGE_API
void
RemoveInstance(
FProceduralFoliageInstance
*
Inst
);
61
63
FOLIAGE_API
void
RemoveInstances();
64
66
FOLIAGE_API
void
Empty
();
67
69
FOLIAGE_API
void
InitSimulation(
const
UProceduralFoliageSpawner
*
InFoliageSpawner
,
const
int32
InRandomSeed
);
70
71
// UObject interface
72
FOLIAGE_API
virtual
void
GetResourceSizeEx(
FResourceSizeEx
&
CumulativeResourceSize
)
override
;
73
FOLIAGE_API
virtual
void
BeginDestroy()
override
;
74
75
private
:
76
85
void
GetInstancesInAABB(
const
FBox2D
&
LocalAABB
,
TArray<FProceduralFoliageInstance* >
&
OutInstances
,
bool
bFullyContainedOnly
=
true
)
const
;
86
93
void
AddInstances(
const
TArray<FProceduralFoliageInstance*>
&
NewInstances
,
const
FTransform
&
ToLocalTM
,
const
FBox2D
&
InnerLocalAABB
);
94
96
void
InstancesToArray();
97
101
void
RunSimulation(
const
int32
MaxNumSteps
,
bool
bOnlyInShade
);
102
104
void
StepSimulation();
105
107
void
AddRandomSeeds(
TArray<FProceduralFoliageInstance*>
&
OutInstances
);
108
110
bool
HandleOverlaps(
FProceduralFoliageInstance
*
Instance
);
111
113
FProceduralFoliageInstance
* NewSeed(
const
FVector
& Location,
float
Scale
,
const
UFoliageType
* Type,
float
InAge
,
bool
bBlocker =
false
);
114
115
void
SpreadSeeds(
TArray<FProceduralFoliageInstance*>
&
NewSeeds
);
116
void
AgeSeeds();
117
118
void
MarkPendingRemoval(
FProceduralFoliageInstance
*
ToRemove
);
119
void
FlushPendingRemovals();
120
121
bool
UserCancelled()
const
;
122
123
private
:
124
125
UPROPERTY
()
126
TObjectPtr<const UProceduralFoliageSpawner>
FoliageSpawner;
127
128
TSet<FProceduralFoliageInstance*>
PendingRemovals;
129
TSet<FProceduralFoliageInstance*>
InstancesSet;
130
131
UPROPERTY
()
132
TArray<FProceduralFoliageInstance>
InstancesArray;
133
134
int32
SimulationStep;
135
FProceduralFoliageBroadphase
Broadphase;
136
137
int32
RandomSeed;
138
FRandomStream
RandomStream
;
139
bool
bSimulateOnlyInShade;
140
141
int32
LastCancel;
142
143
private
:
144
float
GetRandomGaussian();
145
FVector
GetSeedOffset(
const
UFoliageType
* Type,
float
MinDistance);
146
};
EChaosVDSceneQueryType::Overlap
@ Overlap
ETransformConstraintType::Scale
@ Scale
CoreMinimal.h
int32
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition
Platform.h:1125
RandomStream.h
StaticCastSharedRef
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition
SharedPointer.h:127
InstancedFoliage.h
ObjectMacros.h
UPROPERTY
#define UPROPERTY(...)
UObject definition macros.
Definition
ObjectMacros.h:744
GENERATED_UCLASS_BODY
#define GENERATED_UCLASS_BODY(...)
Definition
ObjectMacros.h:768
UCLASS
#define UCLASS(...)
Definition
ObjectMacros.h:776
Object.h
ProceduralFoliageBroadphase.h
ProceduralFoliageInstance.h
ETextFilterExpressionType::Empty
@ Empty
ETypeContainerScope::Instance
@ Instance
EVariantTypes::RandomStream
@ RandomStream
FProceduralFoliageBroadphase
Definition
ProceduralFoliageBroadphase.h:10
TArray
Definition
Array.h:670
UFoliageType
Definition
FoliageType.h:106
UObject
Definition
Object.h:95
UProceduralFoliageSpawner
Definition
ProceduralFoliageSpawner.h:18
UProceduralFoliageTile
Definition
ProceduralFoliageTile.h:31
FBodyInstance
Definition
BodyInstance.h:320
FGuid
Definition
Guid.h:109
FProceduralFoliageInstance
Definition
ProceduralFoliageInstance.h:59
FRandomStream
Definition
RandomStream.h:20
FResourceSizeEx
Definition
ResourceSize.h:31
TObjectPtr
Definition
ObjectPtr.h:488
UE::Math::TBox2< double >
UE::Math::TTransform< double >
UE::Math::TVector2< double >
UE::Math::TVector< double >
UE::Math::TVector< double >::FReal
double FReal
Definition
Vector.h:55
Engine
Source
Runtime
Foliage
Public
ProceduralFoliageTile.h
Generated by
1.9.8