Files
UnrealEngine/Engine/Source/Runtime/RHI/Private/RHIResourceCollection.cpp
Brandyn / Techy fcc1b09210 init
2026-04-04 15:40:51 -05:00

64 lines
1.4 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "RHIResourceCollection.h"
FRHIResourceCollection::FRHIResourceCollection(TConstArrayView<FRHIResourceCollectionMember> InMembers)
: FRHIResource(RRT_ResourceCollection)
, Members(InMembers)
{
for (const FRHIResourceCollectionMember& Member : Members)
{
if (Member.Resource)
{
Member.Resource->AddRef();
}
}
}
FRHIResourceCollection::~FRHIResourceCollection()
{
for (const FRHIResourceCollectionMember& Member : Members)
{
if (Member.Resource)
{
Member.Resource->Release();
}
}
}
void FRHIResourceCollection::UpdateMember(int32 Index, FRHIResourceCollectionMember InMember)
{
if (Index >= 0 && Index < Members.Num())
{
FRHIResourceCollectionMember& ExistingMember = Members[Index];
if (ExistingMember.Resource != InMember.Resource)
{
if (InMember.Resource)
{
InMember.Resource->AddRef();
}
if (ExistingMember.Resource)
{
ExistingMember.Resource->Release();
}
ExistingMember = InMember;
}
}
}
void FRHIResourceCollection::UpdateMembers(int32 StartIndex, TConstArrayView<FRHIResourceCollectionMember> NewMembers)
{
for (int32 NewMemberIndex = 0; NewMemberIndex < NewMembers.Num(); NewMemberIndex++)
{
UpdateMember(StartIndex + NewMemberIndex, NewMembers[NewMemberIndex]);
}
}
FRHIDescriptorHandle FRHIResourceCollection::GetBindlessHandle() const
{
return FRHIDescriptorHandle();
}