UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
MovieSceneMaybeAtomic.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
7
8namespace UE
9{
10namespace MovieScene
11{
12
17{
20
23};
24
31{
33 FEntitySystemMaybeAtomicInt32(int32 Payload) : Payload(Payload) {}
34
35 int32 Load(EEntityThreadingModel ThreadingModel) const
36 {
37 if (EEntityThreadingModel::NoThreading == ThreadingModel)
38 {
39 return Payload;
40 }
41 else
42 {
43 return FPlatformAtomics::AtomicRead(&Payload);
44 }
45 }
46
47 int32 Add(EEntityThreadingModel ThreadingModel, const int32 Value)
48 {
49 if (EEntityThreadingModel::NoThreading == ThreadingModel)
50 {
51 const int32 Old = Payload;
52 Payload += Value;
53 return Old;
54 }
55 else
56 {
57 return FPlatformAtomics::InterlockedAdd(&Payload, Value);
58 }
59 }
60
61 int32 Sub(EEntityThreadingModel ThreadingModel, const int32 Value)
62 {
63 if (EEntityThreadingModel::NoThreading == ThreadingModel)
64 {
65 const int32 Old = Payload;
66 Payload -= Value;
67 return Old;
68 }
69 else
70 {
71 return FPlatformAtomics::InterlockedAdd(&Payload, -Value);
72 }
73 }
74
76 {
77 if (EEntityThreadingModel::NoThreading == ThreadingModel)
78 {
79 Swap(Payload, Other);
80 return Other;
81 }
82 else
83 {
84 return FPlatformAtomics::InterlockedExchange(&Payload, Other);
85 }
86 }
87
89 {
90 if (EEntityThreadingModel::NoThreading == ThreadingModel)
91 {
92 return Payload++;
93 }
94 else
95 {
96 return FPlatformAtomics::InterlockedIncrement(&Payload);
97 }
98 }
99
101 {
102 if (EEntityThreadingModel::NoThreading == ThreadingModel)
103 {
104 return Payload--;
105 }
106 else
107 {
108 return FPlatformAtomics::InterlockedDecrement(&Payload);
109 }
110 }
111
112private:
113 int32 Payload = 0;
114};
115
116} // namespace MovieScene
117} // namespace UE
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
uint8_t uint8
Definition binka_ue_file_header.h:8
Definition MovieScene.Build.cs:6
EEntityThreadingModel
Definition MovieSceneMaybeAtomic.h:17
Definition AdvancedWidgetsModule.cpp:13
Definition MovieSceneMaybeAtomic.h:31
int32 Add(EEntityThreadingModel ThreadingModel, const int32 Value)
Definition MovieSceneMaybeAtomic.h:47
int32 Exchange(EEntityThreadingModel ThreadingModel, int32 Other)
Definition MovieSceneMaybeAtomic.h:75
int32 Decrement(EEntityThreadingModel ThreadingModel)
Definition MovieSceneMaybeAtomic.h:100
int32 Load(EEntityThreadingModel ThreadingModel) const
Definition MovieSceneMaybeAtomic.h:35
FEntitySystemMaybeAtomicInt32(int32 Payload)
Definition MovieSceneMaybeAtomic.h:33
int32 Increment(EEntityThreadingModel ThreadingModel)
Definition MovieSceneMaybeAtomic.h:88
int32 Sub(EEntityThreadingModel ThreadingModel, const int32 Value)
Definition MovieSceneMaybeAtomic.h:61