From dc34d16a2fd10be3725a7f73d9522b919c81be7b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Do=C4=9Fa=20Can=20Yan=C4=B1ko=C4=9Flu?= Date: Sat, 12 Sep 2020 16:00:17 +0300 Subject: [PATCH 1/9] Safer solution for foot IK related issues --- .../Animation/ALSCharacterAnimInstance.cpp | 22 ++++++++++--------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/Source/ALSV4_CPP/Private/Character/Animation/ALSCharacterAnimInstance.cpp b/Source/ALSV4_CPP/Private/Character/Animation/ALSCharacterAnimInstance.cpp index e704e5f7..cfc6aa67 100644 --- a/Source/ALSV4_CPP/Private/Character/Animation/ALSCharacterAnimInstance.cpp +++ b/Source/ALSV4_CPP/Private/Character/Animation/ALSCharacterAnimInstance.cpp @@ -40,11 +40,10 @@ void UALSCharacterAnimInstance::NativeUpdateAnimation(float DeltaSeconds) UpdateAimingValues(DeltaSeconds); UpdateLayerValues(); + UpdateFootIK(DeltaSeconds); if (MovementState.Grounded()) { - UpdateFootIK(DeltaSeconds); - // Check If Moving Or Not & Enable Movement Animations if IsMoving and HasMovementInput, or if the Speed is greater than 150. const bool prevShouldMove = Grounded.bShouldMove; Grounded.bShouldMove = ShouldMoveCheck(); @@ -258,13 +257,16 @@ void UALSCharacterAnimInstance::UpdateLayerValues() void UALSCharacterAnimInstance::UpdateFootIK(float DeltaSeconds) { - // Update Foot Locking values. - SetFootLocking(DeltaSeconds, FName(TEXT("Enable_FootIK_L")), FName(TEXT("FootLock_L")), - FName(TEXT("ik_foot_l")), FootIKValues.FootLock_L_Alpha, FootIKValues.UseFootLockCurve_L, - FootIKValues.FootLock_L_Location, FootIKValues.FootLock_L_Rotation); - SetFootLocking(DeltaSeconds, FName(TEXT("Enable_FootIK_R")), FName(TEXT("FootLock_R")), - FName(TEXT("ik_foot_r")), FootIKValues.FootLock_R_Alpha, FootIKValues.UseFootLockCurve_R, - FootIKValues.FootLock_R_Location, FootIKValues.FootLock_R_Rotation); + if (MovementState.Grounded()) + { + // Update Foot Locking values. + SetFootLocking(DeltaSeconds, FName(TEXT("Enable_FootIK_L")), FName(TEXT("FootLock_L")), + FName(TEXT("ik_foot_l")), FootIKValues.FootLock_L_Alpha, FootIKValues.UseFootLockCurve_L, + FootIKValues.FootLock_L_Location, FootIKValues.FootLock_L_Rotation); + SetFootLocking(DeltaSeconds, FName(TEXT("Enable_FootIK_R")), FName(TEXT("FootLock_R")), + FName(TEXT("ik_foot_r")), FootIKValues.FootLock_R_Alpha, FootIKValues.UseFootLockCurve_R, + FootIKValues.FootLock_R_Location, FootIKValues.FootLock_R_Rotation); + } if (MovementState.InAir()) { @@ -272,7 +274,7 @@ void UALSCharacterAnimInstance::UpdateFootIK(float DeltaSeconds) SetPelvisIKOffset(DeltaSeconds, FVector::ZeroVector, FVector::ZeroVector); ResetIKOffsets(DeltaSeconds); } - else if (!MovementState.Ragdoll()) + else if (MovementState.Grounded()) { // Update all Foot Lock and Foot Offset values when not In Air FVector FootOffsetLTarget; From 5cc28af7ff1cc6438f8b4bd2737f6e20d54ea700 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Do=C4=9Fa=20Can=20Yan=C4=B1ko=C4=9Flu?= Date: Sat, 26 Sep 2020 12:24:34 +0300 Subject: [PATCH 2/9] Revert "Safer solution for foot IK related issues" This reverts commit dc34d16a2fd10be3725a7f73d9522b919c81be7b. --- .../Animation/ALSCharacterAnimInstance.cpp | 22 +++++++++---------- 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/Source/ALSV4_CPP/Private/Character/Animation/ALSCharacterAnimInstance.cpp b/Source/ALSV4_CPP/Private/Character/Animation/ALSCharacterAnimInstance.cpp index cfc6aa67..e704e5f7 100644 --- a/Source/ALSV4_CPP/Private/Character/Animation/ALSCharacterAnimInstance.cpp +++ b/Source/ALSV4_CPP/Private/Character/Animation/ALSCharacterAnimInstance.cpp @@ -40,10 +40,11 @@ void UALSCharacterAnimInstance::NativeUpdateAnimation(float DeltaSeconds) UpdateAimingValues(DeltaSeconds); UpdateLayerValues(); - UpdateFootIK(DeltaSeconds); if (MovementState.Grounded()) { + UpdateFootIK(DeltaSeconds); + // Check If Moving Or Not & Enable Movement Animations if IsMoving and HasMovementInput, or if the Speed is greater than 150. const bool prevShouldMove = Grounded.bShouldMove; Grounded.bShouldMove = ShouldMoveCheck(); @@ -257,16 +258,13 @@ void UALSCharacterAnimInstance::UpdateLayerValues() void UALSCharacterAnimInstance::UpdateFootIK(float DeltaSeconds) { - if (MovementState.Grounded()) - { - // Update Foot Locking values. - SetFootLocking(DeltaSeconds, FName(TEXT("Enable_FootIK_L")), FName(TEXT("FootLock_L")), - FName(TEXT("ik_foot_l")), FootIKValues.FootLock_L_Alpha, FootIKValues.UseFootLockCurve_L, - FootIKValues.FootLock_L_Location, FootIKValues.FootLock_L_Rotation); - SetFootLocking(DeltaSeconds, FName(TEXT("Enable_FootIK_R")), FName(TEXT("FootLock_R")), - FName(TEXT("ik_foot_r")), FootIKValues.FootLock_R_Alpha, FootIKValues.UseFootLockCurve_R, - FootIKValues.FootLock_R_Location, FootIKValues.FootLock_R_Rotation); - } + // Update Foot Locking values. + SetFootLocking(DeltaSeconds, FName(TEXT("Enable_FootIK_L")), FName(TEXT("FootLock_L")), + FName(TEXT("ik_foot_l")), FootIKValues.FootLock_L_Alpha, FootIKValues.UseFootLockCurve_L, + FootIKValues.FootLock_L_Location, FootIKValues.FootLock_L_Rotation); + SetFootLocking(DeltaSeconds, FName(TEXT("Enable_FootIK_R")), FName(TEXT("FootLock_R")), + FName(TEXT("ik_foot_r")), FootIKValues.FootLock_R_Alpha, FootIKValues.UseFootLockCurve_R, + FootIKValues.FootLock_R_Location, FootIKValues.FootLock_R_Rotation); if (MovementState.InAir()) { @@ -274,7 +272,7 @@ void UALSCharacterAnimInstance::UpdateFootIK(float DeltaSeconds) SetPelvisIKOffset(DeltaSeconds, FVector::ZeroVector, FVector::ZeroVector); ResetIKOffsets(DeltaSeconds); } - else if (MovementState.Grounded()) + else if (!MovementState.Ragdoll()) { // Update all Foot Lock and Foot Offset values when not In Air FVector FootOffsetLTarget; From d0d99fc5887f9bf800313c5557d5c3051232da8d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Do=C4=9Fa=20Can=20Yan=C4=B1ko=C4=9Flu?= Date: Sat, 26 Sep 2020 12:29:05 +0300 Subject: [PATCH 3/9] Use A pose as default retargeting pose, so people will stop complaining about retargeting issues --- .../ALS_Mannequin_Skeleton.uasset | Bin 44349 -> 44457 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Content/AdvancedLocomotionV4/CharacterAssets/MannequinSkeleton/ALS_Mannequin_Skeleton.uasset b/Content/AdvancedLocomotionV4/CharacterAssets/MannequinSkeleton/ALS_Mannequin_Skeleton.uasset index ecff749c370d6b6824bab2d743ebada5939f86dd..5a7511655dfb5d7c7eaa66dc030609df504dfc1c 100644 GIT binary patch literal 44457 zcmeHw2YeJ&*Z!qRhfqT|)Ica9g_^nvgaiV_P$Obkk_}n1Db8*ZqLhdT0TfX{QF`~4 z-UNYU69h#Cm7*v`Ku{0?X(B!UduH$1ow~!mFM0X?-)N0lSwxw3>$<>|ktGkt`6VWC+g^=S;6M{6?PZ> zT#?E`EDyiS?X@ZVOx<_qm_3@hx2CeI$(t_x5jOXB)e}C;b-N=vwV|>PI}=iYo(H6- z8R&_S5oHJ&PmkvGx_eijh;H5e!~DDZbk}tW_tQmm?&j~?J*-P--*A8b9^w20{o4^z zm0lUV2&qEPaDTcJAz*ZGZ$gI9!$6OMUytTgyR<)g?JsY=xVFuei~Pe*{-HMTykJmy z(vXxRr>w_F9V%_#en@Zs_OS+&L2ov6^zY=`g$EF#d-s4E02K|$KY0eO=TVDRtw*Wt zOsl&X>Z3NjZ5tjP(avLVCYR8^22N)-8!Tq;{`#~u!z-D_v_UDfB$o6v zAc(h1<55g%&IxVS3>5TE8)Hl}uv347IoV+Lj?7Her==Sc$(#MMdqxAQk3QA#?^?h} zb!o;_Y6#ibD{9f;r_0$1xv#b=zkI+`;} zegN&A)NC{PC^%?#Jz>sZ+F4T=eb|+`$7`_6L8f#|A1*yJgH);R-uO9?a;YBC3J9ZDZY8ut5SAWUAP^(Iri zi7b15-ShTaj+{&+Auz#&(NQ0*&oOZ1pCegcS7(x#bh9Cz4q9S~zwi~zM*!o614xq> z-L~^MlOZjUT9afn8AzQaxufd?P9O}UvtaKu3ztK#9XPiEOcmyu$)(msD|v2sW>A8j z(zHn3SYE)E%`kiB{#c7cakOzval><`G+t`RWk1J!lHCxhC$x9Rce4${y3`zP-6YF(bYOa2%nnMWPk?cPl&=(f5 zUg_CsB6WN|@zLb*y?!U<@>nuu z^2G-Nd89rqk;ngdamx2{c`RACu;}zQloRW z-{|nXgomRICoyX8AC2rrQFVMhjmb=tpdPw6_ZKKstnSe%qZ7GC@3n~ie^itas#v(W&%8@WXiCqfJ25U*W?_vA*AtOY08+GY+Qxc^WQ0-+XX)K< z$_P~~%$fc2iZ*Nv*_AuCVUiBnFD_wRM<-}Sn;&^^tgWs>YWz1rQ?9A2P$@+@w+rKO z-bpnkCej@ZY$7GrH-Dk0Cj=j0b`qi#tv>CJLV6)UHmI(S%0DIZcJ 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 From a677c488b491f89ceb98522a1aab59299188cb41 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Do=C4=9Fa=20Can=20Yan=C4=B1ko=C4=9Flu?= Date: Sat, 26 Sep 2020 12:39:53 +0300 Subject: [PATCH 4/9] Fix Foot IK related issues in packaged games, also fix initial stance state on begin play --- .../Private/Character/ALSBaseCharacter.cpp | 2 +- .../Animation/ALSCharacterAnimInstance.cpp | 25 ++++++++----------- .../Animation/ALSCharacterAnimInstance.h | 7 ++++-- 3 files changed, 17 insertions(+), 17 deletions(-) diff --git a/Source/ALSV4_CPP/Private/Character/ALSBaseCharacter.cpp b/Source/ALSV4_CPP/Private/Character/ALSBaseCharacter.cpp index 878a124c..65948db7 100644 --- a/Source/ALSV4_CPP/Private/Character/ALSBaseCharacter.cpp +++ b/Source/ALSV4_CPP/Private/Character/ALSBaseCharacter.cpp @@ -133,7 +133,7 @@ void AALSBaseCharacter::BeginPlay() // Update states to use the initial desired values. SetGait(DesiredGait); - SetDesiredStance(DesiredStance); + SetStance(DesiredStance); SetRotationMode(DesiredRotationMode); SetViewMode(ViewMode); SetOverlayState(OverlayState); diff --git a/Source/ALSV4_CPP/Private/Character/Animation/ALSCharacterAnimInstance.cpp b/Source/ALSV4_CPP/Private/Character/Animation/ALSCharacterAnimInstance.cpp index e704e5f7..c23670d3 100644 --- a/Source/ALSV4_CPP/Private/Character/Animation/ALSCharacterAnimInstance.cpp +++ b/Source/ALSV4_CPP/Private/Character/Animation/ALSCharacterAnimInstance.cpp @@ -40,11 +40,10 @@ void UALSCharacterAnimInstance::NativeUpdateAnimation(float DeltaSeconds) UpdateAimingValues(DeltaSeconds); UpdateLayerValues(); - + UpdateFootIK(DeltaSeconds); + if (MovementState.Grounded()) { - UpdateFootIK(DeltaSeconds); - // Check If Moving Or Not & Enable Movement Animations if IsMoving and HasMovementInput, or if the Speed is greater than 150. const bool prevShouldMove = Grounded.bShouldMove; Grounded.bShouldMove = ShouldMoveCheck(); @@ -275,19 +274,17 @@ void UALSCharacterAnimInstance::UpdateFootIK(float DeltaSeconds) else if (!MovementState.Ragdoll()) { // Update all Foot Lock and Foot Offset values when not In Air - FVector FootOffsetLTarget; - FVector FootOffsetRTarget; - SetFootOffsets(DeltaSeconds, FName(TEXT("Enable_FootIK_L")), FName(TEXT("ik_foot_l")), FName(TEXT("Root")), FootOffsetLTarget, + SetFootOffsets(DeltaSeconds, FName(TEXT("Enable_FootIK_L")), FName(TEXT("ik_foot_l")), FName(TEXT("Root")), FootOffsetLTargetCached, FootIKValues.FootOffset_L_Location, FootIKValues.FootOffset_L_Rotation); - SetFootOffsets(DeltaSeconds, FName(TEXT("Enable_FootIK_R")), FName(TEXT("ik_foot_r")), FName(TEXT("Root")), FootOffsetRTarget, + SetFootOffsets(DeltaSeconds, FName(TEXT("Enable_FootIK_R")), FName(TEXT("ik_foot_r")), FName(TEXT("Root")), FootOffsetRTargetCached, FootIKValues.FootOffset_R_Location, FootIKValues.FootOffset_R_Rotation); - SetPelvisIKOffset(DeltaSeconds, FootOffsetLTarget, FootOffsetRTarget); + SetPelvisIKOffset(DeltaSeconds, FootOffsetLTargetCached, FootOffsetRTargetCached); } } void UALSCharacterAnimInstance::SetFootLocking(float DeltaSeconds, FName EnableFootIKCurve, FName FootLockCurve, FName IKFootBone, float& CurFootLockAlpha, bool& UseFootLockCurve, - FVector& CurFootLockLoc, FRotator& CurFootLockRot) + FVector& CurFootLockLoc, FRotator& CurFootLockRot) { if (GetCurveValue(EnableFootIKCurve) <= 0.0f) { @@ -299,8 +296,8 @@ void UALSCharacterAnimInstance::SetFootLocking(float DeltaSeconds, FName EnableF if (UseFootLockCurve) { - UseFootLockCurve = FMath::Abs(GetCurveValue(FName(TEXT("RotationAmount")))) <= 0.001f || - Character->GetLocalRole() != ROLE_AutonomousProxy; + UseFootLockCurve = FMath::Abs(GetCurveValue(FName(TEXT("RotationAmount")))) <= 0.001f || + Character->GetLocalRole() != ROLE_AutonomousProxy; FootLockCurveVal = GetCurveValue(FootLockCurve); } else @@ -315,7 +312,7 @@ void UALSCharacterAnimInstance::SetFootLocking(float DeltaSeconds, FName EnableF { CurFootLockAlpha = FootLockCurveVal; } - + // Step 3: If the Foot Lock curve equals 1, save the new lock location and rotation in component space as the target. if (CurFootLockAlpha >= 0.99f) { @@ -777,8 +774,8 @@ void UALSCharacterAnimInstance::TurnInPlace(FRotator TargetRotation, float PlayR if (FMath::Abs(TurnAngle) < TurnInPlaceValues.Turn180Threshold) { TargetTurnAsset = TurnAngle < 0.0f - ? TurnInPlaceValues.N_TurnIP_L90 - : TurnInPlaceValues.N_TurnIP_R90; + ? TurnInPlaceValues.N_TurnIP_L90 + : TurnInPlaceValues.N_TurnIP_R90; } else { diff --git a/Source/ALSV4_CPP/Public/Character/Animation/ALSCharacterAnimInstance.h b/Source/ALSV4_CPP/Public/Character/Animation/ALSCharacterAnimInstance.h index 1697b4bd..b31c2105 100644 --- a/Source/ALSV4_CPP/Public/Character/Animation/ALSCharacterAnimInstance.h +++ b/Source/ALSV4_CPP/Public/Character/Animation/ALSCharacterAnimInstance.h @@ -122,8 +122,8 @@ class ALSV4_CPP_API UALSCharacterAnimInstance : public UAnimInstance /** Foot IK */ void SetFootLocking(float DeltaSeconds, FName EnableFootIKCurve, FName FootLockCurve, FName IKFootBone, - float& CurFootLockAlpha, bool& UseFootLockCurve, - FVector& CurFootLockLoc, FRotator& CurFootLockRot); + float& CurFootLockAlpha, bool& UseFootLockCurve, + FVector& CurFootLockLoc, FRotator& CurFootLockRot); void SetFootLockOffsets(float DeltaSeconds, FVector& LocalLoc, FRotator& LocalRot); @@ -293,4 +293,7 @@ class ALSV4_CPP_API UALSCharacterAnimInstance : public UAnimInstance FTimerHandle OnJumpedTimer; bool bCanPlayDynamicTransition = true; + + FVector FootOffsetLTargetCached; + FVector FootOffsetRTargetCached; }; From c632c732ce054c408c623d890b47eebd6daf60b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Do=C4=9Fa=20Can=20Yan=C4=B1ko=C4=9Flu?= Date: Sat, 26 Sep 2020 12:43:21 +0300 Subject: [PATCH 5/9] Fix controller button typo in HUD --- .../Blueprints/UI/ALS_HUD.uasset | Bin 573114 -> 573336 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Content/AdvancedLocomotionV4/Blueprints/UI/ALS_HUD.uasset b/Content/AdvancedLocomotionV4/Blueprints/UI/ALS_HUD.uasset index 77fb14ba468707c21abf4d0178d47dba7fac4815..958fb4c7582a1cf192c0bf9bf4404fed4e9ac302 100644 GIT binary patch delta 6640 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 delta 6579 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 t-a8}iInaAua(qR5@AVoRWtUu?@ Date: Sat, 26 Sep 2020 13:01:41 +0300 Subject: [PATCH 6/9] Fix camera is spawning at world center on networked games --- .../ALSV4_CPP/Private/Character/ALSPlayerCameraManager.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Source/ALSV4_CPP/Private/Character/ALSPlayerCameraManager.cpp b/Source/ALSV4_CPP/Private/Character/ALSPlayerCameraManager.cpp index 362c05a5..37e83155 100644 --- a/Source/ALSV4_CPP/Private/Character/ALSPlayerCameraManager.cpp +++ b/Source/ALSV4_CPP/Private/Character/ALSPlayerCameraManager.cpp @@ -8,6 +8,8 @@ #include "Character/ALSPlayerCameraManager.h" + +#include "DrawDebugHelpers.h" #include "Character/ALSBaseCharacter.h" #include "Character/Animation/ALSPlayerCameraBehavior.h" #include "Kismet/KismetMathLibrary.h" @@ -31,6 +33,8 @@ void AALSPlayerCameraManager::OnPossess(AALSBaseCharacter* NewCharacter) { CastedBehv->PlayerController = GetOwningPlayerController(); CastedBehv->ControlledPawn = ControlledCharacter; + SetActorLocation(ControlledCharacter->GetActorLocation()); + SmoothedPivotTarget.SetLocation(ControlledCharacter->GetActorLocation()); } } @@ -152,7 +156,7 @@ bool AALSPlayerCameraManager::CustomCameraBehavior(float DeltaTime, FVector& Loc FHitResult HitResult; World->SweepSingleByChannel(HitResult, TraceOrigin, TargetCameraLocation, FQuat::Identity, - TraceChannel, FCollisionShape::MakeSphere(TraceRadius), Params); + TraceChannel, FCollisionShape::MakeSphere(TraceRadius), Params); if (HitResult.bBlockingHit) { From 9bf0356f0bcd843bbee07f30842f59a610569803 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Do=C4=9Fa=20Can=20Yan=C4=B1ko=C4=9Flu?= Date: Sat, 26 Sep 2020 13:03:14 +0300 Subject: [PATCH 7/9] More smooth camera spawn behavior, also remove als tag requirement --- .../ALSV4_CPP/Private/Character/ALSPlayerCameraManager.cpp | 6 +----- Source/ALSV4_CPP/Public/Character/ALSPlayerCameraManager.h | 3 --- 2 files changed, 1 insertion(+), 8 deletions(-) diff --git a/Source/ALSV4_CPP/Private/Character/ALSPlayerCameraManager.cpp b/Source/ALSV4_CPP/Private/Character/ALSPlayerCameraManager.cpp index 37e83155..d6e23bad 100644 --- a/Source/ALSV4_CPP/Private/Character/ALSPlayerCameraManager.cpp +++ b/Source/ALSV4_CPP/Private/Character/ALSPlayerCameraManager.cpp @@ -58,16 +58,12 @@ void AALSPlayerCameraManager::UpdateViewTargetInternal(FTViewTarget& OutVT, floa FRotator OutRotation; float OutFOV; - if (OutVT.Target->ActorHasTag(CustomTag) && CustomCameraBehavior(DeltaTime, OutLocation, OutRotation, OutFOV)) + if (CustomCameraBehavior(DeltaTime, OutLocation, OutRotation, OutFOV)) { OutVT.POV.Location = OutLocation; OutVT.POV.Rotation = OutRotation; OutVT.POV.FOV = OutFOV; } - else - { - OutVT.Target->CalcCamera(DeltaTime, OutVT.POV); - } } } diff --git a/Source/ALSV4_CPP/Public/Character/ALSPlayerCameraManager.h b/Source/ALSV4_CPP/Public/Character/ALSPlayerCameraManager.h index a60a47a9..164652bd 100644 --- a/Source/ALSV4_CPP/Public/Character/ALSPlayerCameraManager.h +++ b/Source/ALSV4_CPP/Public/Character/ALSPlayerCameraManager.h @@ -53,9 +53,6 @@ class ALSV4_CPP_API AALSPlayerCameraManager : public APlayerCameraManager USkeletalMeshComponent* CameraBehavior = nullptr; protected: - UPROPERTY(EditDefaultsOnly, BlueprintReadWrite) - FName CustomTag = FName(TEXT("ALS_Character")); - UPROPERTY(VisibleAnywhere, BlueprintReadOnly) FVector RootLocation; From 5a48b92e198247420a27fa70c9341f76c14dd18d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Do=C4=9Fa=20Can=20Yan=C4=B1ko=C4=9Flu?= Date: Sat, 26 Sep 2020 13:05:46 +0300 Subject: [PATCH 8/9] Spawn camera at TPS pivot location instead --- .../ALSV4_CPP/Private/Character/ALSPlayerCameraManager.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/Source/ALSV4_CPP/Private/Character/ALSPlayerCameraManager.cpp b/Source/ALSV4_CPP/Private/Character/ALSPlayerCameraManager.cpp index d6e23bad..3b405ce6 100644 --- a/Source/ALSV4_CPP/Private/Character/ALSPlayerCameraManager.cpp +++ b/Source/ALSV4_CPP/Private/Character/ALSPlayerCameraManager.cpp @@ -33,8 +33,11 @@ void AALSPlayerCameraManager::OnPossess(AALSBaseCharacter* NewCharacter) { CastedBehv->PlayerController = GetOwningPlayerController(); CastedBehv->ControlledPawn = ControlledCharacter; - SetActorLocation(ControlledCharacter->GetActorLocation()); - SmoothedPivotTarget.SetLocation(ControlledCharacter->GetActorLocation()); + + // Initial position + const FVector& TPSLoc = ControlledCharacter->GetThirdPersonPivotTarget().GetLocation(); + SetActorLocation(TPSLoc); + SmoothedPivotTarget.SetLocation(TPSLoc); } } From 054a868da5baa722e2d6c7337f607eecc16be3c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Do=C4=9Fa=20Can=20Yan=C4=B1ko=C4=9Flu?= Date: Sat, 26 Sep 2020 13:08:00 +0300 Subject: [PATCH 9/9] Update version to 4.7 --- ALSV4_CPP.uplugin | 2 +- .../Blueprints/UI/ALS_HUD.uasset | Bin 573336 -> 573140 bytes .../Levels/ALS_DemoLevel.umap | Bin 1352303 -> 1343865 bytes 3 files changed, 1 insertion(+), 1 deletion(-) diff --git a/ALSV4_CPP.uplugin b/ALSV4_CPP.uplugin index ea5e6e88..34e1603c 100644 --- a/ALSV4_CPP.uplugin +++ b/ALSV4_CPP.uplugin @@ -1,7 +1,7 @@ { "FileVersion": 3, "Version": 1, - "VersionName": "4.6", + "VersionName": "4.7", "FriendlyName": "Advanced Locomotion System V4 on C++", "Description": "Performance optimized C++ port of LongmireLocomotion's Advanced Locomotion System V4", "Category": "Animation", diff --git a/Content/AdvancedLocomotionV4/Blueprints/UI/ALS_HUD.uasset b/Content/AdvancedLocomotionV4/Blueprints/UI/ALS_HUD.uasset index 958fb4c7582a1cf192c0bf9bf4404fed4e9ac302..d29e3b692ed2c693d32ba26ad61fdf1aae960968 100644 GIT binary patch delta 1454 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 Yj)8Ef!oh<>4UR!@sEbvVHI^OzAG{MjhyVZp delta 18850 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