// Copyright Epic Games, Inc. All Rights Reserved. #include "LyraInventoryItemInstance.h" #include "Containers/Array.h" #include "GameplayTagContainer.h" #include "Inventory/LyraInventoryItemDefinition.h" #include "Misc/AssertionMacros.h" #include "Net/UnrealNetwork.h" #include "UObject/Class.h" #if UE_WITH_IRIS #include "Iris/ReplicationSystem/ReplicationFragmentUtil.h" #endif // UE_WITH_IRIS class FLifetimeProperty; ULyraInventoryItemInstance::ULyraInventoryItemInstance(const FObjectInitializer& ObjectInitializer) : Super(ObjectInitializer) { } void ULyraInventoryItemInstance::GetLifetimeReplicatedProps(TArray& OutLifetimeProps) const { Super::GetLifetimeReplicatedProps(OutLifetimeProps); DOREPLIFETIME(ThisClass, StatTags); DOREPLIFETIME(ThisClass, ItemDef); } #if UE_WITH_IRIS void ULyraInventoryItemInstance::RegisterReplicationFragments(UE::Net::FFragmentRegistrationContext& Context, UE::Net::EFragmentRegistrationFlags RegistrationFlags) { using namespace UE::Net; Super::RegisterReplicationFragments(Context, RegistrationFlags); // Build descriptors and allocate PropertyReplicationFragments for this object FReplicationFragmentUtil::CreateAndRegisterFragmentsForObject(this, Context, RegistrationFlags); } #endif // UE_WITH_IRIS void ULyraInventoryItemInstance::AddStatTagStack(FGameplayTag Tag, int32 StackCount) { StatTags.AddStack(Tag, StackCount); } void ULyraInventoryItemInstance::RemoveStatTagStack(FGameplayTag Tag, int32 StackCount) { StatTags.RemoveStack(Tag, StackCount); } int32 ULyraInventoryItemInstance::GetStatTagStackCount(FGameplayTag Tag) const { return StatTags.GetStackCount(Tag); } bool ULyraInventoryItemInstance::HasStatTag(FGameplayTag Tag) const { return StatTags.ContainsTag(Tag); } void ULyraInventoryItemInstance::SetItemDef(TSubclassOf InDef) { ItemDef = InDef; } const ULyraInventoryItemFragment* ULyraInventoryItemInstance::FindFragmentByClass(TSubclassOf FragmentClass) const { if ((ItemDef != nullptr) && (FragmentClass != nullptr)) { return GetDefault(ItemDef)->FindFragmentByClass(FragmentClass); } return nullptr; }