UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
FMovieSceneDoubleChannel Struct Reference

#include <MovieSceneDoubleChannel.h>

+ Inheritance diagram for FMovieSceneDoubleChannel:

Public Types

typedef double CurveValueType
 
typedef FMovieSceneDoubleValue ChannelValueType
 

Public Member Functions

 FMovieSceneDoubleChannel ()
 
MOVIESCENE_API UE::MovieScene::FPiecewiseCurve AsPiecewiseCurve (bool bWithPreAndPostInfinityExtrap=true) const
 
TMovieSceneChannelData< FMovieSceneDoubleValueGetData ()
 
TMovieSceneChannelData< const FMovieSceneDoubleValueGetData () const
 
TArrayView< const FFrameNumberGetTimes () const
 
TArrayView< const FMovieSceneDoubleValueGetValues () const
 
MOVIESCENE_API bool Evaluate (FFrameTime InTime, double &OutValue) const
 
MOVIESCENE_API bool Evaluate (FFrameTime InTime, float &OutValue) const
 
MOVIESCENE_API UE::MovieScene::Interpolation::FCachedInterpolation GetInterpolationForTime (FFrameTime InTime) const
 
MOVIESCENE_API UE::MovieScene::Interpolation::FInterpolationExtents ComputeExtents (FFrameTime StartTime, FFrameTime EndTime) const
 
MOVIESCENE_API TOptional< FFrameTimeInverseEvaluate (double Value, FFrameTime TimeHint, UE::MovieScene::EInverseEvaluateFlags Flags) const
 
MOVIESCENE_API bool InverseEvaluateBetween (double Value, FFrameTime StartTime, FFrameTime EndTime, const TFunctionRef< bool(FFrameTime)> &Visitor) const
 
MOVIESCENE_API int32 GetCycleCount (FFrameTime InTime) const
 
MOVIESCENE_API TRange< FFrameNumberGetCycleRange (int32 InCycleCount) const
 
MOVIESCENE_API void Set (TArray< FFrameNumber > InTimes, TArray< FMovieSceneDoubleValue > InValues)
 
MOVIESCENE_API void SetKeysOnly (TArrayView< FFrameNumber > InTimes, TArrayView< FMovieSceneDoubleValue > InValues)
 
virtual MOVIESCENE_API void GetKeys (const TRange< FFrameNumber > &WithinRange, TArray< FFrameNumber > *OutKeyTimes, TArray< FKeyHandle > *OutKeyHandles) override
 
virtual MOVIESCENE_API void GetKeyTimes (TArrayView< const FKeyHandle > InHandles, TArrayView< FFrameNumber > OutKeyTimes) override
 
virtual MOVIESCENE_API void SetKeyTimes (TArrayView< const FKeyHandle > InHandles, TArrayView< const FFrameNumber > InKeyTimes) override
 
virtual MOVIESCENE_API void DuplicateKeys (TArrayView< const FKeyHandle > InHandles, TArrayView< FKeyHandle > OutNewHandles) override
 
virtual MOVIESCENE_API void DeleteKeys (TArrayView< const FKeyHandle > InHandles) override
 
virtual MOVIESCENE_API void DeleteKeysFrom (FFrameNumber InTime, bool bDeleteKeysBefore) override
 
virtual MOVIESCENE_API void RemapTimes (const UE::MovieScene::IRetimingInterface &Retimer) override
 
virtual MOVIESCENE_API TRange< FFrameNumberComputeEffectiveRange () const override
 
virtual MOVIESCENE_API int32 GetNumKeys () const override
 
virtual MOVIESCENE_API void Reset () override
 
virtual MOVIESCENE_API void Offset (FFrameNumber DeltaPosition) override
 
virtual MOVIESCENE_API void Optimize (const FKeyDataOptimizationParams &InParameters) override
 
virtual MOVIESCENE_API void ClearDefault () override
 
virtual MOVIESCENE_API void PostEditChange () override
 
virtual MOVIESCENE_API FKeyHandle GetHandle (int32 Index) override
 
virtual MOVIESCENE_API int32 GetIndex (FKeyHandle Handle) override
 
bool HasAnyData () const
 
void SetDefault (double InDefaultValue)
 
TOptional< doubleGetDefault () const
 
void RemoveDefault ()
 
MOVIESCENE_API bool Serialize (FArchive &Ar)
 
