From 61501fc27ca3d36ab9f838e59ad6e330b91b0783 Mon Sep 17 00:00:00 2001 From: Kingsmedia Date: Fri, 27 May 2022 15:36:32 +0200 Subject: [PATCH] 185 - Frame History --- .../Components/LagCompensationComponent.cpp | 28 +++++++++++++++---- .../Components/LagCompensationComponent.h | 5 ++++ 2 files changed, 28 insertions(+), 5 deletions(-) diff --git a/Source/Blaster/Components/LagCompensationComponent.cpp b/Source/Blaster/Components/LagCompensationComponent.cpp index 91e754e..575a8bf 100644 --- a/Source/Blaster/Components/LagCompensationComponent.cpp +++ b/Source/Blaster/Components/LagCompensationComponent.cpp @@ -13,10 +13,7 @@ ULagCompensationComponent::ULagCompensationComponent() void ULagCompensationComponent::BeginPlay() { Super::BeginPlay(); - - FFramePackage Package; - SaveFramePackage(Package); - ShowFramePackage(Package, FColor::Orange); + } void ULagCompensationComponent::SaveFramePackage(FFramePackage& Package) @@ -47,7 +44,8 @@ void ULagCompensationComponent::ShowFramePackage(const FFramePackage& Package, c BoxInfo.Value.BoxExtend, FQuat(BoxInfo.Value.Rotation), Color, - true + false, + 4.f ); } } @@ -55,5 +53,25 @@ void ULagCompensationComponent::ShowFramePackage(const FFramePackage& Package, c void ULagCompensationComponent::TickComponent(float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction) { Super::TickComponent(DeltaTime, TickType, ThisTickFunction); + + if (FrameHistory.Num() <= 1) + { + FFramePackage ThisFrame; + SaveFramePackage(ThisFrame); + FrameHistory.AddHead(ThisFrame); + } + else + { + float HistoryLength = FrameHistory.GetHead()->GetValue().Time - FrameHistory.GetTail()->GetValue().Time; + while (HistoryLength > MaxRecordTime) + { + FrameHistory.RemoveNode(FrameHistory.GetTail()); + HistoryLength = FrameHistory.GetHead()->GetValue().Time - FrameHistory.GetTail()->GetValue().Time; + } + FFramePackage ThisFrame; + SaveFramePackage(ThisFrame); + FrameHistory.AddHead(ThisFrame); + ShowFramePackage(ThisFrame, FColor::Red); + } } diff --git a/Source/Blaster/Components/LagCompensationComponent.h b/Source/Blaster/Components/LagCompensationComponent.h index 324a6df..46eefb3 100644 --- a/Source/Blaster/Components/LagCompensationComponent.h +++ b/Source/Blaster/Components/LagCompensationComponent.h @@ -55,5 +55,10 @@ private: UPROPERTY() ABlasterPlayerController* Controller; + + TDoubleLinkedList FrameHistory; + + UPROPERTY(EditAnywhere) + float MaxRecordTime = 4.f; };