// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "Containers/Array.h" #include "Engine/World.h" #include "Templates/SubclassOf.h" #include "UObject/Object.h" #include "UObject/UObjectGlobals.h" #include "LyraEquipmentInstance.generated.h" class AActor; class APawn; struct FFrame; struct FLyraEquipmentActorToSpawn; /** * ULyraEquipmentInstance * * A piece of equipment spawned and applied to a pawn */ UCLASS(BlueprintType, Blueprintable) class ULyraEquipmentInstance : public UObject { GENERATED_BODY() public: ULyraEquipmentInstance(const FObjectInitializer& ObjectInitializer = FObjectInitializer::Get()); //~UObject interface virtual bool IsSupportedForNetworking() const override { return true; } virtual UWorld* GetWorld() const override final; //~End of UObject interface UFUNCTION(BlueprintPure, Category=Equipment) UObject* GetInstigator() const { return Instigator; } void SetInstigator(UObject* InInstigator) { Instigator = InInstigator; } UFUNCTION(BlueprintPure, Category=Equipment) APawn* GetPawn() const; UFUNCTION(BlueprintPure, Category=Equipment, meta=(DeterminesOutputType=PawnType)) APawn* GetTypedPawn(TSubclassOf PawnType) const; UFUNCTION(BlueprintPure, Category=Equipment) TArray GetSpawnedActors() const { return SpawnedActors; } virtual void SpawnEquipmentActors(const TArray& ActorsToSpawn); virtual void DestroyEquipmentActors(); virtual void OnEquipped(); virtual void OnUnequipped(); protected: #if UE_WITH_IRIS /** Register all replication fragments */ virtual void RegisterReplicationFragments(UE::Net::FFragmentRegistrationContext& Context, UE::Net::EFragmentRegistrationFlags RegistrationFlags) override; #endif // UE_WITH_IRIS UFUNCTION(BlueprintImplementableEvent, Category=Equipment, meta=(DisplayName="OnEquipped")) void K2_OnEquipped(); UFUNCTION(BlueprintImplementableEvent, Category=Equipment, meta=(DisplayName="OnUnequipped")) void K2_OnUnequipped(); private: UFUNCTION() void OnRep_Instigator(); private: UPROPERTY(ReplicatedUsing=OnRep_Instigator) TObjectPtr Instigator; UPROPERTY(Replicated) TArray> SpawnedActors; };