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"
7#include "UObject/Object.h"
8#include "Math/RandomStream.h"
9#include "InstancedFoliage.h"
12#include "ProceduralFoliageTile.generated.h"
13
14class UFoliageType;
16struct FBodyInstance;
17
29UCLASS(MinimalAPI)
31{
33
34
40 FOLIAGE_API void Simulate(const UProceduralFoliageSpawner* InFoliageSpawner, const int32 RandomSeed, const int32 MaxNumSteps, const int32 InLastCancel);
41
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
70
71 // UObject interface
72 FOLIAGE_API virtual void GetResourceSizeEx(FResourceSizeEx& CumulativeResourceSize) override;
73 FOLIAGE_API virtual void BeginDestroy() override;
74
75private:
76
85 void GetInstancesInAABB(const FBox2D& LocalAABB, TArray<FProceduralFoliageInstance* >& OutInstances, bool bFullyContainedOnly = true) const;
86
94
96 void InstancesToArray();
97
101 void RunSimulation(const int32 MaxNumSteps, bool bOnlyInShade);
102
104 void StepSimulation();
105
108
110 bool HandleOverlaps(FProceduralFoliageInstance* Instance);
111
113 FProceduralFoliageInstance* NewSeed(const FVector& Location, float Scale, const UFoliageType* Type, float InAge, bool bBlocker = false);
114
116 void AgeSeeds();
117
118 void MarkPendingRemoval(FProceduralFoliageInstance* ToRemove);
119 void FlushPendingRemovals();
120
121 bool UserCancelled() const;
122
123private:
124
125 UPROPERTY()
127
128 TSet<FProceduralFoliageInstance*> PendingRemovals;
130
131 UPROPERTY()
133
134 int32 SimulationStep;
136
137 int32 RandomSeed;
139 bool bSimulateOnlyInShade;
140
141 int32 LastCancel;
142
143private:
144 float GetRandomGaussian();
145 FVector GetSeedOffset(const UFoliageType* Type, float MinDistance);
146};
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
#define UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
#define GENERATED_UCLASS_BODY(...)
Definition ObjectMacros.h:768
#define UCLASS(...)
Definition ObjectMacros.h:776
Definition ProceduralFoliageBroadphase.h:10
Definition Array.h:670
Definition FoliageType.h:106
Definition Object.h:95
Definition ProceduralFoliageSpawner.h:18
Definition ProceduralFoliageTile.h:31
Definition BodyInstance.h:320
Definition Guid.h:109
Definition ProceduralFoliageInstance.h:59
Definition RandomStream.h:20
Definition ResourceSize.h:31
Definition ObjectPtr.h:488
double FReal
Definition Vector.h:55