From 86128efd2023b3380389dcd72a0c63ae01f23b55 Mon Sep 17 00:00:00 2001 From: Sebastian Pape <pape@vr.rwth-aachen.de> Date: Mon, 2 Sep 2024 13:57:46 +0200 Subject: [PATCH] Adding right-click support for the widget interaction component --- Config/DefaultRWTHVRToolkit.ini | 5 ++- Content/BP_RWTHVRGameModeBase.uasset | Bin 21411 -> 21411 bytes ...BP_RWTHVRWidgetInteractionComponent.uasset | Bin 15720 -> 15787 bytes .../WidgetInteraction/IA_WidgetClick.uasset | Bin 1482 -> 0 bytes .../IA_WidgetLeftClick.uasset | Bin 0 -> 1502 bytes .../IA_WidgetRightClick.uasset | Bin 0 -> 1507 bytes Content/Input/Default_IMC/IMC_General.uasset | Bin 33611 -> 34334 bytes .../RWTHVRWidgetInteractionComponent.cpp | 34 ++++++++++++++---- .../RWTHVRWidgetInteractionComponent.h | 14 ++++++-- 9 files changed, 43 insertions(+), 10 deletions(-) delete mode 100644 Content/Components/WidgetInteraction/IA_WidgetClick.uasset create mode 100644 Content/Components/WidgetInteraction/IA_WidgetLeftClick.uasset create mode 100644 Content/Components/WidgetInteraction/IA_WidgetRightClick.uasset diff --git a/Config/DefaultRWTHVRToolkit.ini b/Config/DefaultRWTHVRToolkit.ini index 13066ebe..1fa18ba2 100644 --- a/Config/DefaultRWTHVRToolkit.ini +++ b/Config/DefaultRWTHVRToolkit.ini @@ -18,4 +18,7 @@ +FunctionRedirects = (OldName="/Script/RWTHVRToolkit.DirectInteractionComponent.OnBeginGrab",NewName="/Script/RWTHVRToolkit.DirectInteractionComponent.OnBeginInteraction") +FunctionRedirects = (OldName="/Script/RWTHVRToolkit.DirectInteractionComponent.OnEndGrab",NewName="/Script/RWTHVRToolkit.DirectInteractionComponent.OnEndInteraction") +PropertyRedirects = (OldName="/Script/RWTHVRToolkit.DirectInteractionComponent.PreviousGrabBehavioursInRange",NewName="/Script/RWTHVRToolkit.DirectInteractionComponent.PreviousInteractableComponentsInRange") -+PropertyRedirects = (OldName="/Script/RWTHVRToolkit.DirectInteractionComponent.CurrentGrabBehavioursInRange",NewName="/Script/RWTHVRToolkit.DirectInteractionComponent.CurrentInteractableComponentsInRange") \ No newline at end of file ++PropertyRedirects = (OldName="/Script/RWTHVRToolkit.DirectInteractionComponent.CurrentGrabBehavioursInRange",NewName="/Script/RWTHVRToolkit.DirectInteractionComponent.CurrentInteractableComponentsInRange") ++PropertyRedirects=(OldName="/Script/RWTHVRToolkit.RWTHVRWidgetInteractionComponent.WidgetClickInputAction",NewName="/Script/RWTHVRToolkit.RWTHVRWidgetInteractionComponent.WidgetLeftClickInputAction") ++FunctionRedirects=(OldName="/Script/RWTHVRToolkit.RWTHVRWidgetInteractionComponent.OnBeginClick",NewName="/Script/RWTHVRToolkit.RWTHVRWidgetInteractionComponent.OnBeginLeftClick") ++FunctionRedirects=(OldName="/Script/RWTHVRToolkit.RWTHVRWidgetInteractionComponent.OnEndClick",NewName="/Script/RWTHVRToolkit.RWTHVRWidgetInteractionComponent.OnEndLeftClick") \ No newline at end of file diff --git a/Content/BP_RWTHVRGameModeBase.uasset b/Content/BP_RWTHVRGameModeBase.uasset index a073a7f7cc247654e724c9d348d57f9bdc55d9ed..3bfda91bae7068c7283ece3e8bbe26477c25bd90 100644 GIT binary patch delta 59 zcmZ3yoN@7T#tmJJ0?Yc>UuI&da9bF5UZNp6YQg4NjMKas873S0?wB0ye`xbd-y+7z RmjbR%Ht^lLd3oR;MgaJj8e;$e delta 57 zcmZ3yoN@7T#tmJJ0@a&huJ-?^aGE&v$C7lttm~U+F;4TI{3&4T=H-56jFVsb9-3_8 QyLGaF&(+P#1OG4r068@ru>b%7 diff --git a/Content/Components/WidgetInteraction/BP_RWTHVRWidgetInteractionComponent.uasset b/Content/Components/WidgetInteraction/BP_RWTHVRWidgetInteractionComponent.uasset index 904f5d3363442da0ff916b54041f595a4e023ffc..f6f9bafd520036d434be5501aade85a17a8a6f7a 100644 GIT binary patch delta 1095 zcmaD+wYqx34<=i^$<a(<lLHu8c+(je7-E?i7#JBC7`9GMWYh_~!o$G8!N9=aBEY~P z#=yV;;=2e#RMZGFFti9WFf0&eV3@Ey{D;G7DcAK;nzFa=Jt?`>V4Tdqq1<<lR_*#( zXLF{4Oaz&eKKUMFu%d<t14Fqj0}A;6|NnnmJq89(1_p-e%|T3a*gT{e7#PAcQ_@pQ zd{Wa&oO3dhvpw?)N=qD*OEUBG820b^T_OWl5|o*qfvM)&&mUg)lleF;_~Aw{)R{`| zasZ1V^e_lLI@!NDfb$QdxiA9*gQsIWn#Bw`F5GWLkfo3`*GevJnw-piSI`gYB_=5S zdh$eGaZz6=FAPe*|NsAg)Z~j6!dPYEvC6#r|NnmiPMJikGH?I?{~rjF5kz;v+sTet z+yzn}3{sEbE|5$JPMJuoGH?F>|DOty5%h=pI}S>Jn!J!lTohgO<NyEvV?pXUVXjS@ z9LOh+#H&Q%Ekxm+<dcWHItgkIi1I}<@goj(0U&jv0U#|53=FAI8svuvkj!KOeh%I= zsOX3P|Np0eMHBc17=tDk@(VNCPHyFoXY$pXoM0|DnMFW{F?6z_fG|^#!Q_cTa+6a8 zbi~4;x(yi^7*;~ri$Kz9lg|jKFh)=QC?L$_Z8&+NklJJ&K^4aM$$^5xOn;CCHVO(e zS(t)Vyb)AkOr9(#B+S%eIXS^xZL*J$1mo+;sX`N3I)oV*CVO+qOcoQ?Vx1z)z@WR? zRoIQ0cm3D@|Ct#W!LVra3^87o$rEMdHmgf--~u!J)poFRf-?Dpzjh3alP_9`Z&ugK nV`6+Yd76PIqsQb21`>>)H{UVf<J|0NwTo%;Bg^>7%(kfj=>ixe delta 1298 zcmZ2o{i15Z4<>QF$<a(<lLHu8cvBb{7-E?i7#JBC7!)TbGU^06@GvlNFfcGA@G~%o zFfcHH_z6M~6*Ghw7#0XIFzgXxVBqwZdHiT+ukUgP-sIGjrfs(xjFb5{l>5%ns$D<p zY|d1Wi6C=QCf{QWR&)_&U@);|Kmq^%|Nk$p$H3shz`$U!If!Wvn}Rq414DRbN_uLE zb53S*wr5^JX^CTUNoIZ?!}tDwPpv1%G3ifU!^z17mS#BBky5$&2<IP0aef8{22aO$ zB)tq-U7IW>f9Jj{>I1cv2}-~H|Nno$WI<kGQE#Y72$cT#|Ns98oH8+3Wj_4>|34O| zOdM93_y7O@_s1#2gi|IEr%Vt|nQ*K!@BaV)pEOyJSDG^#>i5r+d3nX*ArcQ21yLR- zCLqgrf@C;hp%_1zmtP*M3EpVxV)^BfbO{OwPd>oUGg(G}gEt9eAp-*g$bDfTUGUgT zhRS^U|NnpDWJ3XE(EzB3CIbtD0F*60Ia45>NnLL;pQ+sB7XmtB!B7cK1_lP01|5UR z69wfadkE@?g+iqb85kIPpzIoh$%-cGlQ#+~i$y|(KnZyxjBN;(78Ftzi(!D|3y`!8 zGemwTsx&Ckfuwy{Aktq=z`8FADT^gQL>NFyK0|doT2AIORhw)eEW!A8vZwGwmL)<A z43qbB$xQwwti`%Ph=GB9v!;j}GjG7x|Nog87{T!3<{EKcmU;*WM2doi85zPD0vM7R zvKi7CQW#1ZTp6+$N*D?mav72ssu=tkk{I$B(iln@7#S3y>Yc#q3K)tRTo?)%@)!yk z3K;Sk(irj?N*Syfg2CpbF=R26Go&#%Go&$OFk~_0GXz3R+`L43GZzJpkRihnp$u6J zDGWIbj0|iL-J5IFHnMYq%B=}|`572NDQL5&UJ(=Ho5_0&JU1&Da&u08Zxg;*)#?z_ IWH;MX0D2w&kpKVy diff --git a/Content/Components/WidgetInteraction/IA_WidgetClick.uasset b/Content/Components/WidgetInteraction/IA_WidgetClick.uasset deleted file mode 100644 index 470e02e6edeec5b128dd66f602fc5680e3fb9dbe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1482 zcmX@utTpe)|Ns9Jm>C$jm>3v7GBbbyBLf4&+l&oQUOG+r!hOqdk>hSRJq-p127Oir z25S%<6dvLc78H`7pOc+gqVJraTacfZnpaY+AD)?#o?7CWSCU$km|T*XpQrEX7!MJ2 z&dE&91{=@Iz`)P|vV(zv;S3W4gCYY1gR!fzxrLLdqp7)tv!S7ZrHQ4BnW2$|laq_N ziL0xLBUmFyF%ts=Lk=?o0}E8M4v4|Pz+l1x!7eNe40YG|jV*qE^jssq!-oBICV#Zm zik}<@zPe40oH1u=q5fBp-5_&74q;_rW?*9Y=e?g%h=GAYTRYU%R68g&CpED+Ro7I{ zm;ofuz_3bZ5e|6<D6oosz6`|7XJKHN#tLE~@c;k+|AWE~<kVS6a(oO73`x%UdBvr< zsh)WSr6mlXFE}xQT;-IXpA%4&Uyxc<Qpq5|vY`v4%P&7KmEjBXQC?XF28Mvd<m|-s zRG<9h#GK5kL{M1!CFZ6U7bGU9G6<Dac2F2mr#ez9ML=;KoLrPy0E*<I)KLGVtkmQZ zh991~c4A0!u6Y@WdC93M5I<a9clr$*0|SF|PGWH}LrHnXM1BSa2DEgL)wRij2P6#g zwj(&HFbGK`@NhCPF!-jHB)TM)Br-f{*fN;|;a7%Y_YP431Rt($uFjHFPym5KoE=0k zFfjc6|NlQ1lnsh&D3bwQ-Jk#e|AQ<A$zxN;4U&Ljm|jBaK)wfQL00$g|Ns9WF&GB< z3&aMQuLfd(!V_izl#fh-(kuvr#6al@L?dH#F;L)w<UwwL<Q@iwP$cs~W`QtB4LU|Q z3tb+W4>AK}7dY;r5s4+fEm#;Bl%dvxv|v%91PTFYYC}m;ddOyj`~!;Du*96w)R4-8 zR0dE;g7QmhVjcs?C4Pw|nPsVv)MtxirgJ_#1?z!j)%6M4rVcJ<K-Qsq8JW+(0CE&e w1epyI1NjzOt`b+$flB4+-<CG$Ss%FwGE4?!3KA~6XA#J9YQLrdR1BmZ09xlQivR!s diff --git a/Content/Components/WidgetInteraction/IA_WidgetLeftClick.uasset b/Content/Components/WidgetInteraction/IA_WidgetLeftClick.uasset new file mode 100644 index 0000000000000000000000000000000000000000..c3e97377bcc821f4ea99df5a92b44594c710564f GIT binary patch literal 1502 zcmX@utTpe)|Ns9Jm>C$jm>3v7GBbbyBLf4&+l&oQUOG+r!hOqdk>hSRJq-p124_|V z273ku2K}J$5Rb5+ko^3d?938<=ltA){Jhk>l4AYv%#`%h63@Jn)S|@XlFa-(eNV@D zh@ekuT8VQ`W^y*z3SI^Vh8B=L3=9l6m>3uo85kIhU5(8xoJ<`}%`Kb_4Gk<!EM3eD zjVzp;T+B^eT}>Rp8bOMg7#J8Tm>C#Ypqec}3<d@U2NnnpU}0crH)Xe3lFa2b$)(}d zYDe9Bt!uXZy->8nX-X-3r{qtEiy*r}=71c+%D~LP#PH91Kcf%>1B149sH>@VP-;$U zVsWajsh%+dNS=XVmChm@@?eKCFfd5DacY6s^(+hwt5`uS1pfd3|9?>Uft<PyNsf<! zfg#B`Kd-nnH`Oz*ptOYH^93g+kgJ^X^K$}<@(WUnN-7xyST=Nlbou4yr80bBKFTZ0 zz`ziYn4F!Mp6ZjIoS2hYl?V!Nzr@_s;)2BFR0g4v$_^?-R-LKjE)h_i2PYS07JwqV zC^ghSDJwO(gyDy$uALZ?oNHc2VqS7;3dA2**PVXD21+$KiN(bXCFK<pg&7zau%w3^ z7w)$_ASsad9l^<lK}aHjhm(PU!8f%e(Iv4Yk>N?hmdP9lKQk1&cZdog_;7V|b(W-p z0tyuJ>>z@Hf#L7}|Npt5Y*3s-nGERa{`~*{A7m*=9-BIDkOUON^b%4B3IUK7WOe`k z|NjpXgJF=rKx~ltY9IzE)L<4s`N$L~?Se2!43w@wG%`jP0|hQf9^?i{E@EKFL^2;_ z76^mXpks8i(B+Z&ATvOAf#V+<kvQVqg@u8^9O?v+HXO>7aHTFiWII6q0>y7wVoqsl zNM%7P11Lm6`6o3oj{)Q&zr>QvvQ%eqO0-2X(>WiWn)Sf4>iW=hj*^y<ZBqvqJ0R=O zy^hRhU;sG^CW6cciGh3!Eo+G@`9LN0^lwWW^sJ9u1Q{j+G6e~j-LnW}IkjKY04fGj F4*>k`GtdA4 literal 0 HcmV?d00001 diff --git a/Content/Components/WidgetInteraction/IA_WidgetRightClick.uasset b/Content/Components/WidgetInteraction/IA_WidgetRightClick.uasset new file mode 100644 index 0000000000000000000000000000000000000000..320bf66bc73fa8714baae5258c680aba5f20261a GIT binary patch literal 1507 zcmX@utTpe)|Ns9Jm>C$jm>3v7GBbbyBLf4&+l&oQUOG+r!hOqdk>hSRJq-p11`k#S z1_uTP2K}J$5Rb5+ko^3d?938<=ltA){Jhk>l4AYv%#`%h63@Jn)S|@XlFa-(eNV@D zh+t4=dPa$JPG)j8*bZI>28LFUMGOoKx0x6i6d4#8TwTlz%$%KF-3%?vES-%^TwNRu z9W4x8E!~VvoQ>Tq!5Tq|nHU%ts+k!WSfHA%K@0{424@xs4rXCsxV`=2Wh2v-?n^^N z9L3CJ@67s=p_jSnvqRe&RUL8P!#_ZFgUkUrgq4Arfr;Ut_kKnp1_lOg?NC=!?V!}0 z)WqUcT~j?{29P`h!z!IcIOM?&V_;zDESz^0#BOF`U|7!zVj=MV|NsAk0ubcX%}8>5 z3=9lO&iQ%8rMan|c?G2<44*GJF@ap=l%JmyP?TSgT2xZWAi%Pr3#7|0KQEQx3-eK4 zSq27%fW+kN#Pn33{N%)(%&J6CfcquprWO|@CZ{q8l~i_6BesMdo$MC@#d>gZQDy-s zx{Fdn{gbj%lS>$Wc<S1TA<4PsWhCY$r=~zWa&_J5H*BD2$w@3OW+*AIm<TclTZ*Wa zT-wCLz`y|3=Lk+Y3_=nKJe&*+48Ex)i7tsHi40E~woK+g_?n^Ey+c$0!H27xtFt5( z6jY$FX9p1s3=Dt&|NqYgWrJcJ%49%S_vior{~$|2^4QdIgCw9Brk9X9P!NE$AglZL z|NnoG7z~5_1!9BDR|7Gi*$v9Xpg^e?gh3LZlm()ZF}fHia6$4QH#mYA3=9l;Fb^;= zFo4VgVW<=eg>Dv#BpL@~2FNbth{P4??ko%pHc&T!^x;ycge!sRA=?7-87PLs5_3vZ zLn;eW89-qQ%0sD%c?=*o`6ZTQmZds_6QeDXna=s}1g!^_Ro90mb(G|cY@0f`=mA-W z?0=9akogP@AV<MOkl7$HkZNdwOI+y(Dz2x0TiT#!edHp@Fd2|3NVx2tMIg(m{h9_) HF_3xy@Gdz= literal 0 HcmV?d00001 diff --git a/Content/Input/Default_IMC/IMC_General.uasset b/Content/Input/Default_IMC/IMC_General.uasset index 6acdb72a1f1896d89873376ff2a06bdd4788506a..89b1411e4650beb0d2d263244dd0a9e21e5e936b 100644 GIT binary patch delta 1426 zcmX@z#x$>oX@UXk3QYzE-N_fZ^@SN27+4tm7#J9e7#YBziF@*gCiQwQ1_p*EZUzP> z1_p+=>I@7b3=9lsRTvo7YJgQSY}H@@<D(i349fZ;e>B#Kxh=7&32A&Ydrn%rgT>OC z-!6UHm%bP;3zG$z3^E5~4J!jP0~5nP@BNHI3=9m~+M%wd+Cix~sfop@x~6)@3?O+1 zhE?7=i*P7_SkJ&PC+X*25c{hJ1H-FU5DS6-|Ns9V<V8yc28MU7n|&C$IT-CH-)5Jc zT*@iU?~|HV;+&J2oXt>YD!I!6CN2<^nVtca5PEd79~?fDPjSvM2L+O+V|;jKN_uJu zLU)b}_ghe~z@?B3sFhsWv^kASjD512kkjOSf*F%92sus85XzWbC2Ti2K%8arau3DH z#=`EC{Y300A5dqRyhnHvqxs~ELXMLsh@?;6D{2oGwGwTfEGX_gNi2QxZgG3C##Le& zllvu{CWnY;Fd9$3C}ay(xW7zxvb03WWKJok$rmNkCvTF17*H+QH<?|=ZnA+A>tr9P z^vQQ*Al7%rD^3=Zc4xE%TRC4keex<<hz<dBmdU;{eUn4vAbh1P$;sxjC6iamLv+5C z&6r%P0AWv;%a|<4=QP<pPjT`m3HQlAM4TqSmY+1)QqpPieud7-pA?-YcPXY%o~`6O z*+eO0vYWEg<a<gPlRqd!^miyj{UGWDjXf7A{r3O=|K5|cRiq7JB5(fx|L+BrRfEzX z${9p3Ffe#R>93RfRmAJjMZf(2|6dTQ0-x^B|NsAYB|_b&|NsAkA|Ip_i+Nmd=X{*3 zuPUC1?wk+*|NnOb>1AMGz@i<l`~Cm_|J{jD_il2%s`%tO6%Iz9$@5j^p{(O@)_XWh zTn#2`4`-!ASiC+^n?RI3DDWA5CU1wxG5Sot4`HFGa-RHJO<BwXq=A8fft!JWfiVWc zS)n<3qq@{&J9PswUx)~}EOCUgSGG=WQLkg$slmW7M{_cV#!_ccX#V>TGJ=6Y7ODzV za)6juqCq4BgAs&cV9;SeD1r&jkKX)2LrrY5RI%UY6#Hq6o5k$?csGA2)?nH!ugS+a z`9QGW<^#Us+><wiwQZhPwvZ7bJTJv>vWH{G<ohvgn;oNXiZgzjZ0PDcc|vK&X8Q_H zMksfFLdRtLinhs5st!X%Zuvt*Oq3KStJE%nih@i6sZ*+lsoUZSQP-iYI60{irtXe+ J#pF{>jQ|AzarFQI delta 1156 zcmbQ&!*sfhX@UXkP7MYI-N}KX`oath3@i-Z3=9lmj0|A#m}_FWcKu^61_mYu28MrX z3=BdH3=DcI3=I3!!3r3TsWX7_HFXAtSL`O6p7_}R7ZdB-D}Q5ybXvQE#nPJJE`8dU zz8EhHlLZ+HG6!S>D+4nF6T>Q<MT{&A3=E;JrVJnv1{4v94Gh{0bCQ1U1##Fk7#PHx zK`aFR|NsAgkPj>w7#O6RH)k+%b4;GdAvgI3r!=>7PG)j8!>NvxO0fSX8*$Cq%*rjs zK6#_K)8ts8jLFhMPLtV%GbSGua+<tRIAe0Yu-)Vh8Z48eMJ7#_6tSD^Aiy$NUo?HP zyMpuNo1)E=r-|Bw#pa8pGZ|V=-pJ=T*;71Ya;%usWbr7)$s!W&li9@~Mg+ykPTnO^ z0=B9^GJUeNqVr@aslLg2l1`IfNo7pFA!#>xf^-g}8Q2s%ne@rarR*m+q;gDtBhxoI zP}&~skiD|Klb6Xr9MU6~F}Ye6!Zwr70Gs?kK4Y?%9K^;hg-MgYK-qDMos1S>lQosn zCqGkko_wudaq<@>_sJ8LoF>;QXH2$McABiNk}>(IvYn+PG&r51^!xw+|9e2$YET+P zp{sj0Sx!xSa;zE$ryEF`fq~)MWIa`|2ro?J>;M1%1t)u{NyA0H{Qv*o1x4iZ|Ns9* zKq7E+K21J{X3od||Nl#X)F{GC{_y|*e@UplD6X8mF++HAp_&MzBbYT4&N>KZy@ay_ z)nV!^VJuMxoThfd)J)!}E;9M8x`3D~R4q3H1A}Z7gtJp)@<I)%$+{W_%3cr=aQ=Y> z-?b*FAOiyfBLl<aMnO?<Wcz9eOkS%Y0cIc7&|y2J&cLu%WAb;6rOu#i_wPRwSf4DI z1ZxGeK16~k1|tZ?z@QCs3X}sA+#R|3zNVVk=9i9syqn_#i+MKhcj9B5d?4Fzvb0Ob z=DUgU5|ddS{3d5<cTDE@ZQH!pe-Y#4)zNL6BjOe^P7bJVn>?fXFjz&7R|lA{siZjh uM(rZ7SY>j@=74%nMleU(1)|_<BSb^H4}`C-qBz;K1)^cSU&Z9Pt&IRuBs#4C diff --git a/Source/RWTHVRToolkit/Private/Interaction/Interactors/RWTHVRWidgetInteractionComponent.cpp b/Source/RWTHVRToolkit/Private/Interaction/Interactors/RWTHVRWidgetInteractionComponent.cpp index 3a87de65..bae88c04 100644 --- a/Source/RWTHVRToolkit/Private/Interaction/Interactors/RWTHVRWidgetInteractionComponent.cpp +++ b/Source/RWTHVRToolkit/Private/Interaction/Interactors/RWTHVRWidgetInteractionComponent.cpp @@ -51,10 +51,20 @@ void URWTHVRWidgetInteractionComponent::SetupPlayerInput(UInputComponent* Player return; } - EI->BindAction(WidgetClickInputAction, ETriggerEvent::Started, this, - &URWTHVRWidgetInteractionComponent::OnBeginClick); - EI->BindAction(WidgetClickInputAction, ETriggerEvent::Completed, this, - &URWTHVRWidgetInteractionComponent::OnEndClick); + if(WidgetLeftClickInputAction) + { + EI->BindAction(WidgetLeftClickInputAction, ETriggerEvent::Started, this, + &URWTHVRWidgetInteractionComponent::OnBeginLeftClick); + EI->BindAction(WidgetLeftClickInputAction, ETriggerEvent::Completed, this, + &URWTHVRWidgetInteractionComponent::OnEndLeftClick); + } + if(WidgetRightClickInputAction) + { + EI->BindAction(WidgetRightClickInputAction, ETriggerEvent::Started, this, + &URWTHVRWidgetInteractionComponent::OnBeginRightClick); + EI->BindAction(WidgetRightClickInputAction, ETriggerEvent::Completed, this, + &URWTHVRWidgetInteractionComponent::OnEndRightClick); + } } // Called every frame @@ -99,17 +109,29 @@ void URWTHVRWidgetInteractionComponent::SetInteractionRayVisibility(EInteraction } // Forward the click to the WidgetInteraction -void URWTHVRWidgetInteractionComponent::OnBeginClick(const FInputActionValue& Value) +void URWTHVRWidgetInteractionComponent::OnBeginLeftClick(const FInputActionValue& Value) { PressPointerKey(EKeys::LeftMouseButton); } // Forward the end click to the WidgetInteraction -void URWTHVRWidgetInteractionComponent::OnEndClick(const FInputActionValue& Value) +void URWTHVRWidgetInteractionComponent::OnEndLeftClick(const FInputActionValue& Value) { ReleasePointerKey(EKeys::LeftMouseButton); } +// Forward the click to the WidgetInteraction +void URWTHVRWidgetInteractionComponent::OnBeginRightClick(const FInputActionValue& Value) +{ + PressPointerKey(EKeys::RightMouseButton); +} + +// Forward the end click to the WidgetInteraction +void URWTHVRWidgetInteractionComponent::OnEndRightClick(const FInputActionValue& Value) +{ + ReleasePointerKey(EKeys::RightMouseButton); +} + void URWTHVRWidgetInteractionComponent::CreateInteractionRay() { // Only create a new static mesh component if we haven't gotten one already diff --git a/Source/RWTHVRToolkit/Public/Interaction/Interactors/RWTHVRWidgetInteractionComponent.h b/Source/RWTHVRToolkit/Public/Interaction/Interactors/RWTHVRWidgetInteractionComponent.h index 4b1139cf..34770d50 100644 --- a/Source/RWTHVRToolkit/Public/Interaction/Interactors/RWTHVRWidgetInteractionComponent.h +++ b/Source/RWTHVRToolkit/Public/Interaction/Interactors/RWTHVRWidgetInteractionComponent.h @@ -44,14 +44,22 @@ public: TEnumAsByte<EInteractionRayVisibility> InteractionRayVisibility = EInteractionRayVisibility::Invisible; UPROPERTY(EditAnywhere, Category = "Input") - class UInputAction* WidgetClickInputAction; + class UInputAction* WidgetLeftClickInputAction; + UPROPERTY(EditAnywhere, Category = "Input") + class UInputAction* WidgetRightClickInputAction; private: UFUNCTION() - void OnBeginClick(const FInputActionValue& Value); + void OnBeginLeftClick(const FInputActionValue& Value); + + UFUNCTION() + void OnEndLeftClick(const FInputActionValue& Value); + + UFUNCTION() + void OnBeginRightClick(const FInputActionValue& Value); UFUNCTION() - void OnEndClick(const FInputActionValue& Value); + void OnEndRightClick(const FInputActionValue& Value); void CreateInteractionRay(); void SetupInteractionRay(); -- GitLab