UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
MonotonicTime.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"
6#include "HAL/PlatformMath.h"
7#include <limits>
8
9#define UE_API CORE_API
10
11namespace UE
12{
13
20{
21public:
22 constexpr FMonotonicTimeSpan() = default;
23
24 constexpr static FMonotonicTimeSpan Zero() { return FMonotonicTimeSpan(); }
25
26 constexpr static FMonotonicTimeSpan Infinity() { return FromSeconds(std::numeric_limits<double>::infinity()); }
27
28 constexpr static FMonotonicTimeSpan FromSeconds(double Seconds)
29 {
31 TimeSpan.Time = Seconds;
32 return TimeSpan;
33 }
34
35 constexpr static FMonotonicTimeSpan FromMilliseconds(double Milliseconds) { return FromSeconds(Milliseconds * 0.001); }
36
37 constexpr double ToSeconds() const { return Time; }
38 constexpr double ToMilliseconds() const { return Time * 1000.0; }
39
40 constexpr bool IsZero() const { return *this == Zero(); }
41 constexpr bool IsInfinity() const { return *this == Infinity(); }
42 bool IsNaN() const { return FPlatformMath::IsNaN(Time); }
43
44 constexpr bool operator==(const FMonotonicTimeSpan Other) const { return Time == Other.Time; }
45 constexpr bool operator!=(const FMonotonicTimeSpan Other) const { return Time != Other.Time; }
46 constexpr bool operator<=(const FMonotonicTimeSpan Other) const { return Time <= Other.Time; }
47 constexpr bool operator< (const FMonotonicTimeSpan Other) const { return Time < Other.Time; }
48 constexpr bool operator>=(const FMonotonicTimeSpan Other) const { return Time >= Other.Time; }
49 constexpr bool operator> (const FMonotonicTimeSpan Other) const { return Time > Other.Time; }
50
51 constexpr FMonotonicTimeSpan operator+() const { return *this; }
52 constexpr FMonotonicTimeSpan operator-() const { return FromSeconds(-Time); }
53
54 constexpr FMonotonicTimeSpan operator+(const FMonotonicTimeSpan Span) const { return FromSeconds(Time + Span.Time); }
55 constexpr FMonotonicTimeSpan operator-(const FMonotonicTimeSpan Span) const { return FromSeconds(Time - Span.Time); }
56
57 constexpr FMonotonicTimeSpan& operator+=(const FMonotonicTimeSpan Span) { return *this = *this + Span; }
58 constexpr FMonotonicTimeSpan& operator-=(const FMonotonicTimeSpan Span) { return *this = *this - Span; }
59
60private:
61 double Time = 0;
62};
63
74{
75public:
77
78 constexpr FMonotonicTimePoint() = default;
79
80 constexpr static FMonotonicTimePoint Infinity() { return FromSeconds(std::numeric_limits<double>::infinity()); }
81
83 constexpr static FMonotonicTimePoint FromSeconds(const double Seconds)
84 {
86 TimePoint.Time = Seconds;
87 return TimePoint;
88 }
89
91 constexpr double ToSeconds() const { return Time; }
92
93 constexpr bool IsInfinity() const { return *this == Infinity(); }
94 bool IsNaN() const { return FPlatformMath::IsNaN(Time); }
95
96 constexpr bool operator==(const FMonotonicTimePoint Other) const { return Time == Other.Time; }
97 constexpr bool operator!=(const FMonotonicTimePoint Other) const { return Time != Other.Time; }
98 constexpr bool operator<=(const FMonotonicTimePoint Other) const { return Time <= Other.Time; }
99 constexpr bool operator< (const FMonotonicTimePoint Other) const { return Time < Other.Time; }
100 constexpr bool operator>=(const FMonotonicTimePoint Other) const { return Time >= Other.Time; }
101 constexpr bool operator> (const FMonotonicTimePoint Other) const { return Time > Other.Time; }
102
103 constexpr FMonotonicTimePoint operator+(const FMonotonicTimeSpan Span) const { return FromSeconds(Time + Span.ToSeconds()); }
104 constexpr FMonotonicTimePoint operator-(const FMonotonicTimeSpan Span) const { return FromSeconds(Time - Span.ToSeconds()); }
105
107 {
108 return FMonotonicTimeSpan::FromSeconds(Time - Point.Time);
109 }
110
111private:
112 double Time = 0;
113};
114
115} // namespace UE
116
117#undef UE_API
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define UE_API
Definition SColorGradingComponentViewer.h:12
@ Milliseconds
Definition AdvancedWidgetsModule.cpp:13
Definition MonotonicTime.h:74
bool IsNaN() const
Definition MonotonicTime.h:94
constexpr FMonotonicTimePoint operator-(const FMonotonicTimeSpan Span) const
Definition MonotonicTime.h:104
constexpr bool IsInfinity() const
Definition MonotonicTime.h:93
static constexpr FMonotonicTimePoint FromSeconds(const double Seconds)
Definition MonotonicTime.h:83
constexpr bool operator!=(const FMonotonicTimePoint Other) const
Definition MonotonicTime.h:97
constexpr bool operator==(const FMonotonicTimePoint Other) const
Definition MonotonicTime.h:96
constexpr bool operator<=(const FMonotonicTimePoint Other) const
Definition MonotonicTime.h:98
constexpr FMonotonicTimePoint operator+(const FMonotonicTimeSpan Span) const
Definition MonotonicTime.h:103
static UE_API FMonotonicTimePoint Now()
Definition MonotonicTime.cpp:10
constexpr FMonotonicTimePoint()=default
constexpr double ToSeconds() const
Definition MonotonicTime.h:91
constexpr FMonotonicTimeSpan operator-(const FMonotonicTimePoint Point) const
Definition MonotonicTime.h:106
constexpr bool operator>(const FMonotonicTimePoint Other) const
Definition MonotonicTime.h:101
static constexpr FMonotonicTimePoint Infinity()
Definition MonotonicTime.h:80
constexpr bool operator<(const FMonotonicTimePoint Other) const
Definition MonotonicTime.h:99
constexpr bool operator>=(const FMonotonicTimePoint Other) const
Definition MonotonicTime.h:100
Definition MonotonicTime.h:20
bool IsNaN() const
Definition MonotonicTime.h:42
static constexpr FMonotonicTimeSpan Zero()
Definition MonotonicTime.h:24
constexpr bool operator<(const FMonotonicTimeSpan Other) const
Definition MonotonicTime.h:47
static constexpr FMonotonicTimeSpan FromMilliseconds(double Milliseconds)
Definition MonotonicTime.h:35
constexpr bool operator<=(const FMonotonicTimeSpan Other) const
Definition MonotonicTime.h:46
constexpr FMonotonicTimeSpan operator-(const FMonotonicTimeSpan Span) const
Definition MonotonicTime.h:55
constexpr FMonotonicTimeSpan operator-() const
Definition MonotonicTime.h:52
constexpr bool IsZero() const
Definition MonotonicTime.h:40
constexpr FMonotonicTimeSpan operator+(const FMonotonicTimeSpan Span) const
Definition MonotonicTime.h:54
constexpr FMonotonicTimeSpan & operator-=(const FMonotonicTimeSpan Span)
Definition MonotonicTime.h:58
constexpr double ToMilliseconds() const
Definition MonotonicTime.h:38
constexpr bool operator==(const FMonotonicTimeSpan Other) const
Definition MonotonicTime.h:44
constexpr bool operator>=(const FMonotonicTimeSpan Other) const
Definition MonotonicTime.h:48
constexpr bool operator!=(const FMonotonicTimeSpan Other) const
Definition MonotonicTime.h:45
constexpr FMonotonicTimeSpan()=default
constexpr FMonotonicTimeSpan & operator+=(const FMonotonicTimeSpan Span)
Definition MonotonicTime.h:57
constexpr FMonotonicTimeSpan operator+() const
Definition MonotonicTime.h:51
constexpr double ToSeconds() const
Definition MonotonicTime.h:37
static constexpr FMonotonicTimeSpan FromSeconds(double Seconds)
Definition MonotonicTime.h:28
static constexpr FMonotonicTimeSpan Infinity()
Definition MonotonicTime.h:26
constexpr bool operator>(const FMonotonicTimeSpan Other) const
Definition MonotonicTime.h:49
constexpr bool IsInfinity() const
Definition MonotonicTime.h:41