UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
MovieSceneStringChannel.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
9#include "Containers/Array.h"
12#include "HAL/Platform.h"
13#include "HAL/PlatformCrt.h"
14#include "Math/Range.h"
15#include "Misc/FrameNumber.h"
16#include "Misc/FrameTime.h"
17#include "Misc/Optional.h"
20#include "UObject/Class.h"
22
23#include "MovieSceneStringChannel.generated.h"
24
25struct FFrameRate;
26struct FKeyHandle;
27struct FPropertyTag;
28
29USTRUCT()
31{
33
35
37 : DefaultValue(), bHasDefaultValue(false)
38 {}
39
43 MOVIESCENETRACKS_API bool SerializeFromMismatchedTag(const FPropertyTag& Tag, FStructuredArchive::FSlot Slot);
44
51 {
52 return TMovieSceneChannelData<FString>(&Times, &Values, this, &KeyHandles);
53 }
54
61 {
62 return TMovieSceneChannelData<const FString>(&Times, &Values);
63 }
64
69 {
70 return Times;
71 }
72
76 inline bool HasAnyData() const
77 {
78 return Times.Num() != 0 || bHasDefaultValue == true;
79 }
80
87 MOVIESCENETRACKS_API const FString* Evaluate(FFrameTime InTime) const;
88
95 {
96 check(InTimes.Num() == InValues.Num());
97 Times.Append(InTimes);
98 Values.Append(InValues);
99 }
100
101public:
102
103 // ~ FMovieSceneChannel Interface
108 MOVIESCENETRACKS_API virtual void DeleteKeys(TArrayView<const FKeyHandle> InHandles) override;
109 MOVIESCENETRACKS_API virtual void DeleteKeysFrom(FFrameNumber InTime, bool bDeleteKeysBefore) override;
110 MOVIESCENETRACKS_API virtual void RemapTimes(const UE::MovieScene::IRetimingInterface& Retimer) override;
111 MOVIESCENETRACKS_API virtual TRange<FFrameNumber> ComputeEffectiveRange() const override;
112 MOVIESCENETRACKS_API virtual int32 GetNumKeys() const override;
113 MOVIESCENETRACKS_API virtual void Reset() override;
114 MOVIESCENETRACKS_API virtual void Offset(FFrameNumber DeltaPosition) override;
115 MOVIESCENETRACKS_API virtual void Optimize(const FKeyDataOptimizationParams& InParameters) override;
116 MOVIESCENETRACKS_API virtual void ClearDefault() override;
117 MOVIESCENETRACKS_API virtual FKeyHandle GetHandle(int32 Index) override;
118 MOVIESCENETRACKS_API virtual int32 GetIndex(FKeyHandle Handle) override;
119
120public:
121
127 inline void SetDefault(FString InDefaultValue)
128 {
129 bHasDefaultValue = true;
130 DefaultValue = InDefaultValue;
131 }
132
139 {
140 return bHasDefaultValue ? TOptional<FString>(DefaultValue) : TOptional<FString>();
141 }
142
146 inline void RemoveDefault()
147 {
148 bHasDefaultValue = false;
149 }
150
151private:
152
153 UPROPERTY(meta=(KeyTimes))
155
157 UPROPERTY(meta=(KeyValues))
158 TArray<FString> Values;
159
161 UPROPERTY()
162 FString DefaultValue;
163
165 UPROPERTY()
166 bool bHasDefaultValue;
167
170 FMovieSceneKeyHandleMap KeyHandles;
171};
172
173template<>
175{
176 enum { WithStructuredSerializeFromMismatchedTag = true };
177};
178
179
180template<>
182{
183#if WITH_EDITOR
184
187
188#endif
189};
190
192{
193 if (const FString* Result = InChannel->Evaluate(InTime))
194 {
195 OutValue = *Result;
196 return true;
197 }
198 return false;
199}
200
202{
203 const FFrameTime FrameTime(InFrameNumber);
204
205 const FString* ExistingValue = Channel->Evaluate(FrameTime);
206 return ExistingValue && Value == *ExistingValue;
207}
208
#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
bool EvaluateChannel(const FMovieSceneStringChannel *InChannel, FFrameTime InTime, FString &OutValue)
Definition MovieSceneStringChannel.h:191
bool ValueExistsAtTime(const FMovieSceneStringChannel *Channel, FFrameNumber InFrameNumber, const FString &Value)
Definition MovieSceneStringChannel.h:201
#define UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
#define GENERATED_BODY(...)
Definition ObjectMacros.h:765
#define USTRUCT(...)
Definition ObjectMacros.h:746
uint32 Offset
Definition VulkanMemory.cpp:4033
Definition StructuredArchiveSlots.h:52
Definition ArrayView.h:139
Definition Array.h:670
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 MovieSceneChannelData.h:37
Definition MovieSceneStringChannel.h:31
void SetDefault(FString InDefaultValue)
Definition MovieSceneStringChannel.h:127
FString CurveValueType
Definition MovieSceneStringChannel.h:34
void AddKeys(const TArray< FFrameNumber > &InTimes, const TArray< FString > &InValues)
Definition MovieSceneStringChannel.h:94
void RemoveDefault()
Definition MovieSceneStringChannel.h:146
MOVIESCENETRACKS_API const FString * Evaluate(FFrameTime InTime) const
Definition MovieSceneStringChannel.cpp:11
TMovieSceneChannelData< const FString > GetData() const
Definition MovieSceneStringChannel.h:60
TArrayView< const FFrameNumber > GetTimes() const
Definition MovieSceneStringChannel.h:68
TMovieSceneChannelData< FString > GetData()
Definition MovieSceneStringChannel.h:50
TOptional< FString > GetDefault() const
Definition MovieSceneStringChannel.h:138
bool HasAnyData() const
Definition MovieSceneStringChannel.h:76
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