Files
UnrealEngine/Engine/Source/Runtime/Foliage/Public/FoliageInstancedStaticMeshComponent.h
2025-05-18 13:04:45 +08:00

57 lines
2.0 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
#include "UObject/ObjectMacros.h"
#include "Engine/EngineTypes.h"
#include "Misc/Guid.h"
#include "Components/HierarchicalInstancedStaticMeshComponent.h"
#include "FoliageInstancedStaticMeshComponent.generated.h"
class AController;
/**
*/
DECLARE_DYNAMIC_MULTICAST_DELEGATE_SevenParams(FInstancePointDamageSignature, int32, InstanceIndex, float, Damage, class AController*, InstigatedBy, FVector, HitLocation, FVector, ShotFromDirection, const class UDamageType*, DamageType, AActor*, DamageCauser);
DECLARE_DYNAMIC_MULTICAST_DELEGATE_SevenParams(FInstanceRadialDamageSignature, const TArray<int32>&, Instances, const TArray<float>&, Damages, class AController*, InstigatedBy, FVector, Origin, float, MaxRadius, const class UDamageType*, DamageType, AActor*, DamageCauser);
UCLASS(ClassGroup = Foliage, Blueprintable, MinimalAPI)
class UFoliageInstancedStaticMeshComponent : public UHierarchicalInstancedStaticMeshComponent
{
GENERATED_UCLASS_BODY()
public:
UPROPERTY(BlueprintAssignable, Category = "Game|Damage")
FInstancePointDamageSignature OnInstanceTakePointDamage;
UPROPERTY(BlueprintAssignable, Category = "Game|Damage")
FInstanceRadialDamageSignature OnInstanceTakeRadialDamage;
UPROPERTY()
bool bEnableDiscardOnLoad;
#if WITH_EDITORONLY_DATA
UPROPERTY(transient)
uint64 FoliageHiddenEditorViews;
#endif// WITH_EDITOR
FOLIAGE_API virtual void ReceiveComponentDamage(float DamageAmount, FDamageEvent const& DamageEvent, AController* EventInstigator, AActor* DamageCauser) override;
//USceneComponent Interface
#if WITH_EDITOR
FOLIAGE_API virtual uint64 GetHiddenEditorViews() const override;
FOLIAGE_API virtual void PreEditChange(FProperty* PropertyAboutToChange) override;
#endif// WITH_EDITOR
/** Used by procedural generation to link generated component with its creator */
void SetGenerationGuid(const FGuid& InGuid) { GenerationGuid = InGuid; }
const FGuid& GetGenerationGuid() const { return GenerationGuid; }
private:
UPROPERTY()
FGuid GenerationGuid;
};