UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
MotionDelayBuffer.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2#pragma once
3
4#include "CoreMinimal.h"
6#include "LateUpdateManager.h"
8
10
11class USceneComponent;
12class FSceneInterface;
17
18
19/* FMotionDelayService
20 *****************************************************************************/
21
29
30/* FMotionDelayClient
31 *****************************************************************************/
32
34{
35public:
37
38 virtual uint32 GetDesiredDelay() const = 0;
40
43
44public:
48 HEADMOUNTEDDISPLAY_API virtual int32 GetPriority() const override;
50
51protected:
52 HEADMOUNTEDDISPLAY_API bool FindDelayTransform(USceneComponent* Target, uint32 Delay, FTransform& TransformOut);
53
54private:
55 struct FTargetTransform
56 {
58 FTransform DelayTransform;
59 FTransform RestoreTransform;
60 };
61 TArray<FTargetTransform> TargetTransforms_RenderThread;
62};
63
64
65/* TCircularHistoryBuffer
66 *****************************************************************************/
67
72template<typename ElementType> class TCircularHistoryBuffer
73{
74public:
75 TCircularHistoryBuffer(uint32 InitialCapacity = 0);
76
77 ElementType& Add(const ElementType& Element);
79
86 ElementType& operator[](uint32 Index);
87 const ElementType& operator[](uint32 Index) const;
88
89 void InsertAt(uint32 Index, const ElementType& Element);
90
91 uint32 Capacity() const;
92 int32 Num() const;
93
94 void Empty();
95
96 bool IsEmpty() const;
97 bool IsFull() const;
98
99private:
100 void RangeCheck(const uint32 Index, bool bCheckIfUnderfilled = false) const;
101 uint32 AsInternalIndex(uint32 Index) const;
102 uint32 GetNextIndex(uint32 CurrentIndex) const;
103
104 void ResizeGrow(uint32 AddedSlack);
105 void Realign();
106 void ResizeShrink(uint32 ShrinkAmount);
107
108private:
110 TArray<ElementType> Elements;
112 uint32 Head;
114 bool bIsFull;
115};
116
117// Templatized implementation
118#include "MotionDelayBuffer.inl" // IWYU pragma: export
PlayerIndex
Definition AppleControllerInterface.h:24
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
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition SceneViewExtension.h:266
Definition MotionDelayBuffer.h:34
virtual HEADMOUNTEDDISPLAY_API void PostRenderViewFamily_RenderThread(FRDGBuilder &GraphBuilder, FSceneViewFamily &InViewFamily) override
Definition MotionDelayBuffer.cpp:494
virtual HEADMOUNTEDDISPLAY_API int32 GetPriority() const override
Definition MotionDelayBuffer.cpp:503
virtual void GetExemptTargets(TArray< USceneComponent * > &ExemptTargets) const
Definition MotionDelayBuffer.h:39
HEADMOUNTEDDISPLAY_API void Apply_RenderThread(FSceneInterface *Scene)
Definition MotionDelayBuffer.cpp:518
virtual uint32 GetDesiredDelay() const =0
virtual HEADMOUNTEDDISPLAY_API void BeginRenderViewFamily(FSceneViewFamily &InViewFamily) override
Definition MotionDelayBuffer.cpp:436
HEADMOUNTEDDISPLAY_API void Restore_RenderThread(FSceneInterface *Scene)
Definition MotionDelayBuffer.cpp:527
virtual HEADMOUNTEDDISPLAY_API bool IsActiveThisFrame_Internal(const FSceneViewExtensionContext &Context) const override
Definition MotionDelayBuffer.cpp:509
HEADMOUNTEDDISPLAY_API bool FindDelayTransform(USceneComponent *Target, uint32 Delay, FTransform &TransformOut)
Definition MotionDelayBuffer.cpp:536
Definition MotionDelayBuffer.h:23
static HEADMOUNTEDDISPLAY_API void RegisterDelayClient(TSharedRef< FMotionDelayClient, ESPMode::ThreadSafe > DelayClient)
Definition MotionDelayBuffer.cpp:348
static HEADMOUNTEDDISPLAY_API bool RegisterDelayTarget(USceneComponent *MotionControlledComponent, const int32 PlayerIndex, const FName SourceId)
Definition MotionDelayBuffer.cpp:308
static HEADMOUNTEDDISPLAY_API void SetEnabled(bool bEnable)
Definition MotionDelayBuffer.cpp:302
Definition MotionDelayBuffer.cpp:22
Definition NameTypes.h:617
Definition RenderGraphBuilder.h:49
Definition SceneInterface.h:106
Definition SceneViewExtension.h:274
Definition SceneView.h:2212
Definition Array.h:670
Definition MotionDelayBuffer.h:73
bool IsFull() const
Definition MotionDelayBuffer.inl:128
int32 Num() const
Definition MotionDelayBuffer.inl:102
bool IsEmpty() const
Definition MotionDelayBuffer.inl:122
uint32 Capacity() const
Definition MotionDelayBuffer.inl:96
ElementType & operator[](uint32 Index)
Definition MotionDelayBuffer.inl:44
void Resize(uint32 NewCapacity)
Definition MotionDelayBuffer.inl:28
void InsertAt(uint32 Index, const ElementType &Element)
Definition MotionDelayBuffer.inl:58
void Empty()
Definition MotionDelayBuffer.inl:115
Definition SharedPointer.h:692
Definition SharedPointer.h:153
U16 Index
Definition radfft.cpp:71
Definition SceneViewExtensionContext.h:20