From cb5a2a834f8803c4123c1650d8acab55bb027db8 Mon Sep 17 00:00:00 2001 From: Oleg Petruny Date: Fri, 18 Apr 2025 10:09:46 +0200 Subject: [PATCH] bug fix & Level2 without end dialogue --- .../Blueprints/BP_DirectionPoint.uasset | 3 ++ .../Blueprints/BP_InWorlTextLine.uasset | 4 +-- .../Level_2/Blueprints/SM_Level2_Tree.uasset | 4 +-- .../Content/Levels/Level_2/L_Level2.umap | 4 +-- .../Sequencers/Seq_Level2_TreeFall.uasset | 3 ++ .../UI/Blueprints/UI_CutsceneSkip.uasset | 4 +-- .../Activators/InteractableScreenCapturer.cpp | 10 +++--- .../Source/Lost_Edge/Private/PlayerBase.cpp | 10 ++++-- .../Source/Lost_Edge/Private/PlayerBase.h | 3 ++ .../Lost_Edge/Private/QuickTimeEvent.cpp | 31 ++++++++++--------- .../Source/Lost_Edge/Private/QuickTimeEvent.h | 2 ++ 11 files changed, 49 insertions(+), 29 deletions(-) create mode 100644 UnrealProject/Lost_Edge/Content/Blueprints/BP_DirectionPoint.uasset create mode 100644 UnrealProject/Lost_Edge/Content/Levels/Level_2/Sequencers/Seq_Level2_TreeFall.uasset diff --git a/UnrealProject/Lost_Edge/Content/Blueprints/BP_DirectionPoint.uasset b/UnrealProject/Lost_Edge/Content/Blueprints/BP_DirectionPoint.uasset new file mode 100644 index 0000000..d07fef2 --- /dev/null +++ b/UnrealProject/Lost_Edge/Content/Blueprints/BP_DirectionPoint.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:53dcda9958892a3fee34e37b2971b2555c5a1aded76b2895af39befaa7e3d9d6 +size 26732 diff --git a/UnrealProject/Lost_Edge/Content/Blueprints/BP_InWorlTextLine.uasset b/UnrealProject/Lost_Edge/Content/Blueprints/BP_InWorlTextLine.uasset index 0799e60..c98bc00 100644 --- a/UnrealProject/Lost_Edge/Content/Blueprints/BP_InWorlTextLine.uasset +++ b/UnrealProject/Lost_Edge/Content/Blueprints/BP_InWorlTextLine.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a59113bab092ad29a12d9cc5e7bdc23ec5194b9d3a6e0268c3fc87f9e8cbb780 -size 40877 +oid sha256:dc90497aa1206439959e0847752a4f22be51b20bf8a575516fbfcb2605220aac +size 40946 diff --git a/UnrealProject/Lost_Edge/Content/Levels/Level_2/Blueprints/SM_Level2_Tree.uasset b/UnrealProject/Lost_Edge/Content/Levels/Level_2/Blueprints/SM_Level2_Tree.uasset index 8c27e5b..3bd98dc 100644 --- a/UnrealProject/Lost_Edge/Content/Levels/Level_2/Blueprints/SM_Level2_Tree.uasset +++ b/UnrealProject/Lost_Edge/Content/Levels/Level_2/Blueprints/SM_Level2_Tree.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:05aae84d6741bfb52fdfbd3a5fdcf969654a690229516a9a4285249527a8ee03 -size 46200 +oid sha256:66a3c123a060a6ffe7c798530b8e232aaf5029f59ee8cd53ed27ed3ab85da631 +size 51590 diff --git a/UnrealProject/Lost_Edge/Content/Levels/Level_2/L_Level2.umap b/UnrealProject/Lost_Edge/Content/Levels/Level_2/L_Level2.umap index c579801..aba4e71 100644 --- a/UnrealProject/Lost_Edge/Content/Levels/Level_2/L_Level2.umap +++ b/UnrealProject/Lost_Edge/Content/Levels/Level_2/L_Level2.umap @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a9e3d92b054af60b5b2119869c599ef09daa59398db60e80c1398735c1e21575 -size 43726248 +oid sha256:2efd372987a64e0f66c43d8d08a35752fe36c7c99a858088a301ad1a1d34f628 +size 43913509 diff --git a/UnrealProject/Lost_Edge/Content/Levels/Level_2/Sequencers/Seq_Level2_TreeFall.uasset b/UnrealProject/Lost_Edge/Content/Levels/Level_2/Sequencers/Seq_Level2_TreeFall.uasset new file mode 100644 index 0000000..404c429 --- /dev/null +++ b/UnrealProject/Lost_Edge/Content/Levels/Level_2/Sequencers/Seq_Level2_TreeFall.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ea35f9aa4f76ba53c632f7baddd0fd759725ab83aed4f0b5c9357cbd1a9d7270 +size 50864 diff --git a/UnrealProject/Lost_Edge/Content/UI/Blueprints/UI_CutsceneSkip.uasset b/UnrealProject/Lost_Edge/Content/UI/Blueprints/UI_CutsceneSkip.uasset index 099e55e..f3bb409 100644 --- a/UnrealProject/Lost_Edge/Content/UI/Blueprints/UI_CutsceneSkip.uasset +++ b/UnrealProject/Lost_Edge/Content/UI/Blueprints/UI_CutsceneSkip.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:68bd5a3b38faf7e08411ef5882bcb4afcb9330e6ece0e1087d38d6c083216b6c -size 102434 +oid sha256:762c656d654d6a6959c6ed37b90d6b95d217b208453ec35d9ef596cacc409bbe +size 123589 diff --git a/UnrealProject/Lost_Edge/Source/Lost_Edge/Private/Interactable/Activators/InteractableScreenCapturer.cpp b/UnrealProject/Lost_Edge/Source/Lost_Edge/Private/Interactable/Activators/InteractableScreenCapturer.cpp index 51c2ca9..7cbd06a 100644 --- a/UnrealProject/Lost_Edge/Source/Lost_Edge/Private/Interactable/Activators/InteractableScreenCapturer.cpp +++ b/UnrealProject/Lost_Edge/Source/Lost_Edge/Private/Interactable/Activators/InteractableScreenCapturer.cpp @@ -105,10 +105,10 @@ void UInteractableScreenCapturer::Process() ENQUEUE_RENDER_COMMAND(GetInteractablesFromScreen)( [ capture = TextureTarget->GetResource()->TextureRHI, - world = GetWorld(), - view = view, - //output = _output->GetResource()->TextureRHI, - this + world = GetWorld(), + view = view, + //output = _output->GetResource()->TextureRHI, + this ] (FRHICommandListImmediate& RHICmdList) { @@ -238,7 +238,7 @@ void UInteractableScreenCapturer::Process() (FTranslationMatrix(-(view.Location)) * (FInverseRotationMatrix(view.Rotation) * FMatrix(FPlane(0, 0, 1, 0), FPlane(1, 0, 0, 0), FPlane(0, 1, 0, 0), FPlane(0, 0, 0, 1))) * view.CalculateProjectionMatrix()) - .InverseFast(); + .InverseFast(); // fast inverse errors about NIL matrix, aren't from here... FVector worldLoc, worldDir; for(int i = 1; i < components; ++i) { diff --git a/UnrealProject/Lost_Edge/Source/Lost_Edge/Private/PlayerBase.cpp b/UnrealProject/Lost_Edge/Source/Lost_Edge/Private/PlayerBase.cpp index 7acdb60..9be035c 100644 --- a/UnrealProject/Lost_Edge/Source/Lost_Edge/Private/PlayerBase.cpp +++ b/UnrealProject/Lost_Edge/Source/Lost_Edge/Private/PlayerBase.cpp @@ -116,13 +116,19 @@ void APlayerBase::ResetInteractions() activator->Rescan(); } +FVector APlayerBase::GetCameraLocation() +{ + return camera->GetComponentLocation(); +} FVector APlayerBase::GetCameraDirection() { return camera->GetForwardVector(); } -FVector APlayerBase::GetCameraLocation() + +void APlayerBase::SetTransform(const FTransform transform) { - return camera->GetComponentLocation(); + SetActorLocation(transform.GetLocation(), false, nullptr, ETeleportType::ResetPhysics); + Controller->SetControlRotation(transform.GetRotation().Rotator()); } void APlayerBase::SwitchToCameraPawn() diff --git a/UnrealProject/Lost_Edge/Source/Lost_Edge/Private/PlayerBase.h b/UnrealProject/Lost_Edge/Source/Lost_Edge/Private/PlayerBase.h index 39f30e3..a2e44b9 100644 --- a/UnrealProject/Lost_Edge/Source/Lost_Edge/Private/PlayerBase.h +++ b/UnrealProject/Lost_Edge/Source/Lost_Edge/Private/PlayerBase.h @@ -57,6 +57,9 @@ public: UFUNCTION(BlueprintPure) FVector GetCameraDirection(); + UFUNCTION(BlueprintCallable, meta = (DisplayName = "Set Player Transform")) + void SetTransform(const FTransform transform); + UFUNCTION(BlueprintCallable) void LockPlayer(const FPlayerLock lock); UFUNCTION(BlueprintCallable) diff --git a/UnrealProject/Lost_Edge/Source/Lost_Edge/Private/QuickTimeEvent.cpp b/UnrealProject/Lost_Edge/Source/Lost_Edge/Private/QuickTimeEvent.cpp index 60f8976..b4fb9ac 100644 --- a/UnrealProject/Lost_Edge/Source/Lost_Edge/Private/QuickTimeEvent.cpp +++ b/UnrealProject/Lost_Edge/Source/Lost_Edge/Private/QuickTimeEvent.cpp @@ -10,6 +10,11 @@ #include "PlayerBase.h" #include "Widgets/WidgetsManager.h" +namespace +{ + constexpr float failBlockAfterBegin = 0.2f; +} + int32 Event::counter = 0; Event::Event() @@ -33,38 +38,31 @@ inline int32 Event::GetId() void UQuickTimeEventManager::ShowQuickTimeEvent(FQuickTimeEventEnqueProperties properties) { - UE_LOG(LogTemp, Log, TEXT("ShowQuickTimeEvent Start")); OnFirstEventInit(); FScopeLock lock1(&lock); CreateEvent(properties, false); - UE_LOG(LogTemp, Log, TEXT("ShowQuickTimeEvent End")); } void UQuickTimeEventManager::EnqueQuickTimeEvent(FQuickTimeEventEnqueProperties properties) { - UE_LOG(LogTemp, Log, TEXT("EnqueQuickTimeEvent Start")); OnFirstEventInit(); { FScopeLock lock1(&lock); nextEvents.Enqueue(properties); } ShowNextEvent(); - UE_LOG(LogTemp, Log, TEXT("EnqueQuickTimeEvent End")); } void UQuickTimeEventManager::ShowNextEvent() { - UE_LOG(LogTemp, Log, TEXT("ShowNextEvent Start")); FScopeLock lock1(&lock); FQuickTimeEventEnqueProperties properties; nextEvents.Dequeue(properties); CreateEvent(properties, true); - UE_LOG(LogTemp, Log, TEXT("ShowNextEvent End")); } void UQuickTimeEventManager::OnEventEnd(int32 id, EQuickTimeEventResult result) { - UE_LOG(LogTemp, Log, TEXT("OnEventEnd Start")); FScopeLock lock1(&lock); Event event; if(!events.RemoveAndCopyValue(id, event)) @@ -78,7 +76,6 @@ void UQuickTimeEventManager::OnEventEnd(int32 id, EQuickTimeEventResult result) if(event.sequence && !nextEvents.IsEmpty()) { ShowNextEvent(); - UE_LOG(LogTemp, Log, TEXT("OnEventEnd End")); return; } @@ -90,8 +87,8 @@ void UQuickTimeEventManager::OnEventEnd(int32 id, EQuickTimeEventResult result) PC->onAnyKeyReleased.RemoveDynamic(this, &UQuickTimeEventManager::OnInputReleased); } UCommonFunctions::ExitSlowMotion(); + inputBinded = false; } - UE_LOG(LogTemp, Log, TEXT("OnEventEnd End")); } void UQuickTimeEventManager::OnInput(const FKey& key, bool released) @@ -124,6 +121,10 @@ void UQuickTimeEventManager::OnInput(const FKey& key, bool released) if(released) return; + // events failed + if(sequenceBeginTimeStamp + failBlockAfterBegin > GetWorld()->GetTimeSeconds()) + return; + if(auto WM = AMainGameModeBase::GetWidgetsManager()) { while(events.Num() > 0) @@ -141,24 +142,25 @@ void UQuickTimeEventManager::OnInput(const FKey& key, bool released) void UQuickTimeEventManager::OnInputPressed(FKey key) { - if(key == EKeys::W || key == EKeys::A || key == EKeys::S || key == EKeys::D) - return; + //if(key == EKeys::W || key == EKeys::A || key == EKeys::S || key == EKeys::D) + // return; OnInput(key, false); } void UQuickTimeEventManager::OnInputReleased(FKey key) { - if(key == EKeys::W || key == EKeys::A || key == EKeys::S || key == EKeys::D) - return; + //if(key == EKeys::W || key == EKeys::A || key == EKeys::S || key == EKeys::D) + // return; OnInput(key, true); } void UQuickTimeEventManager::OnFirstEventInit() { - if(!events.IsEmpty()) + if(!events.IsEmpty() || inputBinded) return; + inputBinded = true; if(auto PC = ACustomPlayerController::Get()) { @@ -168,6 +170,7 @@ void UQuickTimeEventManager::OnFirstEventInit() PC->onAnyKeyReleased.AddDynamic(this, &UQuickTimeEventManager::OnInputReleased); }); } + sequenceBeginTimeStamp = GetWorld()->GetTimeSeconds(); UCommonFunctions::EnterSlowMotion(); } diff --git a/UnrealProject/Lost_Edge/Source/Lost_Edge/Private/QuickTimeEvent.h b/UnrealProject/Lost_Edge/Source/Lost_Edge/Private/QuickTimeEvent.h index 09f828c..a7373b6 100644 --- a/UnrealProject/Lost_Edge/Source/Lost_Edge/Private/QuickTimeEvent.h +++ b/UnrealProject/Lost_Edge/Source/Lost_Edge/Private/QuickTimeEvent.h @@ -92,4 +92,6 @@ protected: TQueue nextEvents; TMap events; FCriticalSection lock; + float sequenceBeginTimeStamp = 0; // used to block player fails right at begin + bool inputBinded = false; };