UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
MovieSceneFloatChannel.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
8#include "Containers/Array.h"
11#include "CoreTypes.h"
12#include "Curves/KeyHandle.h"
13#include "Curves/RealCurve.h"
14#include "Curves/RichCurve.h"
15#include "HAL/PlatformCrt.h"
16#include "KeyParams.h"
17#include "Math/Range.h"
18#include "Misc/FrameNumber.h"
19#include "Misc/FrameRate.h"
20#include "Misc/FrameTime.h"
21#include "Misc/Optional.h"
22#include "MovieSceneChannel.h"
26#include "Templates/Tuple.h"
28#include "UObject/Class.h"
30
31#include "MovieSceneFloatChannel.generated.h"
32
33class FArchive;
34struct FPropertyTag;
35template<typename> struct TMovieSceneCurveChannelImpl;
36template <typename T> struct TIsPODType;
37
38namespace UE::MovieScene
39{
40 MOVIESCENE_API void OnRemapChannelKeyTime(const FMovieSceneChannel* Channel, const IRetimingInterface& Retimer, FFrameNumber PreviousTime, FFrameNumber CurrentTime, FMovieSceneFloatValue& InOutValue);
41
42 namespace Interpolation
43 {
44 struct FCachedInterpolation;
45 }
46}
47
48USTRUCT()
50{
52
54 : Value(0.f), InterpMode(RCIM_Cubic), TangentMode(RCTM_Auto), PaddingByte(0)
55 {}
56
58 : Value(InValue), InterpMode(RCIM_Cubic), TangentMode(RCTM_Auto), PaddingByte(0)
59 {}
60
61 bool Serialize(FArchive& Ar);
62 MOVIESCENE_API bool operator==(const FMovieSceneFloatValue& Other) const;
65 {
66 P.Serialize(Ar);
67 return Ar;
68 }
69
70 UPROPERTY(EditAnywhere, Category = "Key")
72
73 UPROPERTY(EditAnywhere, Category = "Key")
75
76 UPROPERTY(EditAnywhere, Category = "Key")
78
79 UPROPERTY(EditAnywhere, Category = "Key")
81
88 UPROPERTY()
89 uint8 PaddingByte;
90
91 // This is required because TMovieSceneCurveChannelImpl<ChannelType>::Serialize dumps us as a byte array so we need padding to be initialized to avoid indeterminism in the cooked build
92 uint8 UnserializedPaddingBytes[1] = {0};
93};
94static_assert(
95 sizeof(FMovieSceneFloatValue) ==
97 "Adjust padding size to avoid cooked build indeterminism with uninitialized padded data");
98
99template<>
101{
102 enum { Value = true };
103};
104
105
106template<>
118
119
120USTRUCT()
122{
124
127
129
131
139 MOVIESCENE_API UE::MovieScene::Interpolation::FInterpolationExtents ComputeExtents(FFrameTime StartTime, FFrameTime EndTime) const;
140
141 MOVIESCENE_API UE::MovieScene::FPiecewiseCurve AsPiecewiseCurve(bool bWithPreAndPostInfinityExtrap = true) const;
142
152
162
167 {
168 return Times;
169 }
170
175 {
176 return Values;
177 }
178
187 MOVIESCENE_API bool Evaluate(FFrameTime InTime, float& OutValue) const;
188
193
198
203public:
204
205 // ~ FMovieSceneChannel Interface
210 MOVIESCENE_API virtual void DeleteKeys(TArrayView<const FKeyHandle> InHandles) override;
211 MOVIESCENE_API virtual void DeleteKeysFrom(FFrameNumber InTime, bool bDeleteKeysBefore) override;
212 MOVIESCENE_API virtual void RemapTimes(const UE::MovieScene::IRetimingInterface& Retimer) override;
213 MOVIESCENE_API virtual TRange<FFrameNumber> ComputeEffectiveRange() const override;
214 MOVIESCENE_API virtual int32 GetNumKeys() const override;
215 MOVIESCENE_API virtual void Reset() override;
216 MOVIESCENE_API virtual void Offset(FFrameNumber DeltaPosition) override;
217 MOVIESCENE_API virtual void Optimize(const FKeyDataOptimizationParams& InParameters) override;
218 MOVIESCENE_API virtual void ClearDefault() override;
219 MOVIESCENE_API virtual void PostEditChange() override;
220 MOVIESCENE_API virtual FKeyHandle GetHandle(int32 Index) override;
221 MOVIESCENE_API virtual int32 GetIndex(FKeyHandle Handle) override;
222
223public:
224
228 inline bool HasAnyData() const
229 {
230 return Times.Num() != 0 || bHasDefaultValue == true;
231 }
232
238 inline void SetDefault(float InDefaultValue)
239 {
240 bHasDefaultValue = true;
241 DefaultValue = InDefaultValue;
242 }
243
250 {
251 return bHasDefaultValue ? TOptional<float>(DefaultValue) : TOptional<float>();
252 }
253
257 inline void RemoveDefault()
258 {
259 bHasDefaultValue = false;
260 }
261
262public:
263
265#if WITH_EDITORONLY_DATA
266 MOVIESCENE_API void PostSerialize(const FArchive& Ar);
267#endif
269 {
270 Me.Serialize(Ar);
271 return Ar;
272 }
273
275 MOVIESCENE_API bool SerializeFromMismatchedTag(const FPropertyTag& Tag, FStructuredArchive::FSlot Slot);
276
277 MOVIESCENE_API int32 AddConstantKey(FFrameNumber InTime, float InValue);
278
279 MOVIESCENE_API int32 AddLinearKey(FFrameNumber InTime, float InValue);
280
282
283 MOVIESCENE_API void AutoSetTangents(float Tension = 0.f);
284
289
300 MOVIESCENE_API void PopulateCurvePoints(double StartTimeSeconds, double EndTimeSeconds, double TimeThreshold, float ValueThreshold, FFrameRate TickResolution, TArray<TTuple<double, double>>& InOutPoints) const;
301
309
311
312#if WITH_EDITORONLY_DATA
313 /* Get whether to show this curve in the UI */
314 MOVIESCENE_API bool GetShowCurve() const;
315 /* Set whether to show this curve in the UI */
317#endif
318
319public:
320
322 UPROPERTY()
324
326 UPROPERTY()
328
329private:
330
331 UPROPERTY(meta=(KeyTimes))
332 TArray<FFrameNumber> Times;
333
334 UPROPERTY(meta=(KeyValues))
336
337 UPROPERTY()
338 float DefaultValue;
339
340 UPROPERTY()
341 bool bHasDefaultValue;
342
345 FMovieSceneKeyHandleMap KeyHandles;
346
347 UPROPERTY()
349
350#if WITH_EDITORONLY_DATA
351
352 UPROPERTY()
354
355#endif
356
359};
360
361template<>
363{
364 enum
365 {
368#if WITH_EDITORONLY_DATA
369 WithPostSerialize = true,
370#endif
371 };
373};
374
375template<>
377{
378#if WITH_EDITOR
379
382
383#endif
384};
385
390
395
400
401
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
return true
Definition ExternalRpcRegistry.cpp:601
EMovieSceneKeyInterpolation
Definition KeyParams.h:12
UE_FORCEINLINE_HINT bool operator!=(const FIndexedPointer &Other) const
Definition LockFreeList.h:76
MOVIESCENE_API void TransformValue(float &InOutValue, const FMovieSceneChannelTraitsTransform< float > &Transform)
Definition MovieSceneFloatChannel.cpp:413
MOVIESCENE_API void AssignValue(FMovieSceneFloatChannel *InChannel, FKeyHandle InKeyHandle, float InValue)
Definition MovieSceneFloatChannel.cpp:395
MOVIESCENE_API EMovieSceneKeyInterpolation GetInterpolationMode(FMovieSceneFloatChannel *InChannel, const FFrameNumber &InTime, EMovieSceneKeyInterpolation DefaultInterpolationMode)
Definition MovieSceneFloatChannel.cpp:370
MOVIESCENE_API FKeyHandle AddKeyToChannel(FMovieSceneFloatChannel *Channel, FFrameNumber InFrameNumber, float InValue, EMovieSceneKeyInterpolation Interpolation)
Definition MovieSceneFloatChannel.cpp:375
MOVIESCENE_API void InvertValue(float &InOutValue)
Definition MovieSceneFloatChannel.cpp:400
MOVIESCENE_API void ReciprocalValue(float &InOutValue)
Definition MovieSceneFloatChannel.cpp:405
MOVIESCENE_API bool ValueExistsAtTime(const FMovieSceneFloatChannel *InChannel, FFrameNumber InFrameNumber, float InValue)
Definition MovieSceneFloatChannel.cpp:385
MOVIESCENE_API void Dilate(FMovieSceneFloatChannel *InChannel, FFrameNumber Origin, float DilationFactor)
Definition MovieSceneFloatChannel.cpp:380
const bool
Definition NetworkReplayStreaming.h:178
#define UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
#define GENERATED_BODY(...)
Definition ObjectMacros.h:765
#define USTRUCT(...)
Definition ObjectMacros.h:746
EPropertyObjectReferenceType
Definition ObjectMacros.h:533
ERichCurveExtrapolation
Definition RealCurve.h:27
ERichCurveInterpMode
Definition RealCurve.h:13
ERichCurveTangentMode
Definition RichCurve.h:16
USkinnedMeshComponent float
Definition SkinnedMeshComponent.h:60
auto GetData(const TStringConversion< Converter, DefaultConversionSize > &Conversion) -> decltype(Conversion.Get())
Definition StringConv.h:802
uint32 Offset
Definition VulkanMemory.cpp:4033
uint8_t uint8
Definition binka_ue_file_header.h:8
Definition Archive.h:1208
Definition StructuredArchiveSlots.h:52
Definition MovieScene.Build.cs:6
Definition ArrayView.h:139
Definition Array.h:670
Definition EnumAsByte.h:22
Definition Range.h:50
Definition ConstraintsManager.h:14
void OnRemapChannelKeyTime(const FMovieSceneChannel *Channel, const IRetimingInterface &Retimer, FFrameNumber PreviousTime, FFrameNumber CurrentTime, FMovieSceneDoubleValue &InOutValue)
Definition MovieSceneDoubleChannel.cpp:26
Definition AdvancedWidgetsModule.cpp:13
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 MovieSceneChannelTraits.h:52
Definition MovieSceneChannel.h:112
Definition MovieSceneFloatChannel.h:122
float CurveValueType
Definition MovieSceneFloatChannel.h:125
TArrayView< const FMovieSceneFloatValue > GetValues() const
Definition MovieSceneFloatChannel.h:174
TOptional< float > GetDefault() const
Definition MovieSceneFloatChannel.h:249
void SetDefault(float InDefaultValue)
Definition MovieSceneFloatChannel.h:238
FFrameRate GetTickResolution() const
Definition MovieSceneFloatChannel.h:286
void SetTickResolution(FFrameRate InTickSolution)
Definition MovieSceneFloatChannel.h:288
void RemoveDefault()
Definition MovieSceneFloatChannel.h:257
TArrayView< const FFrameNumber > GetTimes() const
Definition MovieSceneFloatChannel.h:166
bool HasAnyData() const
Definition MovieSceneFloatChannel.h:228
MOVIESCENE_API bool Serialize(FArchive &Ar)
Definition MovieSceneFloatChannel.cpp:456
TMovieSceneChannelData< const FMovieSceneFloatValue > GetData() const
Definition MovieSceneFloatChannel.h:158
friend FArchive & operator<<(FArchive &Ar, FMovieSceneFloatChannel &Me)
Definition MovieSceneFloatChannel.h:268
Definition MovieSceneFloatChannel.h:50
uint8 PaddingByte
Definition MovieSceneFloatChannel.h:89
uint8 UnserializedPaddingBytes[1]
Definition MovieSceneFloatChannel.h:92
friend FArchive & operator<<(FArchive &Ar, FMovieSceneFloatValue &P)
Definition MovieSceneFloatChannel.h:64
FMovieSceneFloatValue(float InValue)
Definition MovieSceneFloatChannel.h:57
TEnumAsByte< ERichCurveInterpMode > InterpMode
Definition MovieSceneFloatChannel.h:77
float Value
Definition MovieSceneFloatChannel.h:71
FMovieSceneTangentData Tangent
Definition MovieSceneFloatChannel.h:74
TEnumAsByte< ERichCurveTangentMode > TangentMode
Definition MovieSceneFloatChannel.h:80
Definition MovieSceneChannelData.h:37
Definition MovieSceneCurveChannelCommon.h:26
Definition PropertyTag.h:38
Definition IsPODType.h:12
@ Value
Definition IsPODType.h:13
Definition MovieSceneChannelData.h:259
Definition MovieSceneChannelTraits.h:39
Definition MovieSceneChannelTraits.h:63
Definition MovieSceneCurveChannelImpl.h:25
Definition Optional.h:131
Definition StructOpsTypeTraits.h:11
@ WithStructuredSerializeFromMismatchedTag
Definition StructOpsTypeTraits.h:29
@ WithIdenticalViaEquality
Definition StructOpsTypeTraits.h:18
@ WithCopy
Definition StructOpsTypeTraits.h:17
@ WithSerializer
Definition StructOpsTypeTraits.h:23
@ WithPostSerialize
Definition StructOpsTypeTraits.h:25
static constexpr EPropertyObjectReferenceType WithSerializerObjectReferences
Definition StructOpsTypeTraits.h:41
Definition StructOpsTypeTraits.h:46
Definition Tuple.h:652
Definition IMovieSceneRetimingInterface.h:18
Definition MovieSceneInterpolation.h:460