MOVIESCENE_API bool SerializeFromMismatchedTag (const FPropertyTag &Tag, FStructuredArchive::FSlot Slot)
 
MOVIESCENE_API int32 AddConstantKey (FFrameNumber InTime, double InValue)
 
MOVIESCENE_API int32 AddLinearKey (FFrameNumber InTime, double InValue)
 
MOVIESCENE_API int32 AddCubicKey (FFrameNumber InTime, double InValue, ERichCurveTangentMode TangentMode=RCTM_Auto, const FMovieSceneTangentData &Tangent=FMovieSceneTangentData())
 
MOVIESCENE_API void AutoSetTangents (float Tension=0.f)
 
FFrameRate GetTickResolution () const
 
void SetTickResolution (FFrameRate InTickSolution)
 
MOVIESCENE_API void PopulateCurvePoints (double StartTimeSeconds, double EndTimeSeconds, double TimeThreshold, double ValueThreshold, FFrameRate TickResolution, TArray< TTuple< double, double > > &InOutPoints) const
 
MOVIESCENE_API void AddKeys (const TArray< FFrameNumber > &InTimes, const TArray< FMovieSceneDoubleValue > &InValues)
 
MOVIESCENE_API void UpdateOrAddKeys (const TArrayView< const FFrameNumber > InTimes, const TArrayView< FMovieSceneDoubleValue > InValues)
 
- Public Member Functions inherited from FMovieSceneChannel
 FMovieSceneChannel ()
 
virtual ~FMovieSceneChannel ()
 
MOVIESCENE_API void GetKeyTime (const FKeyHandle InHandle, FFrameNumber &OutKeyTime)
 
MOVIESCENE_API void SetKeyTime (const FKeyHandle InHandle, const FFrameNumber InKeyTime)
 
virtual MOVIESCENE_API void ChangeFrameResolution (FFrameRate SourceRate, FFrameRate DestinationRate)
 
FMovieSceneChannelDataKeyAddedEventOnKeyAddedEvent ()
 
FMovieSceneChannelDataKeyDeletedEventOnKeyDeletedEvent ()
 
FMovieSceneChannelDataKeyMovedEventOnKeyMovedEvent ()
 

Public Attributes

TEnumAsByte< ERichCurveExtrapolationPreInfinityExtrap
 
TEnumAsByte< ERichCurveExtrapolationPostInfinityExtrap
 

Friends

struct TMovieSceneCurveChannelImpl< FMovieSceneDoubleChannel >
 
FArchiveoperator<< (FArchive &Ar, FMovieSceneDoubleChannel &Me)
 

Additional Inherited Members

- Protected Attributes inherited from FMovieSceneChannel
FMovieSceneChannelDataKeyAddedEvent KeyAddedEvent
 
FMovieSceneChannelDataKeyDeletedEvent KeyDeletedEvent
 
FMovieSceneChannelDataKeyMovedEvent KeyMovedEvent
 

Member Typedef Documentation

◆ ChannelValueType

◆ CurveValueType

Constructor & Destructor Documentation

◆ FMovieSceneDoubleChannel()

FMovieSceneDoubleChannel::FMovieSceneDoubleChannel ( )
inline

Member Function Documentation

◆ AddConstantKey()

int32 FMovieSceneDoubleChannel::AddConstantKey ( FFrameNumber  InTime,
double  InValue 
)

◆ AddCubicKey()

int32 FMovieSceneDoubleChannel::AddCubicKey ( FFrameNumber  InTime,
double  InValue,
ERichCurveTangentMode  TangentMode = RCTM_Auto,
const FMovieSceneTangentData Tangent = FMovieSceneTangentData() 
)

◆ AddKeys()

void FMovieSceneDoubleChannel::AddKeys ( const TArray< FFrameNumber > &  InTimes,
const TArray< FMovieSceneDoubleValue > &  InValues 
)

Add keys with these times to channel. The number of elements in both arrays much match or nothing is added. Also assume that the times are greater than last time in the channel and are increasing. If not bad things can happen.

Parameters
InTimesTimes to add
InValuesValues to add

◆ AddLinearKey()

int32 FMovieSceneDoubleChannel::AddLinearKey ( FFrameNumber  InTime,
double  InValue 
)

◆ AsPiecewiseCurve()

UE::MovieScene::FPiecewiseCurve FMovieSceneDoubleChannel::AsPiecewiseCurve ( bool  bWithPreAndPostInfinityExtrap = true) const

