UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
GameplayTagContainer.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#if UE_ENABLE_INCLUDE_ORDER_DEPRECATED_IN_5_4
6#include "CoreMinimal.h"
7#endif //UE_ENABLE_INCLUDE_ORDER_DEPRECATED_IN_5_4
8#include "Stats/Stats.h"
10#include "UObject/Object.h"
11#include "UObject/Class.h"
13#include "GameplayTagContainer.generated.h"
14
17class FJsonObject;
18struct FPropertyTag;
19
21
23
25
26UENUM(BlueprintType)
28{
29 // Means the filter is populated by any tag matches in this container.
30 Any,
31
32 // Means the filter is only populated if all of the tags in this container match.
33 All
34};
35
37#define INVALID_TAGNETINDEX MAX_uint16
38
43USTRUCT(BlueprintType, meta = (HasNativeMake = "/Script/GameplayTags.BlueprintGameplayTagLibrary.MakeLiteralGameplayTag", HasNativeBreak = "/Script/GameplayTags.BlueprintGameplayTagLibrary.GetTagName", DisableSplitPin))
45{
47
48
50 {
51 }
52
60 static GAMEPLAYTAGS_API FGameplayTag RequestGameplayTag(const FName& TagName, bool ErrorIfNotFound=true);
61
69 static GAMEPLAYTAGS_API bool IsValidGameplayTagString(const FString& TagString, FText* OutError = nullptr, FString* OutFixedString = nullptr);
70
72 inline bool operator==(FGameplayTag const& Other) const
73 {
74 return TagName == Other.TagName;
75 }
76
77 inline bool operator!=(FGameplayTag const& Other) const
78 {
79 return TagName != Other.TagName;
80 }
81
82 inline bool operator<(FGameplayTag const& Other) const
83 {
84 return UE::ComparisonUtility::CompareWithNumericSuffix(TagName, Other.TagName) < 0;
85 }
86
94 GAMEPLAYTAGS_API bool MatchesTag(const FGameplayTag& TagToCheck) const;
95
103 inline bool MatchesTagExact(const FGameplayTag& TagToCheck) const
104 {
105 if (!TagToCheck.IsValid())
106 {
107 return false;
108 }
109 // Only check explicit tag list
110 return TagName == TagToCheck.TagName;
111 }
112
120 GAMEPLAYTAGS_API int32 MatchesTagDepth(const FGameplayTag& TagToCheck) const;
121
129 GAMEPLAYTAGS_API bool MatchesAny(const FGameplayTagContainer& ContainerToCheck) const;
130
138 bool MatchesAnyExact(const FGameplayTagContainer& ContainerToCheck) const;
139
141 inline bool IsValid() const
142 {
143 return (TagName != NAME_None);
144 }
145
147 GAMEPLAYTAGS_API FGameplayTagContainer GetSingleTagContainer() const;
148
150 GAMEPLAYTAGS_API FGameplayTag RequestDirectParent() const;
151
156 GAMEPLAYTAGS_API FGameplayTagContainer GetGameplayTagParents() const;
157
162 GAMEPLAYTAGS_API void ParseParentTags(TArray<FGameplayTag>& UniqueParentTags) const;
163
168 GAMEPLAYTAGS_API FName GetTagLeafName() const;
169
171 inline friend uint32 GetTypeHash(const FGameplayTag& Tag)
172 {
173 return GetTypeHash(Tag.TagName);
174 }
175
177 inline FString ToString() const
178 {
179 return TagName.ToString();
180 }
181
183 inline FName GetTagName() const
184 {
185 return TagName;
186 }
187
189 {
190 return Ar << GameplayTag.TagName;
191 }
192
194 {
195 Slot << GameplayTag.TagName;
196 }
197
199 GAMEPLAYTAGS_API bool NetSerialize(FArchive& Ar, class UPackageMap* Map, bool& bOutSuccess);
200
202 GAMEPLAYTAGS_API void PostSerialize(const FArchive& Ar);
203 GAMEPLAYTAGS_API bool NetSerialize_Packed(FArchive& Ar, class UPackageMap* Map, bool& bOutSuccess);
204
206 GAMEPLAYTAGS_API bool SerializeFromMismatchedTag(const FPropertyTag& Tag, FStructuredArchive::FSlot Slot);
207
209 GAMEPLAYTAGS_API void FromExportString(const FString& ExportString, int32 PortFlags = 0);
210
212 GAMEPLAYTAGS_API bool ImportTextItem(const TCHAR*& Buffer, int32 PortFlags, UObject* Parent, FOutputDevice* ErrorText);
213
216
217protected:
218
219 bool NetSerialize_ForReplayUsingFastReplication(FArchive& Ar, class UPackageMapClient& PackageMapClient);
220
223
225 UPROPERTY(VisibleAnywhere, Category = GameplayTags, SaveGame)
226 FName TagName;
227
233};
234
235template<>
237{
238 enum
239 {
240 WithNetSerializer = true,
241 WithNetSharedSerialization = true,
242 WithPostSerialize = true,
243 WithStructuredSerializeFromMismatchedTag = true,
244 WithImportTextItem = true,
245 };
246};
247
249USTRUCT(BlueprintType, meta = (HasNativeMake = "/Script/GameplayTags.BlueprintGameplayTagLibrary.MakeGameplayTagContainerFromArray", HasNativeBreak = "/Script/GameplayTags.BlueprintGameplayTagLibrary.BreakGameplayTagContainer"))
251{
253
254
258
260 {
261 *this = Other;
262 }
263
266 {
267 AddTag(Tag);
268 }
269
271 : GameplayTags(MoveTemp(Other.GameplayTags))
272 , ParentTags(MoveTemp(Other.ParentTags))
273 {
274
275 }
276
280
282 template<class AllocatorType>
290
294 GAMEPLAYTAGS_API bool operator==(FGameplayTagContainer const& Other) const;
296
304 inline bool HasTag(const FGameplayTag& TagToCheck) const
305 {
306 if (!TagToCheck.IsValid())
307 {
308 return false;
309 }
310 // Check explicit and parent tag list
311 return GameplayTags.Contains(TagToCheck) || ParentTags.Contains(TagToCheck);
312 }
313
321 inline bool HasTagExact(const FGameplayTag& TagToCheck) const
322 {
323 if (!TagToCheck.IsValid())
324 {
325 return false;
326 }
327 // Only check check explicit tag list
328 return GameplayTags.Contains(TagToCheck);
329 }
330
339 {
340 if (ContainerToCheck.IsEmpty())
341 {
342 return false;
343 }
344 for (const FGameplayTag& OtherTag : ContainerToCheck.GameplayTags)
345 {
346 if (GameplayTags.Contains(OtherTag) || ParentTags.Contains(OtherTag))
347 {
348 return true;
349 }
350 }
351 return false;
352 }
353
362 {
363 if (ContainerToCheck.IsEmpty())
364 {
365 return false;
366 }
367 for (const FGameplayTag& OtherTag : ContainerToCheck.GameplayTags)
368 {
369 if (GameplayTags.Contains(OtherTag))
370 {
371 return true;
372 }
373 }
374 return false;
375 }
376
385 {
386 if (ContainerToCheck.IsEmpty())
387 {
388 return true;
389 }
390 for (const FGameplayTag& OtherTag : ContainerToCheck.GameplayTags)
391 {
392 if (!GameplayTags.Contains(OtherTag) && !ParentTags.Contains(OtherTag))
393 {
394 return false;
395 }
396 }
397 return true;
398 }
399
408 {
409 if (ContainerToCheck.IsEmpty())
410 {
411 return true;
412 }
413 for (const FGameplayTag& OtherTag : ContainerToCheck.GameplayTags)
414 {
415 if (!GameplayTags.Contains(OtherTag))
416 {
417 return false;
418 }
419 }
420 return true;
421 }
422
424 inline int32 Num() const
425 {
426 return GameplayTags.Num();
427 }
428
430 inline bool IsValid() const
431 {
432 return GameplayTags.Num() > 0;
433 }
434
436 inline bool IsEmpty() const
437 {
438 return GameplayTags.Num() == 0;
439 }
440
442 GAMEPLAYTAGS_API FGameplayTagContainer GetGameplayTagParents() const;
443
452
461
469 GAMEPLAYTAGS_API bool MatchesQuery(const struct FGameplayTagQuery& Query) const;
470
477 GAMEPLAYTAGS_API void AppendTags(FGameplayTagContainer const& Other);
478
492 GAMEPLAYTAGS_API void AppendMatchingTags(FGameplayTagContainer const& OtherA, FGameplayTagContainer const& OtherB);
493
499 GAMEPLAYTAGS_API void AddTag(const FGameplayTag& TagToAdd);
500
508 GAMEPLAYTAGS_API void AddTagFast(const FGameplayTag& TagToAdd);
509
517 GAMEPLAYTAGS_API bool AddLeafTag(const FGameplayTag& TagToAdd);
518
525 GAMEPLAYTAGS_API bool RemoveTag(const FGameplayTag& TagToRemove, bool bDeferParentTags=false);
526
532 GAMEPLAYTAGS_API void RemoveTags(const FGameplayTagContainer& TagsToRemove);
533
535 GAMEPLAYTAGS_API void Reset(int32 Slack = 0);
536
539
541 GAMEPLAYTAGS_API bool NetSerialize(FArchive& Ar, class UPackageMap* Map, bool& bOutSuccess);
542
544 GAMEPLAYTAGS_API bool ImportTextItem(const TCHAR*& Buffer, int32 PortFlags, UObject* Parent, FOutputDevice* ErrorText);
545
547 GAMEPLAYTAGS_API void PostScriptConstruct();
548
550 GAMEPLAYTAGS_API FString ToString() const;
551
553 GAMEPLAYTAGS_API void FromExportString(const FString& ExportString, int32 PortFlags = 0);
554
556 GAMEPLAYTAGS_API FString ToStringSimple(bool bQuoted = false) const;
557
559 GAMEPLAYTAGS_API TArray<FString> ToStringsMaxLen(int32 MaxLen) const;
560
562 GAMEPLAYTAGS_API FText ToMatchingText(EGameplayContainerMatchType MatchType, bool bInvertCondition) const;
563
569
571 GAMEPLAYTAGS_API const TArray<FGameplayTag>& GetGameplayTagArray() const;
572
578
580 {
581 return GameplayTags.IsValidIndex(Index);
582 }
583
585 {
586 if (IsValidIndex(Index))
587 {
588 return GameplayTags[Index];
589 }
590 return FGameplayTag();
591 }
592
594 {
595 return GameplayTags.Num() > 0 ? GameplayTags[0] : FGameplayTag();
596 }
597
599 {
600 return GameplayTags.Num() > 0 ? GameplayTags.Last() : FGameplayTag();
601 }
602
604 GAMEPLAYTAGS_API void FillParentTags();
605
608
609protected:
610
618 bool RemoveTagByExplicitName(const FName& TagName);
619
620 UE_DEPRECATED(5.4, "Use ParseParentTags or ExtractParentTags instead")
621 GAMEPLAYTAGS_API void AddParentsForTag(const FGameplayTag& Tag);
622
624 UPROPERTY(VisibleAnywhere, BlueprintReadWrite, Category=GameplayTags, SaveGame)
625 TArray<FGameplayTag> GameplayTags;
626
629 TArray<FGameplayTag> ParentTags;
630
637
638private:
639
645 inline friend TArray<FGameplayTag>::TConstIterator begin(const FGameplayTagContainer& Array) { return Array.CreateConstIterator(); }
647};
648
650{
651 if (ContainerToCheck.IsEmpty())
652 {
653 return false;
654 }
655 return ContainerToCheck.GameplayTags.Contains(*this);
656}
657
658template<>
673
676{
678
679 virtual void AddTags() = 0;
680};
681
683USTRUCT()
688
690UENUM()
703
705{
706 enum Type
707 {
709
710 // -----<new versions can be added before this line>-------------------------------------------------
711 // - this needs to be the last line (see note below)
714 };
715}
716
737USTRUCT(BlueprintType, meta=(HasNativeMake="/Script/GameplayTags.BlueprintGameplayTagLibrary.MakeGameplayTagQuery"))
739{
741
742public:
744
747
751
752 GAMEPLAYTAGS_API bool operator==(const FGameplayTagQuery& Other) const;
754
755private:
756 // Note: Properties need to be editable to allow FComponentPropertyWriter to serialize them, but are hidden in the editor by the customizations mentioned above.
757
759 UPROPERTY(EditAnywhere, Category = Hidden)
760 int32 TokenStreamVersion;
761
763 UPROPERTY(EditAnywhere, Category = Hidden)
764 TArray<FGameplayTag> TagDictionary;
765
767 UPROPERTY(EditAnywhere, Category = Hidden)
768 TArray<uint8> QueryTokenStream;
769
771 UPROPERTY(EditAnywhere, Category = Hidden)
772 FString UserDescription;
773
775 UPROPERTY(EditAnywhere, Category = Hidden)
776 FString AutoDescription;
777
779 FGameplayTag GetTagFromIndex(int32 TagIdx) const
780 {
781 ensure(TagDictionary.IsValidIndex(TagIdx));
782 return TagDictionary[TagIdx];
783 }
784
785public:
786
789 {
790 ensure(Tags.Num() == TagDictionary.Num());
791 TagDictionary.Reset();
792 TagDictionary.Append(Tags.GameplayTags);
793 }
794
797 {
798 ensure(1 == TagDictionary.Num());
799 TagDictionary.Reset();
800 TagDictionary.Add(Tag);
801 }
802
804 GAMEPLAYTAGS_API bool Matches(FGameplayTagContainer const& Tags) const;
805
807 GAMEPLAYTAGS_API bool IsEmpty() const;
808
810 GAMEPLAYTAGS_API void Clear();
811
814
816 static GAMEPLAYTAGS_API FGameplayTagQuery BuildQuery(struct FGameplayTagQueryExpression& RootQueryExpr, FString InDescription = FString());
817
819 GAMEPLAYTAGS_API void GetQueryExpr(struct FGameplayTagQueryExpression& OutExpr) const;
820
823
825 void SetUserDescription(const FString& InUserDescription) { UserDescription = InUserDescription; }
826
828 const FString& GetDescription() const { return UserDescription.IsEmpty() ? AutoDescription : UserDescription; };
829
832 {
833 OutGameplayTags = TagDictionary;
834 }
835
837 GAMEPLAYTAGS_API const TArray<FGameplayTag>& GetGameplayTagArray() const;
838
839#if WITH_EDITOR
842
845#endif // WITH_EDITOR
846
848
855 static GAMEPLAYTAGS_API FGameplayTagQuery MakeQuery_MatchAnyTags(FGameplayTagContainer const& InTags);
856 static GAMEPLAYTAGS_API FGameplayTagQuery MakeQuery_MatchAllTags(FGameplayTagContainer const& InTags);
857 static GAMEPLAYTAGS_API FGameplayTagQuery MakeQuery_MatchNoTags(FGameplayTagContainer const& InTags);
858 static GAMEPLAYTAGS_API FGameplayTagQuery MakeQuery_ExactMatchAnyTags(FGameplayTagContainer const& InTags);
859 static GAMEPLAYTAGS_API FGameplayTagQuery MakeQuery_ExactMatchAllTags(FGameplayTagContainer const& InTags);
860
861 static GAMEPLAYTAGS_API FGameplayTagQuery MakeQuery_MatchTag(FGameplayTag const& InTag);
862
863 friend class FQueryEvaluator;
864};
865
867{
877
883
889
895
901
907
913
919
926 {
928 TagSet.Add(Tag);
929 return *this;
930 }
931
933 {
935 TagSet.Append(Tags.GameplayTags);
936 return *this;
937 }
938
940 {
942 ExprSet.Add(Expr);
943 return *this;
944 }
945
948
951
954
957
968
971
974};
975
976template<>
978{
979 enum
980 {
981 WithCopy = true
982 };
983};
984
985
986
993UCLASS(editinlinenew, collapseCategories, Transient, MinimalAPI)
995{
997
998public:
1000 UPROPERTY(EditDefaultsOnly, Category = Query)
1001 FString UserDescription;
1002
1004 FString AutoDescription;
1005
1007 UPROPERTY(EditDefaultsOnly, Instanced, Category = Query)
1009
1010#if WITH_EDITOR
1012 GAMEPLAYTAGS_API void EmitTokens(TArray<uint8>& TokenStream, TArray<FGameplayTag>& TagDictionary, FString* DebugString=nullptr) const;
1013
1016#endif // WITH_EDITOR
1017
1018private:
1020 UPROPERTY()
1021 FGameplayTagQuery TagQueryExportText_Helper;
1022};
1023
1024UCLASS(abstract, editinlinenew, collapseCategories, Transient, MinimalAPI)
1026{
1028
1029#if WITH_EDITOR
1030public:
1032 virtual void EmitTokens(TArray<uint8>& TokenStream, TArray<FGameplayTag>& TagDictionary, FString* DebugString=nullptr) const {};
1033
1034protected:
1035 GAMEPLAYTAGS_API void EmitTagTokens(FGameplayTagContainer const& TagsToEmit, TArray<uint8>& TokenStream, TArray<FGameplayTag>& TagDictionary, FString* DebugString) const;
1037#endif // WITH_EDITOR
1038};
1039
1040UCLASS(BlueprintType, editinlinenew, collapseCategories, meta=(DisplayName="Any Tags Match"))
1042{
1044public:
1045 UPROPERTY(EditDefaultsOnly, Category = Expr)
1047
1048#if WITH_EDITOR
1049 virtual void EmitTokens(TArray<uint8>& TokenStream, TArray<FGameplayTag>& TagDictionary, FString* DebugString = nullptr) const override;
1050#endif // WITH_EDITOR
1051};
1052
1053UCLASS(BlueprintType, editinlinenew, collapseCategories, meta = (DisplayName = "All Tags Match"))
1055{
1057public:
1058 UPROPERTY(EditDefaultsOnly, Category = Expr)
1060
1061#if WITH_EDITOR
1062 virtual void EmitTokens(TArray<uint8>& TokenStream, TArray<FGameplayTag>& TagDictionary, FString* DebugString = nullptr) const override;
1063#endif // WITH_EDITOR
1064};
1065
1066UCLASS(BlueprintType, editinlinenew, collapseCategories, meta = (DisplayName = "No Tags Match"))
1068{
1070public:
1071 UPROPERTY(EditDefaultsOnly, Category = Expr)
1073
1074#if WITH_EDITOR
1075 virtual void EmitTokens(TArray<uint8>& TokenStream, TArray<FGameplayTag>& TagDictionary, FString* DebugString = nullptr) const override;
1076#endif // WITH_EDITOR
1077};
1078
1079UCLASS(BlueprintType, editinlinenew, collapseCategories, meta = (DisplayName = "Any Tags Exact Match"))
1081{
1083public:
1084 UPROPERTY(EditDefaultsOnly, Category = Expr)
1086
1087#if WITH_EDITOR
1088 virtual void EmitTokens(TArray<uint8>& TokenStream, TArray<FGameplayTag>& TagDictionary, FString* DebugString = nullptr) const override;
1089#endif // WITH_EDITOR
1090};
1091
1092UCLASS(BlueprintType, editinlinenew, collapseCategories, meta = (DisplayName = "All Tags Exact Match"))
1094{
1096public:
1097 UPROPERTY(EditDefaultsOnly, Category = Expr)
1099
1100#if WITH_EDITOR
1101 virtual void EmitTokens(TArray<uint8>& TokenStream, TArray<FGameplayTag>& TagDictionary, FString* DebugString = nullptr) const override;
1102#endif // WITH_EDITOR
1103};
1104
1105UCLASS(BlueprintType, editinlinenew, collapseCategories, meta = (DisplayName = "Any Expressions Match"))
1107{
1109public:
1110 UPROPERTY(EditAnywhere, Instanced, Category = Expr)
1112
1113#if WITH_EDITOR
1114 virtual void EmitTokens(TArray<uint8>& TokenStream, TArray<FGameplayTag>& TagDictionary, FString* DebugString = nullptr) const override;
1115#endif // WITH_EDITOR
1116};
1117
1118UCLASS(BlueprintType, editinlinenew, collapseCategories, meta = (DisplayName = "All Expressions Match"))
1120{
1122public:
1123 UPROPERTY(EditAnywhere, Instanced, Category = Expr)
1125
1126#if WITH_EDITOR
1127 virtual void EmitTokens(TArray<uint8>& TokenStream, TArray<FGameplayTag>& TagDictionary, FString* DebugString = nullptr) const override;
1128#endif // WITH_EDITOR
1129};
1130
1131UCLASS(BlueprintType, editinlinenew, collapseCategories, meta = (DisplayName = "No Expressions Match"))
1133{
1135public:
1136 UPROPERTY(EditAnywhere, Instanced, Category = Expr)
1138
1139#if WITH_EDITOR
1140 virtual void EmitTokens(TArray<uint8>& TokenStream, TArray<FGameplayTag>& TagDictionary, FString* DebugString = nullptr) const override;
1141#endif // WITH_EDITOR
1142};
1143
#define ensure( InExpression)
Definition AssertionMacros.h:464
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
#define TEXT(x)
Definition Platform.h:1272
FPlatformTypes::TCHAR TCHAR
Either ANSICHAR or WIDECHAR, depending on whether the platform supports wide characters or the requir...
Definition Platform.h:1135
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
#define DECLARE_CYCLE_STAT_EXTERN(CounterName, StatId, GroupId, API)
Definition Stats.h:679
#define DECLARE_STATS_GROUP(GroupDesc, GroupId, GroupCat)
Definition Stats.h:689
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
EGameplayContainerMatchType
Definition GameplayTagContainer.h:28
uint16 FGameplayTagNetIndex
Definition GameplayTagContainer.h:36
EGameplayTagQueryExprType
Definition GameplayTagContainer.h:692
UE_FORCEINLINE_HINT bool operator!=(const FIndexedPointer &Other) const
Definition LockFreeList.h:76
#define DECLARE_LOG_CATEGORY_EXTERN(CategoryName, DefaultVerbosity, CompileTimeVerbosity)
Definition LogMacros.h:361
#define UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
#define GENERATED_BODY(...)
Definition ObjectMacros.h:765
#define UCLASS(...)
Definition ObjectMacros.h:776
#define UENUM(...)
Definition ObjectMacros.h:749
#define USTRUCT(...)
Definition ObjectMacros.h:746
EPropertyObjectReferenceType
Definition ObjectMacros.h:533
#define GENERATED_USTRUCT_BODY(...)
Definition ObjectMacros.h:767
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
uint8_t uint8
Definition binka_ue_file_header.h:8
uint16_t uint16
Definition binka_ue_file_header.h:7
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition Archive.h:1208
Definition GameplayTagRedirectors.h:46
Definition JsonObject.h:23
Definition NameTypes.h:617
Definition NativeGameplayTags.h:59
Definition OutputDevice.h:133
Definition GameplayTagContainer.cpp:131
Definition StructuredArchiveSlots.h:52
Definition Text.h:385
Definition Array.h:670
UE_REWRITE SizeType Num() const
Definition Array.h:1144
void Reset(SizeType NewSize=0)
Definition Array.h:2246
TIndexedContainerIterator< const TArray, const ElementType, SizeType > TConstIterator
Definition Array.h:3348
UE_NODEBUG UE_FORCEINLINE_HINT SizeType Add(ElementType &&Item)
Definition Array.h:2696
UE_NODEBUG UE_FORCEINLINE_HINT bool IsValidIndex(SizeType Index) const
Definition Array.h:1122
void Append(const TArray< OtherElementType, OtherAllocatorType > &Source)
Definition Array.h:2412
UE_NODEBUG TConstIterator CreateConstIterator() const
Definition Array.h:3365
Definition Array.h:64
Definition SharedPointer.h:153
Definition GameplayTagContainer.h:1120
Definition GameplayTagContainer.h:1094
Definition GameplayTagContainer.h:1055
Definition GameplayTagContainer.h:1107
Definition GameplayTagContainer.h:1081
Definition GameplayTagContainer.h:1042
Definition GameplayTagContainer.h:1133
Definition GameplayTagContainer.h:1068
Definition GameplayTagContainer.h:1026
Definition GameplayTagContainer.h:995
Definition GameplayTagsManager.h:330
Definition Object.h:95
Definition PackageMapClient.h:465
Definition CoreNet.h:191
Definition GameplayTagContainer.h:705
Type
Definition GameplayTagContainer.h:707
@ LatestVersion
Definition GameplayTagContainer.h:713
@ InitialVersion
Definition GameplayTagContainer.h:708
@ VersionPlusOne
Definition GameplayTagContainer.h:712
int32 CompareWithNumericSuffix(FName A, FName B)
Definition ComparisonUtility.cpp:11
U16 Index
Definition radfft.cpp:71
Definition GameplayTagContainer.h:251
static GAMEPLAYTAGS_API const FGameplayTagContainer EmptyContainer
Definition GameplayTagContainer.h:607
FGameplayTagContainer(FGameplayTagContainer const &Other)
Definition GameplayTagContainer.h:259
bool IsEmpty() const
Definition GameplayTagContainer.h:436
bool HasTag(const FGameplayTag &TagToCheck) const
Definition GameplayTagContainer.h:304
bool IsValidIndex(int32 Index) const
Definition GameplayTagContainer.h:579
bool HasAny(const FGameplayTagContainer &ContainerToCheck) const
Definition GameplayTagContainer.h:338
bool HasAll(const FGameplayTagContainer &ContainerToCheck) const
Definition GameplayTagContainer.h:384
FGameplayTagContainer(FGameplayTagContainer &&Other)
Definition GameplayTagContainer.h:270
void GetGameplayTagArray(TArray< FGameplayTag > &InOutGameplayTags) const
Definition GameplayTagContainer.h:565
TArray< FGameplayTag >::TConstIterator CreateConstIterator() const
Definition GameplayTagContainer.h:574
FGameplayTag Last() const
Definition GameplayTagContainer.h:598
bool IsValid() const
Definition GameplayTagContainer.h:430
FGameplayTag GetByIndex(int32 Index) const
Definition GameplayTagContainer.h:584
bool HasTagExact(const FGameplayTag &TagToCheck) const
Definition GameplayTagContainer.h:321
bool HasAllExact(const FGameplayTagContainer &ContainerToCheck) const
Definition GameplayTagContainer.h:407
static FGameplayTagContainer CreateFromArray(const TArray< FGameplayTag, AllocatorType > &SourceTags)
Definition GameplayTagContainer.h:283
bool HasAnyExact(const FGameplayTagContainer &ContainerToCheck) const
Definition GameplayTagContainer.h:361
FGameplayTagContainer(const FGameplayTag &Tag)
Definition GameplayTagContainer.h:265
~FGameplayTagContainer()
Definition GameplayTagContainer.h:277
int32 Num() const
Definition GameplayTagContainer.h:424
FGameplayTag First() const
Definition GameplayTagContainer.h:593
TArray< FGameplayTag > GameplayTags
Definition GameplayTagContainer.h:625
friend TArray< FGameplayTag >::TConstIterator end(const FGameplayTagContainer &Array)
Definition GameplayTagContainer.h:646
Definition GameplayTagContainer.h:685
Definition GameplayTagContainer.h:676
virtual void AddTags()=0
GAMEPLAYTAGS_API FGameplayTagNativeAdder()
Definition GameplayTagContainer.cpp:1691
Definition GameplayTagsManager.h:178
Definition GameplayTagContainer.h:867
GAMEPLAYTAGS_API bool ConvertToJsonObject(TSharedRef< FJsonObject > &OutObject) const
Definition GameplayTagContainer.cpp:2375
FGameplayTagQueryExpression & AddTags(FGameplayTagContainer const &Tags)
Definition GameplayTagContainer.h:932
FGameplayTagQueryExpression & AddExpr(FGameplayTagQueryExpression &Expr)
Definition GameplayTagContainer.h:939
FGameplayTagQueryExpression & AnyTagsMatch()
Definition GameplayTagContainer.h:872
FGameplayTagQueryExpression & AllTagsMatch()
Definition GameplayTagContainer.h:878
FGameplayTagQueryExpression & AddTag(TCHAR const *TagString)
Definition GameplayTagContainer.h:920
TArray< FGameplayTag > TagSet
Definition GameplayTagContainer.h:956
bool UsesTagSet() const
Definition GameplayTagContainer.h:959
bool UsesExprSet() const
Definition GameplayTagContainer.h:964
EGameplayTagQueryExprType ExprType
Definition GameplayTagContainer.h:950
TArray< struct FGameplayTagQueryExpression > ExprSet
Definition GameplayTagContainer.h:953
FGameplayTagQueryExpression & NoTagsMatch()
Definition GameplayTagContainer.h:884
FGameplayTagQueryExpression & AddTag(FGameplayTag Tag)
Definition GameplayTagContainer.h:925
GAMEPLAYTAGS_API void EmitTokens(TArray< uint8 > &TokenStream, TArray< FGameplayTag > &TagDictionary) const
Definition GameplayTagContainer.cpp:2329
FGameplayTagQueryExpression & AnyTagsExactMatch()
Definition GameplayTagContainer.h:890
FGameplayTagQueryExpression & NoExprMatch()
Definition GameplayTagContainer.h:914
FGameplayTagQueryExpression & AllExprMatch()
Definition GameplayTagContainer.h:908
FGameplayTagQueryExpression & AllTagsExactMatch()
Definition GameplayTagContainer.h:896
FGameplayTagQueryExpression & AnyExprMatch()
Definition GameplayTagContainer.h:902
static GAMEPLAYTAGS_API bool MakeFromJsonObject(const TSharedRef< FJsonObject > &InObject, FGameplayTagQueryExpression &OutQueryExpression)
Definition GameplayTagContainer.cpp:2412
Definition GameplayTagContainer.h:739
static GAMEPLAYTAGS_API const FGameplayTagQuery EmptyQuery
Definition GameplayTagContainer.h:847
void ReplaceTagFast(FGameplayTag const &Tag)
Definition GameplayTagContainer.h:796
const FString & GetDescription() const
Definition GameplayTagContainer.h:828
void GetGameplayTagArray(TArray< FGameplayTag > &OutGameplayTags) const
Definition GameplayTagContainer.h:831
void ReplaceTagsFast(FGameplayTagContainer const &Tags)
Definition GameplayTagContainer.h:788
void SetUserDescription(const FString &InUserDescription)
Definition GameplayTagContainer.h:825
Definition GameplayTagContainer.h:45
bool IsValid() const
Definition GameplayTagContainer.h:141
friend FArchive & operator<<(FArchive &Ar, FGameplayTag &GameplayTag)
Definition GameplayTagContainer.h:188
friend uint32 GetTypeHash(const FGameplayTag &Tag)
Definition GameplayTagContainer.h:171
bool operator==(FGameplayTag const &Other) const
Definition GameplayTagContainer.h:72
static GAMEPLAYTAGS_API const FGameplayTag EmptyTag
Definition GameplayTagContainer.h:215
FName GetTagName() const
Definition GameplayTagContainer.h:183
friend void operator<<(FStructuredArchive::FSlot Slot, FGameplayTag &GameplayTag)
Definition GameplayTagContainer.h:193
bool MatchesAnyExact(const FGameplayTagContainer &ContainerToCheck) const
Definition GameplayTagContainer.h:649
FString ToString() const
Definition GameplayTagContainer.h:177
bool operator!=(FGameplayTag const &Other) const
Definition GameplayTagContainer.h:77
bool operator<(FGameplayTag const &Other) const
Definition GameplayTagContainer.h:82
bool MatchesTagExact(const FGameplayTag &TagToCheck) const
Definition GameplayTagContainer.h:103
Definition PropertyTag.h:38
FPropertyTag & operator=(FPropertyTag &&)=default
Definition ObjectPtr.h:488
Definition StructOpsTypeTraits.h:11
@ WithNetSharedSerialization
Definition StructOpsTypeTraits.h:31
@ WithIdenticalViaEquality
Definition StructOpsTypeTraits.h:18
@ WithNetSerializer
Definition StructOpsTypeTraits.h:26
@ WithPostScriptConstruct
Definition StructOpsTypeTraits.h:30
@ WithCopy
Definition StructOpsTypeTraits.h:17
@ WithStructuredSerializer
Definition StructOpsTypeTraits.h:24
@ WithImportTextItem
Definition StructOpsTypeTraits.h:21
static constexpr EPropertyObjectReferenceType WithSerializerObjectReferences
Definition StructOpsTypeTraits.h:41
Definition StructOpsTypeTraits.h:46