13#if UE_ENABLE_INCLUDE_ORDER_DEPRECATED_IN_5_4
25#pragma warning (disable : 4459)
39 static_assert(std::is_floating_point_v<T>,
"T must be floating point");
109 template <
typename IntType>
112 template <
typename IntType>
571 template<
typename FArg UE_REQUIRES(!std::is_same_v<T, FArg>)>
663 if constexpr (std::is_same_v<T, float>)
673#if ENABLE_NAN_DIAGNOSTIC
693 return (!FMath::IsFinite(
X) ||
694 !FMath::IsFinite(
Y));
727 template<
typename FArg UE_REQUIRES(!std::is_same_v<T, FArg>)>
761 return Ar << V.
X << V.
Y;
813#if !defined(_MSC_VER) || defined(__clang__)
829template<
typename T,
typename T2 UE_REQUIRES(std::is_arithmetic_v<T2>)>
832 return V.operator*(
Scale);
846template<
typename IntType>
854template<
typename IntType>
919 return X*V.
X +
Y*V.
Y;
925 return X*V.
Y -
Y*V.
X;
973 return X==V.
X &&
Y==V.
Y;
979 return X!=V.
X ||
Y!=V.
Y;
1009 return FMath::Abs(
X-V.
X) <= Tolerance && FMath::Abs(
Y-V.
Y) <= Tolerance;
1083 return FMath::Max(
X,
Y);
1089 return FMath::Max(FMath::Abs(
X),FMath::Abs(
Y));
1095 return FMath::Min(
X,
Y);
1113 return FMath::Sqrt(
X*
X +
Y*
Y);
1125 return X * V2.X +
Y * V2.Y;
1187 return FMath::Abs(
X)<=Tolerance
1188 && FMath::Abs(
Y)<=Tolerance;
1194 return X==0.f &&
Y==0.f;
1218 return (
Index >= 0) && (
Index < NumComponents);
1224 if constexpr (std::is_same_v<T, float>)
1226 return FIntPoint( FMath::RoundToInt32(
X), FMath::RoundToInt32(
Y) );
1238 if constexpr (std::is_same_v<T, float>)
1240 return TVector2<T>(FMath::RoundToFloat(
X), FMath::RoundToFloat(
Y));
1244 return TVector2<T>(FMath::RoundToDouble(
X), FMath::RoundToDouble(
Y));
1273 const T
VSq = SizeSquared();
1290 FMath::FloatSelect(
X, (T)1, (T)-1),
1291 FMath::FloatSelect(
Y, (T)1, (T)-1)
1304 return FString::Printf(
TEXT(
"X=%3.3f Y=%3.3f"),
X,
Y);
1332#pragma warning (pop)
#define check(expr)
Definition AssertionMacros.h:314
#define checkf(expr, format,...)
Definition AssertionMacros.h:315
ENoInit
Definition CoreMiscDefines.h:158
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 UE_DECLARE_LWC_TYPE(...)
Definition LargeWorldCoordinates.h:27
#define logOrEnsureNanError(_FormatString_,...)
Definition LogMacros.h:436
UE::Math::TIntPoint< int64 > FInt64Point
Definition MathFwd.h:120
FInt32Point FIntPoint
Definition MathFwd.h:124
@ LARGE_WORLD_COORDINATES
#define UE_SMALL_NUMBER
Definition UnrealMathUtility.h:130
#define UE_KINDA_SMALL_NUMBER
Definition UnrealMathUtility.h:131
uint32 Size
Definition VulkanMemory.cpp:4034
Definition Archive.h:1208
virtual CORE_API uint32 EngineNetVer() const
Definition Archive.cpp:1497
virtual CORE_API void UsingCustomVersion(const struct FGuid &Guid)
Definition Archive.cpp:590
UE_FORCEINLINE_HINT bool IsLoading() const
Definition Archive.h:236
UE_FORCEINLINE_HINT FPackageFileVersion UEVer() const
Definition Archive.h:204
Definition NameTypes.h:617
Definition StructuredArchiveSlots.h:52
UE_API FStructuredArchiveStream EnterStream()
Definition StructuredArchiveSlots.h:263
Definition StructuredArchiveSlots.h:193
UE_API FStructuredArchiveSlot EnterElement()
Definition StructuredArchiveSlots.h:462
CORE_API FArchive & GetUnderlyingArchive() const
Definition StructuredArchiveSlots.cpp:7
uint32 GetTypeHash(const TBox< T > &Box)
Definition Box.h:1008
FArchive & operator<<(FArchive &Ar, TBoxSphereBounds< float, float > &Bounds)
Definition BoxSphereBounds.h:396
Definition AdvancedWidgetsModule.cpp:13
U16 Index
Definition radfft.cpp:71
static CORE_API uint32 MemCrc_DEPRECATED(const void *Data, int32 Length, uint32 CRC=0)
Definition Crc.cpp:592
CORE_API static const FGuid Guid
Definition EngineNetworkCustomVersion.h:106
@ SerializeDoubleVectorsAsDoubles
Definition EngineNetworkCustomVersion.h:77
@ Ver21AndViewPitchOnly_DONOTUSE
Definition EngineNetworkCustomVersion.h:81
static constexpr UE_FORCEINLINE_HINT auto DegreesToRadians(T const &DegVal) -> decltype(DegVal *(UE_PI/180.f))
Definition UnrealMathUtility.h:871
static constexpr void SinCos(std::decay_t< T > *ScalarSin, std::decay_t< T > *ScalarCos, T Value)
Definition UnrealMathUtility.h:753
static constexpr UE_FORCEINLINE_HINT T Square(const T A)
Definition UnrealMathUtility.h:578
static constexpr UE_FORCEINLINE_HINT T Clamp(const T X, const T MinValue, const T MaxValue)
Definition UnrealMathUtility.h:592
static CORE_API bool Value(const TCHAR *Stream, const TCHAR *Match, FName &Name)
Definition Parse.cpp:584
@ Value
Definition Array.h:46
Definition IsPODType.h:12
@ Value
Definition IsPODType.h:13
Definition IsUECoreType.h:19
@ Value
Definition IsUECoreType.h:20
Definition IntVector.h:670
IntType Y
Definition IntVector.h:682
IntType X
Definition IntVector.h:679
static UE_FORCEINLINE_HINT TVector2< T > Min(const TVector2< T > &A, const TVector2< T > &B)
Definition Vector2D.h:959
static CORE_API const TVector2< T > Unit45Deg
Definition Vector2D.h:77
bool InitFromString(const FString &InSourceString)
Definition Vector2D.h:1308
T GetMax() const
Definition Vector2D.h:1081
bool SerializeFromMismatchedTag(FName StructTag, FArchive &Ar)
Definition Vector2D.h:661
UE_FORCEINLINE_HINT T Length() const
Definition Vector2D.h:497
bool IsNearlyZero(T Tolerance=UE_KINDA_SMALL_NUMBER) const
Definition Vector2D.h:1185
static CORE_API const TVector2< T > UnitVector
Definition Vector2D.h:70
bool Equals(const TVector2< T > &V, T Tolerance=UE_KINDA_SMALL_NUMBER) const
Definition Vector2D.h:1007
static TVector2< T > UnitX()
Definition Vector2D.h:81
bool NetSerialize(FArchive &Ar, class UPackageMap *Map, bool &bOutSuccess)
Definition Vector2D.h:701
void Set(T InX, T InY)
Definition Vector2D.h:1074
bool Normalize(T Tolerance=UE_SMALL_NUMBER)
Definition Vector2D.h:1154
TVector2< T > ComponentMin(const TVector2< T > &Other) const
Definition Vector2D.h:1099
static TVector2< T > UnitY()
Definition Vector2D.h:82
T XY[2]
Definition Vector2D.h:56
bool ComponentwiseAllLessThan(const TVector2< T > &Other) const
Definition Vector2D.h:983
TVector2< T > operator+=(const TVector2< T > &V)
Definition Vector2D.h:1019
UE_FORCEINLINE_HINT T operator^(const TVector2< T > &V) const
Definition Vector2D.h:923
UE_FORCEINLINE_HINT T SquaredLength() const
Definition Vector2D.h:516
static UE_FORCEINLINE_HINT T DotProduct(const TVector2< T > &A, const TVector2< T > &B)
Definition Vector2D.h:929
bool ContainsNaN() const
Definition Vector2D.h:691
bool ComponentwiseAllGreaterOrEqual(const TVector2< T > &Other) const
Definition Vector2D.h:1001
UE_FORCEINLINE_HINT TVector2< T > operator+(T A) const
Definition Vector2D.h:893
TVector2< T > RoundToVector() const
Definition Vector2D.h:1236
TVector2< T > GetSafeNormal(T Tolerance=UE_SMALL_NUMBER) const
Definition Vector2D.h:1142
TVector2(const TVector2< FArg > &From)
Definition Vector2D.h:728
static UE_FORCEINLINE_HINT TVector2< T > Clamp(const TVector2< T > &V, const TVector2< T > &MinValue, const TVector2< T > &MaxValue)
Definition Vector2D.h:965
T GetMin() const
Definition Vector2D.h:1093
TVector2< T > operator/(T Scale) const
Definition Vector2D.h:886
T & Component(int32 Index)
Definition Vector2D.h:1198
T GetAbsMax() const
Definition Vector2D.h:1087
bool Serialize(FStructuredArchive::FSlot Slot)
Definition Vector2D.h:655
bool operator!=(const TVector2< T > &V) const
Definition Vector2D.h:977
TVector2< T > GetClampedToSize(T Min, T Max) const
Definition Vector2D.h:1255
static UE_FORCEINLINE_HINT T CrossProduct(const TVector2< T > &A, const TVector2< T > &B)
Definition Vector2D.h:947
static UE_FORCEINLINE_HINT T DistSquared(const TVector2< T > &V1, const TVector2< T > &V2)
Definition Vector2D.h:935
T Size() const
Definition Vector2D.h:1111
T FReal
Definition Vector2D.h:42
FIntPoint IntPoint() const
Definition Vector2D.h:1222
static UE_FORCEINLINE_HINT T Distance(const TVector2< T > &V1, const TVector2< T > &V2)
Definition Vector2D.h:941
UE_FORCEINLINE_HINT TVector2< T > operator+(const TVector2< T > &V) const
Definition Vector2D.h:868
TVector2< T > GetRotated(T AngleDeg) const
Definition Vector2D.h:1129
bool operator==(const TVector2< T > &V) const
Definition Vector2D.h:971
UE_FORCEINLINE_HINT TVector2< T > operator-(T A) const
Definition Vector2D.h:899
static TVector2< T > One()
Definition Vector2D.h:80
UE_FORCEINLINE_HINT T operator|(const TVector2< T > &V) const
Definition Vector2D.h:917
T Y
Definition Vector2D.h:52
TVector2< T > operator/=(T V)
Definition Vector2D.h:1040
TVector2< T > GetClampedToMaxSize(T MaxSize) const
Definition Vector2D.h:1266
static UE_FORCEINLINE_HINT TVector2< T > Max(const TVector2< T > &A, const TVector2< T > &B)
Definition Vector2D.h:953
T Dot(const TVector2< T > &V2) const
Definition Vector2D.h:1123
bool Serialize(FArchive &Ar)
Definition Vector2D.h:649
UE_FORCEINLINE_HINT TVector2< T > operator*(T Scale) const
Definition Vector2D.h:880
TVector2< T > GetSignVector() const
Definition Vector2D.h:1286
TVector< T > SphericalToUnitCartesian() const
Definition Vector.h:2759
FString ToString() const
Definition Vector2D.h:1302
UE_FORCEINLINE_HINT TVector2< T > GetAbs() const
Definition Vector2D.h:1296
bool ComponentwiseAllLessOrEqual(const TVector2< T > &Other) const
Definition Vector2D.h:995
T Component(int32 Index) const
Definition Vector2D.h:1207
TVector2< T > operator-=(const TVector2< T > &V)
Definition Vector2D.h:1026
void ToDirectionAndLength(TVector2< T > &OutDir, T &OutLength) const
Definition Vector2D.h:1170
T & operator[](int32 Index)
Definition Vector2D.h:1062
void ToDirectionAndLength(TVector2< T > &OutDir, FArg &OutLength) const
Definition Vector2D.h:572
TVector2< T > operator*=(T Scale)
Definition Vector2D.h:1033
UE_FORCEINLINE_HINT TVector2< T > operator*(const TVector2< T > &V) const
Definition Vector2D.h:905
TVector2< T > ComponentMax(const TVector2< T > &Other) const
Definition Vector2D.h:1105
T operator[](int32 Index) const
Definition Vector2D.h:1068
TVector2< T > ClampAxes(T MinAxisVal, T MaxAxisVal) const
Definition Vector2D.h:1249
UE_FORCEINLINE_HINT TVector2< T > operator-(const TVector2< T > &V) const
Definition Vector2D.h:874
bool IsZero() const
Definition Vector2D.h:1192
static TVector2< T > Zero()
Definition Vector2D.h:79
TVector2< T > operator*=(const TVector2< T > &V)
Definition Vector2D.h:1048
UE_FORCEINLINE_HINT TVector2< T > operator/(const TVector2< T > &V) const
Definition Vector2D.h:911
bool IsValidIndex(int32 Index) const
Definition Vector2D.h:1216
T X
Definition Vector2D.h:49
UE_FORCEINLINE_HINT TVector2< T > operator-() const
Definition Vector2D.h:1013
UE_FORCEINLINE_HINT void DiagnosticCheckNaN()
Definition Vector2D.h:683
static CORE_API const TVector2< T > ZeroVector
Definition Vector2D.h:63
TVector2< T > operator/=(const TVector2< T > &V)
Definition Vector2D.h:1055
bool ComponentwiseAllGreaterThan(const TVector2< T > &Other) const
Definition Vector2D.h:989
T SizeSquared() const
Definition Vector2D.h:1117
static constexpr int32 NumComponents
Definition Vector2D.h:60