◆ AutoSetTangents()

void FMovieSceneDoubleChannel::AutoSetTangents ( float  Tension = 0.f)

◆ ClearDefault()

void FMovieSceneDoubleChannel::ClearDefault ( )
overridevirtual

Clear all the default value on this channel

Reimplemented from FMovieSceneChannel.

◆ ComputeEffectiveRange()

TRange< FFrameNumber > FMovieSceneDoubleChannel::ComputeEffectiveRange ( ) const
overridevirtual

Compute the effective range of this channel, for example, the extents of its key times

Returns
A range that represents the greatest range of times occupied by this channel, in the sequence's frame resolution

Reimplemented from FMovieSceneChannel.

◆ ComputeExtents()

UE::MovieScene::Interpolation::FInterpolationExtents FMovieSceneDoubleChannel::ComputeExtents ( FFrameTime  StartTime,
FFrameTime  EndTime 
) const

Compute the value extents of this curve within the specified limits

Parameters
StartTimeThe start of the range within which to compute extents
EndTimeThe end of the range within which to compute extents
Returns
The extents of this channel

◆ DeleteKeys()

void FMovieSceneDoubleChannel::DeleteKeys ( TArrayView< const FKeyHandle InHandles)
overridevirtual

Delete the keys for the specified key handles

Parameters
InHandlesArray of handles to delete

Reimplemented from FMovieSceneChannel.

◆ DeleteKeysFrom()

void FMovieSceneDoubleChannel::DeleteKeysFrom ( FFrameNumber  InTime,
bool  bDeleteKeysBefore 
)
overridevirtual

Delete keys before or after a specified time

Parameters
InTimeDelete keys after this time
bDeleteKeysBeforeWhether to delete keys before the specified time

Reimplemented from FMovieSceneChannel.

◆ DuplicateKeys()

void FMovieSceneDoubleChannel::DuplicateKeys ( TArrayView< const FKeyHandle InHandles,
TArrayView< FKeyHandle OutNewHandles 
)
overridevirtual

Duplicate the keys for the specified key handles

Parameters
InHandlesArray of handles to duplicate
OutKeyTimesPre-sized array to receive duplicated key handles. Invalid key handles will not be assigned to this array. Must match size of InHandles

Reimplemented from FMovieSceneChannel.

◆ Evaluate() [1/2]

bool FMovieSceneDoubleChannel::Evaluate ( FFrameTime  InTime,
double OutValue 
) const

Evaluate this channel with the frame resolution

Parameters
InTimeThe time to evaluate at
InTimeThe Frame Rate the time to evaluate at
OutValueA value to receive the result
Returns
true if the channel was evaluated successfully, false otherwise

◆ Evaluate() [2/2]

bool FMovieSceneDoubleChannel::Evaluate ( FFrameTime  InTime,
float OutValue 
) const

Type shortening version of Evaluate above.

◆ GetCycleCount()

int32 FMovieSceneDoubleChannel::GetCycleCount ( FFrameTime  InTime) const

Retrieve the index of the cycle that the specified time falls within according to this channel's extrapolation modes.

Note
Negative cycle counts are returned for cycles that lie before the first key

◆ GetCycleRange()

TRange< FFrameNumber > FMovieSceneDoubleChannel::GetCycleRange ( int32  InCycleCount) const

Retrieve the time range of a single cycle of this channel

◆ GetData() [1/2]

TMovieSceneChannelData< FMovieSceneDoubleValue > FMovieSceneDoubleChannel::GetData ( )
inline

Access a mutable interface for this channel's data

Returns
An object that is able to manipulate this channel's data

◆ GetData() [2/2]

TMovieSceneChannelData< const FMovieSceneDoubleValue > FMovieSceneDoubleChannel::GetData ( ) const
inline

Access a constant interface for this channel's data

Returns
An object that is able to interrogate this channel's data

◆ GetDefault()

TOptional< double > FMovieSceneDoubleChannel::GetDefault ( ) const
inline

Get this channel's default value that will be used when no keys are present

Returns
(Optional) The channel's default value

◆ GetHandle()

FKeyHandle FMovieSceneDoubleChannel::GetHandle ( int32  Index)
overridevirtual

Retrieve a key handle for the specified key time index

