UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
ProceduralFoliageComponent.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 "Misc/Guid.h"
9#include "InstancedFoliage.h"
10#include "ProceduralFoliageComponent.generated.h"
11
12class AVolume;
14class UDataLayerAsset;
15struct FBodyInstance;
16
19{
22 {
23 }
24
25 // The X coordinate (in whole tiles) of the bottom-left-most active tile
27
28 // The Y coordinate (in whole tiles) of the bottom-left-most active tile
30
31 // The total number of active tiles along the x-axis
33
34 // The total number of active tiles along the y-axis
36
37
39};
40
41UCLASS(BlueprintType, MinimalAPI)
43{
45
46
47 UPROPERTY(Category = "ProceduralFoliage", BlueprintReadWrite, EditAnywhere)
49
51 UPROPERTY(Category = "ProceduralFoliage", BlueprintReadWrite, EditAnywhere)
52 float TileOverlap;
53
54#if WITH_EDITORONLY_DATA
55
57 UPROPERTY(Category = "ProceduralFoliage", BlueprintReadWrite, EditAnywhere)
58 bool bAllowLandscape;
59
61 UPROPERTY(Category = "ProceduralFoliage", BlueprintReadWrite, EditAnywhere)
62 bool bAllowBSP;
63
65 UPROPERTY(Category = "ProceduralFoliage", BlueprintReadWrite, EditAnywhere)
67
69 UPROPERTY(Category = "ProceduralFoliage", BlueprintReadWrite, EditAnywhere)
71
73 UPROPERTY(Category = "ProceduralFoliage", BlueprintReadWrite, EditAnywhere)
74 bool bAllowFoliage;
75
77 UPROPERTY(Category = "ProceduralFoliage", BlueprintReadWrite, EditAnywhere)
78 bool bShowDebugTiles;
79
80#endif
81
82 struct FGenerateProceduralContentParams
83 {
84 FGenerateProceduralContentParams()
85 : FoliageSpawner(nullptr)
86 , Bounds(EForceInit::ForceInit)
87 , TileOverlap(0.f)
88 , ProceduralVolumeInstance(nullptr)
89 {
90 }
91
93 FBox Bounds;
94 float TileOverlap;
95 FGuid ProceduralGuid;
96 FBodyInstance* ProceduralVolumeInstance;
97 };
98
99 // UObject interface
100 FOLIAGE_API virtual void PostEditImport() override;
101
105 FOLIAGE_API FGenerateProceduralContentParams GetGenerateProceduralContentParams() const;
106
111 FOLIAGE_API bool ResimulateProceduralFoliage(TFunctionRef<void(const TArray<FDesiredFoliageInstance>&)> AddInstancesFunc);
112
117 FOLIAGE_API bool GenerateProceduralContent(TArray<FDesiredFoliageInstance>& OutInstances);
118 static FOLIAGE_API bool GenerateProceduralContent(const FGenerateProceduralContentParams& InParams, TArray<FDesiredFoliageInstance>& OutInstances);
119
121 FOLIAGE_API void RemoveProceduralContent(bool bInRebuildTree = true);
123
125 FOLIAGE_API bool HasSpawnedAnyInstances();
126
128 FOLIAGE_API FVector GetWorldPosition() const;
129 static FOLIAGE_API FVector GetWorldPosition(const FGenerateProceduralContentParams& Param);
130
132 FOLIAGE_API virtual FBox GetBounds() const;
133
135 FOLIAGE_API FBodyInstance* GetBoundsBodyInstance() const;
136
138 FOLIAGE_API void GetTileLayout(FTileLayout& OutTileLayout) const;
139 static FOLIAGE_API void GetTileLayout(const FGenerateProceduralContentParams& Params, FTileLayout& OutTileLayout);
140
141 void SetSpawningVolume(AVolume* InSpawningVolume) { SpawningVolume = InSpawningVolume; }
142 const FGuid& GetProceduralGuid() const { return ProceduralGuid; }
143
144#if WITH_EDITOR
148#endif
149
150private:
151 UPROPERTY()
152 TObjectPtr<AVolume> SpawningVolume;
153
154 UPROPERTY()
155 FGuid ProceduralGuid;
156
157#if WITH_EDITORONLY_DATA
159#endif
160};
@ ForceInit
Definition CoreMiscDefines.h:155
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 Volume.h:18
Definition Array.h:670
Definition AssetRegistryState.h:50
Definition ActorComponent.h:152
Definition DataLayerAsset.h:30
Definition ProceduralFoliageComponent.h:43
Definition ProceduralFoliageSpawner.h:18
Definition World.h:918
Definition BodyInstance.h:320
Definition Guid.h:109
Definition ProceduralFoliageComponent.h:19
FTileLayout()
Definition ProceduralFoliageComponent.h:20
int32 BottomLeftY
Definition ProceduralFoliageComponent.h:29
int32 BottomLeftX
Definition ProceduralFoliageComponent.h:26
FVector::FReal HalfHeight
Definition ProceduralFoliageComponent.h:38
int32 NumTilesX
Definition ProceduralFoliageComponent.h:32
int32 NumTilesY
Definition ProceduralFoliageComponent.h:35
Definition ObjectPtr.h:488
double FReal
Definition Vector.h:55