UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
MovieSceneByteChannel.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"
11#include "Misc/FrameNumber.h"
12#include "Misc/FrameTime.h"
13#include "Misc/Optional.h"
14#include "MovieSceneChannel.h"
19#include "UObject/Class.h"
21#include "UObject/ObjectPtr.h"
22#include "Curves/RealCurve.h"
23
24#include "MovieSceneByteChannel.generated.h"
25
26struct FFrameRate;
27struct FKeyHandle;
28struct FPropertyTag;
29
30
31USTRUCT()
33{
35
37
39 : PreInfinityExtrap(RCCE_Constant)
40 , PostInfinityExtrap(RCCE_Constant)
41 , DefaultValue(0)
42 , bHasDefaultValue(false)
43 , Enum(nullptr)
44 , KeyHandles()
45 {}
46
50 MOVIESCENE_API bool SerializeFromMismatchedTag(const FPropertyTag& Tag, FStructuredArchive::FSlot Slot);
51
58 {
59 return TMovieSceneChannelData<uint8>(&Times, &Values, this, &KeyHandles);
60 }
61
68 {
69 return TMovieSceneChannelData<const uint8>(&Times, &Values);
70 }
71
76 {
77 return Times;
78 }
79
84 {
85 return Values;
86 }
87
91 inline bool HasAnyData() const
92 {
93 return Times.Num() != 0 || bHasDefaultValue == true;
94 }
95
103 MOVIESCENE_API bool Evaluate(FFrameTime InTime, uint8& OutValue) const;
104
111 {
112 check(InTimes.Num() == InValues.Num());
113 Times.Append(InTimes);
114 Values.Append(InValues);
115 }
116
117public:
118
119 // ~ FMovieSceneChannel Interface
124 MOVIESCENE_API virtual void DeleteKeys(TArrayView<const FKeyHandle> InHandles) override;
125 MOVIESCENE_API virtual void DeleteKeysFrom(FFrameNumber InTime, bool bDeleteKeysBefore) override;
126 MOVIESCENE_API virtual void RemapTimes(const UE::MovieScene::IRetimingInterface& Retimer) override;
127 MOVIESCENE_API virtual TRange<FFrameNumber> ComputeEffectiveRange() const override;
128 MOVIESCENE_API virtual int32 GetNumKeys() const override;
129 MOVIESCENE_API virtual void Reset() override;
130 MOVIESCENE_API virtual void Offset(FFrameNumber DeltaPosition) override;
131 MOVIESCENE_API virtual void Optimize(const FKeyDataOptimizationParams& InParameters) override;
132 MOVIESCENE_API virtual void ClearDefault() override;
133
134public:
135
142 {
143 bHasDefaultValue = true;
144 DefaultValue = InDefaultValue;
145 }
146
153 {
154 return bHasDefaultValue ? TOptional<uint8>(DefaultValue) : TOptional<uint8>();
155 }
156
160 inline void RemoveDefault()
161 {
162 bHasDefaultValue = false;
163 }
164
165
166public:
167
168 UEnum* GetEnum() const
169 {
170 return Enum;
171 }
172
174 {
175 Enum = InEnum;
176 }
177
178public:
180 UPROPERTY()
182
184 UPROPERTY()
186
187private:
188
189 UPROPERTY(meta=(KeyTimes))
190 TArray<FFrameNumber> Times;
191
192 UPROPERTY()
193 uint8 DefaultValue;
194
195 UPROPERTY()
196 bool bHasDefaultValue;
197
198 UPROPERTY(meta=(KeyValues))
199 TArray<uint8> Values;
200
201 UPROPERTY()
203
206 FMovieSceneKeyHandleMap KeyHandles;
207};
208
209template<>
211{
212 enum { WithStructuredSerializeFromMismatchedTag = true };
213};
214
215template<>
217{
218#if WITH_EDITOR
219
222
223#endif
224};
#define check(expr)
Definition AssertionMacros.h:314
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
uint32 Offset
Definition VulkanMemory.cpp:4033
uint8_t uint8
Definition binka_ue_file_header.h:8
Definition StructuredArchiveSlots.h:52
Definition ArrayView.h:139
Definition Array.h:670
Definition EnumAsByte.h:22
Definition Range.h:50
Definition Class.h:2791
@ false
Definition radaudio_common.h:23
Definition FrameNumber.h:18
Definition FrameRate.h:21
Definition FrameTime.h:16
Definition MovieSceneChannelTraits.h:20
Definition KeyHandle.h:15
Definition MovieSceneByteChannel.h:33
TArrayView< const uint8 > GetValues() const
Definition MovieSceneByteChannel.h:83
TMovieSceneChannelData< uint8 > GetData()
Definition MovieSceneByteChannel.h:57
uint8 CurveValueType
Definition MovieSceneByteChannel.h:36
void SetDefault(uint8 InDefaultValue)
Definition MovieSceneByteChannel.h:141
bool HasAnyData() const
Definition MovieSceneByteChannel.h:91
UEnum * GetEnum() const
Definition MovieSceneByteChannel.h:168
TMovieSceneChannelData< const uint8 > GetData() const
Definition MovieSceneByteChannel.h:67
void AddKeys(const TArray< FFrameNumber > &InTimes, const TArray< uint8 > &InValues)
Definition MovieSceneByteChannel.h:110
void SetEnum(UEnum *InEnum)
Definition MovieSceneByteChannel.h:173
TArrayView< const FFrameNumber > GetTimes() const
Definition MovieSceneByteChannel.h:75
TOptional< uint8 > GetDefault() const
Definition MovieSceneByteChannel.h:152
void RemoveDefault()
Definition MovieSceneByteChannel.h:160
Definition MovieSceneChannel.h:112
Definition MovieSceneChannelData.h:37
Definition PropertyTag.h:38
Definition MovieSceneChannelData.h:259
Definition MovieSceneChannelTraits.h:39
Definition MovieSceneChannelTraits.h:63
Definition ObjectPtr.h:488
Definition Optional.h:131
Definition StructOpsTypeTraits.h:11
Definition StructOpsTypeTraits.h:46
Definition IMovieSceneRetimingInterface.h:18