UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
FrameNumber.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "CoreTypes.h"
10
11class FArchive;
12template <typename NumericType> struct TNumericLimits;
13
18{
19 constexpr FFrameNumber()
20 : Value(0)
21 {}
22
26 template<typename T, typename U = typename TEnableIf<std::is_same_v<T, int32>>::Type>
27 constexpr FFrameNumber(T /*int32*/ InValue)
28 : Value(InValue)
29 {}
30
38 friend CORE_API FArchive& operator<<(FArchive& Ar, FFrameNumber& FrameNumber);
39
40 CORE_API bool Serialize(FArchive& Ar);
41
42 FFrameNumber& operator+=(FFrameNumber RHS) { Value += RHS.Value; return *this; }
43 FFrameNumber& operator-=(FFrameNumber RHS) { Value -= RHS.Value; return *this; }
44 FFrameNumber& operator%=(FFrameNumber RHS) { Value %= RHS.Value; return *this; }
45
46 FFrameNumber& operator++() { ++Value; return *this; }
47 FFrameNumber& operator--() { --Value; return *this; }
48
49 FFrameNumber operator++(int32) { FFrameNumber Ret = *this; ++Value; return Ret; }
50 FFrameNumber operator--(int32) { FFrameNumber Ret = *this; --Value; return Ret; }
51
52 friend bool operator==(FFrameNumber A, FFrameNumber B) { return A.Value == B.Value; }
53 friend bool operator!=(FFrameNumber A, FFrameNumber B) { return A.Value != B.Value; }
54
55 friend bool operator< (FFrameNumber A, FFrameNumber B) { return A.Value < B.Value; }
56 friend bool operator> (FFrameNumber A, FFrameNumber B) { return A.Value > B.Value; }
57 friend bool operator<=(FFrameNumber A, FFrameNumber B) { return A.Value <= B.Value; }
58 friend bool operator>=(FFrameNumber A, FFrameNumber B) { return A.Value >= B.Value; }
59
60 friend FFrameNumber operator+(FFrameNumber A, FFrameNumber B) { return FFrameNumber(A.Value + B.Value); }
61 friend FFrameNumber operator-(FFrameNumber A, FFrameNumber B) { return FFrameNumber(A.Value - B.Value); }
62 friend FFrameNumber operator%(FFrameNumber A, FFrameNumber B) { return FFrameNumber(A.Value % B.Value); }
63
64 friend FFrameNumber operator-(FFrameNumber A) { return FFrameNumber(-A.Value); }
65
66 friend FFrameNumber operator*(FFrameNumber A, float Scalar) { return FFrameNumber(static_cast<int32>(FMath::Clamp(FMath::FloorToDouble(double(A.Value) * Scalar), (double)TNumericLimits<int32>::Min(), (double)TNumericLimits<int32>::Max()))); }
67 friend FFrameNumber operator/(FFrameNumber A, float Scalar) { return FFrameNumber(static_cast<int32>(FMath::Clamp(FMath::FloorToDouble(double(A.Value) / Scalar), (double)TNumericLimits<int32>::Min(), (double)TNumericLimits<int32>::Max()))); }
68
70 {
71 return A.Value;
72 }
73
78};
79
80template<>
82{
84
85 static constexpr NumericType Min()
86 {
87 return MIN_int32;
88 }
89
90 static constexpr NumericType Max()
91 {
92 return MAX_int32;
93 }
94
95 static constexpr NumericType Lowest()
96 {
97 return Min();
98 }
99};
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define MAX_int32
Definition NumericLimits.h:25
#define MIN_int32
Definition NumericLimits.h:16
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition Archive.h:1208
Definition FrameNumber.h:18
friend bool operator<=(FFrameNumber A, FFrameNumber B)
Definition FrameNumber.h:57
FFrameNumber & operator%=(FFrameNumber RHS)
Definition FrameNumber.h:44
friend FFrameNumber operator-(FFrameNumber A)
Definition FrameNumber.h:64
friend CORE_API FArchive & operator<<(FArchive &Ar, FFrameNumber &FrameNumber)
Definition FrameNumber.cpp:17
constexpr FFrameNumber()
Definition FrameNumber.h:19
FFrameNumber operator--(int32)
Definition FrameNumber.h:50
friend FFrameNumber operator+(FFrameNumber A, FFrameNumber B)
Definition FrameNumber.h:60
FFrameNumber & operator--()
Definition FrameNumber.h:47
friend uint32 GetTypeHash(FFrameNumber A)
Definition FrameNumber.h:69
FFrameNumber & operator++()
Definition FrameNumber.h:46
friend bool operator<(FFrameNumber A, FFrameNumber B)
Definition FrameNumber.h:55
friend bool operator>(FFrameNumber A, FFrameNumber B)
Definition FrameNumber.h:56
FFrameNumber operator++(int32)
Definition FrameNumber.h:49
constexpr FFrameNumber(T InValue)
Definition FrameNumber.h:27
friend FFrameNumber operator/(FFrameNumber A, float Scalar)
Definition FrameNumber.h:67
FFrameNumber & operator-=(FFrameNumber RHS)
Definition FrameNumber.h:43
friend bool operator==(FFrameNumber A, FFrameNumber B)
Definition FrameNumber.h:52
friend bool operator>=(FFrameNumber A, FFrameNumber B)
Definition FrameNumber.h:58
int32 Value
Definition FrameNumber.h:77
friend FFrameNumber operator*(FFrameNumber A, float Scalar)
Definition FrameNumber.h:66
friend FFrameNumber operator-(FFrameNumber A, FFrameNumber B)
Definition FrameNumber.h:61
FFrameNumber & operator+=(FFrameNumber RHS)
Definition FrameNumber.h:42
friend bool operator!=(FFrameNumber A, FFrameNumber B)
Definition FrameNumber.h:53
friend FFrameNumber operator%(FFrameNumber A, FFrameNumber B)
Definition FrameNumber.h:62
static constexpr UE_FORCEINLINE_HINT T Clamp(const T X, const T MinValue, const T MaxValue)
Definition UnrealMathUtility.h:592
FFrameNumber NumericType
Definition FrameNumber.h:83
static constexpr NumericType Max()
Definition FrameNumber.h:90
static constexpr NumericType Lowest()
Definition FrameNumber.h:95
static constexpr NumericType Min()
Definition FrameNumber.h:85
Definition NumericLimits.h:41