20template <
typename InIntType>
24 static_assert(std::is_integral_v<IntType>,
"Only an integer types are supported.");
93 template <
typename FloatType>
111 template <
typename OtherIntType>
136 return XYZ[ComponentIndex];
149 return XYZ[ComponentIndex];
162 return XYZ[ComponentIndex];
175 return XYZ[ComponentIndex];
428 return FMath::Max(FMath::Max(
X,
Y),
Z);
438 if constexpr (std::is_signed_v<IntType>)
440 return FMath::Max(FMath::Max(FMath::Abs(
X), FMath::Abs(
Y)), FMath::Abs(
Z));
455 return FMath::Min(FMath::Min(
X,
Y),
Z);
465 if constexpr (std::is_signed_v<IntType>)
467 return FMath::Min(FMath::Min(FMath::Abs(
X), FMath::Abs(
Y)), FMath::Abs(
Z));
521 template <
typename CharType>
524 Out <<
"X=" <<
X <<
" Y=" <<
Y <<
" Z=" <<
Z;
533 template <
typename CharType>
536 Vector.AppendString(Builder);
636 if constexpr (std::is_same_v<IntType, int32>)
640 else if constexpr (std::is_same_v<IntType, int64>)
644 else if constexpr (std::is_same_v<IntType, uint32>)
648 else if constexpr (std::is_same_v<IntType, uint64>)
654 static_assert(
sizeof(
IntType) == 0,
"Unimplemented");
660template <
typename IntType>
663template <
typename IntType>
668template <
typename InIntType>
672 static_assert(std::is_integral_v<IntType>,
"Only an integer types are supported.");
730 template <
typename OtherIntType>
748 return XY[ComponentIndex];
755 return XY[ComponentIndex];
980 return *
this == ZeroValue;
990 return FMath::Max(
X,
Y);
1000 if constexpr (std::is_signed_v<IntType>)
1002 return FMath::Max(FMath::Abs(
X), FMath::Abs(
Y));
1017 return FMath::Min(
X,
Y);
1027 if constexpr (std::is_signed_v<IntType>)
1029 return FMath::Min(FMath::Abs(
X), FMath::Abs(
Y));
1068 template <
typename CharType>
1071 Out <<
"X=" <<
X <<
" Y=" <<
Y;
1080 template <
typename CharType>
1083 Vector.AppendString(Builder);
1182 if constexpr (std::is_same_v<IntType, int32>)
1186 else if constexpr (std::is_same_v<IntType, int64>)
1190 else if constexpr (std::is_same_v<IntType, uint32>)
1194 else if constexpr (std::is_same_v<IntType, uint64>)
1200 static_assert(
sizeof(
IntType) == 0,
"Unimplemented");
1206template <
typename IntType>
1209template <
typename IntType>
1214template <
typename InIntType>
1218 static_assert(std::is_integral_v<IntType>,
"Only an integer types are supported.");
1284 template <
typename OtherIntType>
1310 return XYZW[ComponentIndex];
1323 return XYZW[ComponentIndex];
1336 return XYZW[ComponentIndex];
1349 return XYZW[ComponentIndex];
1545 return TIntVector4(
X >> Shift,
Y >> Shift,
Z >> Shift, W >> Shift);
1556 return TIntVector4(
X << Shift,
Y << Shift,
Z << Shift, W << Shift);
1598 return *
this == ZeroValue;
1608 return FMath::Max(FMath::Max(FMath::Max(
X,
Y),
Z), W);
1618 if constexpr (std::is_signed_v<IntType>)
1620 return FMath::Max(FMath::Max(FMath::Max(FMath::Abs(
X), FMath::Abs(
Y)), FMath::Abs(
Z)), FMath::Abs(W));
1635 return FMath::Min(FMath::Min(FMath::Min(
X,
Y),
Z), W);
1645 if constexpr (std::is_signed_v<IntType>)
1647 return FMath::Min(FMath::Min(FMath::Min(FMath::Abs(
X), FMath::Abs(
Y)), FMath::Abs(
Z)), FMath::Abs(W));
1667 FMath::Max(W,
Other.W));
1682 FMath::Min(W,
Other.W));
1690 template <
typename CharType>
1693 Out <<
"X=" <<
X <<
" Y=" <<
Y <<
" Z=" <<
Z <<
" W=" << W;
1702 template <
typename CharType>
1705 Vector.AppendString(Builder);
1814 if constexpr (std::is_same_v<IntType, int32>)
1818 else if constexpr (std::is_same_v<IntType, int64>)
1822 else if constexpr (std::is_same_v<IntType, uint32>)
1826 else if constexpr (std::is_same_v<IntType, uint64>)
1832 static_assert(
sizeof(
IntType) == 0,
"Unimplemented");
1838template <
typename IntType>
1841template <
typename IntType>
@ INDEX_NONE
Definition CoreMiscDefines.h:150
EForceInit
Definition CoreMiscDefines.h:154
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define UE_SERIALIZE_VARIANT_FROM_MISMATCHED_TAG(AR_OR_SLOT, ALIAS, TYPE, ALT_TYPE)
Definition LargeWorldCoordinatesSerializer.h:9
#define SA_VALUE(Name, Value)
Definition StructuredArchiveNameHelpers.h:77
OutType IntCastChecked(InType In)
Definition UnrealTemplate.h:166
Definition Archive.h:1208
Definition NameTypes.h:617
Definition StructuredArchiveSlots.h:144
Definition StructuredArchiveSlots.h:52
UE_API FStructuredArchiveRecord EnterRecord()
Definition StructuredArchiveSlots.h:252
Definition StringBuilder.h:79
BuilderType & Append(const OtherCharType *const String, const int32 Length)
Definition StringBuilder.h:238
Definition StringBuilder.h:509
static CORE_API uint32 MemCrc_DEPRECATED(const void *Data, int32 Length, uint32 CRC=0)
Definition Crc.cpp:592
static UE_FORCEINLINE_HINT uint32 MemCrc32(const void *Data, int32 Length, uint32 CRC=0)
Definition Crc.h:31
static constexpr UE_FORCEINLINE_HINT T DivideAndRoundUp(T Dividend, T Divisor)
Definition UnrealMathUtility.h:694
static CORE_API bool Value(const TCHAR *Stream, const TCHAR *Match, FName &Name)
Definition Parse.cpp:584
Definition IsPODType.h:12
Definition IsUECoreType.h:19
Definition IntVector.h:670
TIntVector2 operator*(const TIntVector2 &Other) const
Definition IntVector.h:859
TIntVector2 operator/(IntType Divisor) const
Definition IntVector.h:881
TIntVector2 operator-(const TIntVector2 &Other) const
Definition IntVector.h:914
bool operator!=(const TIntVector2 &Other) const
Definition IntVector.h:764
TIntVector2(IntType InValue)
Definition IntVector.h:703
void AppendString(FString &Out) const
Definition IntVector.h:1092
bool InitFromString(const FString &InSourceString)
Definition IntVector.h:1118
TIntVector2 & operator%=(IntType Divisor)
Definition IntVector.h:817
IntType GetAbsMin() const
Definition IntVector.h:1025
TIntVector2(const TIntVector2 &)=default
TIntVector2(TIntVector3< IntType > Other)
Definition IntVector.h:721
TIntVector2 ComponentMax(const TIntVector2 &Other) const
Definition IntVector.h:1043
TIntVector2 & operator=(const TIntVector2 &)=default
FString ToString() const
Definition IntVector.h:1104
TIntVector2 & operator/=(IntType Divisor)
Definition IntVector.h:803
PRAGMA_DISABLE_DEPRECATION_WARNINGS TIntVector2(TIntVector2 &&)=default
friend void operator<<(FStructuredArchive::FSlot Slot, TIntVector2 &Vector)
Definition IntVector.h:1167
TIntVector2 & operator-=(const TIntVector2 &Other)
Definition IntVector.h:845
bool SerializeFromMismatchedTag(FName StructTag, FArchive &Ar)
Definition IntVector.h:1180
TIntVector2 operator%(IntType Divisor) const
Definition IntVector.h:892
void AppendString(TStringBuilderBase< CharType > &Out) const
Definition IntVector.h:1069
IntType GetMax() const
Definition IntVector.h:988
IntType GetAbsMax() const
Definition IntVector.h:998
static int32 Num()
Definition IntVector.h:1150
bool IsZero() const
Definition IntVector.h:978
bool Serialize(FArchive &Ar)
Definition IntVector.h:1174
IntType Y
Definition IntVector.h:682
TIntVector2(EForceInit)
Definition IntVector.h:709
IntType X
Definition IntVector.h:679
TIntVector2 operator>>(IntType Shift) const
Definition IntVector.h:925
bool operator==(const TIntVector2 &Other) const
Definition IntVector.h:759
TIntVector2 operator&(IntType Value) const
Definition IntVector.h:947
TIntVector2(TIntPoint< IntType > Other)
Definition IntVector.h:715
friend FArchive & operator<<(FArchive &Ar, TIntVector2 &Vector)
Definition IntVector.h:1162
TIntVector2 operator^(IntType Value) const
Definition IntVector.h:969
PRAGMA_ENABLE_DEPRECATION_WARNINGS const IntType & operator[](int32 ComponentIndex) const
Definition IntVector.h:745
TIntVector2 & operator*=(IntType Scale)
Definition IntVector.h:789
static TIntVector2 DivideAndRoundUp(TIntVector2 Lhs, TIntVector2 Divisor)
Definition IntVector.h:1140
TIntVector2 operator<<(IntType Shift) const
Definition IntVector.h:936
IntType & operator[](int32 ComponentIndex)
Definition IntVector.h:752
InIntType IntType
Definition IntVector.h:671
TIntVector2 operator|(IntType Value) const
Definition IntVector.h:958
TIntVector2 ComponentMin(const TIntVector2 &Other) const
Definition IntVector.h:1056
IntType GetMin() const
Definition IntVector.h:1015
TIntVector2 operator+(const TIntVector2 &Other) const
Definition IntVector.h:903
TIntVector2 & operator+=(const TIntVector2 &Other)
Definition IntVector.h:831
TIntVector2 operator*(IntType Scale) const
Definition IntVector.h:870
static TIntVector2 DivideAndRoundUp(TIntVector2 Lhs, IntType Divisor)
Definition IntVector.h:1135
TIntVector2 & operator=(TIntVector2 &&)=default
TIntVector2 & operator*=(const TIntVector2 &Other)
Definition IntVector.h:775
friend TStringBuilderBase< CharType > & operator<<(TStringBuilderBase< CharType > &Builder, const TIntVector2 &Vector)
Definition IntVector.h:1081
TIntVector2(TIntVector2< OtherIntType > Other)
Definition IntVector.h:731
Definition IntVector.h:22
IntType GetAbsMin() const
Definition IntVector.h:463
FString ToString() const
Definition IntVector.h:557
TIntVector3 operator*(const TIntVector3 &Other) const
Definition IntVector.h:297
IntType Y
Definition IntVector.h:34
TIntVector3 & operator/=(IntType Divisor)
Definition IntVector.h:237
TIntVector3 ComponentMax(const TIntVector3 &Other) const
Definition IntVector.h:481
TIntVector3 operator*(IntType Scale) const
Definition IntVector.h:308
TIntVector3 operator/(IntType Divisor) const
Definition IntVector.h:319
IntType Size() const
Definition IntVector.h:508
TIntVector3 operator+(const TIntVector3 &Other) const
Definition IntVector.h:341
static int32 Num()
Definition IntVector.h:603
TIntVector3 & operator*=(IntType Scale)
Definition IntVector.h:222
TIntVector3(EForceInit)
Definition IntVector.h:101
bool IsZero() const
Definition IntVector.h:416
PRAGMA_DISABLE_DEPRECATION_WARNINGS TIntVector3(TIntVector3 &&)=default
TIntVector3 & operator=(const TIntVector3 &)=default
void AppendString(FString &Out) const
Definition IntVector.h:545
TIntVector3 ComponentMin(const TIntVector3 &Other) const
Definition IntVector.h:495
friend void operator<<(FStructuredArchive::FSlot Slot, TIntVector3 &Vector)
Definition IntVector.h:620
TIntVector3 & operator=(TIntVector3 &&)=default
bool Serialize(FArchive &Ar)
Definition IntVector.h:628
friend FArchive & operator<<(FArchive &Ar, TIntVector3 &Vector)
Definition IntVector.h:615
TIntVector3 operator>>(IntType Shift) const
Definition IntVector.h:363
IntType X
Definition IntVector.h:31
static const TIntVector3 ZeroValue
Definition IntVector.h:45
TIntVector3(TIntVector4< IntType > Other)
Definition IntVector.h:81
TIntVector3 & operator%=(IntType Divisor)
Definition IntVector.h:252
TIntVector3 operator%(IntType Divisor) const
Definition IntVector.h:330
PRAGMA_ENABLE_DEPRECATION_WARNINGS const IntType & operator()(int32 ComponentIndex) const
Definition IntVector.h:133
TIntVector3 operator|(IntType Value) const
Definition IntVector.h:396
static TIntVector3 DivideAndRoundUp(TIntVector3 Lhs, TIntVector3 Divisor)
Definition IntVector.h:593
TIntVector3 operator-(const TIntVector3 &Other) const
Definition IntVector.h:352
TIntVector3(IntType InValue)
Definition IntVector.h:74
IntType & operator()(int32 ComponentIndex)
Definition IntVector.h:146
bool operator!=(const TIntVector3 &Other) const
Definition IntVector.h:196
static TIntVector3 DivideAndRoundUp(TIntVector3 Lhs, IntType Divisor)
Definition IntVector.h:588
IntType GetMax() const
Definition IntVector.h:426
TIntVector3(TIntVector3< OtherIntType > Other)
Definition IntVector.h:112
InIntType IntType
Definition IntVector.h:23
void AppendString(TStringBuilderBase< CharType > &Out) const
Definition IntVector.h:522
const IntType & operator[](int32 ComponentIndex) const
Definition IntVector.h:159
bool operator==(const TIntVector3 &Other) const
Definition IntVector.h:185
TIntVector3 & operator*=(const TIntVector3 &Other)
Definition IntVector.h:207
TIntVector3(const TIntVector3 &)=default
TIntVector3 & operator+=(const TIntVector3 &Other)
Definition IntVector.h:267
TIntVector3 operator&(IntType Value) const
Definition IntVector.h:385
static const TIntVector3 NoneValue
Definition IntVector.h:48
friend TStringBuilderBase< CharType > & operator<<(TStringBuilderBase< CharType > &Builder, const TIntVector3 &Vector)
Definition IntVector.h:534
IntType GetAbsMax() const
Definition IntVector.h:436
bool SerializeFromMismatchedTag(FName StructTag, FArchive &Ar)
Definition IntVector.h:634
TIntVector3 operator^(IntType Value) const
Definition IntVector.h:407
TIntVector3 & operator-=(const TIntVector3 &Other)
Definition IntVector.h:282
IntType Z
Definition IntVector.h:37
IntType XYZ[3]
Definition IntVector.h:41
bool InitFromString(const FString &InSourceString)
Definition IntVector.h:571
IntType GetMin() const
Definition IntVector.h:453
IntType & operator[](int32 ComponentIndex)
Definition IntVector.h:172
TIntVector3 operator<<(IntType Shift) const
Definition IntVector.h:374
Definition IntVector.h:1216
PRAGMA_ENABLE_DEPRECATION_WARNINGS const IntType & operator()(int32 ComponentIndex) const
Definition IntVector.h:1307
TIntVector4 & operator*=(IntType Scale)
Definition IntVector.h:1397
IntType GetMax() const
Definition IntVector.h:1606
bool IsZero() const
Definition IntVector.h:1596
FString ToString() const
Definition IntVector.h:1726
TIntVector4 operator^(IntType Value) const
Definition IntVector.h:1587
bool operator!=(const TIntVector4 &Other) const
Definition IntVector.h:1370
TIntVector4 & operator=(TIntVector4 &&)=default
TIntVector4(EForceInit)
Definition IntVector.h:1273
TIntVector4(const TIntVector4 &)=default
TIntVector4 & operator%=(IntType Divisor)
Definition IntVector.h:1429
static TIntVector4 DivideAndRoundUp(TIntVector4 Lhs, TIntVector4 Divisor)
Definition IntVector.h:1766
PRAGMA_DISABLE_DEPRECATION_WARNINGS TIntVector4(TIntVector4 &&)=default
TIntVector4 operator%(IntType Divisor) const
Definition IntVector.h:1510
bool Serialize(FArchive &Ar)
Definition IntVector.h:1806
TIntVector4 operator>>(IntType Shift) const
Definition IntVector.h:1543
TIntVector4 ComponentMax(const TIntVector4 &Other) const
Definition IntVector.h:1661
TIntVector4 operator<<(IntType Shift) const
Definition IntVector.h:1554
IntType GetAbsMax() const
Definition IntVector.h:1616
bool InitFromString(const FString &InSourceString)
Definition IntVector.h:1740
const IntType & operator[](int32 ComponentIndex) const
Definition IntVector.h:1333
friend FArchive & operator<<(FArchive &Ar, TIntVector4 &Vector)
Definition IntVector.h:1792
TIntVector4 & operator+=(const TIntVector4 &Other)
Definition IntVector.h:1445
TIntVector4 & operator*=(const TIntVector4 &Other)
Definition IntVector.h:1381
IntType Z
Definition IntVector.h:1231
TIntVector4 operator&(IntType Value) const
Definition IntVector.h:1565
TIntVector4 & operator=(const TIntVector4 &)=default
friend void operator<<(FStructuredArchive::FSlot Slot, TIntVector4 &Vector)
Definition IntVector.h:1797
TIntVector4 ComponentMin(const TIntVector4 &Other) const
Definition IntVector.h:1676
TIntVector4(const TIntVector3< IntType > &InValue, IntType InW=0)
Definition IntVector.h:1265
IntType GetMin() const
Definition IntVector.h:1633
friend TStringBuilderBase< CharType > & operator<<(TStringBuilderBase< CharType > &Builder, const TIntVector4 &Vector)
Definition IntVector.h:1703
void AppendString(TStringBuilderBase< CharType > &Out) const
Definition IntVector.h:1691
IntType & operator()(int32 ComponentIndex)
Definition IntVector.h:1320
static int32 Num()
Definition IntVector.h:1780
void AppendString(FString &Out) const
Definition IntVector.h:1714
TIntVector4 operator/(IntType Divisor) const
Definition IntVector.h:1499
TIntVector4(TIntVector4< OtherIntType > Other)
Definition IntVector.h:1285
IntType GetAbsMin() const
Definition IntVector.h:1643
IntType & operator[](int32 ComponentIndex)
Definition IntVector.h:1346
TIntVector4(IntType InValue)
Definition IntVector.h:1257
bool SerializeFromMismatchedTag(FName StructTag, FArchive &Ar)
Definition IntVector.h:1812
IntType W
Definition IntVector.h:1234
TIntVector4 operator-(const TIntVector4 &Other) const
Definition IntVector.h:1532
IntType X
Definition IntVector.h:1225
TIntVector4 operator+(const TIntVector4 &Other) const
Definition IntVector.h:1521
TIntVector4 operator*(const TIntVector4 &Other) const
Definition IntVector.h:1477
TIntVector4 operator*(IntType Scale) const
Definition IntVector.h:1488
static TIntVector4 DivideAndRoundUp(TIntVector4 Lhs, IntType Divisor)
Definition IntVector.h:1757
bool operator==(const TIntVector4 &Other) const
Definition IntVector.h:1359
IntType Y
Definition IntVector.h:1228
TIntVector4 operator|(IntType Value) const
Definition IntVector.h:1576
InIntType IntType
Definition IntVector.h:1217
TIntVector4 & operator/=(IntType Divisor)
Definition IntVector.h:1413
TIntVector4 & operator-=(const TIntVector4 &Other)
Definition IntVector.h:1461