From a028ed8caf373beb1b1a819c9056b0b0c8191c75 Mon Sep 17 00:00:00 2001 From: Vyktori Date: Mon, 21 Apr 2025 11:14:12 -0400 Subject: [PATCH] Robot Nav Path Spline Updates - Robots now generate the spline based on their input type - There is now a curve generated with the spline with speed values for any distance along the spline --- .../Developers/Wdev/Robots/BP_Stretch.uasset | Bin 394372 -> 434945 bytes .../Wdev/Robots/NewBlueprint.uasset | Bin 0 -> 61161 bytes .../Components/Movement/LRMC_Stretch.cpp | 12 +- .../Gameplay/Robot/Data/RobotSettings.cpp | 192 ++++++++++++++++++ .../Gameplay/Robot/LuckyRobotPawnBase.cpp | 27 ++- .../Subsystems/LuckyWorldSubsystem.cpp | 12 +- .../Movement/LuckyRobotMovementComponent.h | 1 + .../Gameplay/Robot/Data/RobotSettings.h | 55 +++++ .../Gameplay/Robot/LuckyRobotPawnBase.h | 33 ++- .../Public/Subsystems/LuckyWorldSubsystem.h | 15 ++ 10 files changed, 335 insertions(+), 12 deletions(-) create mode 100644 Content/Developers/Wdev/Robots/NewBlueprint.uasset create mode 100644 Source/LuckyWorldV2/Private/Gameplay/Robot/Data/RobotSettings.cpp diff --git a/Content/Developers/Wdev/Robots/BP_Stretch.uasset b/Content/Developers/Wdev/Robots/BP_Stretch.uasset index 782b48bf924a3b4c6a563537cb0ff2e65660545d..9c18e16e4bc07b7ea363e0a8f3659d950a11543c 100644 GIT binary patch literal 434945 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�Zp6AWpH)!OFi!)r7#zg1h7A>!l#Sz9xo@}j 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 literal 394372 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 Rb8DUByQCU*$^Ur&{{d~mPjCPL diff --git a/Content/Developers/Wdev/Robots/NewBlueprint.uasset b/Content/Developers/Wdev/Robots/NewBlueprint.uasset new file mode 100644 index 0000000000000000000000000000000000000000..ed5e8376d853e6ac6ebb07df7d03b8bddbcfafae GIT binary patch literal 61161 zcmeHw2V7Iv7x0bX!il1-JGcOqB|~wt0i$qvD#Lx zTCLiDweHnA+uEwN)z(q1%6HCv?4s`LWvl31sK!5gppw z11w?i<$--7IyWdBSh#!I?cI4b0Jf`I^q{{Y)7$2KF{tFq$w$ZQ0BqvhErw2r&DebP zOyiB`kKC!V5nyA_jgoH)ioNw~eB?&gPj>Aq09fmDNlW*|wqGAs-Fg1Wab?m@0Q<4? z#qD)sr?lEN`rFN`B47AB0Iav>`L`vZ+e5B7&6%ebw|J`^z=DS?xfm9+x9$4P4JH)5 zm2u4nVE3}N|9Cri{=-_Ay;lW&9_HZ+u&neNKM#m*Gd!S*H zaA}UrGgOu@Qz-LfDz#_-3|YQsf-+61QG5246$C4^vOJYMR|B~Av_pKX2N|gf zfA(Z{%i&cTz*EPL{Um-J6J!dRR4sG&^YEkjgxosO%R)XBqUqie1y)OX_aJ2FZyb!h zgSC{Ss@4JEQ$b$kR98pyYfUGp!80*kCC}4%hA36Cez9rUvUCmkE5f}OHVDg;V zNOLokIi%6(gS+Z7V4Mn@S5rhHw*MftlLL6c+O#xhT#ZbXD^>JU%VKjCMP%ajmGN&05fY2k8d**< z7&i(sR#UU1L9Izec`{Plaqcx#V6ZZyC?Z#_k>;k$NZ^m_kE5D{mASIM;3nkUk(!69 z0w7JPR1l9^8F#oMN`+3l_3gJ$MQcop&6lZE@(ij2s=)e>XAc6SC&6*aQk5K45h_zt zb3m@fG-_Y_ZG+qxnMN8a)kr0|8dVWFy&$gyiKQjV6qzAP5V=r8(r%3W$dLl&Ia-BO zBa6!_Qp?lTr1Yg-JZ+C;xmqh#$ctsrYIz_9wC|=#{+B7+MS#zY;#Obx{jH#;5UE0e zt(Gb@q|{igCL%XOR!ACby>b{F*a{jbnxsSz+2AI`0)F#TLzP;PIZ2reMz2(*Cdf2e zRc^8r!VCGhe$ZnVVS#X&2CR=7ygD|M+B`DB0m$I%H#0Fz>X-%eP`L`~1x@zLm21q9 z*s*)sr53_65o(|<&oJQQPbd4f28>5_PDNIb;b>*L6zexA5cS}#3lO;UoWy|f%kvaP zsT>Pt7%47j5@k>%QJbbwNz*l!iyXXqU@Mwo2(<7pB^bk#(en>u6EXm`&6)lKYS$M4 z6O}5BJa-sza%_15!$(M#T#>;=izRZW&#D0^ody$4f%*V?c8F4;kfV!$Rbyf!?gMCoUj)zkJ*e&0YsilI7%~MUt}{TOY*!D9Sl|f>Nm=d!{e1iX8JLbQ!c%x46AO zp>p_4&cf<{_0R`Zm;vEz7_#-`@5QsQ+YgnifzKkU!Q%IC1)~NfAt9-}Ct)}so3-6H zqi_%S6jFA>!tM$L0bK#)dui8Aq#Q8Lns8B?`TT4N3z;oD#d{ zZ3AkxL1`rUKu1h@A-A5k+D3Up7{pTsH;^gdt2;C`%_J?>ujcO@R+u(29KF zj~mgyCERnrG?{7`Hb<(#Kw#+A`^(ULG8IaxhBy^1`v&7_7(VF&%HQj*zQ9%pQ^{qy z846Cpc89;Ng|x#|&^wjhznzTyVYoptDc5Qe>gL)LmCe9<&P!9CH^KtpUdsw;;M6q!)Gj;KL=zV2m_R*T#PH$Bv~{$a26?s1hD0jHs>$QPHNi z+VKgB5ks-!q;!xm`u3zG0F_BLIy)Th{X9a z>Na_;r%6#CEbx+zHz(}EZk7QI!Yaun+mf-xaNcjAtxAws4h-zw%^16aZ2?7a(K|>DgwYjq6)hw zLr20QYVzsJB?{z?2FZtZhwEVFN^X!Si&|KY2FM2t)@=uUx8n|~n*-C>Gjm$=Rj9#O z812yxi#EdG@`0<-r1hQX@EX+)Av3zZ{Y(?5spGlZhZ3Hm)PsZNz;c*hsm%Hg~5o9Ep?t0B2oiQ z(PT6&&NMiue)~%4AXGRXhG`E>qQd))#4!?$c`{X!65|s!-7polXVR)3i&1pemSGC% zFg5v3+45r{6x&8kJ}ant6qT)#Nfjjd*ai;_$_cV`85mZu3`XE_&?}I!qtd=cGi4^1 z2>i=@LdjPWzs=~&39>weoEsPD!?p5@Nz;)aWP;zyGmGdjxcZW_b5Tm+xM#Jd^;B#X z?9@0Lc&m1JehCw1pT{R;T2g->u4X?&%m{>?vV64h?9D=*8SokqTkV9XM{f%0q($ZMW zO;deu7IZ3PO;}kwG?YXQG;Df|Or1p<3=B*{VG}hf z))=Jw0aaTp#StO%ofizCbyJ!;EHAS3IhrLK6_JJsZg32CANW>>Nt^c`0gQ*zK=WDKdaPoOAFUTUo*mkqcyba$^$D zU@6Qy60@XvGPU5I1p*Ry{oSoN*)xZp$XU@npRe0_2~e=VQmS;Fa)L~))T+{DTxzs5Cofp5(ZD$B$n^71snHo+YChE^^)nNk=DLA5ZzW+o;U^g)SjcsAG?f&l6ERO$9m3YpRl?zbyjct-bVK%C6i|mE>>fdoRUf8>;lPp4 z*Nwf`X$ZWb5b&eb4~;;WDvTmJQ|x!?XpsAeI`{ne0CBK^+V!bUe$o z&frqfV6;v)E+ncyKAnO(HI{hg@vJl?!cXu>P+9j$sG_LO7-Ca#(nzJ(RdiuO9Xjk0 zAn5X*EL`&q1`j@u@2Xd4e zTngZNYo&^ex;Y^o&5p-lPK~{NmzUD%7~bc+Sb|pz3qQ^QvkmzL4GVLn}-HzWC)Yz|5l1Ig^v@msCy!841NGW z)ZvpGVWaWSY?w!uby_1s0pe8h9GLXv3)U;1eKqMM5~4Pxn_rSXZ)c=p%Wz#4bTrU& zk*G!!CL@=LA&D^8gej!=nbU_+MlQ%0TH}GN`JS|5!+^4HU!xYZh^{-+6U}`fX$`f} zG>pGmiQha1VW>tXjjM2&Hggy9Evz-};O}$!D_$7hRvvZ+@Xqn~=J2-hd8YwyyBR#X z*a`5D_`Fkq_nD1&U)YGZ-$uLxHsT$$5${VI@ebLDci2X}uWZ0O33}dRBi?^(#5-;S z9@-VNF`>N}+X3P+8>*H~ zycuTjeg`-YrWfHbA^~TwkZ^C3C6tlLDTLuYRAo>X%g1Y9zOLT@2YsLAeZ$}2hzd7- zF*&W~u9n^zeQWesUvy7E3(I}ZSBeA1EBt+GDSuPJ#Tva!d|6|9%Xv7`V`HHnYbzkc zXIrDkeCtnve5k%qzAVbRlGpjYH$V^D2NTk}!P7)~B?yFs^m@}fLS``K^Uszp*5qUK z{uaoG>nC5p3u&P~$MW)h^9JZSVWp6s8PVGhFh(z>I%2?tg>?+vqs4b?^8L-1GDi>f zit^Rt>8)d(t3^s&hBbOu`LgEdpeJlF3hnkUI98a(1p$bV+ zgjc19W`gvJd3(t{^7{0cy*ve`SZyfI0eCTcS;5D%Us#Z1h!(Ea>@*Nh)w}-cvUs=cW8uXsJsf2yZ3tVY6vd}c-4Xz;^E?@BfPMR zy6|EN-4)AR1i~-ig>_(A3{zMq)`j(B`D*aOe58pum-sSR9^DY>Asp$T-WhGAfjnFQ ze1u^>)`vJ)7uL!6Lfjt!59j<$4&(#t$1+$Cd&YW@Cc-eE=>h9So{$%;8|y*Y5QceJ z#^!{KLD>W#UVgFsI;kHS77<2702U$B<=>GIQmaM{hZ@yuIn;EhQ@d6j$L0+j>(z5? z-K42gbGNn~JGi!WadGb)*u~wer>aB%aP|(W)-YaLz4ZvE&SU3%SffqwM+X`uoVwrE zCrvf3rbFYm-fq&gU3(W-w+_C3{$08TbPEZUgoXEsh)hiCm)w8Az?Ae1S>~`TdA3@k z%`Ye{Djq-Ky@``1PnkM*-u(9$Ec{^6;#I5Hl&)R3e#6F(ca-h?WY_LbKRfv4p~GJt zIeP5t(`U|}JAdKgrOP*N{_x{Zw|@TR_MHcR{Q2^u*Md03OGu1FvUhLR)vIM9_t0`u zcxvxnd0_3%#V76DIt*TYdS2GUm7;D5XKG%~bL-M7h0I<20u;?&oOAo7<9Wa4&4$;^pELV6e~+H3;tPqx?{B<)ve}kk*CnTYJ)b`aY+2ZN z#@f9p-`yBIcg&H)&rgrpJ$B4jW$rJVW##Sm@Mv%M*N|wtr=mXf8eIxIGvr+FFJl~% z+f_Z(=2Y7gy}h#EJ92PS^>Q-n-P^0n$*7Pq?~$UGmy2h1JngZs;fW1PVuIZUoep(- zzT=&(AKqv&Jm&jh+ZPUP;xWE>?4u@!y}U+9dd^w6zRmshCnUuC*_rIP&H<}Iyc!#h zonKZ~oZwiN5odQh+x^J-89$#dX{-D!yIWjT^Oo~pY`Pujcq$<$HPU}uDUnE=;zS9a zR~ohGIr^8C)e}I2-p@`uB;O5evXVF~zkD^~rvW#^3UaHgKh}QN9?u)KwmC)*XjpaQ zsHcn6->z(Ny!ia28+&^Pm9$$Ecy#o`6Qca*qk3)-9V{%kvFFLq*v&qJBxi$nU%i(4 zTRG`nT3l_(jpH375A67ON^@278ONV4A0C}BwVG?`n$ndd;dH{uDyJf%0;@X32R12Q zIPu}KLG2%Z<)S_|yUv!UGlze>C;a}2cjJbgTC_Fo_gd-2FM98N{&MG?vvJjrfBaoU z?!D$8ecWwnBk8z0p^{N{TmDkVURdc?RHMO|+DC~Nn3_@KIdx7H(;2 zcYoXC={H}#Y<}shG5K3ghdnE>d-~Gvu7g+CHQvq>yS5&%O48?~v|ku$Z+-(BDoy=p>)lvlEzcvX4TxOBqigcwhw$0R_)34`ua=ptm08lq8~?l-EaO( zG56~25sMTfKAo*PRs16Si=Xel)6C7K+P;N7rZ@dV*{U$)?{3%cbQ}5hj(IQAw)I(Z z`(mq~|B7q#?NkSUhdC47%Jyga|KZkUMYej>nfQ}-yH;eweU6jJ-QB0~$?C$D)z9WU znc?x^_pmN1SJA3nBRy|C^?MN`{nGujk!Sj>{%uz5hH}!gW6QT&4ovoKwrnz~yXL~~ zLUlw;vp(a_1zxRo`|U9eTdsRH+G*m9sHnnwIX{eRRMRQDQBr=D%~R9P92U29llUgS z=hb+@+yy0#7c7YitQ7?oP)pLz9o1h(;w4V>wX@M7$18)5+23jDmbBXKw>l9LQkXie zM}W(uN8yvJ4+WstEuORY{W02{C#r6r-hQfmzUf?>+XH$vIkPb4)V&+uO}gAP_Q|Z&`_DU$>Xwun z-{H*Ru(AiyA&0vrR_&T7IygU3;tF1MMlK=Urbeca6gRglQ5Kkc6MdaC&?xQbkz8o0XrZBVmhj#OxIh<&8?ym-C zBi4Wa&eGAhgJ*W%HRfom6Q!R!uRfDA(aB-=+70^)H$}>w=WXellr6vc!KA5qYaQ~| z+P#ND#My0-mz9ySGN^n#Fiwq83$6jaDxp47_iZJgWY@YpDDJ~FQT@fqLr{yy*82j%2$Qmk~#iJRyCShek|b8{4bb=}f+ z$^Z+3BMrHzN97aBn+#!>{V4F9R=3?~?MU_tgG_e7|d^ ze0sZM?-ze~my;d+7c@%J@M(Q|pvYmh`P->wgqw*I79uSw&d-%0tbY0sXmhG&-D`|;@AflW5$fBbm!Jl9KM8|I&LUA}pB z^5nVueeY*C^1Uw~>*{+w+e^OxjOhC5@iEmF`jR{GF~?oug6wviemZ_J$LbH@1>Lr#1*T~bqdcuF}Dz2mrLj8k^%<Jg7t)^uI9prpYEqaUopctnal#*S2$Ot{t9Zmh2oC*OZ|=;`s%HASV>KB(i7 zC3;$V+{YJMDRcT6brcn@i*II0i^V=MAQy#30Cc$BSKT(8-qU?VC*>#d-r6QldX9-+ z{GI!d!4KLbcWF95*>PX`uE8g&KlygsjalEEtX|Lgs9&APa-un#bO-|7eDdPw%QJqy zyhK8}7dh}eJ)7=%R;J16bNj;B zDKE}E-`aEU7>6kxKU`a|Xp{ews(ov2bZhHl!W$kj}cz4b(#Yww5 zshyvurT*SU`Q_fi`A-_e`uwNkTLtYF&1$>&;)5akF5g;zV$F-ioz{e$9rNy;F$cG+ z1K+#y`S_^q@1E)Zd(!;F+qZ4xxXqn)jbxXYI;{f=#Wt z+VggoS;ge?DeZzC@8{eK*rhIsz27ReRC{34@duyJ8MHWT_xYpZ&)ThS-tke#dk;7N z)N;LiS?-bS#QXIF zHb&R^X>RGjj_te8e)rt`r7a)zcU;+WdCT>icXl`yT}!$lq@T2%YcbjJ*^G0fc<{sh zE40lv)_FKFlB^izyEjl~w>NqBzL{73i<);>f2{38r;=T54>&Cli>~h3^;OFb^OD~G z_1=Iji~Va>e<5%2a{2fN&sw&7FfH48i(=8-YpZ()my;LSKOVcbf9(X{#gT(2U0x`C zytWDqirvOW{vj^_xwTG9j_hs!;P=1=@lg`e4#&7>cQ$^A)aSwc&Nk9MaPRALm)y}miY_gjjp1rWy%%2OJE^XDKj_Ukq z@f@#RQG3P|75eR{R+=;7-aUJ3+5S5Vek?w7c>klVQf&|I@yO3M&Rlb5_soUgwk#|9 z;rypx+|xc;`^m@TdQ*?;k-34t$L+nj{>KaLv^RYxIse$N*P>(3H?7$B!2QtE0TKOP zKDhfd@!Z%;clNpNJah8*QNLe$Ys1!h$qyRc+B`5r=~1O{#+VJi4^(~LeL-4O%Ltb( z;YqW{`))Wtcj+>D$sL$U*yCV#4s`FokW~w&l7+?3PVF6)-NCiW;JbIDI}G?yv-a$U zClV6=(O%b!SKoJcB8Q)b)oC_qOPfb)a4&oA+>&+^ zpWU(hEPV6k5s)j4qvot zVF$Z)IhhyhzP;;YlKa*})&J9M-tS`vXyU&vIWuqY(sHtCO8@Vdo(s^{nxeiHeJyDJ ziw+Jm_B~iTSM>LhEx<{*#H)GO4|5{Qo+ZvJ?N-v};wZPIoB+Ree$V1WyNgflE9OKx~fEsGDp7O>zDN#lm1>+(gG)3j$d3|duGKJ z{}P9!yD{t5B?i_*YuREjbBe;LK>V(&e(l1p6`rgT58XT1(!)cy`>w3I_KPd)5>tOW zX@`BNYSfK{vk_0;_l*~*0ebSAEi2#=|ecRRwuH~@7hM#nXAp+i^z4me)w zPRK@nua&L02vG7e61&(iEh`^!Ln)8d#K2kngPx^2rGGE{^wtoRIMFVDDjBl7Qi=zFm^S zMyUE1c2xEqF$}UKk+PhCtnj2Xui+!23KFyW3?Govw`(!h7ZeY#5GCH_Cv*M4o&gh?9ke;K^W&{PrVd12l zWS{t)LhqCT!9~*keqIB-VuC^oAR{CoX`oMJUV5MS{Dl5~xsay_3K|F*!NCK467tiL zKP!o<%0Nxr*;qVMX{2861S~FA=@cCTpFE(SkOLsWLwx!i_W4IOUApQ_utHs~@ROKW z)G$-<5i!ife2B zRe5e0&$t}Q{W1AiNfE>=E~j#>SBEbZPg^$>q}GD|vVc1^DTcg?@~iXZ8Hd)jnn%*f zaHu~6sEEK)Iga0y3~_?mLqWS~V1a0ZOa@E&jJ|ale0grYNFUzHyv%rq7aZb1-DMKY zjVD7%48&5=tQrG>ksgA7tdBmY$CFdYCuG($+!#Sj|jNuj*f{ z=47xY3=AQI7_%)X<2gB}t$;In4S#<7+~9XHSs`eG(*{fb~q>&^HZi-%aZj7lwnEiye{4Azi`aXA<@^)fOJqlpjY z5zClsv7x$F7Lmq$efsuvCL>8Wcm#SJ(>Sw=(SXf*KW1x|a7BdmLda_)o=!3mMpN^) zhq0I0O)%vGBV%_O4=@U3Q_Bp2yDYd@LbSw~jnPTp%BFcvJO_GxF&dTY`4|m-PrnWJU^?^3e2HVs3A*MNR@jA3FLu(!@7-CBR zyn>WOsKoL6tYGEz(y0WrfK^P15t!6#9 ziA^%II1mOJ)W;AZy`co#R0Ll#^kySQAF%#n8p-t$LkMeT6aTDb^}M4b*$@HH_dEr? z!BA+WE~E%*ZT^NNVf~n%>m;CC402^c@0AJnA~+(zY0VlAH%}44@dbT!G`(XZ2%&s> zdLq*D4N1kUO3yKl@N%d=^-ymi#SZ)v*dqJysf?w(X+`$gbK|{f;9puuH363oE<4I$<^BbbeS^>Qsdovu<=slm=f-u)vkk2BS^>$#skKy-Y%0&Rm z83H4ZE-=FIh3M!9aWVw{y1@9u8!&v~J^)4?p@8QNuP*S^8ECoNM32R3z0XC07P*-^ z_9viHL_ylni6Nx7k>aP(Onn0AoEuyMausXK)A2nDz@8 z>lqDG4`MS5!*=$viE|cPtVa!7wdHLS&2BuFaLon15u-o$z}#x12G&{z(Aic2+$91$ z9bQ^!DKF>)GD#uWhVd$YIAd!!x8i|gM*Mr-sKjQu7|TMaMWTI5 zsEwu(T(`^;P-#tC!zi4?lmOh9@=#G+VEvn^-f$d;o{eh}%(o+;ei_xj5E7zf) zo8hbo|E$Mn=E1>$$$Y`K5+P8cJEdSN4P15XQK=GWPd#la!CE(+&I59wH^m5wBS-A9 z&`NsQR1dTLbntgv-NjgdI}_OFaVyt2@9oXk#c3Gd8}SfZS1nktfqNR+V2^0Y+?dle z@^|OwHu2yQ#lRCI|Ca-f^AV7OB|yMg#t;hVeSL&lF)( zS+)vdtP%8hj4+0=!;^X?){nU&*ekUp5sO*Dw2ySAC7i)>^PwEp%gvvoES6`h$2bGY z0V~HDPBf2g-E-Ki07pZ(Vj+UKVu?$(8X5wa7`KG8=f0JqrUX87DVMQ)IgTd2vxsD< zOUtXr?f4qljvL$E5RNi6(9dzR3oa(;=dBu8qsE>_zZ1yT0NH$pE8z^$gtepwB*#+N zLi%!XHfexGMsKk1t~Bo945cf?JRcZ$V9dk$3a+JM-1GwqI7^X0B=H9hLg5c%r8m%u zw}~FprmfN^@U@!yDVt>)+rHt7fZ;rNDC})oZx<1a#ksb(Zl^55Tc=(Ttt5-mu`!{( zl?_|BpG{mcKgW^P>)Z&8Fjzfi~68 zyeypd%f8@iKHx=Nz@P9AXUDic;7k9ohsOO0?5F)9-y5E=H^&_d5lOL$p6QstaBhyP zvp6O|3i`P@o3W#B>!Frr?1OCLgpH#0Iy7$0cldftJ)Et(Sobkg54Xj>L}ai{{M$C> zu#Msni;^-e2~Y3{Em}lUEtX~LaLjA^%b<7RyhcQ%7E7@f!f2nyV_EmB zsyr6XE3|N*Zc`~H5uU@q@fVIExZOcqCB#4LRN20=p*Q0hFx<`0qi4i$w1qK+JJ}(# zsb0Mohts|h_X@H1^8>#{uSH+R83RIa1uzV9L%@@81`)vHg#fOIjx;KkgRSsc+85JH z# z8q&zNfj_hu+&jjVVWH&=w~0U21F|`;&>uxaVN)Hptu1pDL}1yr=#5#PH`tW~{;*HL zJ_2W`p>(u{GujZav94fsIAZGtm_G0q09PEbp%vn46!wYuXT6KaG5zM$#ORMY-&7Y?srfOQ7FhQb~CI=6-&3U@vL$Jylwo9HopVXU%6W))wn zWgo?LTrHicDRn-8r(s19`)p}@rU9G{XfzqR`;T)hV$cVE7JU4+>hhqh_GCX5} zBL{BufEv*7^j_UMI`B0J`&W#5T8KBs<3-L2a9+l(t+6$tWQbX~7KSTQ%s%w1SZPtWiJzS0P1AT?U9qJSP82b@_`11iMzIO!(dUzOpLN5*l zTtA?bZxcOsW~FkvDB$ZhwW*GL&g+c8%(s^ab~q}dLF*h;Y#$;zwn2)fQnH>foQ@7K zLgIR-d0cxw2T$mU$h-U#hmG&dpKYBJu~}@z5_E@s6K*#b&m-cwo1q3)X=vZfE(-)! z?+m-6&U7D2?*}7!2^hZlsK}zU;fRVmJ)cW^Tehzf2fX24Ecz(7$~4L*3M}fNy>|t# z!03Xr6Z90^KSaO4-BBE6;W`D*mALqfV=N9AM_(d>=LGT3xQJrg%Obwn>b=th|vp2ydpA|FISVlzUr9(ww90t_LB|~h1+#7Juh!5f1FMHv$cj{ zzsl$BlNztF;3&dc-eeQ{Y_=kdslwBc`m;g$nU(qVT-;a3wPoSjJU9Bp`q(KX z5qv6(vv1q5r|{U!Co1n1?3|!}ble@*`f;5derw7mj#)ot2^-JV2qm1#^K3n;nxA>9@lu0%5!N8h*%;|6DiOdgaH z>EK9?!I+e|g2rHs9?muyjM2lB-weiRU?kvRK2%OlYm5e~4QJ#G3u$p!n2XxRUYfy> zmT_y~J{ZeKx>$zQ%(%p!oWrr+2BUzsu%%f&IP)`Kv#(CBifSGVt!Z34YJzKDrYBsr z;9&Z;z)w9en6(?aW1wh?$PSC zi>;3^&aTblb9rdLC?hMuS+V&Nh-WMbE63$|>FVKH#(X_oo*tKLW%IaPo*vhnHW?3G z9^!Hke*=AU(e+)UJVX8Cn8K2bEKeU(kq%Nq&Y5ld>wHQd^KdnX`HCJ-??0^Na3;&} zSTw;|FM}~_$8$*x#>w0o+K^eQIX`1D&tK;!mVA$^*Rns@9)k?^!X$h1HCNt;{dM}| zw5M-TE0K>VO3;L#?+XV>wS;a&8V45CX|asdSf3qwOicP z;7aQ47S|y;n0~B;t27MuCSo|wO}YB4#qfX%?3T5rUQf90#MNs_Q@EPSVN|YFa3`B_ z%wovvw~Dt(B*D|FuSdt$7>_Fj#*}bnj)O7%;T{eLsYqX@)`g$);mYc*3qNJd!SvRJ zvo-x($(ns3CTro>nHiy!#xowQo7slmqF8G%eZ1LN$wC{?VhSCwcm9U1=LKgUH~vsohNiRNdUTm-b1=MHVq1)>j* zS-qgIK#ycKbM|1qG?$0tYh07Y{ub-NQ=hCf*MFKX&E?@946ZIA2i!R`^lVn1vkCL% zxjZb5{R74e9GUq-S+4ZIF;m7}CDy;`qnWw6GPe)K`bTR$p{+9n+eTVQSMQ~qZ5Xa_ z>T|gkGF=Tc_N-SO{~|A@J>{F7eVXfWD$_BiamwqntZS>x+?v7v3?w?Z)QVEqU;QsAJB zBElFZ-V1SG)ep?s$eWbZT)fin&sA(8+)4!Tz&w4;pEiu14s`PnFq+=2m#IHH8+Z-^~@qB+lb2wm9@0=5?>L>VnY{ z_mOdjUEe2h(pS7A&055AoYL3I%>pd1gz5Efu0`-{nrVyZcWaSU@3d%cT*S>rFKH*6R9{u=IU%niPSo&5i=syF@4`bvLQ{p)`9 zJAN&Ej50&3kfCAIpL`Vh2IYs#Pmn37Ez_@{hf@D@HtY*LS3UXe?_X@K2WQL#shGdd z6Tt8{HVOW4JvuR_e%yt=(@b=(X*|%RB>r;4Qa%%Z+7c7e6e8kJWm2FWTqE!SQiaG! zJBy+kBG2JrNCkg~0u$aNn=HBF0|Hm^kW7{XSIW+O9ym;UnRRI3BLX=#cBhw_NXUTG;6dEealxh_kgZoif1QP%I z9rT{oP!)dY6VrJ5PT+8(K2ZcF$T%L}g1=(1o`QR!j%h(JK2yqHg|;HpGa4TztU%cO z)NC=s58ogO)uhX0?749`1{Nulr8(xK>3Z{stY9GjJdnRyViSJ-geGG)yD>ly9ziJE zbU`7+V+q-(N}9++goR3Z7#0u~qL$0&=`NG_yD%Mu`^8;&Ea}Z;tTby#_ElIbS@Ffh zKqQ@#ow460)}jC#lQ7iK#zj-8OS1?a@9?+W1v_|5Lbb(nAgVGGwRODk>&e*>J;Jv9 z+BCR4JTr)ChL*7!7nktWnlOmJFFcyhe22dx(?YAWg+DQrp|*fbvxsIKpoIKloJT^{ z;Dt<}x)`CwaF0nu#Qc@}v120Uo(Y`d=F@Sgh6y!;hhZ^f179vY40&TA1>yK?5AU>< z^wr@{SF`GT_@b{-9sZIztBxs!RfocN;Ypyo8ih)846`sNkY5wS#jwtPf*MDo zSO85Pe|N{+PjR!Kp~iWEL5k&{n0X*YtA5hw`|p>AKkpk=()mHJU}dXNp@6R^9JUIT zxGr4Z9K%2T+{`g=tVifrQfKAarKNQY7&dr7`jD`LWuv3s6vDBEx2PU$EoN{6YhfA` zLpCO61$box7@DE?h!fD{tVP;zc?QK;6-LG2gFfXV5u?}EOhGI3Sh4n%E59;U-G*0R${w>v3_(Lusx^g-Au08caWP*l=1^22AnPh9mJ5i1V*(q~ z0?cl71%!YmBCL~HIZ&Yvi7+8n^P6bEv^Hi=y4r+*tnUDiG9@g{EFLNqruqW@kg%>s zEXx1_%B}grIy@mD>xz&vD@|DuGRVo$&bTHaAnSWpldyghO*bCGsgCuRNRm~9)i;~U z6QLzpPE`Q9Ix{zD%o=t`3Vsrh5T+?a%eoAFn6ysgAt}{q$TUVzspbfUhNKMfrZqXk z117AgbJlgJ>Mb$t=CGVFvvEoj@kPjH9Acs7*8pHr4Fxb~#d;}#xgi1?4@os)*rZfS zwKU+tzE+~Bqy#JB5>p92-9YMm!l;S;9|#tPBw8$j!i`g)IH^%XA0=uF(D_?>sUOKd zu@Hdb59MKakIlwX7~Z7vPb@m&qdmUe1+IqR4Wvx&LftiJf)zf}TH=79 z!cyjJ$jIh1g$&2@Fk~2CEY*jb8WaCWyl-bGj{V@+6rZ_OYo{_65Q&n6D+YDtz@^7_ z2Yn-%ljAL0w8A;c9Bc{}f<$FPgs9Gal^HVOEEJ*qC<_!)?yh@u;AWrVAeBm5B#xG+ zsidkRF}DyXPLO5FV7V||27EvXOpH&|D+l4f6d=$q7c7)?uBU_vlF;gxEEA>e4SU;cmo{OiJnz>P&ym%Zhdv;&bXX@@xz zYNGbmN$aLBPm!!xI%xdP4{G_DgK4ocK5=aTBA~m)YBk~rjV#BZ0)=q;P)Tz$lsRHK z6cA^s;7*ezSMypD8QThtV2mhUEon)JV|;I*B^*b8X6I2O{>$G2S9hOr>Bg>FIJ~x~ zB~}?~B=n@mhMPB>qbIMJJvA^ju@HBulbup7u6hkEp_SzH*>IsSQ($p zNGSU6Nyw<$B1w%u*O5MdwGN!SzeneRzFVH6B*w7H_lcdL7OsnMh*QaPKEsr@SZk<*_26f?QezWV(i zw~s_68N=jQ8J~2`9RL8>lMyG&6b{L-9jJsDhtCRmu1u;D<7Q{NTvH_0D89TuwRCk~e>WE!a=MyAfv`B*1$E}&sIikd*(<|s4dnMFcHd5B&5 zLWM43=yK@>v|6lEDm6@ZFjA$-qKYhL@CEULGZrMGzhRlSYwpeUtiM|8S)+N*m{=Bj z*6V;+>CSUk#}V~%z8e-ipamtYJ3{;?Jv^zBc^;&)9=q~i`>n@ z{{7Aq7iF&p21Wg_@nZCc6I2fM657+%_KG|JrOD_i`AIuvLiE(7qpJEfyS>aD?BDA= zSt!I|aZ3CTVd5L3LS|(3U$kKUDY~j;i-dWzNtwp!cggw_0e9ED=qN`CjbT#&h6(+j z&MqsQXu1I+->KqZnLGtdG7~khv7fHCp+`m2M^d^ZG(a8D!p$YVut5!$G{H28QkT1k zcV4afSM0PUp`Y};m>qco7{co=)TbgrG`&|7ie( z2gax|9G?wputn02qs5KI>V454KHm9q!&krFMM;feY%xMd05~njxK2;ki0N4&2f@95 z(ZIohW@0?&@*$vSLfG~Y$7t0Mv1MX)o-AFSDTl66sS>MXYS{GVr%7z;MCVE#z!j2* z#0&uE0vv>YXBh@S{=ryhY(8pGgC%{j3Q;%46LWJgH7fvDN&xkR-4ae6sUFmoS$u#} zc~Fq9Kj<{6#ycD_=oOf*kg8$)Wp?guAip(530OC{rE;)ZaB!7mv<`#VRux#Aua9k~ z@Q_Rm!h; zhDz1#ec(0`jS->gk)rZ8wJP zz8JQyZ_?fpbFlws{Rv&;E%~`w!E@XqK3p<(^iLD_(lcdN757H`DGb{v72hD`aTody zen7|_7#~>d)G&}?Vg@~&do=By;$YHhvG3Xsr7G=H2P4`|?DzOe(3UX?okEwk|B11H z98kvLit3s6{Vy$6+!059*l|t7R@Z}HnuAr|r#eB+eBZ_IP{l|!S(VtJLbXC2`XuCE z4>f;xfiG-OgC#>jI3^U_*uc!e`cQ1{P1j=~Vi;_s@IBSPv5;mi8X%XJegC*v&Q=*k{kh)L$cJu75CO&ERvm zqG*%UZr{u&RpLj6Z(n=q`KY1s)B=oQX5(oA5HLGF34{3&9h_)$( z3$ff*8?LA2Db=t*4H>u!o2!JmfC}eOu3nws&keVm7zXaj$+*b^Ou%7=@XwEAP@k*2 z4G6OvG^p?HTAh~EyKv;)3RN707?6ZxfT0w^wGA6SBglGy#WAhL09(RW$)dws{IkhK z1-%24Nk*ju>tCB@Y?)rNvhRZM!nu<@)gLj^SUZyn*Q%t=cCIdbXJTlX(_3o>9Nl-% z91IPKC7n+pK;+MZg|#zG`bmQl-IMJ%HpN3$9rA0u-ewNAkQIQdp$v4w2T-#zU@40k zm}wzV5-eup4BmM463bN-^WYblxb$B(&*eNBCTOLNZR?C1ac7pE2$`^AfKT-FT`{a8 ztd}XFF5G{VnOL*&!Ovr+K%W#o*yTNmb%9- z>9qBEGjp&6K_Nrglza};oXxAUf*MV34dTtKu7;o-#vA|UVEqN;4P^T-Zr!smg1Z97 z$0(2;TiWdx--Ni`9T!EP#|&Bd_Z+EykYN)vU}UuR|@B4ovSA>L8?7bXKQ#LH*df@Xu#-5*qX=$_@TM4UibuiWyV*Qprj%DY zry^jU-ckurHJGpwjSt))+^Xs9(xEIc8=!o6oGRF+Q)N5>xf;B1lT1+-a z_d`ad{rT>+(x_(k^TKu~?*C-$t?MI&{>&t602LdbfHVhV@*#sdf5r!s4RQRKD`x1D zkgN_^!Hr3vH$Hxfk?-ic9p#_X5 zGfbs?ZLhI-!fLQ2Ai_yyYngND=s9V^$)fRbE_1LD9v?3T#{UmY*0DP=J{*U9 zSh5Yw!-R4ePx8&d{*5&!YQMlAPC|_rO8{h(Y{s8XLD`I9%&@Ue!*(MFRu|9V$6|Cm46gBp;8TuoEWvQk7hqrhud2>C#-W7A7(BT(w3fh4XKCC|WJc zld9l5wZ!2vjW`!S!DrHYy*Wc*-2oc8@v0fhg@aS$V@U|NY9K?KZB%Ii)DreKm~>_4}Gn8U(D^U$+r}8{#Re`X($erIugUtYo6^E!~V5Pcm z#S>?0b15an*Xss95MaPZBIV;1w4^q!>D48wgfu|(f6z?OMT#iv+y}U=k{j z!Hk_}J|d35H%P*7VZ%?{VKOd2DRt%Y;A?cbWU|3Pk5WJ$uEJn4@j&c3F&Ss*bTXF9 zHxObC4?~{t#S$vI#^Oboj`cRa8Yr2Sfa`(r9hNVATw3DM{m>~4CoEVnl>Dn*SetActuatorValueByIndex(0, -InValue); - GetMujocoVolumeActor()->SetActuatorValueByIndex(1, InValue); + const float TurnMod = GetOwningRobot() ? GetOwningRobot()->GetTurnModifier() : 1.f; + GetMujocoVolumeActor()->SetActuatorValueByIndex(0, InValue * -TurnMod); + GetMujocoVolumeActor()->SetActuatorValueByIndex(1, InValue * TurnMod); } } \ No newline at end of file diff --git a/Source/LuckyWorldV2/Private/Gameplay/Robot/Data/RobotSettings.cpp b/Source/LuckyWorldV2/Private/Gameplay/Robot/Data/RobotSettings.cpp new file mode 100644 index 00000000..ca155dce --- /dev/null +++ b/Source/LuckyWorldV2/Private/Gameplay/Robot/Data/RobotSettings.cpp @@ -0,0 +1,192 @@ +// Fill out your copyright notice in the Description page of Project Settings. + + +#include "Gameplay/Robot/Data/RobotSettings.h" +#include "Components/SplineComponent.h" +#include "Gameplay/Robot/LuckyRobotPawnBase.h" +#include "Kismet/KismetMathLibrary.h" + +void FRobotSplinePath::GenerateSplinePath(ALuckyRobotPawnBase* InRobot, const FRobotNavPath& InNavPath) +{ + if (IsValid(InRobot) && !InNavPath.NavPoints.IsEmpty()) + { + Robot = InRobot; + NavPath = InNavPath; + + if (GetRobot()) + { + USplineComponent* OldSplinePath = GetSplinePath(); + + if (UActorComponent* NewComp = GetRobot()->AddComponentByClass(USplineComponent::StaticClass(), false, FTransform::Identity, false)) + { + if (USplineComponent* NewSplineComp = Cast(NewComp)) + { + NewSplineComp->ClearSplinePoints(); + NewSplineComp->SetAbsolute(true, true, true); + int32 PointIndex = 0; + for (auto const& NavPoint : NavPath.NavPoints) + { + NewSplineComp->AddSplinePointAtIndex(NavPoint.Location, PointIndex, ESplineCoordinateSpace::World, false); + PointIndex++; + } + + NewSplineComp->UpdateSpline(); + SplinePath = NewSplineComp; + RegenerateSplinePathValues(); + + // begin debug + if (GetSplinePath()) + { + GetSplinePath()->SetVisibility(true); + GetSplinePath()->SetHiddenInGame(false); + } + // end debug + } + } + + if (IsValid(OldSplinePath)) + { + OldSplinePath->DestroyComponent(); + } + } + } +} + +void FRobotSplinePath::RegenerateSplinePathValues() +{ + if (GetRobot() && GetSplinePath()) + { + constexpr float SplinePredictionTime = 1.f; + constexpr float SplinePredictionDistanceMin = 64.f; + const float SpeedLimit = GetRobot()->RobotSettings.SpeedLimit; + const float TargetSpeed = FMath::Min(GetRobot()->GetTargetSpeed(), SpeedLimit); + const float SplinePredictionDistance = FMath::Max(SplinePredictionTime * TargetSpeed, SplinePredictionDistanceMin); + constexpr float TangentClamp = 128.f; + const int32 SplinePoints = GetSplinePath()->GetNumberOfSplinePoints(); + + const bool bSingleInput = GetRobot()->RobotSettings.InputHandlingMethod == ERobotInputHandlingMethod::SingleInput; + + if (bSingleInput) + { + for (int32 x = 0; x < SplinePoints; x++) + { + GetSplinePath()->SetTangentAtSplinePoint(x, FVector::ZeroVector, ESplineCoordinateSpace::Local, false); + } + } + else + { + for (int32 x = 0; x < SplinePoints; x++) + { + if (x < SplinePoints) + { + GetSplinePath()->SetSplinePointType(x, ESplinePointType::CurveCustomTangent, false); + + const FVector PointLoc1 = GetSplinePath()->GetSplinePointAt(x - 1, ESplineCoordinateSpace::World).Position; + const FVector PointLoc2 = GetSplinePath()->GetSplinePointAt(x, ESplineCoordinateSpace::World).Position; + const FVector PointLoc3 = GetSplinePath()->GetSplinePointAt(x + 1, ESplineCoordinateSpace::World).Position; + const float Distance1 = FVector::Dist(PointLoc1, PointLoc2); + const float Distance2 = FVector::Dist(PointLoc2, PointLoc3); + + constexpr float PointDistanceMod = 0.33f; + const float TangentMin = FMath::Min(SplinePredictionDistance * 10.f, TangentClamp); + const FVector ArriveTangent = (PointLoc3 - PointLoc1).GetSafeNormal() * FMath::Min(Distance1 * PointDistanceMod, TangentMin); + const FVector LeaveTangent = (PointLoc3 - PointLoc1).GetSafeNormal() * FMath::Min(Distance2 * PointDistanceMod, TangentMin); + + UE_LOG(LogTemp, Warning, TEXT("RegenerateSplinePathValues ArriveTangent (%s)"), *ArriveTangent.ToString()); + UE_LOG(LogTemp, Warning, TEXT("RegenerateSplinePathValues LeaveTangent (%s)"), *LeaveTangent.ToString()); + + GetSplinePath()->SetTangentsAtSplinePoint(x, ArriveTangent, LeaveTangent, ESplineCoordinateSpace::World, false); + } + } + } + + GetSplinePath()->UpdateSpline(); + const float SplineLength = GetSplinePath()->GetSplineLength(); + SplinePathSpeedModifier.EditorCurveData.Reset(); + constexpr float MinSpeedMod = 0.2f; + constexpr float SplinePrecision = 10.f; + + if (bSingleInput) + { + constexpr float SectionSpeedMod = 0.4f; + const float SectionSpeedClamp = FMath::Min(SpeedLimit * SectionSpeedMod, TargetSpeed); + const float DecelerationStep = SplinePredictionDistance + SplinePrecision; + SplinePathSpeedModifier.EditorCurveData.AddKey(0.f, SectionSpeedClamp); + SplinePathSpeedModifier.EditorCurveData.AddKey(SplineLength, TargetSpeed * MinSpeedMod); + + const float FirstSectionEnd = GetSplinePath()->GetDistanceAlongSplineAtSplinePoint(1); + if (FirstSectionEnd >= DecelerationStep) + { + SplinePathSpeedModifier.EditorCurveData.AddKey(SplinePrecision, TargetSpeed); + } + + for (int32 y = 1; y < SplinePoints; y++) + { + const float SectionStart = GetSplinePath()->GetDistanceAlongSplineAtSplinePoint(y - 1); + const float SectionEnd = GetSplinePath()->GetDistanceAlongSplineAtSplinePoint(y); + const float SectionDistance = SectionEnd - SectionStart; + + if (SectionDistance >= DecelerationStep) + { + SplinePathSpeedModifier.EditorCurveData.AddKey(SectionEnd - SplinePredictionDistance, SectionSpeedClamp); + SplinePathSpeedModifier.EditorCurveData.AddKey(SectionEnd - DecelerationStep, TargetSpeed); + } + else + { + SplinePathSpeedModifier.EditorCurveData.AddKey(SectionStart, SectionSpeedClamp); + } + + SplinePathSpeedModifier.EditorCurveData.AddKey(SectionEnd, SectionSpeedClamp); + + if (y < SplinePoints) + { + const float NextSectionEnd = GetSplinePath()->GetDistanceAlongSplineAtSplinePoint(y + 1); + const float NextSectionDistance = NextSectionEnd - SectionEnd; + + if (NextSectionDistance >= DecelerationStep) + { + SplinePathSpeedModifier.EditorCurveData.AddKey(SectionEnd + SplinePrecision, TargetSpeed); + } + } + } + } + else + { + const int32 SplineIntervals = UKismetMathLibrary::SafeDivide(SplineLength, SplinePrecision); + for (int32 z = SplineIntervals; z >= 0; z--) + { + if (z == 0) + { + SplinePathSpeedModifier.EditorCurveData.AddKey(0.f, TargetSpeed * MinSpeedMod); + } + else if (z == SplineIntervals) + { + SplinePathSpeedModifier.EditorCurveData.AddKey(SplineLength, TargetSpeed * MinSpeedMod); + } + else + { + constexpr float MaxSpeedMod = 1.f; + const float SplineDistance = z * SplinePrecision; + const float DistanceToPathEnd = SplineLength - SplineDistance; + const float PathEndMod = DistanceToPathEnd <= SplinePredictionDistance ? FMath::Max(UKismetMathLibrary::SafeDivide(DistanceToPathEnd, SplinePredictionDistance), 0.f) : 1.f; + const FVector IntervalTangent = GetSplinePath()->GetTangentAtDistanceAlongSpline(SplineDistance, ESplineCoordinateSpace::Local); + const float IntervalCurve = FMath::Min(IntervalTangent.Length(), TangentClamp); + const float IntervalAlpha = UKismetMathLibrary::SafeDivide(IntervalCurve, TangentClamp); + const float SpeedMod = (MaxSpeedMod - IntervalAlpha) * PathEndMod; + const float ClampedSpeed = FMath::Min(SpeedLimit * SpeedMod, SpeedLimit * MinSpeedMod); + SplinePathSpeedModifier.EditorCurveData.AddKey(SplineDistance, ClampedSpeed); + } + } + } + + // begin debug + + const int32 SplineIntervals = UKismetMathLibrary::SafeDivide(SplineLength, SplinePrecision); + for (int32 z = SplineIntervals; z >= 0; z--) + { + UE_LOG(LogTemp, Warning, TEXT("SpeedCurveValue [%f :: %f]"), z * SplinePrecision, SplinePathSpeedModifier.EditorCurveData.Eval(z * SplinePrecision)); + } + + // end debug + } +} diff --git a/Source/LuckyWorldV2/Private/Gameplay/Robot/LuckyRobotPawnBase.cpp b/Source/LuckyWorldV2/Private/Gameplay/Robot/LuckyRobotPawnBase.cpp index c47884a9..2c9f66de 100644 --- a/Source/LuckyWorldV2/Private/Gameplay/Robot/LuckyRobotPawnBase.cpp +++ b/Source/LuckyWorldV2/Private/Gameplay/Robot/LuckyRobotPawnBase.cpp @@ -56,8 +56,6 @@ void ALuckyRobotPawnBase::InitializeMovementComponent() void ALuckyRobotPawnBase::BeginPlay() { - Super::BeginPlay(); - InitializeMujocoVolumeActor(); InitializeMovementComponent(); @@ -66,7 +64,10 @@ void ALuckyRobotPawnBase::BeginPlay() GetLuckyWorldSubsystem()->RegisterLuckyRobot(this); GetLuckyWorldSubsystem()->TargetSpeedChanged.AddUniqueDynamic(this, &ALuckyRobotPawnBase::SetTargetSpeed); + GetLuckyWorldSubsystem()->RobotNavPathChanged.AddUniqueDynamic(this, &ALuckyRobotPawnBase::SetRobotNavPath); } + + Super::BeginPlay(); } bool ALuckyRobotPawnBase::HasMovementValue() const @@ -123,6 +124,8 @@ void ALuckyRobotPawnBase::SetupPlayerInputComponent(UInputComponent* PlayerInput EnhancedInputComponent->BindAction(TurnAction, ETriggerEvent::Completed, this, &ALuckyRobotPawnBase::TurnStop); EnhancedInputComponent->BindAction(LookAction, ETriggerEvent::Triggered, this, &ALuckyRobotPawnBase::Look); + + EnhancedInputComponent->BindAction(TogglePathfindingAction, ETriggerEvent::Started, this, &ALuckyRobotPawnBase::TogglePathfinding); } } @@ -250,6 +253,12 @@ void ALuckyRobotPawnBase::Look(const FInputActionValue& Value) UE_LOG(LogTemp, Warning, TEXT("ALuckyRobotPawnBase :: Input :: Look (%s)"), *Value.Get().ToString()); } +void ALuckyRobotPawnBase::TogglePathfinding(const FInputActionValue& Value) +{ + PreviousInputType = ERobotInputType::None; + CurrentInputType = IsPathfinding() ? ERobotInputType::None : ERobotInputType::Pathfinding; +} + void ALuckyRobotPawnBase::RemoveMujocoVolumeActor() { if (GetMujocoVolumeActor()) @@ -276,6 +285,18 @@ ULuckyWorldSubsystem* ALuckyRobotPawnBase::GetLuckyWorldSubsystem() return LuckyWorldSubsystem.Get(); } +void ALuckyRobotPawnBase::SetRobotNavPath(const FRobotNavPath& InRobotNavPath) +{ + CurrentSplinePath.GenerateSplinePath(this, InRobotNavPath); + + Internal_RobotNavPathChanged(CurrentSplinePath); +} + +void ALuckyRobotPawnBase::Internal_RobotNavPathChanged(const FRobotSplinePath& NewNavPath) +{ + RobotNavPathChanged(NewNavPath); +} + int32 ALuckyRobotPawnBase::GetTaskCount() { if (GetLuckyRobotsGameInstance()) @@ -344,6 +365,8 @@ void ALuckyRobotPawnBase::SetTargetSpeed(const float InTargetSpeed) void ALuckyRobotPawnBase::Internal_TargetSpeedChanged(const float OldValue) { + GetCurrentNavPath().RegenerateSplinePathValues(); + TargetSpeedChanged(TargetSpeed, OldValue); } diff --git a/Source/LuckyWorldV2/Private/Subsystems/LuckyWorldSubsystem.cpp b/Source/LuckyWorldV2/Private/Subsystems/LuckyWorldSubsystem.cpp index aefff6cd..c4609c6b 100644 --- a/Source/LuckyWorldV2/Private/Subsystems/LuckyWorldSubsystem.cpp +++ b/Source/LuckyWorldV2/Private/Subsystems/LuckyWorldSubsystem.cpp @@ -72,4 +72,14 @@ void ULuckyWorldSubsystem::UpdateTorqueLimiter(const float InTorqueLimiter) { TorqueLimiterChanged.Broadcast(Robot_TorqueLimiter); } -} \ No newline at end of file +} + +void ULuckyWorldSubsystem::UpdateRobotNavPath(const FRobotNavPath& InRobotNavPath) +{ + RobotNavPath = InRobotNavPath; + + if (RobotNavPathChanged.IsBound()) + { + RobotNavPathChanged.Broadcast(RobotNavPath); + } +} diff --git a/Source/LuckyWorldV2/Public/Gameplay/Robot/Components/Movement/LuckyRobotMovementComponent.h b/Source/LuckyWorldV2/Public/Gameplay/Robot/Components/Movement/LuckyRobotMovementComponent.h index d0f0a414..08943bfa 100644 --- a/Source/LuckyWorldV2/Public/Gameplay/Robot/Components/Movement/LuckyRobotMovementComponent.h +++ b/Source/LuckyWorldV2/Public/Gameplay/Robot/Components/Movement/LuckyRobotMovementComponent.h @@ -48,6 +48,7 @@ protected: FRobotSettings RobotSettings = FRobotSettings(); + //virtual void EvaluateRobotPath(); virtual void InterpolateSpeedValues(const float DeltaTime, const float Acceleration, const float Deceleration); FVector2D CurrentSpeedValues = FVector2D::ZeroVector; diff --git a/Source/LuckyWorldV2/Public/Gameplay/Robot/Data/RobotSettings.h b/Source/LuckyWorldV2/Public/Gameplay/Robot/Data/RobotSettings.h index a4bf6192..afe89433 100644 --- a/Source/LuckyWorldV2/Public/Gameplay/Robot/Data/RobotSettings.h +++ b/Source/LuckyWorldV2/Public/Gameplay/Robot/Data/RobotSettings.h @@ -6,6 +6,8 @@ #include "RobotSettings.generated.h" +class ALuckyRobotPawnBase; +class USplineComponent; class ULuckyRobotMovementComponent; class AMujocoVolumeActor; @@ -30,6 +32,9 @@ USTRUCT(BlueprintType) struct FRobotSettings { GENERATED_USTRUCT_BODY() + + UPROPERTY(BlueprintReadWrite, EditDefaultsOnly, Category = "Robot Settings") + float SpeedLimit = 15.f; UPROPERTY(BlueprintReadWrite, EditDefaultsOnly, Category = "Robot Settings") TSubclassOf MujocoSettings; @@ -39,4 +44,54 @@ struct FRobotSettings UPROPERTY(BlueprintReadWrite, EditDefaultsOnly, Category = "Robot Settings") ERobotInputHandlingMethod InputHandlingMethod = ERobotInputHandlingMethod::CombinedInput; +}; + +USTRUCT(BlueprintType) +struct FRobotNavPoint +{ + GENERATED_USTRUCT_BODY() + + UPROPERTY(BlueprintReadWrite, EditDefaultsOnly, Category = "Robot Nav Point") + FVector Location = FVector::ZeroVector; + + UPROPERTY(BlueprintReadWrite, EditDefaultsOnly, Category = "Robot Nav Point") + bool bDestination = false; +}; + +USTRUCT(BlueprintType) +struct FRobotNavPath +{ + GENERATED_USTRUCT_BODY() + + UPROPERTY(BlueprintReadWrite, EditDefaultsOnly, Category = "Robot Nav Path") + TArray NavPoints; +}; + +USTRUCT(BlueprintType) +struct FRobotSplinePath +{ + GENERATED_USTRUCT_BODY() + + UPROPERTY(BlueprintReadOnly, Category = "Robot Spline Path") + TWeakObjectPtr Robot; + + UPROPERTY(BlueprintReadOnly, Category = "Robot Spline Path") + FRobotNavPath NavPath = FRobotNavPath(); + + UPROPERTY(BlueprintReadOnly, Category = "Robot Spline Path") + TWeakObjectPtr SplinePath; + + UPROPERTY(BlueprintReadOnly, Category = "Robot Spline Path") + FRuntimeFloatCurve SplinePathSpeedModifier = FRuntimeFloatCurve(); + + ALuckyRobotPawnBase* GetRobot() const { return Robot.Get(); } + void GenerateSplinePath(ALuckyRobotPawnBase* InRobot, const FRobotNavPath& InNavPath); + void RegenerateSplinePathValues(); + USplineComponent* GetSplinePath() const { return SplinePath.Get(); } + + FRobotSplinePath() {} + FRobotSplinePath(ALuckyRobotPawnBase* InRobot, const FRobotNavPath& InNavPath) + { + GenerateSplinePath(InRobot, InNavPath); + } }; \ No newline at end of file diff --git a/Source/LuckyWorldV2/Public/Gameplay/Robot/LuckyRobotPawnBase.h b/Source/LuckyWorldV2/Public/Gameplay/Robot/LuckyRobotPawnBase.h index 2d63b9b3..7985459d 100644 --- a/Source/LuckyWorldV2/Public/Gameplay/Robot/LuckyRobotPawnBase.h +++ b/Source/LuckyWorldV2/Public/Gameplay/Robot/LuckyRobotPawnBase.h @@ -45,11 +45,11 @@ public: UFUNCTION(BlueprintPure, Category = "Lucky Robot Pawn") float GetFastEndTaskTime(); - UFUNCTION(BlueprintCallable, Category = "Lucky Robot Pawn") + UFUNCTION() bool SetActuators(const TArray& InActuators); // SPEED CONFIG - UFUNCTION(BlueprintCallable, Category = "Lucky Robot Pawn") + UFUNCTION() void SetTargetSpeed(const float InTargetSpeed = 0.f); UFUNCTION(BlueprintPure, Category = "Lucky Robot Pawn") @@ -64,7 +64,7 @@ public: ULuckyRobotMovementComponent* GetRobotMovementComponent() const { return RobotMovementComponent.Get(); } // TORQUE LIMITER - UFUNCTION(BlueprintCallable, Category = "Lucky Robot Pawn") + UFUNCTION() void SetTorqueLimiter(const float InTorqueLimiter = 0.f); UFUNCTION(BlueprintPure, Category = "Lucky Robot Pawn") @@ -116,6 +116,18 @@ public: UFUNCTION(BlueprintPure, Category = "Lucky Robot Pawn") ULuckyWorldSubsystem* GetLuckyWorldSubsystem(); + // NAV ROBOT PATH CHANGED + UFUNCTION() + void SetRobotNavPath(const FRobotNavPath& InRobotNavPath); + + UFUNCTION(BlueprintPure, Category = "Lucky Robot Pawn") + FRobotSplinePath& GetCurrentNavPath() { return CurrentSplinePath; } + + void Internal_RobotNavPathChanged(const FRobotSplinePath& NewNavPath); + + UFUNCTION(BlueprintImplementableEvent, Category = "Lucky Robot Pawn") + void RobotNavPathChanged(const FRobotSplinePath& NewNavPath); + // INPUTS UFUNCTION(BlueprintPure, Category = "Lucky Robot Pawn") UEnhancedInputComponent* GetEnhancedInputComponent() const { return EnhancedInputComponent.Get(); } @@ -132,6 +144,9 @@ public: UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Input, meta = (AllowPrivateAccess = "true")) UInputAction* LookAction; + UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Input, meta = (AllowPrivateAccess = "true")) + UInputAction* TogglePathfindingAction; + void MoveStart(const FInputActionValue& Value); void Move(const FInputActionValue& Value); void MoveStop(const FInputActionValue& Value); @@ -142,6 +157,8 @@ public: void Look(const FInputActionValue& Value); + void TogglePathfinding(const FInputActionValue& Value); + UFUNCTION(BlueprintPure, Category = "Lucky Robot Pawn") ERobotInputType GetCurrentInputType() const { return CurrentInputType; } @@ -154,6 +171,9 @@ public: UFUNCTION(BlueprintPure, Category = "Lucky Robot Pawn") float GetDecelerationRate() const { return DecelerationRate; } + UFUNCTION(BlueprintPure, Category = "Lucky Robot Pawn") + float GetTurnModifier() const { return TurnModifier; } + UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Lucky Robot Pawn") float AccelerationRate = 1.5f; @@ -163,11 +183,15 @@ public: UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Input") float TargetSpeed = 0.f; + UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Input") + float TurnModifier = 1.f; + protected: virtual void BeginPlay() override; bool HasMovementValue() const; bool HasTurnValue() const; + bool IsPathfinding() const { return CurrentInputType == ERobotInputType::Pathfinding; } void RemoveMujocoVolumeActor(); @@ -187,4 +211,7 @@ protected: float TorqueLimiter = 0.85f; int32 CurrentTaskIndex = -1; float TaskTime = 0.f; + + UPROPERTY() + FRobotSplinePath CurrentSplinePath = FRobotSplinePath(); }; \ No newline at end of file diff --git a/Source/LuckyWorldV2/Public/Subsystems/LuckyWorldSubsystem.h b/Source/LuckyWorldV2/Public/Subsystems/LuckyWorldSubsystem.h index 939c4369..726e7e53 100644 --- a/Source/LuckyWorldV2/Public/Subsystems/LuckyWorldSubsystem.h +++ b/Source/LuckyWorldV2/Public/Subsystems/LuckyWorldSubsystem.h @@ -3,6 +3,7 @@ #pragma once #include "CoreMinimal.h" +#include "Gameplay/Robot/Data/RobotSettings.h" #include "Subsystems/WorldSubsystem.h" #include "LuckyWorldSubsystem.generated.h" @@ -15,6 +16,7 @@ DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FLuckyRobotPawnReadyDelegate, ALucky DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FLuckyRobotCurrentTaskChangedDelegate, const int32, NewTaskIndex); DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FLuckyRobotTargetSpeedChangedDelegate, const float, NewTargetSpeed); DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FLuckyRobotTorqueLimiterChangedDelegate, const float, NewTorqueLimiter); +DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FLuckyRobotNavPathChangedDelegate, const FRobotNavPath&, NewRobotNavPath); UCLASS() class LUCKYWORLDV2_API ULuckyWorldSubsystem : public UWorldSubsystem @@ -65,11 +67,24 @@ public: UPROPERTY(BlueprintAssignable, Category = "Lucky World Subsystem") FLuckyRobotTorqueLimiterChangedDelegate TorqueLimiterChanged; + + // ROBOT NAV PATH + UFUNCTION(BlueprintCallable, Category = "Lucky World Subsystem") + void UpdateRobotNavPath(const FRobotNavPath& InRobotNavPath); + + UFUNCTION(BlueprintPure, Category = "Lucky World Subsystem") + FRobotNavPath GetRobotNavPath() const { return RobotNavPath; } + + UPROPERTY(BlueprintAssignable, Category = "Lucky World Subsystem") + FLuckyRobotNavPathChangedDelegate RobotNavPathChanged; protected: TWeakObjectPtr LuckyRobotPawn; TWeakObjectPtr MujocoVolumeActor; + UPROPERTY() + FRobotNavPath RobotNavPath = FRobotNavPath(); + float Robot_TargetSpeed = 0.f; float Robot_TorqueLimiter = 0.85f; int32 Robot_CurrentTaskIndex = -1;