From bcf4af827c8a377fa52592d0a2ebbf3efcb89fa8 Mon Sep 17 00:00:00 2001 From: Futaba Soup Date: Thu, 28 Aug 2025 20:11:10 -0500 Subject: [PATCH] enhanced input and movement logic --- .../Blueprints/Input/IMC_AuraContext.uasset | Bin 0 -> 3978 bytes .../Input/InputActions/IA_Move.uasset | Bin 0 -> 1370 bytes .../Player/BP_AuraPlayerController.uasset | Bin 0 -> 21378 bytes Source/Aura/Aura.Build.cs | 2 +- .../Private/Player/AuraPlayerController.cpp | 55 ++++++++++++++++++ .../Aura/Public/Player/AuraPlayerController.h | 34 +++++++++++ 6 files changed, 90 insertions(+), 1 deletion(-) create mode 100644 Content/Blueprints/Input/IMC_AuraContext.uasset create mode 100644 Content/Blueprints/Input/InputActions/IA_Move.uasset create mode 100644 Content/Blueprints/Player/BP_AuraPlayerController.uasset create mode 100644 Source/Aura/Private/Player/AuraPlayerController.cpp create mode 100644 Source/Aura/Public/Player/AuraPlayerController.h diff --git a/Content/Blueprints/Input/IMC_AuraContext.uasset b/Content/Blueprints/Input/IMC_AuraContext.uasset new file mode 100644 index 0000000000000000000000000000000000000000..b024bb14b14e16c713dc6da7da155c24b1f3c732 GIT binary patch literal 3978 zcmdT{eQXp(6n~alkb+v{*$x!xXod!^SX z^#io2@Q0>a4bntRW7NbnQDcHpX_SBT4<%}hqKKd(pdrx)KLG3ec6YAZ_RiL%so|H~ zotZap-h1=jn>TxdkLLFMK0G|UX$H~k6rw+Q3uJujZr*da^Oe3+d+vMSh0k_p_GX{% zxs2!%KKDz@!1pIBdWO=!D&8l(T~)Z0({lLZSR=PGM@2Bo!kQA&BMxsU9Mv7(YIma) z)nvCC(pkIC8HuoD2V`;NUrMxyx6YzssjA8;Ro&)ZUhI)vl@;z1cctWZl{h7rw0uRJ zne$U!8WI1Ii~+~PvqoA76yv8k9Zx@hGMcx)wCm0N(u<$$+S=97*$w?zzSL;b_}+$; z{*){}%FCqoiDk*yE9Chcyl)o!-qF; z!baQNHGJ&w`86f1J3OHlIpk-}hU@6_*FO3g_J~=7>Q*&I>q~||<>4ZU4zyMtor#`b zSJV)lN%ur9$57McSgodpnWo3cJ8)c?%c&Kr8jKS&QwO>c?xqd&gmSFW=-xxC^v7KW zYfNWx)*ovM4jA(r>4$YnFEm%ut7&bS^LbC$Y+7(9i&e|vuo4Q;GkvAELX;;IZHnrhU*==F&X-lN7P(DPwFm{G*?Y?-#kz8(H`Ky3MYm)`sx-CL z@`(1<+6Adx3fDky+`gfQM+W^Go~*Rp7f$67AGZp5OmTee^m z;E!+OkzZ%sfz+u{LyU%I9Gr`Au5G%X`Sm!DboljC2z9OO-y#RtU8-LWDjhPS1X+== z>}Qmv$GWZqQxa!HX#a!1y$^r;=*aHc&P?=1`-#f-9UOvwpRPr1`itoK^Vr*ZO$h|B zlVjzrFGErTrJS4j(|4-&bLkJ=m;{YU5QY)|AZ4pS;3>ony#z)(5QbnufU{= z)=efaEwtLdcoDe8>ccvLM10xSl5k2p|b0{FopUqjM*PzE%t}91gx@MCMIR%J=y(OBrOA8P19B|U zDNj@>p5rHXhqWQBO~jMS>7q7?3(SyTm`Dqxp!U@8^4-SFy5+G+uvNE0V>V~fvU7|t z3z4c^Ceanfn+UfS0PVOW0Q7N|0QBuRiUoKUSX8?JqkN5_6Fx402^n$u1LLHe=lLnp z!EU3V!A85C%OC{-0j@L~5y1Zs)c-hl literal 0 HcmV?d00001 diff --git a/Content/Blueprints/Input/InputActions/IA_Move.uasset b/Content/Blueprints/Input/InputActions/IA_Move.uasset new file mode 100644 index 0000000000000000000000000000000000000000..09fdec31ad59967c42255a7470a79afbf0c8f1c7 GIT binary patch literal 1370 zcmX@utTpfZ|Ns9Jm>C$jm>3v-0%;H^)jcNs)B3H+S23Tz(q{VGC%@SA{0a*L10zuG zZN`QtFP)}*;l5?K$Z@xuo(51%2Z;6E6LVAbopMT33yL!HN{aP8^9o8!Af#h*NoIZ? zP{=XfH@_?usG5O+4~RQK1_Hrrpxuf<+SJ_H(Z$Kk*wD?@)ZEq5*}}=((ACV*&BVmQ z#lpnc2(B2UuK?&+pgsl#sG}bs(I5k1{3k$h5dH$hpI=%CzmhEWm|Qf6X`gxjUXVE; z3~~%B0~?V2C37j05Rj*>9qMYT9h91rnpm8wYpQ1kmSocAUS{nT1awYK)!x(a#3bMiN0%IMq*xaY6>{~7_P26{e~AP>r`2i z8c>v9kXlqy$?(ii_W($XD_9LAbi)#XK_60Ckjn7)>g9)WxMZ!Y94j)5ja(R1UM}ka z8SI)@nhQ5L@cLW_khA>q^HPBUc9d5Z$O%YH&Q45E^~q08%*m`u1VyDEFs_RW5|dLI zgi0zqxPXcf)-zx3Fd#KS%m`OHC;~JE76#7wMX90wNm;4MB@912b?w-Ia?Ux4#l;LI z$WkYyl%6nhLXb)fJ>2gvF`(T^<84dsC7ASfG@Ja7S6as|nwn}w{$51E6;2AP2# zV8{Xb0+>yXK-~aRi!7%EONVM4^=|qZLJ+Q1gK{M6C zQGiHe>_Fq7=@?`i(8&k@k^=!)ID!;_FbIG=gba}RAdkXLLXNeAz*2Jhx1|kw)<-Ua Y43a@M0mv@9XA#J9YQLrdR2-xp0Qiq6tpET3 literal 0 HcmV?d00001 diff --git a/Content/Blueprints/Player/BP_AuraPlayerController.uasset b/Content/Blueprints/Player/BP_AuraPlayerController.uasset new file mode 100644 index 0000000000000000000000000000000000000000..e030fa00844d516ebc56f18a976d0c9326bee807 GIT binary patch literal 21378 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 ()); + check (Subsystem); + Subsystem->AddMappingContext (AuraContext, 0); + + bShowMouseCursor = true; + DefaultMouseCursor = EMouseCursor::Default; + + FInputModeGameAndUI InputModeData; + InputModeData.SetLockMouseToViewportBehavior(EMouseLockMode::DoNotLock); + InputModeData.SetHideCursorDuringCapture(false); + SetInputMode (InputModeData); +} + +void AAuraPlayerController::SetupInputComponent() +{ + Super::SetupInputComponent(); + + UEnhancedInputComponent *EnhancedInputComponent = CastChecked(InputComponent); + EnhancedInputComponent->BindAction (MoveAction, ETriggerEvent::Triggered, this, &AAuraPlayerController::Move); +} + +void AAuraPlayerController::Move(const FInputActionValue& InputActionValue) +{ + const FVector2D InputAxisVector = InputActionValue.Get(); + const FRotator Rotation = GetControlRotation (); + const FRotator YawRotation(0.f, Rotation.Yaw, 0.f); + + const FVector ForwardDirection = FRotationMatrix (YawRotation).GetUnitAxis(EAxis::X); + const FVector RightDirection = FRotationMatrix (YawRotation).GetUnitAxis (EAxis::Y); + + APawn *ControlledPawn = GetPawn(); + if (!ControlledPawn) + return; + + ControlledPawn->AddMovementInput(ForwardDirection, InputAxisVector.Y); + ControlledPawn->AddMovementInput(RightDirection, InputAxisVector.X); +} diff --git a/Source/Aura/Public/Player/AuraPlayerController.h b/Source/Aura/Public/Player/AuraPlayerController.h new file mode 100644 index 0000000..87219f5 --- /dev/null +++ b/Source/Aura/Public/Player/AuraPlayerController.h @@ -0,0 +1,34 @@ +// Copyright; GhostPacket Games + +#pragma once + +#include "CoreMinimal.h" +#include "GameFramework/PlayerController.h" +#include "AuraPlayerController.generated.h" + +class UInputMappingContext; +class UInputAction; + +struct FInputActionValue; + +UCLASS() +class AURA_API AAuraPlayerController : public APlayerController +{ + GENERATED_BODY() + +public: + AAuraPlayerController (); + +protected: + virtual void BeginPlay() override; + virtual void SetupInputComponent() override; + +private: + UPROPERTY (EditAnywhere, Category = "Input") + TObjectPtr AuraContext; + + UPROPERTY (EditAnywhere, Category = "Input") + TObjectPtr MoveAction; + + void Move (const FInputActionValue &InputActionValue); +};