Parameters
IndexThe index to retrieve
Returns
A key handle that identifies the key at the specified index, regardless of re-ordering

Reimplemented from FMovieSceneChannel.

◆ GetIndex()

int32 FMovieSceneDoubleChannel::GetIndex ( FKeyHandle  Handle)
overridevirtual

Attempt to retrieve the index of key from its handle

Parameters
HandleThe handle to retrieve
Returns
The index of the key, or INDEX_NONE

Reimplemented from FMovieSceneChannel.

◆ GetInterpolationForTime()

UE::MovieScene::Interpolation::FCachedInterpolation FMovieSceneDoubleChannel::GetInterpolationForTime ( FFrameTime  InTime) const

Retrieve a cached interpolation from this channel for the specified time

◆ GetKeys()

void FMovieSceneDoubleChannel::GetKeys ( const TRange< FFrameNumber > &  WithinRange,
TArray< FFrameNumber > *  OutKeyTimes,
TArray< FKeyHandle > *  OutKeyHandles 
)
overridevirtual

Get key information pertaining to all keys that exist within the specified range

Parameters
WithinRangeThe range within which to return key information
OutKeyTimes(Optional) Array to receive key times
OutKeyHandles(Optional) Array to receive key handles

Reimplemented from FMovieSceneChannel.

◆ GetKeyTimes()

void FMovieSceneDoubleChannel::GetKeyTimes ( TArrayView< const FKeyHandle InHandles,
TArrayView< FFrameNumber OutKeyTimes 
)
overridevirtual

Get all key times for the specified key handles

Parameters
InHandlesArray of handles to get times for
OutKeyTimesPre-sized array of key times to set. Invalid key handles will not assign to this array. Must match size of InHandles

Reimplemented from FMovieSceneChannel.

◆ GetNumKeys()

int32 FMovieSceneDoubleChannel::GetNumKeys ( ) const
overridevirtual

Get the total number of keys on this channel

Returns
The number of keys on this channel

Reimplemented from FMovieSceneChannel.

◆ GetTickResolution()

FFrameRate FMovieSceneDoubleChannel::GetTickResolution ( ) const
inline

Get the channel's frame resolution

◆ GetTimes()

TArrayView< const FFrameNumber > FMovieSceneDoubleChannel::GetTimes ( ) const
inline

Const access to this channel's times

◆ GetValues()

TArrayView< const FMovieSceneDoubleValue > FMovieSceneDoubleChannel::GetValues ( ) const
inline

Const access to this channel's values

◆ HasAnyData()

bool FMovieSceneDoubleChannel::HasAnyData ( ) const
inline

Check whether this channel has any data

◆ InverseEvaluate()

TOptional< FFrameTime > FMovieSceneDoubleChannel::InverseEvaluate ( double  Value,
FFrameTime  TimeHint,
UE::MovieScene::EInverseEvaluateFlags  Flags 
) const

Solve this curve for a given (y). Where more than one solution exists, TimeHint will be used to find the solution closest to the hint.

Parameters
ValueThe result to solve for
TimeHintPredicate time to use for locating the most relevant solution
FlagsFlag structure used to control how to solve the curve
Returns
The solution if one exists, false otherwise

◆ InverseEvaluateBetween()

bool FMovieSceneDoubleChannel::InverseEvaluateBetween ( double  Value,
FFrameTime  StartTime,
FFrameTime  EndTime,
const TFunctionRef< bool(FFrameTime)> &  Visitor 
) const

Solve this curve for a given (y), only considering solutions that lie within a certain range.

Parameters
ValueThe result to solve for
StartTimeStart time before which solutions will not be considered
EndTimeEnd time after which solutions will not be considered
VisitorCallback that is invoked for each solution. Returning true allows the algorithm to continue, false will terminate the algorithm.
Returns
False if any invocation of Visitor returned false, true otherwise.

◆ Offset()

void FMovieSceneDoubleChannel::Offset ( FFrameNumber  DeltaPosition)
overridevirtual

Offset the keys within this channel by a given delta position

Parameters
DeltaPositionThe number of frames to offset by, in the sequence's frame resolution

Reimplemented from FMovieSceneChannel.

◆ Optimize()

void FMovieSceneDoubleChannel::Optimize ( const FKeyDataOptimizationParams InParameters)
overridevirtual

Optimize this channel by removing any redundant data according to the specified parameters

