UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
LiveLinkTypes.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"
7#include "Containers/Map.h"
9#include "CoreMinimal.h"
10#include "HAL/PlatformTime.h"
11#include "HAL/UnrealMemory.h"
12#include "LiveLinkRefSkeleton.h"
13#include "Math/Transform.h"
15#include "Math/UnrealMathSSE.h"
17#include "Misc/FrameRate.h"
18#include "Misc/FrameTime.h"
19#include "Misc/Guid.h"
22#include "Templates/Casts.h"
23#include "Templates/Models.h"
27#include "UObject/Class.h"
28#include "UObject/NameTypes.h"
33#include "UObject/UnrealNames.h"
34
35#include "LiveLinkTypes.generated.h"
36
37
38USTRUCT(BlueprintType)
40{
41public:
43
45 FLiveLinkSubjectName(FName InName) : Name(InName) {}
46 FLiveLinkSubjectName(EName InName) : Name(InName) {}
47
48 // Name of the subject
49 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Live Link")
51
52 bool IsNone() const { return Name.IsNone(); }
53 FString ToString() const { return Name.ToString(); }
54
55 // FName operators
56 operator FName&() { return Name; }
57 operator const FName&() const { return Name; }
58
59 bool operator==(const FLiveLinkSubjectName& Other) const { return Name == Other.Name; }
60 bool operator==(const FName Other) const { return Name == Other; }
61
63 {
64 Ar << InSubjectName.Name;
65 return Ar;
66 }
67
69 {
70 return GetTypeHash(Value.Name);
71 }
72};
73
74
75// Structure that identifies an individual subject
76USTRUCT(BlueprintType)
78{
80
81 // The guid for this subjects source
82 UPROPERTY(BlueprintReadOnly, Category="LiveLink")
83 FGuid Source;
84
85 // The Name of this subject
86 UPROPERTY(BlueprintReadOnly, Category="LiveLink")
88
91
92 bool operator== (const FLiveLinkSubjectKey& Other) const { return SubjectName == Other.SubjectName && Source == Other.Source; }
93 bool operator!=(const FLiveLinkSubjectKey& Other) const { return !(*this == Other); }
94
96 {
97 Ar << InSubjectKey.Source;
98 Ar << InSubjectKey.SubjectName;
99 return Ar;
100 }
101
102 friend uint32 GetTypeHash(const FLiveLinkSubjectKey& SubjectKey)
103 {
104 return GetTypeHash(SubjectKey.Source) + GetTypeHash(SubjectKey.SubjectName.Name) * 13;
105 }
106};
107
108
109USTRUCT()
111{
112public:
114
115public:
117 : Offset(0.0)
118 {
120 }
121
123 : Time(InTime)
124 {
125 //Initialize offset with an instantaneous offset, to be corrected at a later stage from a continuous calculation
127 }
128
129 explicit FLiveLinkWorldTime(const double InTime, const double InOffset)
130 : Time(InTime)
131 , Offset(InOffset)
132 {
133 }
134
135 // Returns the raw time received from the sender
136 double GetSourceTime() const
137 {
138 return Time;
139 }
140
141 // Returns offset between source time and engine time
142 double GetOffset() const
143 {
144 return Offset;
145 }
146
147 // Returns the time + the adjustment between source clock and engine clock to have a time comparable to engine one
148 double GetOffsettedTime() const
149 {
150 return Time + Offset;
151 }
152
153 // Adjust clock offset with a better evaluation of the difference between source clock and engine clock
155 {
157 }
158
159private:
160 // SourceTime for this frame. Used during interpolation and to compute a running clock offset
161 UPROPERTY(meta = (IgnoreForMemberInitializationTest))
162 double Time;
163
164 // Value calculated on create to represent the different between the source time and client time
165 // Can also be updated afterwards if a better continuous offset is calculated
166 UPROPERTY()
168};
169
170
171USTRUCT(BlueprintType)
173{
175
176 UPROPERTY(EditAnywhere, Category="LiveLink")
177 double WorldTime;
178
179 UPROPERTY(EditAnywhere, Category="LiveLink")
181
183 : WorldTime(0.0)
184 , SceneTime()
185 {
186 }
187
189 : WorldTime(InWorldTime)
190 , SceneTime(InSceneTime)
191 {
192 }
193};
194
195
196USTRUCT(BlueprintType)
198{
200
201 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="LiveLink")
202 TMap<FName, FString> StringMetaData;
203
204 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="LiveLink")
206};
207
208// Identifier assigned to each incoming frame once in the pipeline
210
215USTRUCT(BlueprintType)
217{
219
221 UPROPERTY(VisibleAnywhere, Category="LiveLink")
223
225 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="LiveLink")
227
229 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="LiveLink")
230 TArray<float> PropertyValues;
231
233 FLiveLinkTime ArrivalTime;
234
237
239 FLiveLinkTime GetLiveLinkTime() const { return FLiveLinkTime(WorldTime.GetOffsettedTime(), MetaData.SceneTime); }
240
241#if WITH_EDITORONLY_DATA
243 UPROPERTY(VisibleAnywhere, Category = "LiveLink")
244 TMap<FName, double> Timestamps;
245#endif
246};
247
248
254USTRUCT(BlueprintType)
256{
258
259
260 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="LiveLink")
262
263
264 bool FindPropertyValue(const FLiveLinkBaseFrameData& FrameData, const FName PropertyName, float& OutValue) const
265 {
266 if (PropertyNames.Num() == FrameData.PropertyValues.Num())
267 {
268 const int32 FoundIndex = PropertyNames.Find(PropertyName);
269 if (FoundIndex != INDEX_NONE)
270 {
271 OutValue = FrameData.PropertyValues[FoundIndex];
272 return true;
273 }
274 }
275 return false;
276 }
277};
278
279
284USTRUCT(BlueprintType)
293
294
299template<typename BaseType>
301{
302public:
304
305 //Build the wrapper struct using external data location
310
311 //Build the wrapper struct for a specific type but without any data to initialize it with
316
321
322public:
323 bool IsValid() const
324 {
325 return GetBaseData() != nullptr;
326 }
327
328 void Reset()
329 {
331 }
332
333 BaseType* GetBaseData()
334 {
335 return reinterpret_cast<BaseType*>(WrappedStruct.GetStructMemory());
336 }
337
338 const BaseType* GetBaseData() const
339 {
340 return reinterpret_cast<const BaseType*>(WrappedStruct.GetStructMemory());
341 }
342
343 const UScriptStruct* GetStruct() const
344 {
345 return ::Cast<const UScriptStruct>(WrappedStruct.GetStruct());
346 }
347
352 template<typename DataType>
353 void InitializeWith(const DataType* InData)
354 {
355 static_assert(TIsDerivedFrom<typename TRemoveReference<DataType>::Type, BaseType>::IsDerived, "'DataType' template parameter must be derived from 'BaseType' to InitializeWith.");
356 InitializeWith(DataType::StaticStruct(), InData);
357 }
358
363 void InitializeWith(const UScriptStruct* InOtherStruct, const BaseType* InData)
364 {
366
367 //To be used after creating a base struct for a specific type. We should only have a type set.
369 if (InData)
370 {
372 }
373 }
374
380 {
381 //To be used after creating a base struct for a specific type. We should only have a type set.
382 WrappedStruct.Initialize(InOther.GetStruct());
383 if (InOther.GetBaseData())
384 {
385 GetStruct()->CopyScriptStruct(GetBaseData(), InOther.GetBaseData());
386 }
387 }
388
389 BaseType* CloneData() const
390 {
391 BaseType* DataStruct = nullptr;
392 if (const UScriptStruct* ScriptStructPtr = ::Cast<UScriptStruct>(WrappedStruct.GetStruct()))
393 {
394 DataStruct = (BaseType*)FMemory::Malloc(ScriptStructPtr->GetStructureSize() ? ScriptStructPtr->GetStructureSize() : 1);
395 ScriptStructPtr->InitializeStruct(DataStruct);
396 ScriptStructPtr->CopyScriptStruct(DataStruct, GetBaseData());
397 }
398 return DataStruct;
399 }
400
401 template<typename Type>
402 Type* Cast()
403 {
405 }
406
407 template<typename Type>
408 const Type* Cast() const
409 {
411 }
412
414 {
415 WrappedStruct = MoveTemp(InOther.WrappedStruct);
416 return *this;
417 }
418
420 {
421 if (Other.GetStruct() == GetStruct())
422 {
423 if (GetBaseData())
424 {
425 return GetStruct()->CompareScriptStruct(GetBaseData(), Other.GetBaseData(), PPF_None);
426 }
427 return Other.GetBaseData() == nullptr; // same struct and both uninitialized
428 }
429 return false;
430 }
431
433 {
434 return !(*this == Other);
435 }
436
438 {
439 if (Ar.IsLoading())
440 {
441 FString StructPath;
442 Ar << StructPath;
443 if (!StructPath.IsEmpty())
444 {
446 if (ScriptStructPtr == nullptr || !ScriptStructPtr->IsChildOf(TBaseStructure<BaseType>::Get()))
447 {
448 Ar.SetError();
449 return Ar;
450 }
451 InStruct.WrappedStruct.Initialize(ScriptStructPtr);
452 ScriptStructPtr->SerializeItem(Ar, InStruct.GetBaseData(), nullptr);
453 }
454 }
455 // Saving
456 else
457 {
458 FString StructPath;
459 if (UScriptStruct* ScriptStructPtr = const_cast<UScriptStruct*>(::Cast<UScriptStruct>(InStruct.GetStruct())))
460 {
461 StructPath = ScriptStructPtr->GetPathName();
462 Ar << StructPath;
463 ScriptStructPtr->SerializeItem(Ar, InStruct.GetBaseData(), nullptr);
464 }
465 else
466 {
467 Ar << StructPath;
468 }
469 }
470
471 return Ar;
472 }
473
474protected:
475 template<typename Type>
477 {
478 static Type* Cast(const UScriptStruct* ScriptStruct, BaseType* BaseData)
479 {
480 if constexpr (std::is_same_v<Type, BaseType>)
481 {
483 }
484 else
485 {
486 static_assert(TIsDerivedFrom<typename TRemoveReference<Type>::Type, BaseType>::IsDerived, "'Type' template parameter must be derived from 'BaseType' to Cast.");
487 if (ScriptStruct && ScriptStruct->IsChildOf(Type::StaticStruct()))
488 {
490 }
491 return nullptr;
492 }
493 }
494 static const Type* ConstCast(const UScriptStruct* ScriptStruct, const BaseType* BaseData)
495 {
496 if constexpr (std::is_same_v<Type, BaseType>)
497 {
499 }
500 else
501 {
502 return const_cast<const Type*>(Cast(ScriptStruct, const_cast<BaseType*>(BaseData)));
503 }
504 }
505 };
506
507protected:
509};
510
511
514
517
520
521
531
532
534USTRUCT()
563
564USTRUCT()
566{
568
569 // Integer Seconds since Epoch
570 UPROPERTY()
572
573 // Integer Frames since last second
574 UPROPERTY()
576
577 // Value calculated on create to represent the different between the source time and client time
578 UPROPERTY()
580
584
588};
589
590// A Qualified TimeCode associated with
591USTRUCT()
595{
597
599
600 // Implicit conversion to FTimecode
601 operator FQualifiedFrameTime() const
602 {
603 int32 TotalFrameNumber = (int32)FMath::RoundToZero(Seconds * (FrameRate.Numerator / (double)FrameRate.Denominator)) + Frames;
605 return FQualifiedFrameTime(FrameTime, FrameRate);
606 }
607
609 {
610 const int32 NumberOfFramesInSecond = FMath::CeilToInt32(InFrameTime.Rate.AsDecimal());
611 const int32 NumberOfFrames = (int32)(FMath::RoundToZero(InFrameTime.Time.AsDecimal()));
612
613 Seconds = (int32)FMath::RoundToZero(NumberOfFrames / (double)NumberOfFramesInSecond);
614 Frames = NumberOfFrames % NumberOfFramesInSecond;
615 FrameRate = FLiveLinkFrameRate(InFrameTime.Rate.Numerator, InFrameTime.Rate.Denominator);
616
617 return *this;
618 }
619};
620
621
622USTRUCT()
624 UE_DEPRECATED(4.23, "FLiveLinkFrameData is no longer used, please use the LiveLink roles instead.")
626{
627public:
629
631 : CurveName(NAME_None)
632 , CurveValue(0.f)
633 { }
634
636 : CurveName(InCurveName)
637 , CurveValue(InCurveValue)
638 { }
639
640 UPROPERTY()
641 FName CurveName;
642
643 UPROPERTY()
644 float CurveValue;
645};
646
647
649USTRUCT()
651 UE_DEPRECATED(4.23, "FLiveLinkFrameData is no longer used, please use the LiveLink animation role instead.")
653{
655
656 UPROPERTY()
657 TArray<FTransform> Transforms;
658
659 UPROPERTY()
661
662 UPROPERTY()
664
665 UPROPERTY()
667
668};
669
670
672 UE_DEPRECATED(4.23, "FOptionalCurveElement is no longer used, please use FLiveLinkBaseStaticData::PropertyNames and FLiveLinkBaseFrameData::PropertyValues instead.")
674{
676 float Value;
678 bool bValid;
679
681 : Value(InValue)
682 , bValid(true)
683 {}
684
686 : Value(0.f)
687 , bValid(false)
688 {}
689
690 bool IsValid() const
691 {
692 return bValid;
693 }
694
695 void SetValue(float InValue)
696 {
697 Value = InValue;
698 bValid = true;
699 }
700
702 {
703 SetValue(InCurveElement.CurveValue);
704 return *this;
705 }
706
708 {
709 Ar << InElement.Value;
710 Ar << InElement.bValid;
711
712 return Ar;
713 }
714};
715
716
717//Helper struct for updating curve data across multiple frames of live link data
718struct
719 UE_DEPRECATED(4.23, "FLiveLinkCurveIntegrationData is no longer used, please use FLiveLinkBaseStaticData::PropertyNames and FLiveLinkBaseFrameData::PropertyValues instead.")
721{
722public:
723
724 // Number of new curves that need to be added to existing frames
726
727 // Built curve buffer for current frame in existing curve key format
729};
730
731
732struct
733 UE_DEPRECATED(4.23, "FLiveLinkCurveKey is no longer used, please use FLiveLinkBaseStaticData::PropertyNames and FLiveLinkBaseFrameData::PropertyValues instead.")
735{
737
739};
740
741
743struct
744 UE_DEPRECATED(4.23, "FLiveLinkSubjectFrame is no longer used, please use the LiveLink animation role instead.")
746{
747 // Ref Skeleton for transforms
749
750 // Guid for ref skeleton so we can track modifications
752
753 // Key for storing curve data (Names)
755
756 // Transforms for this frame
758
759 // Curve data for this frame
761
762 // Metadata for this frame
764};
765
766
768struct
769 UE_DEPRECATED(4.23, "FLiveLinkFrame is no longer used, please use the LiveLink animation role instead.")
771{
774
776
778
783
785 {
786 Ar << InFrame.Transforms;
787 Ar << InFrame.Curves;
788 FLiveLinkWorldTime::StaticStruct()->SerializeItem(Ar, (void*)& InFrame.WorldTime, nullptr);
789
790 return Ar;
791 }
792};
#define check(expr)
Definition AssertionMacros.h:314
@ INDEX_NONE
Definition CoreMiscDefines.h:150
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
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
#define PRAGMA_ENABLE_DEPRECATION_WARNINGS
Definition GenericPlatformCompilerPreSetup.h:12
#define PRAGMA_DISABLE_DEPRECATION_WARNINGS
Definition GenericPlatformCompilerPreSetup.h:8
int32 FLiveLinkFrameIdentifier
Definition LiveLinkTypes.h:209
#define UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
#define GENERATED_BODY(...)
Definition ObjectMacros.h:765
#define USTRUCT(...)
Definition ObjectMacros.h:746
@ PPF_None
Definition PropertyPortFlags.h:15
EName
Definition UnrealNames.h:16
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
uint8_t uint8
Definition binka_ue_file_header.h:8
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition Archive.h:1208
UE_FORCEINLINE_HINT bool IsLoading() const
Definition Archive.h:236
CORE_API void SetError()
Definition Archive.cpp:314
Definition LiveLinkTypes.h:301
const UScriptStruct * GetStruct() const
Definition LiveLinkTypes.h:343
void Reset()
Definition LiveLinkTypes.h:328
void InitializeWith(const DataType *InData)
Definition LiveLinkTypes.h:353
bool operator!=(const FLiveLinkBaseDataStruct &Other) const
Definition LiveLinkTypes.h:432
friend FArchive & operator<<(FArchive &Ar, FLiveLinkBaseDataStruct &InStruct)
Definition LiveLinkTypes.h:437
FLiveLinkBaseDataStruct()=default
const Type * Cast() const
Definition LiveLinkTypes.h:408
BaseType * GetBaseData()
Definition LiveLinkTypes.h:333
FLiveLinkBaseDataStruct(FLiveLinkBaseDataStruct &&InOther)
Definition LiveLinkTypes.h:317
FLiveLinkBaseDataStruct(const UScriptStruct *InType, BaseType *InData)
Definition LiveLinkTypes.h:306
void InitializeWith(const UScriptStruct *InOtherStruct, const BaseType *InData)
Definition LiveLinkTypes.h:363
FLiveLinkBaseDataStruct & operator=(FLiveLinkBaseDataStruct &&InOther)
Definition LiveLinkTypes.h:413
FLiveLinkBaseDataStruct(const UScriptStruct *InType)
Definition LiveLinkTypes.h:312
void InitializeWith(const FLiveLinkBaseDataStruct &InOther)
Definition LiveLinkTypes.h:379
const BaseType * GetBaseData() const
Definition LiveLinkTypes.h:338
BaseType * CloneData() const
Definition LiveLinkTypes.h:389
bool operator==(const FLiveLinkBaseDataStruct &Other) const
Definition LiveLinkTypes.h:419
FStructOnScope WrappedStruct
Definition LiveLinkTypes.h:508
bool IsValid() const
Definition LiveLinkTypes.h:323
Type * Cast()
Definition LiveLinkTypes.h:402
Definition NameTypes.h:617
FORCEINLINE bool IsNone() const
Definition NameTypes.h:827
Definition UnrealType.h:3087
Definition StructOnScope.h:13
virtual const UStruct * GetStruct() const
Definition StructOnScope.h:72
virtual void Initialize()
Definition StructOnScope.h:21
virtual void Reset()
Definition StructOnScope.h:113
virtual uint8 * GetStructMemory()
Definition StructOnScope.h:62
Definition Array.h:670
SizeType AddDefaulted()
Definition Array.h:2795
Definition UnrealString.h.inl:34
Definition TimeManagement.Build.cs:6
Definition Class.h:1720
COREUOBJECT_API void SerializeItem(FArchive &Ar, void *Value, void const *Defaults)
Definition Class.cpp:3378
COREUOBJECT_API void CopyScriptStruct(void *Dest, void const *Src, int32 ArrayDim=1) const
Definition Class.cpp:3730
COREUOBJECT_API bool CompareScriptStruct(const void *A, const void *B, uint32 PortFlags) const
Definition Class.cpp:3696
bool IsChildOf() const
Definition Class.h:788
Definition PropertyNames.h:7
@ false
Definition radaudio_common.h:23
static double Seconds()
Definition AndroidPlatformTime.h:20
Definition FrameRate.h:21
FFrameRate()
Definition FrameRate.h:25
Definition FrameTime.h:16
Definition Guid.h:109
Definition LiveLinkTypes.h:286
FLiveLinkBaseBlueprintData()=default
virtual ~FLiveLinkBaseBlueprintData()=default
Definition LiveLinkTypes.h:477
static const Type * ConstCast(const UScriptStruct *ScriptStruct, const BaseType *BaseData)
Definition LiveLinkTypes.h:494
static Type * Cast(const UScriptStruct *ScriptStruct, BaseType *BaseData)
Definition LiveLinkTypes.h:478
Definition LiveLinkTypes.h:217
Definition LiveLinkTypes.h:256
Definition LiveLinkTypes.h:626
FLiveLinkCurveElement(FName InCurveName, float InCurveValue)
Definition LiveLinkTypes.h:635
Definition LiveLinkTypes.h:721
int32 NumNewCurves
Definition LiveLinkTypes.h:725
TArray< FOptionalCurveElement > CurveValues
Definition LiveLinkTypes.h:728
Definition LiveLinkTypes.h:735
FLiveLinkCurveIntegrationData UpdateCurveKey(const TArray< FLiveLinkCurveElement > &CurveElements)
TArray< FName > CurveNames
Definition LiveLinkTypes.h:736
Definition LiveLinkTypes.h:653
Definition LiveLinkTypes.h:538
static LIVELINKINTERFACE_API const FLiveLinkFrameRate FPS_120
Definition LiveLinkTypes.h:556
static LIVELINKINTERFACE_API const FLiveLinkFrameRate FPS_15
Definition LiveLinkTypes.h:548
static LIVELINKINTERFACE_API const FLiveLinkFrameRate NTSC_60
Definition LiveLinkTypes.h:561
static LIVELINKINTERFACE_API const FLiveLinkFrameRate NTSC_24
Definition LiveLinkTypes.h:559
static LIVELINKINTERFACE_API const FLiveLinkFrameRate NTSC_30
Definition LiveLinkTypes.h:560
static LIVELINKINTERFACE_API const FLiveLinkFrameRate FPS_60
Definition LiveLinkTypes.h:554
static LIVELINKINTERFACE_API const FLiveLinkFrameRate FPS_24
Definition LiveLinkTypes.h:549
static LIVELINKINTERFACE_API const FLiveLinkFrameRate FPS_50
Definition LiveLinkTypes.h:553
bool IsValid() const
Definition LiveLinkTypes.h:543
static LIVELINKINTERFACE_API const FLiveLinkFrameRate FPS_30
Definition LiveLinkTypes.h:551
static LIVELINKINTERFACE_API const FLiveLinkFrameRate FPS_48
Definition LiveLinkTypes.h:552
static LIVELINKINTERFACE_API const FLiveLinkFrameRate FPS_100
Definition LiveLinkTypes.h:555
static LIVELINKINTERFACE_API const FLiveLinkFrameRate FPS_240
Definition LiveLinkTypes.h:557
static LIVELINKINTERFACE_API const FLiveLinkFrameRate FPS_25
Definition LiveLinkTypes.h:550
Definition LiveLinkTypes.h:771
friend FArchive & operator<<(FArchive &Ar, FLiveLinkFrame &InFrame)
Definition LiveLinkTypes.h:784
FLiveLinkMetaData MetaData
Definition LiveLinkTypes.h:775
FLiveLinkWorldTime WorldTime
Definition LiveLinkTypes.h:777
TArray< FTransform > Transforms
Definition LiveLinkTypes.h:772
void ExtendCurveData(int32 ExtraCurves)
Definition LiveLinkTypes.h:779
TArray< FOptionalCurveElement > Curves
Definition LiveLinkTypes.h:773
Definition LiveLinkTypes.h:198
Definition LiveLinkRefSkeleton.h:14
Definition LiveLinkTypes.h:526
FLiveLinkStaticDataStruct StaticData
Definition LiveLinkTypes.h:528
FLiveLinkFrameDataStruct FrameData
Definition LiveLinkTypes.h:529
Definition LiveLinkTypes.h:746
TArray< FOptionalCurveElement > Curves
Definition LiveLinkTypes.h:760
FLiveLinkCurveKey CurveKeyData
Definition LiveLinkTypes.h:754
TArray< FTransform > Transforms
Definition LiveLinkTypes.h:757
FLiveLinkRefSkeleton RefSkeleton
Definition LiveLinkTypes.h:748
FGuid RefSkeletonGuid
Definition LiveLinkTypes.h:751
FLiveLinkMetaData MetaData
Definition LiveLinkTypes.h:763
Definition LiveLinkTypes.h:78
FGuid Source
Definition LiveLinkTypes.h:83
friend uint32 GetTypeHash(const FLiveLinkSubjectKey &SubjectKey)
Definition LiveLinkTypes.h:102
bool operator!=(const FLiveLinkSubjectKey &Other) const
Definition LiveLinkTypes.h:93
friend FArchive & operator<<(FArchive &Ar, FLiveLinkSubjectKey &InSubjectKey)
Definition LiveLinkTypes.h:95
FLiveLinkSubjectName SubjectName
Definition LiveLinkTypes.h:87
Definition LiveLinkTypes.h:40
friend uint32 GetTypeHash(const FLiveLinkSubjectName &Value)
Definition LiveLinkTypes.h:68
FLiveLinkSubjectName(EName InName)
Definition LiveLinkTypes.h:46
FString ToString() const
Definition LiveLinkTypes.h:53
bool operator==(const FName Other) const
Definition LiveLinkTypes.h:60
friend FArchive & operator<<(FArchive &Ar, FLiveLinkSubjectName &InSubjectName)
Definition LiveLinkTypes.h:62
bool operator==(const FLiveLinkSubjectName &Other) const
Definition LiveLinkTypes.h:59
FName Name
Definition LiveLinkTypes.h:50
Definition LiveLinkTypes.h:566
FLiveLinkTimeCode_Base_DEPRECATED(const int32 InSeconds, const int32 InFrames, const FLiveLinkFrameRate &InFrameRate)
Definition LiveLinkTypes.h:585
FLiveLinkTimeCode_Base_DEPRECATED()
Definition LiveLinkTypes.h:581
Definition LiveLinkTypes.h:595
FLiveLinkTimeCode & operator=(const FQualifiedFrameTime &InFrameTime)
Definition LiveLinkTypes.h:608
Definition LiveLinkTypes.h:173
FLiveLinkTime(double InWorldTime, const FQualifiedFrameTime &InSceneTime)
Definition LiveLinkTypes.h:188
Definition LiveLinkTypes.h:111
void SetClockOffset(double ClockOffset)
Definition LiveLinkTypes.h:154
FLiveLinkWorldTime(const double InTime, const double InOffset)
Definition LiveLinkTypes.h:129
FLiveLinkWorldTime()
Definition LiveLinkTypes.h:116
double GetSourceTime() const
Definition LiveLinkTypes.h:136
double GetOffset() const
Definition LiveLinkTypes.h:142
FLiveLinkWorldTime(const double InTime)
Definition LiveLinkTypes.h:122
double GetOffsettedTime() const
Definition LiveLinkTypes.h:148
static UE_FORCEINLINE_HINT float RoundToZero(float F)
Definition UnrealMathUtility.h:2209
Definition LiveLinkTypes.h:674
void SetValue(float InValue)
Definition LiveLinkTypes.h:695
bool IsValid() const
Definition LiveLinkTypes.h:690
float Value
Definition LiveLinkTypes.h:676
FOptionalCurveElement()
Definition LiveLinkTypes.h:685
FOptionalCurveElement & operator=(const FLiveLinkCurveElement &InCurveElement)
Definition LiveLinkTypes.h:701
FOptionalCurveElement(float InValue)
Definition LiveLinkTypes.h:680
bool bValid
Definition LiveLinkTypes.h:678
friend FArchive & operator<<(FArchive &Ar, FOptionalCurveElement &InElement)
Definition LiveLinkTypes.h:707
Definition QualifiedFrameTime.h:13
Definition Class.h:5288
Definition UnrealTypeTraits.h:40