From ac378b01da2b7b423b79922bfdc705cb0f8b0b2d Mon Sep 17 00:00:00 2001 From: Kingsmedia Date: Fri, 27 May 2022 11:29:32 +0200 Subject: [PATCH] 184 - Saving a Frame Package --- .../Character/BP_BlasterCharacter.uasset | Bin 123240 -> 121907 bytes Source/Blaster/Character/BlasterCharacter.cpp | 18 ++++++ Source/Blaster/Character/BlasterCharacter.h | 56 +++++++++--------- .../Components/LagCompensationComponent.cpp | 39 ++++++++++++ .../Components/LagCompensationComponent.h | 7 ++- 5 files changed, 90 insertions(+), 30 deletions(-) diff --git a/Content/Blueprints/Character/BP_BlasterCharacter.uasset b/Content/Blueprints/Character/BP_BlasterCharacter.uasset index ad2d241c4bdd511d9d7b3d2eda54397c8be1b3c1..5f6e8cd8197ce92346ca07e0eb662b9fa18b2388 100644 GIT binary patch delta 28514 zcmdUY2Ut`&)bgE_W$$jHOYBTPLh+8D2OH zEAOQXOva0ApT z>roM^tW>O3H1tl2O-*IeGA8G%0An1!@uewOZxHZuH6VtpWBqb%LCQcadHDPjm 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 NtV-h!PH|ZA{{U+6Sd9Px diff --git a/Source/Blaster/Character/BlasterCharacter.cpp b/Source/Blaster/Character/BlasterCharacter.cpp index 97d7629..061a8e4 100644 --- a/Source/Blaster/Character/BlasterCharacter.cpp +++ b/Source/Blaster/Character/BlasterCharacter.cpp @@ -73,74 +73,92 @@ ABlasterCharacter::ABlasterCharacter() head = CreateDefaultSubobject(TEXT("head")); head->SetupAttachment(GetMesh(), FName("head")); head->SetCollisionEnabled(ECollisionEnabled::NoCollision); + HitCollisionBoxes.Add(FName("head"), head); pelvis = CreateDefaultSubobject(TEXT("pelvis")); pelvis->SetupAttachment(GetMesh(), FName("pelvis")); pelvis->SetCollisionEnabled(ECollisionEnabled::NoCollision); + HitCollisionBoxes.Add(FName("pelvis"), pelvis); spine_02 = CreateDefaultSubobject(TEXT("spine_02")); spine_02->SetupAttachment(GetMesh(), FName("spine_02")); spine_02->SetCollisionEnabled(ECollisionEnabled::NoCollision); + HitCollisionBoxes.Add(FName("spine_02"), spine_02); spine_03 = CreateDefaultSubobject(TEXT("spine_03")); spine_03->SetupAttachment(GetMesh(), FName("spine_03")); spine_03->SetCollisionEnabled(ECollisionEnabled::NoCollision); + HitCollisionBoxes.Add(FName("spine_03"), spine_03); upperarm_l = CreateDefaultSubobject(TEXT("upperarm_l")); upperarm_l->SetupAttachment(GetMesh(), FName("upperarm_l")); upperarm_l->SetCollisionEnabled(ECollisionEnabled::NoCollision); + HitCollisionBoxes.Add(FName("upperarm_l"), upperarm_l); upperarm_r = CreateDefaultSubobject(TEXT("upperarm_r")); upperarm_r->SetupAttachment(GetMesh(), FName("upperarm_r")); upperarm_r->SetCollisionEnabled(ECollisionEnabled::NoCollision); + HitCollisionBoxes.Add(FName("upperarm_r"), upperarm_r); lowerarm_l = CreateDefaultSubobject(TEXT("lowerarm_l")); lowerarm_l->SetupAttachment(GetMesh(), FName("lowerarm_l")); lowerarm_l->SetCollisionEnabled(ECollisionEnabled::NoCollision); + HitCollisionBoxes.Add(FName("lowerarm_l"), lowerarm_l); lowerarm_r = CreateDefaultSubobject(TEXT("lowerarm_r")); lowerarm_r->SetupAttachment(GetMesh(), FName("lowerarm_r")); lowerarm_r->SetCollisionEnabled(ECollisionEnabled::NoCollision); + HitCollisionBoxes.Add(FName("lowerarm_r"), lowerarm_r); hand_l = CreateDefaultSubobject(TEXT("hand_l")); hand_l->SetupAttachment(GetMesh(), FName("hand_l")); hand_l->SetCollisionEnabled(ECollisionEnabled::NoCollision); + HitCollisionBoxes.Add(FName("hand_l"), hand_l); hand_r = CreateDefaultSubobject(TEXT("hand_r")); hand_r->SetupAttachment(GetMesh(), FName("hand_r")); hand_r->SetCollisionEnabled(ECollisionEnabled::NoCollision); + HitCollisionBoxes.Add(FName("hand_r"), hand_r); backpack = CreateDefaultSubobject(TEXT("backpack")); backpack->SetupAttachment(GetMesh(), FName("backpack")); backpack->SetCollisionEnabled(ECollisionEnabled::NoCollision); + HitCollisionBoxes.Add(FName("backpack"), backpack); blanket = CreateDefaultSubobject(TEXT("blanket")); blanket->SetupAttachment(GetMesh(), FName("backpack")); blanket->SetCollisionEnabled(ECollisionEnabled::NoCollision); + HitCollisionBoxes.Add(FName("blanket"), blanket); thigh_l = CreateDefaultSubobject(TEXT("thigh_l")); thigh_l->SetupAttachment(GetMesh(), FName("thigh_l")); thigh_l->SetCollisionEnabled(ECollisionEnabled::NoCollision); + HitCollisionBoxes.Add(FName("thigh_l"), thigh_l); thigh_r = CreateDefaultSubobject(TEXT("thigh_r")); thigh_r->SetupAttachment(GetMesh(), FName("thigh_r")); thigh_r->SetCollisionEnabled(ECollisionEnabled::NoCollision); + HitCollisionBoxes.Add(FName("thigh_r"), thigh_r); calf_l = CreateDefaultSubobject(TEXT("calf_l")); calf_l->SetupAttachment(GetMesh(), FName("calf_l")); calf_l->SetCollisionEnabled(ECollisionEnabled::NoCollision); + HitCollisionBoxes.Add(FName("calf_l"), calf_l); calf_r = CreateDefaultSubobject(TEXT("calf_r")); calf_r->SetupAttachment(GetMesh(), FName("calf_r")); calf_r->SetCollisionEnabled(ECollisionEnabled::NoCollision); + HitCollisionBoxes.Add(FName("calf_r"), calf_r); foot_l = CreateDefaultSubobject(TEXT("foot_l")); foot_l->SetupAttachment(GetMesh(), FName("foot_l")); foot_l->SetCollisionEnabled(ECollisionEnabled::NoCollision); + HitCollisionBoxes.Add(FName("foot_l"), foot_l); foot_r = CreateDefaultSubobject(TEXT("foot_r")); foot_r->SetupAttachment(GetMesh(), FName("foot_r")); foot_r->SetCollisionEnabled(ECollisionEnabled::NoCollision); + HitCollisionBoxes.Add(FName("foot_r"), foot_r); } void ABlasterCharacter::GetLifetimeReplicatedProps(TArray& OutLifetimeProps) const diff --git a/Source/Blaster/Character/BlasterCharacter.h b/Source/Blaster/Character/BlasterCharacter.h index 2c7d8d9..c08d3e4 100644 --- a/Source/Blaster/Character/BlasterCharacter.h +++ b/Source/Blaster/Character/BlasterCharacter.h @@ -46,6 +46,35 @@ public: void UpdateHUDAmmo(); void SpawnDefaultWeapon(); + UPROPERTY() + TMap HitCollisionBoxes; + +protected: + virtual void BeginPlay() override; + + void MoveForward(float Value); + void MoveRight(float Value); + void Turn(float Value); + void LookUp(float Value); + void EquipButtonPressed(); + void ReloadButtonPressed(); + void CrouchButtonPressed(); + void AimButtonPressed(); + void AimButtonReleased(); + void GrenadeButtonPressed(); + void CalculateAO_Pitch(); + void AimOffset(float DeltaTime); + void SimProxiesTurn(); + virtual void Jump() override; + void FireButtonPressed(); + void FireButtonReleased(); + void PlayHitReactMontage(); + + UFUNCTION() + void ReceiveDamage(AActor* DamagedActor, float Damage, const UDamageType* DamageType, class AController* InstigatorController, AActor* DamageCauser); + + // Poll for any relevant classes and initialize them + void PollInit(); // Hit boxes used for server-side rewind @@ -102,34 +131,7 @@ public: UPROPERTY(EditAnywhere) UBoxComponent* foot_r; - -protected: - virtual void BeginPlay() override; - void MoveForward(float Value); - void MoveRight(float Value); - void Turn(float Value); - void LookUp(float Value); - void EquipButtonPressed(); - void ReloadButtonPressed(); - void CrouchButtonPressed(); - void AimButtonPressed(); - void AimButtonReleased(); - void GrenadeButtonPressed(); - void CalculateAO_Pitch(); - void AimOffset(float DeltaTime); - void SimProxiesTurn(); - virtual void Jump() override; - void FireButtonPressed(); - void FireButtonReleased(); - void PlayHitReactMontage(); - - UFUNCTION() - void ReceiveDamage(AActor* DamagedActor, float Damage, const UDamageType* DamageType, class AController* InstigatorController, AActor* DamageCauser); - - // Poll for any relevant classes and initialize them - void PollInit(); - private: UPROPERTY() diff --git a/Source/Blaster/Components/LagCompensationComponent.cpp b/Source/Blaster/Components/LagCompensationComponent.cpp index bcea332..91e754e 100644 --- a/Source/Blaster/Components/LagCompensationComponent.cpp +++ b/Source/Blaster/Components/LagCompensationComponent.cpp @@ -3,6 +3,8 @@ #include "LagCompensationComponent.h" +#include "Components/BoxComponent.h" + ULagCompensationComponent::ULagCompensationComponent() { PrimaryComponentTick.bCanEverTick = true; @@ -11,6 +13,43 @@ ULagCompensationComponent::ULagCompensationComponent() void ULagCompensationComponent::BeginPlay() { Super::BeginPlay(); + + FFramePackage Package; + SaveFramePackage(Package); + ShowFramePackage(Package, FColor::Orange); +} + +void ULagCompensationComponent::SaveFramePackage(FFramePackage& Package) +{ + Character = Character == nullptr ? Cast(GetOwner()) : Character; + if (Character) + { + Package.Time = GetWorld()->GetTimeSeconds(); + for (auto& BoxPair : Character->HitCollisionBoxes) + { + FBoxInformation BoxInformation; + BoxInformation.Location = BoxPair.Value->GetComponentLocation(); + BoxInformation.Rotation = BoxPair.Value->GetComponentRotation(); + BoxInformation.BoxExtend = BoxPair.Value->GetScaledBoxExtent(); + + Package.HitBoxInfo.Add(BoxPair.Key, BoxInformation); + } + } +} + +void ULagCompensationComponent::ShowFramePackage(const FFramePackage& Package, const FColor Color) +{ + for (auto& BoxInfo : Package.HitBoxInfo) + { + DrawDebugBox( + GetWorld(), + BoxInfo.Value.Location, + BoxInfo.Value.BoxExtend, + FQuat(BoxInfo.Value.Rotation), + Color, + true + ); + } } void ULagCompensationComponent::TickComponent(float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction) diff --git a/Source/Blaster/Components/LagCompensationComponent.h b/Source/Blaster/Components/LagCompensationComponent.h index 6a34afa..324a6df 100644 --- a/Source/Blaster/Components/LagCompensationComponent.h +++ b/Source/Blaster/Components/LagCompensationComponent.h @@ -41,12 +41,13 @@ class BLASTER_API ULagCompensationComponent : public UActorComponent public: ULagCompensationComponent(); friend ABlasterCharacter; - virtual void TickComponent(float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction) override; - + void ShowFramePackage(const FFramePackage& Package, const FColor Color); + protected: virtual void BeginPlay() override; - + void SaveFramePackage(FFramePackage& Package); + private: UPROPERTY()