Parameters
InParametersParameter struct specifying how to optimize the channel

Reimplemented from FMovieSceneChannel.

◆ PopulateCurvePoints()

void FMovieSceneDoubleChannel::PopulateCurvePoints ( double  StartTimeSeconds,
double  EndTimeSeconds,
double  TimeThreshold,
double  ValueThreshold,
FFrameRate  TickResolution,
TArray< TTuple< double, double > > &  InOutPoints 
) const

Populate the specified array with times and values that represent the smooth interpolation of this channel across the specified range

Parameters
StartTimeSecondsThe first time in seconds to include in the resulting array
EndTimeSecondsThe last time in seconds to include in the resulting array
TimeThresholdA small time threshold in seconds below which we should stop adding new points
ValueThresholdA small value threshold below which we should stop adding new points where the linear interpolation would suffice
TickResolutionThe tick resolution with which to interpret this channel's times
InOutPointsAn array to populate with the evaluated points

◆ PostEditChange()

void FMovieSceneDoubleChannel::PostEditChange ( )
overridevirtual

Perform a possibly heavy operation after an edit change

Reimplemented from FMovieSceneChannel.

◆ RemapTimes()

void FMovieSceneDoubleChannel::RemapTimes ( const UE::MovieScene::IRetimingInterface Retimer)
overridevirtual

Remap the times contained within this channel using a custom remapper

Reimplemented from FMovieSceneChannel.

◆ RemoveDefault()

void FMovieSceneDoubleChannel::RemoveDefault ( )
inline

Remove this channel's default value causing the channel to have no effect where no keys are present

◆ Reset()

void FMovieSceneDoubleChannel::Reset ( )
overridevirtual

Reset this channel back to its original state

Reimplemented from FMovieSceneChannel.

◆ Serialize()

bool FMovieSceneDoubleChannel::Serialize ( FArchive Ar)

◆ SerializeFromMismatchedTag()

bool FMovieSceneDoubleChannel::SerializeFromMismatchedTag ( const FPropertyTag Tag,
FStructuredArchive::FSlot  Slot 
)

Serialize this double channel from a mismatching property tag (FRichCurve or FMovieSceneFloatChannel)

◆ Set()

void FMovieSceneDoubleChannel::Set ( TArray< FFrameNumber InTimes,
TArray< FMovieSceneDoubleValue InValues 
)

Set the channel's times and values to the requested values

◆ SetDefault()

void FMovieSceneDoubleChannel::SetDefault ( double  InDefaultValue)
inline

Set this channel's default value that should be used when no keys are present

Parameters
InDefaultValueThe desired default value

◆ SetKeysOnly()

void FMovieSceneDoubleChannel::SetKeysOnly ( TArrayView< FFrameNumber InTimes,
TArrayView< FMovieSceneDoubleValue InValues 
)

Set the channel's times and values to the requested values, but does not allocate key handles

◆ SetKeyTimes()

void FMovieSceneDoubleChannel::SetKeyTimes ( TArrayView< const FKeyHandle InHandles,
TArrayView< const FFrameNumber InKeyTimes 
)
overridevirtual

Set key times for the specified key handles

Parameters
InHandlesArray of handles to get times for
InKeyTimesArray of times to apply - one per handle

Reimplemented from FMovieSceneChannel.

◆ SetTickResolution()

void FMovieSceneDoubleChannel::SetTickResolution ( FFrameRate  InTickSolution)
inline

Set the channel's frame resolution

◆ UpdateOrAddKeys()

void FMovieSceneDoubleChannel::UpdateOrAddKeys ( const TArrayView< const FFrameNumber InTimes,
const TArrayView< FMovieSceneDoubleValue InValues 
)

Friends And Related Symbol Documentation

◆ operator<<

FArchive & operator<< ( FArchive Ar,
FMovieSceneDoubleChannel Me 
)
friend

◆ TMovieSceneCurveChannelImpl< FMovieSceneDoubleChannel >

Member Data Documentation

◆ PostInfinityExtrap

TEnumAsByte<ERichCurveExtrapolation> FMovieSceneDoubleChannel::PostInfinityExtrap

Post-infinity extrapolation state

◆ PreInfinityExtrap

TEnumAsByte<ERichCurveExtrapolation> FMovieSceneDoubleChannel::PreInfinityExtrap

Pre-infinity extrapolation state


The documentation for this struct was generated from the following files: