DRG-Femboy-Voice/Source/FSD/Public/ItemPlacerAggregator.h
2025-04-15 12:39:31 -07:00

106 lines
3.7 KiB
C++
Executable file

#pragma once
#include "CoreMinimal.h"
#include "UObject/NoExportTypes.h"
#include "GameplayTagContainer.h"
#include "ItemAggregator.h"
#include "Templates/SubclassOf.h"
#include "ItemPlacerAggregator.generated.h"
class AActor;
class AItem;
class AItemMarker;
class UDialogDataAsset;
UCLASS(Blueprintable, ClassGroup=Custom, meta=(BlueprintSpawnableComponent))
class UItemPlacerAggregator : public UItemAggregator {
GENERATED_BODY()
public:
DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FPlacementUpdatedDelegate, bool, InPlacementValid, const FTransform&, InPlacement);
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FMarkerDelegate, AItemMarker*, Marker);
UPROPERTY(EditAnywhere, Transient, meta=(AllowPrivateAccess=true))
TArray<TWeakObjectPtr<AActor>> IgnoreActors;
protected:
UPROPERTY(BlueprintAssignable, BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
FMarkerDelegate OnMarkerSpawned;
UPROPERTY(BlueprintAssignable, BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
FPlacementUpdatedDelegate OnPlacementChanged;
UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
float PlacementDistance;
UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
float MaxOffsetZ;
UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
float MinOffsetZ;
UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
float ItemHeight;
UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
UDialogDataAsset* ShoutOnPlaced;
UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
TSubclassOf<AItemMarker> MarkerType;
UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
bool CanOnlyPlaceOnTerrain;
UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
FGameplayTagQuery ExcludeTags;
UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
TArray<TSubclassOf<AActor>> InvalidAroundActors;
UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
float InvalidAroundSize;
UPROPERTY(BlueprintReadWrite, EditAnywhere, Transient, meta=(AllowPrivateAccess=true))
AItemMarker* PlacementMarker;
UPROPERTY(BlueprintReadWrite, EditAnywhere, Transient, meta=(AllowPrivateAccess=true))
AItem* Item;
UPROPERTY(BlueprintReadWrite, EditAnywhere, Transient, meta=(AllowPrivateAccess=true))
bool bIsPlacementActive;
UPROPERTY(BlueprintReadWrite, EditAnywhere, Transient, meta=(AllowPrivateAccess=true))
bool bIsMarkerHidden;
UPROPERTY(BlueprintReadWrite, EditAnywhere, Transient, meta=(AllowPrivateAccess=true))
bool bIsMarkerValid;
UPROPERTY(BlueprintReadWrite, EditAnywhere, Transient, meta=(AllowPrivateAccess=true))
bool bCanPlaceMarker;
UPROPERTY(BlueprintReadWrite, EditAnywhere, Transient, meta=(AllowPrivateAccess=true))
FTransform LastPlacement;
public:
UItemPlacerAggregator();
UFUNCTION(BlueprintCallable)
void ToggleValid(bool Valid);
UFUNCTION(BlueprintCallable)
void TogglePlacement(bool Inactive);
UFUNCTION(BlueprintCallable)
void ToggleMarkerHidden(bool InHidden);
UFUNCTION(BlueprintCallable, BlueprintPure)
void GetPlacementEx(FTransform& Placement, bool& OutValidLocation, bool& OutValidMarker) const;
UFUNCTION(BlueprintCallable, BlueprintPure)
bool GetPlacement(FTransform& Placement) const;
UFUNCTION(BlueprintCallable)
void ClearIgnoredActors();
UFUNCTION(BlueprintCallable)
void AddIgnoredActor(AActor* InActor);
};