// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "CoreMinimal.h" #include "Components/HierarchicalInstancedStaticMeshComponent.h" #include "GrassInstancedStaticMeshComponent.generated.h" UCLASS(ClassGroup = Foliage, MinimalAPI, Hidden) class UGrassInstancedStaticMeshComponent : public UHierarchicalInstancedStaticMeshComponent { GENERATED_UCLASS_BODY() public: static FOLIAGE_API void BuildTreeAnyThread(TArray& InstanceTransforms, TArray& InstanceCustomDataFloats, int32 NumCustomDataFloats, const FBox& MeshBox, TArray& OutClusterTree, TArray& OutSortedInstances, TArray& OutInstanceReorderTable, int32& OutOcclusionLayerNum, int32 MaxInstancesPerLeaf, bool InGenerateInstanceScalingRange); FOLIAGE_API void AcceptPrebuiltTree(TArray& InClusterTree, int32 InOcclusionLayerNumNodes, int32 InNumBuiltRenderInstances, FStaticMeshInstanceData* InSharedInstanceBufferData); FOLIAGE_API bool SupportsWorldPositionOffsetVelocity() const override; int32 GetNumRenderInstances() const override { return NumBuiltRenderInstances; } private: virtual void BuildTree() override final; virtual void BuildTreeAsync() override final; virtual void BuildComponentInstanceData(ERHIFeatureLevel::Type FeatureLevel, FInstanceUpdateComponentDesc& OutData) override final; };