// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "Containers/Array.h" #include "Math/Transform.h" #include "Templates/SubclassOf.h" #include "UObject/NameTypes.h" #include "UObject/Object.h" #include "UObject/ObjectPtr.h" #include "UObject/UObjectGlobals.h" #include "LyraEquipmentDefinition.generated.h" class AActor; class ULyraAbilitySet; class ULyraEquipmentInstance; USTRUCT() struct FLyraEquipmentActorToSpawn { GENERATED_BODY() FLyraEquipmentActorToSpawn() {} UPROPERTY(EditAnywhere, Category=Equipment) TSubclassOf ActorToSpawn; UPROPERTY(EditAnywhere, Category=Equipment) FName AttachSocket; UPROPERTY(EditAnywhere, Category=Equipment) FTransform AttachTransform; }; /** * ULyraEquipmentDefinition * * Definition of a piece of equipment that can be applied to a pawn */ UCLASS(Blueprintable, Const, Abstract, BlueprintType) class ULyraEquipmentDefinition : public UObject { GENERATED_BODY() public: ULyraEquipmentDefinition(const FObjectInitializer& ObjectInitializer = FObjectInitializer::Get()); // Class to spawn UPROPERTY(EditDefaultsOnly, Category=Equipment) TSubclassOf InstanceType; // Gameplay ability sets to grant when this is equipped UPROPERTY(EditDefaultsOnly, Category=Equipment) TArray> AbilitySetsToGrant; // Actors to spawn on the pawn when this is equipped UPROPERTY(EditDefaultsOnly, Category=Equipment) TArray ActorsToSpawn; };