12#include "ManagedArrayCollection.generated.h"
14class FSimulationProperties;
124 bool IsA() {
return IsAType(T::StaticType()); }
127 T*
Cast() {
return IsAType(T::StaticType())?
static_cast<T*
>(
this):
nullptr; }
130 const T*
Cast()
const {
return IsAType(T::StaticType())?
static_cast<const T*
>(
this) :
nullptr; }
169 template<
class T = FManagedArrayCollection>
187 const FName& AttributeName = Entry.Key.Get<0>();
188 const FName& GroupName = Entry.Key.Get<1>();
204 if (NumElements(GroupName) !=
Collection->NumElements(GroupName))
207 Collection->AddElements(NumElements(GroupName), GroupName);
210 Collection->CopyAttribute(*
this, AttributeName, GroupName);
227 if (!HasGroup(
Group))
233 FName GroupIndexDependency;
234 if (
ensure(Parameters.bAllowCircularDependency || !IsConnected(Parameters.GroupIndexDependency,
Group)))
236 GroupIndexDependency = Parameters.GroupIndexDependency;
243 FValueType
NewAttribute = FValueType::MakeExternal<T>(&
ValueIn, NumElements(
Group), GroupIndexDependency, Parameters.Saved);
307 if (
const FValueType*
FoundValue =
Map.Find({ Name, Group }))
336 if (
const FValueType*
FoundValue =
Map.Find({ Name, Group }))
396 virtual void Reset() {
Map.Reset(); GroupInfo.Reset(); MakeDirty(); }
443 return GroupInfo.IsEmpty() &&
Map.IsEmpty();
583 CHAOS_API void SwapElements(int32 Index1, int32 Index2, FName Group);
625 void AddNewAttributeImpl(
FName Name,
FName Group,
const FConstructionParameters& Parameters)
628 if (!HasGroup(
Group))
636 FName GroupIndexDependency;
637 if (
ensure(Parameters.bAllowCircularDependency || !IsConnected(Parameters.GroupIndexDependency,
Group)))
639 GroupIndexDependency = Parameters.GroupIndexDependency;
647 FValueType
NewAttribute = FValueType::MakeManaged(
MoveTemp(ArrayPtr), InitialSize, GroupIndexDependency, Parameters.Saved);
689 FName GroupIndexDependency;
706 , bExternalValue(
false)
707 , SharedManagedArray(ArrayPtr.
Release())
708 , ManagedArray(SharedManagedArray.Get())
710 MakeUniqueForWrite();
711 ManagedArray->
Reserve(InitialSize);
712 ManagedArray->
Resize(InitialSize);
724 , bExternalValue(
true)
725 , SharedManagedArray(nullptr)
728 ManagedArray->
Reserve(InitialSize);
729 ManagedArray->
Resize(InitialSize);
739 template <
typename T>
745 template <
typename T>
757 EArrayType GetArrayType()
const {
return ArrayType; }
758 FName GetGroupIndexDependency()
const {
return GroupIndexDependency; };
759 bool IsPersistent()
const {
return bPersistent; }
760 bool IsExternal()
const {
return bExternalValue; }
765 template <
typename T>
768 template <
typename T>
778 template <
typename T>
786 template <
typename T>
790 MakeUniqueForWrite();
799 template <
typename T>
807 void Reserve(
int32 ReservedSize);
808 void Resize(
int32 NewSize);
809 void InitFrom(
const FValueType&
Other);
812 void CopyFrom(
const FValueType&
Other);
816 FValueType& operator=(
const FValueType&
Other) =
delete;
817 FValueType& operator=(FValueType&&
Other) =
delete;
900#define MANAGED_ARRAY_COLLECTION_INTERNAL(TYPE_NAME) \
901 static FName StaticType() { return FName(#TYPE_NAME); } \
902 virtual bool IsAType(FName InTypeName) const override { \
903 return InTypeName.IsEqual(TYPE_NAME::StaticType()) \
904 || Super::IsAType(InTypeName); \
#define checkSlow(expr)
Definition AssertionMacros.h:332
#define check(expr)
Definition AssertionMacros.h:314
#define ensure( InExpression)
Definition AssertionMacros.h:464
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
FArchive & operator<<(FArchive &Ar, FEnvQueryDebugProfileData::FStep &Data)
Definition EnvQueryTypes.cpp:489
return true
Definition ExternalRpcRegistry.cpp:601
EManagedArrayType
Definition ManagedArrayTypes.h:67
EManagedArrayType ManagedArrayType()
#define USTRUCT(...)
Definition ObjectMacros.h:746
#define GENERATED_USTRUCT_BODY(...)
Definition ObjectMacros.h:767
UE_REWRITE constexpr void Exchange(T &A, T &B)
Definition UnrealTemplate.h:627
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
uint32 Size
Definition VulkanMemory.cpp:4034
Definition ChaosArchive.h:167
Definition Archive.h:1208
Definition ManagedArray.h:154
FORCEINLINE bool IsDirty() const
Definition ManagedArray.h:225
virtual void Resize(const int32 Num)
Definition ManagedArray.h:161
virtual void Reserve(const int32 Num)
Definition ManagedArray.h:167
Definition ManagedArrayCollection.h:884
FManagedArrayCollection * ManagedCollection
Definition ManagedArrayCollection.h:895
virtual void InitializeInterface()=0
FManagedArrayInterface(FManagedArrayCollection *InManagedArray)
Definition ManagedArrayCollection.h:887
FManagedArrayInterface()
Definition ManagedArrayCollection.h:886
virtual void RemoveInterfaceAttributes()=0
virtual void CleanInterfaceForCook()=0
Definition NameTypes.h:617
Definition ArrayView.h:139
Definition ManagedArray.h:1099
Definition UnrealString.h.inl:34
Definition SharedPointer.h:692
Definition UniquePtr.h:107
Definition SkeletalMeshComponent.h:307
FORCEINLINE T * Get(const FObjectPtr &ObjectPtr)
Definition ObjectPtr.h:426
UTF8CHAR * Convert(UTF8CHAR *Dest, int32 DestLen, const WIDECHAR *Src)
Definition GenericPlatformString.cpp:595
@ false
Definition radaudio_common.h:23
Definition ManagedArrayCollection.h:22
bool operator==(const FAttributeAndGroupId &Other) const
Definition ManagedArrayCollection.h:26
FName AttributeName
Definition ManagedArrayCollection.h:23
FName GroupName
Definition ManagedArrayCollection.h:24
Definition ManagedArrayCollection.cpp:745
Definition ManagedArrayCollection.h:78
bool Saved
Definition ManagedArrayCollection.h:88
bool bAllowCircularDependency
Definition ManagedArrayCollection.h:89
FConstructionParameters(FName GroupIndexDependencyIn=NAME_None, bool SavedIn=true, bool bInAllowCircularDependency=false)
Definition ManagedArrayCollection.h:80
FName GroupIndexDependency
Definition ManagedArrayCollection.h:87
Definition ManagedArrayCollection.h:101
FManagedType(EManagedArrayType InType, FName InName, FName InGroup)
Definition ManagedArrayCollection.h:102
Definition ManagedArrayCollection.h:93
bool bDoValidation
Definition ManagedArrayCollection.h:96
bool bReindexDependentAttibutes
Definition ManagedArrayCollection.h:97
FProcessingParameters()
Definition ManagedArrayCollection.h:94
Definition ManagedArrayCollection.h:111
TManagedType(FName InName, FName InGroup)
Definition ManagedArrayCollection.h:112
Definition ManagedArrayCollection.h:56
void AddExternalAttribute(FName Name, FName Group, TManagedArray< T > &ValueIn, FConstructionParameters Parameters=FConstructionParameters())
Definition ManagedArrayCollection.h:223
virtual void Reset()
Definition ManagedArrayCollection.h:396
void MakeClean()
Definition ManagedArrayCollection.h:590
void MakeDirty()
Definition ManagedArrayCollection.h:589
T * NewCopy() const
Definition ManagedArrayCollection.h:170
const T * Cast() const
Definition ManagedArrayCollection.h:130
bool IsDirty() const
Definition ManagedArrayCollection.h:591
TManagedArray< T > * ModifyAttributeTyped(FName Name, FName Group)
Definition ManagedArrayCollection.h:368
TManagedArray< T > & ModifyAttribute(FName Name, FName Group)
Definition ManagedArrayCollection.h:354
int32 Version
Definition ManagedArrayCollection.h:856
TManagedArray< T > * FindAttributeTyped(FName Name, FName Group)
Definition ManagedArrayCollection.h:321
T * Cast()
Definition ManagedArrayCollection.h:127
void CopyTo(FManagedArrayCollection *Collection, const TArray< FName > &GroupsToSkip=TArray< FName >(), TArray< TTuple< FName, FName > > AttributesToSkip=TArray< TTuple< FName, FName > >()) const
Definition ManagedArrayCollection.h:181
virtual void MatchOptionalDefaultAttributes(const FManagedArrayCollection &InCollection)
Definition ManagedArrayCollection.h:835
const TManagedArray< T > & GetAttribute(FName Name, FName Group) const
Definition ManagedArrayCollection.h:387
virtual bool IsAType(FName InTypeName) const
Definition ManagedArrayCollection.h:121
static FName StaticType()
Definition ManagedArrayCollection.h:119
bool IsA()
Definition ManagedArrayCollection.h:124
bool IsEmpty() const
Definition ManagedArrayCollection.h:441
const TManagedArray< T > * FindAttributeTyped(FName Name, FName Group) const
Definition ManagedArrayCollection.h:334
TManagedArray< T > * FindOrAddAttributeTyped(FName Name, FName Group, FConstructionParameters Parameters=FConstructionParameters())
Definition ManagedArrayCollection.h:155
const TManagedArray< T > * FindAttribute(FName Name, FName Group) const
Definition ManagedArrayCollection.h:305
TManagedArray< T > & AddAttribute(FName Name, FName Group, FConstructionParameters Parameters=FConstructionParameters())
Definition ManagedArrayCollection.h:139
TManagedArray< T > * FindAttribute(FName Name, FName Group)
Definition ManagedArrayCollection.h:294
FORCEINLINE bool HasGroup(FName Group) const
Definition ManagedArrayCollection.h:463
Definition StructOpsTypeTraits.h:11
@ WithIdenticalViaEquality
Definition StructOpsTypeTraits.h:18
@ WithSerializer
Definition StructOpsTypeTraits.h:23
Definition StructOpsTypeTraits.h:46