RealtimeStyleTransferRuntime/Source/LyraGame/Inventory/IPickupable.h

82 lines
1.7 KiB
C
Raw Normal View History

2022-05-23 18:41:30 +00:00
// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
#include "LyraInventoryItemDefinition.h"
#include "UObject/Interface.h"
#include "IPickupable.generated.h"
class ULyraInventoryItemInstance;
class ULyraInventoryManagerComponent;
USTRUCT(BlueprintType)
struct FPickupTemplate
{
GENERATED_BODY()
public:
UPROPERTY(EditAnywhere)
int32 StackCount = 1;
UPROPERTY(EditAnywhere)
TSubclassOf<ULyraInventoryItemDefinition> ItemDef;
};
USTRUCT(BlueprintType)
struct FPickupInstance
{
GENERATED_BODY()
public:
UPROPERTY(EditAnywhere, BlueprintReadOnly)
ULyraInventoryItemInstance* Item = nullptr;
};
USTRUCT(BlueprintType)
struct FInventoryPickup
{
GENERATED_BODY()
public:
UPROPERTY(EditAnywhere, BlueprintReadOnly)
TArray<FPickupInstance> Instances;
UPROPERTY(EditAnywhere, BlueprintReadOnly)
TArray<FPickupTemplate> Templates;
};
/** */
UINTERFACE(MinimalAPI, BlueprintType, meta = (CannotImplementInterfaceInBlueprint))
class UPickupable : public UInterface
{
GENERATED_BODY()
};
/** */
class IPickupable
{
GENERATED_BODY()
public:
UFUNCTION(BlueprintCallable)
virtual FInventoryPickup GetPickupInventory() const = 0;
};
/** */
UCLASS()
class UPickupableStatics : public UBlueprintFunctionLibrary
{
GENERATED_BODY()
public:
UPickupableStatics();
public:
UFUNCTION(BlueprintPure, meta = (WorldContext = "Ability"))
static TScriptInterface<IPickupable> GetIPickupableFromActorInfo(UGameplayAbility* Ability);
UFUNCTION(BlueprintCallable, BlueprintAuthorityOnly, meta = (WorldContext = "Ability"))
static void AddPickupInventory(ULyraInventoryManagerComponent* InventoryComponent, TScriptInterface<IPickupable> Pickupable);
};