UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
MovieSceneIntegerChannel.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
6#include "Containers/Array.h"
8#include "HAL/Platform.h"
9#include "HAL/PlatformCrt.h"
10#include "Math/Range.h"
12#include "Misc/FrameNumber.h"
13#include "Misc/FrameTime.h"
14#include "Misc/Optional.h"
15#include "MovieSceneChannel.h"
20#include "UObject/Class.h"
22#include "Curves/RealCurve.h"
23
24#include "MovieSceneIntegerChannel.generated.h"
25
26struct FFrameRate;
27struct FKeyHandle;
28struct FPropertyTag;
29
30
31USTRUCT()
33{
35
37
39 : PreInfinityExtrap(RCCE_Constant)
40 , PostInfinityExtrap(RCCE_Constant)
41 , bInterpolateLinearKeys(false)
42 , DefaultValue(0)
43 , bHasDefaultValue(false)
44 {}
45
49 MOVIESCENE_API bool SerializeFromMismatchedTag(const FPropertyTag& Tag, FStructuredArchive::FSlot Slot);
50
57 {
58 return TMovieSceneChannelData<int32>(&Times, &Values, this, &KeyHandles);
59 }
60
67 {
68 return TMovieSceneChannelData<const int32>(&Times, &Values);
69 }
70
75 {
76 return Times;
77 }
78
83 {
84 return Values;
85 }
86
90 inline bool HasAnyData() const
91 {
92 return Times.Num() != 0 || bHasDefaultValue == true;
93 }
94
102 MOVIESCENE_API bool Evaluate(FFrameTime InTime, int64& OutValue) const;
104 {
105 int64 Value = 0;
106 if (Evaluate(InTime, Value))
107 {
108 OutValue = static_cast<int32>(Value);
109 return true;
110 }
111 return false;
112 }
113
121 MOVIESCENE_API bool EvaluateInterp(FFrameTime InTime, double& OutValue) const;
122
127 {
128 check(InTimes.Num() == InValues.Num());
129
130 Times = MoveTemp(InTimes);
131 Values = MoveTemp(InValues);
132
133 KeyHandles.Reset();
134 for (int32 Index = 0; Index < Times.Num(); ++Index)
135 {
136 KeyHandles.AllocateHandle(Index);
137 }
138 }
139
146 {
147 check(InTimes.Num() == InValues.Num());
148 int32 Index = Times.Num();
149 Times.Append(InTimes);
150 Values.Append(InValues);
151 for (; Index < Times.Num(); ++Index)
152 {
153 KeyHandles.AllocateHandle(Index);
154 }
155 }
156
157public:
158
159 // ~ FMovieSceneChannel Interface
164 MOVIESCENE_API virtual void DeleteKeys(TArrayView<const FKeyHandle> InHandles) override;
165 MOVIESCENE_API virtual void DeleteKeysFrom(FFrameNumber InTime, bool bDeleteKeysBefore) override;
166 MOVIESCENE_API virtual void RemapTimes(const UE::MovieScene::IRetimingInterface& Retimer) override;
167 MOVIESCENE_API virtual TRange<FFrameNumber> ComputeEffectiveRange() const override;
168 MOVIESCENE_API virtual int32 GetNumKeys() const override;
169 MOVIESCENE_API virtual void Reset() override;
170 MOVIESCENE_API virtual void Offset(FFrameNumber DeltaPosition) override;
171 MOVIESCENE_API virtual void Optimize(const FKeyDataOptimizationParams& InParameters) override;
172 MOVIESCENE_API virtual void ClearDefault() override;
173 MOVIESCENE_API virtual FKeyHandle GetHandle(int32 Index) override;
174 MOVIESCENE_API virtual int32 GetIndex(FKeyHandle Handle) override;
175
176public:
177
184 {
185 bHasDefaultValue = true;
186 DefaultValue = InDefaultValue;
187 }
188
195 {
196 return bHasDefaultValue ? TOptional<int32>(DefaultValue) : TOptional<int32>();
197 }
198
202 inline void RemoveDefault()
203 {
204 bHasDefaultValue = false;
205 }
206
207public:
208
210 UPROPERTY()
212
214 UPROPERTY()
216
218 UPROPERTY()
219 bool bInterpolateLinearKeys;
220
221private:
222
223 UPROPERTY(meta=(KeyTimes))
224 TArray<FFrameNumber> Times;
225
226 UPROPERTY()
227 int32 DefaultValue;
228
229 UPROPERTY()
230 bool bHasDefaultValue;
231
232 UPROPERTY(meta=(KeyValues))
233 TArray<int32> Values;
234
237 FMovieSceneKeyHandleMap KeyHandles;
238};
239
240template<>
242{
243 enum { WithStructuredSerializeFromMismatchedTag = true };
244};
245
246template<>
248{
249#if WITH_EDITOR
250
253
254#endif
255};
#define check(expr)
Definition AssertionMacros.h:314
FPlatformTypes::int64 int64
A 64-bit signed integer.
Definition Platform.h:1127
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 UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
#define GENERATED_BODY(...)
Definition ObjectMacros.h:765
#define USTRUCT(...)
Definition ObjectMacros.h:746
ERichCurveExtrapolation
Definition RealCurve.h:27
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
uint32 Offset
Definition VulkanMemory.cpp:4033
Definition StructuredArchiveSlots.h:52
Definition ArrayView.h:139
Definition Array.h:670
Definition EnumAsByte.h:22
Definition Range.h:50
@ false
Definition radaudio_common.h:23
U16 Index
Definition radfft.cpp:71
Definition FrameNumber.h:18
Definition FrameRate.h:21
Definition FrameTime.h:16
Definition MovieSceneChannelTraits.h:20
Definition KeyHandle.h:15
Definition MovieSceneChannel.h:112
Definition MovieSceneIntegerChannel.h:33
TMovieSceneChannelData< const int32 > GetData() const
Definition MovieSceneIntegerChannel.h:66
TOptional< int32 > GetDefault() const
Definition MovieSceneIntegerChannel.h:194
void AddKeys(const TArray< FFrameNumber > &InTimes, const TArray< int32 > &InValues)
Definition MovieSceneIntegerChannel.h:145
void Set(TArray< FFrameNumber > InTimes, TArray< int32 > InValues)
Definition MovieSceneIntegerChannel.h:126
int32 CurveValueType
Definition MovieSceneIntegerChannel.h:36
void SetDefault(int32 InDefaultValue)
Definition MovieSceneIntegerChannel.h:183
bool Evaluate(FFrameTime InTime, int32 &OutValue) const
Definition MovieSceneIntegerChannel.h:103
bool HasAnyData() const
Definition MovieSceneIntegerChannel.h:90
TArrayView< const int32 > GetValues() const
Definition MovieSceneIntegerChannel.h:82
TArrayView< const FFrameNumber > GetTimes() const
Definition MovieSceneIntegerChannel.h:74
TMovieSceneChannelData< int32 > GetData()
Definition MovieSceneIntegerChannel.h:56
void RemoveDefault()
Definition MovieSceneIntegerChannel.h:202
Definition MovieSceneChannelData.h:37
Definition PropertyTag.h:38
Definition MovieSceneChannelData.h:259
Definition MovieSceneChannelTraits.h:39
Definition MovieSceneChannelTraits.h:63
Definition Optional.h:131
Definition StructOpsTypeTraits.h:11
Definition StructOpsTypeTraits.h:46
Definition IMovieSceneRetimingInterface.h:18