From b97d63bad5129a2b5fa2b10e225e45fbe93d4b4a Mon Sep 17 00:00:00 2001 From: Kubson96 <42842162+Kubson96@users.noreply.github.com> Date: Mon, 17 Feb 2025 15:28:18 +0100 Subject: [PATCH] feat: add interaction input, implement in controller Added interaction input. Modified InteractionComponent - write ptr to hit object. Implemented interact action in player controller. --- .../Player/BP_ExoPlayerController.uasset | Bin 19960 -> 20170 bytes .../Inputs/IMC_ExoMappingContext.uasset | Bin 7913 -> 7907 bytes .../Player/Inputs/Inputs/AI_Interact.uasset | Bin 0 -> 1669 bytes .../Inputs/Inputs/AI_Interaction.uasset | Bin 1401 -> 0 bytes Exo.uproject | 8 ++++++++ .../Private/Player/ExoPlayerController.cpp | 10 ++++++++++ .../Private/Player/InteractionComponent.cpp | 11 ++++++----- .../Exo/Public/Player/ExoPlayerController.h | 10 ++++++++++ .../Exo/Public/Player/InteractionComponent.h | 2 ++ 9 files changed, 36 insertions(+), 5 deletions(-) create mode 100644 Content/Blueprints/Player/Inputs/Inputs/AI_Interact.uasset delete mode 100644 Content/Blueprints/Player/Inputs/Inputs/AI_Interaction.uasset diff --git a/Content/Blueprints/Player/BP_ExoPlayerController.uasset b/Content/Blueprints/Player/BP_ExoPlayerController.uasset index 2eff983004b71cf9896efe1dcfdb87a345e845a8..8f8b2b70d0cd0246fd97601714127693d19b5a46 100644 GIT binary patch delta 2932 zcmbVOZA@EL7(S1zN+i6Q4 zas9WM5Q=lZg^&yEk(B8ofd9#Gb#DNWoN#0`x@`eiJ9Y_Dl$X9AP!07^c;R1NSpuG{s zn@x9ofGIgB6CclFu#f4+n7o0!{sMTvBJWTpFX?iTIB%R`zaeil3y(MJ z6h!qxb9#y?gzb{WzPuI|3b3$0uZ6f?$S8BR7`SeuSRcvfiD9zfN6G9}DG=X$oDu)P z^3AZh2zyJNs$~yM1Z?nTX^X0_8J;oQKrPgm4l@qkNJJxFZ8(->xEe+TI~|5If}r|Z zOeuOHj*4e}ilW9~rxOr02&%f4G{qt+Mp_lc4P;D$-YBTfbtsC6(N3R)NmO)(FrI37 z7Zpd~5-KD~VQe+o=?u6`f@)fVc2k&6!x>yWmqafj8iqJ3M!Sr31BI2N( zFM7)>xtHzS6qC1%L}L?=*$6jk~pH#94Og>Kzlxrw^an* zZ*JR}o@^-BHuRTh2Ae21RfEWD^^&OjFWZwnc|~+5OI?2|wz{aU?hh{Xubv;c*3*+7 z$sH^b-g!Ks2EeA#*7G=_qQjuw#a14O2P{;CFMUsGcQaiC-fKOgZQ|CHBfi<9Lsp`t ziMBw(Z-ui#4ZI~7VJSEW-})VN4{9q>W5wrAm@}8aXrMmT>3JflN=3r_X_zE!Y$69& zsr9mz3wE_m<_WbC!+a>XF3jS8@GRQkQqTp%0Vg=yvIkrXf3^+LR_JT5z%=Zz&@L5{ zf;(ply*vdbGi!RfL$2xT9ZgxQS4+j%bZ3Cl`{3iyUG#pq96HVCvH7t27I3laB=y6d zNV|r21I*)r8<Sdo9{d5{-LM*|*FM0I7mBB5`3%qod R;bSuO>B@ghMfgba{R@wR*WdsE delta 3060 zcmb_dZ){Ul6u-ColMXBn+qJJ@8x)(RTNbu~K-ccQ*R@^g)^-z7RMfdC6Hs8x;bKCv zq9%S3mnDY}1fsDCCisEGrNP8+F7bozlYBNNf`*8oZhX;TBA)x+x$sKc@id%l@7#NS zzw_swci!#NNBpmIeE#RUjlGO@!N|Iv#~5R^YzChp2V*s;)6mH~!;3D)@Q;ll!H@dw zb&SP)jB#9_LVX(lKga(+JHs7w>TLg+Ti@?KzcVum^IYLG@EPB;xm988>m2eeatB4^ zegLPN?NE&ydySwN2~Ml zOeX#n6Hitrmhg_*;9bXfFFlZ#XG{>s9!NBK<2HG(+2l=QenVDkwJ7koP2Qjl-Y*#M z5b^TX#4nOjf`YieLckZu_6F(SkT+_BcN2Lpm-5W>%YcUo{2hs}mlBPg9KtEWgc1WT z#CniQyuBvvJ|6Yo8t~bQMAK;HJ!g|Ai>X+kY_Ev5&t^dRnydk(?=;1@g&llL#)CEP zF2}}Rn2ooB%jbk~ci3^E54gwNF1mx>SBcw;`Ub6=ROnIKAm9nQ4wA`=TzB%BWrf<85fb*;)f-XX6H3XbO78#UZ`t#RBD8 z%7D2y=zY_)FcG1Syl2vQ%r+QDc!J<|)E%@wku|&*5ti*~$7{Kf;7_ygw|B@ZzBZZn z8bOy#&v$%5ulUF$EP@L;mopFLTX3B5!D%JxI**t3qoSWE4w%zgi?@}fO@2Razx(G8 zPRC*W27xgRe&}u9)=fJ)4SJ$MJ5(#C(5*EI4NH&wP zhqSpl4*x`qa*(KO;nUcM5U5cnydP}}$n-7uvG2ty zxF2RLrA3^_R&DELZE`j=xZ1aaXJI87id@-ybfs>eC-&jU&Fd{cwM|N{IL4~4LxmHn z?zhs#)Nc`fC>kuQp8QU8Q~o}e@vGfh4O~I+$!g$Q1O`?E<+x=SgZH#Vhqc0VHAl>N zrw^7jF<(xddIJaa#{c4Oj^~&9Ri8XQ+#uM(lgC$?rb||EqcA7C-z%*@YY zI34)vjUJGvGg*zbQXHs?!O=6`Gp{7IC^5MNq=3^danI(>te;q!*6~j+YbS{B0vqAVk27K~ZE_ab}(AZ|7z1`M7HY6+cH@YY9U+R5gOjjM) zJ-3kXJqSFX$q%wtjEy{)NFMaE$>Oo$EE|kUOPhS2(vvL8sLskgb~pDEa<6P)1wTyU z;=bIRz>WMaV~>BDj7OjP2pQ)D1Pee<+M;#RaNmTnJteY=}c%)VOcfe&t#V09(3P+-T3l zpKilzfC5hek$8`gVu2s|L{1aJRXUgG%hX4n^n$~&SfUf~gpA@X1hMdC$jm>3v70%;In1md?D8=ky$n(~GFmf<4D-EMjsK(QYz3=F0~ zTHie}H&x#$r!=*oC^N65SU(^qu`;zt-!reE6v%^8j-K(Jc_pbuiOD6I`FTKX3=G^r zTm>>62&MupR0PsamZpX#ZssmV21c%KF2>FVK*H40(bUz@&B)Nu#1O6+sGh+T=t7_) zz?#28UHcbEgD@{p;?uLOn|JPr_ip;px3xscWd9;XtM)CI!X36oyF`6iYdQsFH^>~2 zLs%J@f$V?Y`x%9RJZ$cPv=V_YP431Rt($uFjHFXsj}TtN?+(z#s(aMF;5W{s7gnqbmaP zVd_8*f&rKqj1Qt=V#w-1NevzR1KNWu28&ftk^%(;2!Ns-7XT$e5C#FDQ7C3%6XOD_ zgd`zwIs@`qV3q>e$mT(n!YOR#!zIxeAal?o5=-ne0=@PI>OGJaEJ~Ds!m!kalA`pG z6A36wfczGg2rNfJDhpB>K(XwUpAXD|d0?0L0kc6_DkPcNBAJPlg7v_%>I7|52bUVK xpahzQ6CektB2X2<;^`o;5S{*QX@j2ik&7Td$)FiscF!V^<(); + + InteractionComponent = PlayerCharacter->FindComponentByClass(); } void AExoPlayerController::PlayerTick(float DeltaTime) @@ -39,6 +41,7 @@ void AExoPlayerController::SetupInputComponent() EnhancedInputComponent->BindAction(MoveAction, ETriggerEvent::Triggered, this, &AExoPlayerController::Move); EnhancedInputComponent->BindAction(LookAction, ETriggerEvent::Triggered, this, &AExoPlayerController::Look); + EnhancedInputComponent->BindAction(InteractAction, ETriggerEvent::Triggered, this, &AExoPlayerController::Interact); } void AExoPlayerController::Move(const FInputActionValue& InputActionValue) @@ -64,3 +67,10 @@ void AExoPlayerController::Look(const FInputActionValue& InputActionValue) AddYawInput(InputAxisVector.X); AddPitchInput(InputAxisVector.Y); } + + +void AExoPlayerController::Interact(const FInputActionValue& InputActionValue) +{ + if (InteractionComponent->InteractedActor) + IInteractable::Execute_Interact(InteractionComponent->InteractedActor); +} diff --git a/Source/Exo/Private/Player/InteractionComponent.cpp b/Source/Exo/Private/Player/InteractionComponent.cpp index d154705..2344ce4 100644 --- a/Source/Exo/Private/Player/InteractionComponent.cpp +++ b/Source/Exo/Private/Player/InteractionComponent.cpp @@ -26,12 +26,13 @@ void UInteractionComponent::CheckForInteractable() bool bHit = GetWorld()->LineTraceSingleByChannel(HitResult, LineStart, LineEnd, ECC_Visibility, QueryParams); - if (bHit && HitResult.GetActor()) + if (bHit && HitResult.GetActor() && HitResult.GetActor()->Implements()) { - if (HitResult.GetActor()->Implements()) - { - IInteractable::Execute_Interact(HitResult.GetActor()); - } + InteractedActor = HitResult.GetActor(); + } + else + { + InteractedActor = nullptr; } if (bShowDebugLine) diff --git a/Source/Exo/Public/Player/ExoPlayerController.h b/Source/Exo/Public/Player/ExoPlayerController.h index 71e8d84..6085b1e 100644 --- a/Source/Exo/Public/Player/ExoPlayerController.h +++ b/Source/Exo/Public/Player/ExoPlayerController.h @@ -4,6 +4,7 @@ #include "CoreMinimal.h" #include "GameFramework/PlayerController.h" +#include #include "ExoPlayerController.generated.h" class UInputMappingContext; @@ -31,6 +32,9 @@ protected: UFUNCTION(BlueprintCallable, Category = "Input") void Look(const FInputActionValue& InputActionValue); + UFUNCTION(BlueprintCallable, Category = "Input") + void Interact(const FInputActionValue& InputActionValue); + protected: UPROPERTY(EditAnywhere, Category = "Input") TObjectPtr InputContext; @@ -41,6 +45,12 @@ protected: UPROPERTY(EditAnywhere, Category = "Input") TObjectPtr LookAction; + UPROPERTY(EditAnywhere, Category = "Input") + TObjectPtr InteractAction; + UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Character") TObjectPtr PlayerCharacter; + +private: + UInteractionComponent* InteractionComponent; }; diff --git a/Source/Exo/Public/Player/InteractionComponent.h b/Source/Exo/Public/Player/InteractionComponent.h index 06c8ec2..a8b7a07 100644 --- a/Source/Exo/Public/Player/InteractionComponent.h +++ b/Source/Exo/Public/Player/InteractionComponent.h @@ -21,6 +21,8 @@ public: UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Debug") bool bShowDebugLine = false; + AActor *InteractedActor = nullptr; + protected: // Called when the game starts virtual void BeginPlay() override;