From eb30572d2982481a4b23c2408886944116502c89 Mon Sep 17 00:00:00 2001 From: ccgauche Date: Tue, 16 Feb 2021 20:52:38 +0100 Subject: [PATCH] Fixed the plugin compilation and added comments TODO: Remove compilation errors on WASM side (while using common). --- Cargo.lock | 1 - assets/plugins/plugin1.plugin.tar | Bin 0 -> 269312 bytes common/sys/src/plugin/module.rs | 33 +++++++++++++++++------- common/sys/src/state.rs | 6 ++++- plugin/api/Cargo.toml | 1 - plugin/api/src/lib.rs | 33 ++++++++++++++++++++++-- plugin/derive/src/lib.rs | 4 +-- plugin/rt/src/lib.rs | 40 ++++++++++++++++++------------ plugin/rt/src/retreive.rs | 3 ++- server/src/lib.rs | 4 +-- 10 files changed, 90 insertions(+), 35 deletions(-) create mode 100644 assets/plugins/plugin1.plugin.tar diff --git a/Cargo.lock b/Cargo.lock index d394200d4c..d8426940ff 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5699,7 +5699,6 @@ name = "veloren-plugin-api" version = "0.1.0" dependencies = [ "serde", - "veloren-common", ] [[package]] diff --git a/assets/plugins/plugin1.plugin.tar b/assets/plugins/plugin1.plugin.tar new file mode 100644 index 0000000000000000000000000000000000000000..cec6c45c96ee2875a6ab90ce8fdc27c306f06c60 GIT binary patch literal 269312 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

X;PgkO`2 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%0D`6V5IqF3a~gHa`<+Myjvq5d`Zas;Co4& zq8*b|cD)w+f*VbcN!6tl^Z|MUJHu(3D&;O#F@Z+jEIwJ+5Wt$~p_LA)ClXOv0bh*{ z(NhifHPvZ*Q>$6}l-4N-?j+=n#7JcnNVZNht4_0h4Xt;H9Z_Ue>m7g+F1(gTR1q0?}B*V8sA7-{S|IK8z| zXpbba&QxTA2D_Cc3KX5(Set!q&9p%sBwt>EafIvFdB3m0^yY=l z0pz56mlPA2<73>?Sc-l%eShjxiaerU^}e36Rla}#TZBJ_S4g@W?BHb1fi%jCIeXLdG`M1>Xwr_=NCyX597r*= zlSYB#gB+T7y(P{?WDfbOb~i{IK3o?|CaGWWB&4^LC>IQ{z+wA-&eEGPnqQ`DY%Khk z83+p*xwv6KlMwH5DHLD7ywp)#Z&->#yTq>pG}!>X@DJ$oDZv{X=EOG$~nPeiyS{JYZE-l zLvXL7$S8JVNDAnteLrU~#d$B{@I~L?F#=-nu1YDEtoEqGx7W;9TH2_#(B-)q3NA6m zH#|UrWvIwiq6jk_|QYTj=S7oA@ z`JoM@-x5~4ZLm1vjr0Nu(h*yi@GxvclDZU-PN@mt;mRh};U`+n+3HDX9LuB&Vh>|V z$55TuBZ?W)+{vU{m+#Vq%gD8{_O#M$?m$I*$Z2IR%03YfG7<<1^Dx;=9N5+dTRJdA z_ZE?qb08rotbIGp*LN-q1c(S65;50t%ZQL77ax48&5KL-L@U|dv928Ix~-2+*RnE} zQ8K|L6)BP_7j1LTI`2=YlbRNVqdOIsG!xa#d{pT;N#HKUOz{e$E0x?#O~O`zsNL%5 zk1Fr6UV$SO;PU8@oExGkFxmXImm5wulrm58AtN^f-Z%A0@V1^Mzrq{h*QI_ciO9rp z?rYew8U+c3EK1oM68z&L$kAyKP&Eq7{#>S!d*ureP_FJBdu& z_yg_D$Z><}$SYBK)IFejb+?*8+t`V<`(Y-VgG%OdS@-Clg#C)xPyKdE0y{KE}j)54W(P;cRIF3~W0W_dZhMAvBa3f^x3~Npgga zDiHN_VkXKWjFvbBzqW!%Y>7xCx|Eh-Ql%U-xd^pI#tZvFNA{Iy)WlyUB5g89KCM>YF+w z4dV`Qul2ij6L`>MzNZSJIE|^iz?2tc#v#5AU#gBsoi+x)7rq>*oXLWfC;3O z4S6N#CJECV0nEh_op3?XymcG2lbMphBbI9FM9sT&Lt0PVLoq{p=&-X$OpWGc(?vIm z+4WVZ_&{_Qy7UQ&A;_z^uJU1GJVZ4>J@BBQP5=-xt8vqJf5{$O#hfUwgFY&)@>Ifw zd@eiB+fO((Cp0}v{9rviw>@)+Jn*xWOdTRQjyF<$_zmuz0%aWCw4lPIiX6ht39W|k z#p1S0!xKzIgNw<%L!FjMxYa$51rt)q*tZ>!DOic3bf8f#U(`+Eqe4Z;Yr~!@9ux3i zbP%$)+2qB-FCdU~(0bDCUDNy{^AmhB50|LP%Y|$(iQHG2iNPiKdgF6TI4^2?s`W5Z zjZ36Kpa4@q76T(HMse{Zp;ge~VtXKF&X#yPybdOSEQ9*^WPv4Sx%4QJQlIj)=FK#s zU7Xb=XE(Ym^~<10cT$I3%<1;&@@%Q}tD8l*v9)zZRakam^? z%7~ZBV0HnA=54cTfw}QK4~{MEbQU1G!E>F$e-3^oF(Qi4#RjUT&BP?up3E!bQx|u% zo^2p13gMLrI>?-&UV``qr0xg7^qMpS)xoZD`PgTq@=>)0yYjglw zG+~El0FRnc2luCxM2ld+5(;k@=;QP))zcBFU{*JVL2aiKRs{aU83CL4BT)sUbKO}$ zhoOQiRcZy2K<`L0Z^(ow=P)}}8Ayz%c=9g_Co`p8bF=%5$E;E^aBIj61#V}756MY- zr8Jq9PILhZn4ajODb2w2$o?Zrq8w3>(yI=~w%13KsV_`kjbzrBDwh^xQQ(&H5e44x zX##2z>@j14>Wf(e&EpBC$QRhJI&guV=Kr%DNN!lFdQR;B15F)rXu~iWQNzwIe1vzE*0CQlo-p)5^XhB6potL zs3YJX?<9Ih-Ya<+j{qfsH(5Dq2CinNOsi~*Y;nuWFW-7hJ}oY6su_2Otk;pZrBH5#%Vn9n5-0vTV%lHWr--Nr%-p)6jYuZg>NJ!$|xVMt3YIcicHHA=0ovJ zl>7J&iM614FZaszHEZ4N?SHCm(%U`*o04xXk)-d?3li2l8l@w={Lc+J-7OirN+BXL z%mi*HVM<0>eU-#S(drjmTLr0VJ%X}@o`%Z?){2Vsf2c4eRI(%}7(WCCrl+1PJCshi8WRH zm#m|kHh}0O6QSycCaP9MWL4corA$`QtAd&dV#RA3Hy96{lw{4E-Mpio`r>BPcJ~~r zzD~rn?wR^RD%44wLP;11rV34FWjR`ji7SN(M^$)9>uj+!t7E~9FOG8ZcBCl|QbM9< zHI`Kskpnip7BeTUc4ohp*4nB}k_>no zDk(|5DJ?^*{)`o@yYI&6Ak~vL*N)tM_apZlxkau~egrZ#B4GQ7vm7|f_OZ?NwbMHr z7mnOQq`3!A8I(s{+qI85?lI4~_11ld1WUx?I`P#c4qe}%UgL<^U}xD2yTQT7mG*OM zcjx$4_BF>92Y>vrI2?rjF`TV8x6W@KBiLs5v14nSyT_63*Gl&oKzdxex;1S~+vCO# zd%P&OM=D~nH@>*e$$!|u1Q;HttXCiISF5||B81S24E$D!(-yEC&`^8znF~z zko*Qnqy%pOKYM&rn?){ROx(%*63ZXi!6-c~3d23ebV7wME@4ngPv*E`pvTK2QJ^m{ zXq~?P;&(T)Dez6qQi0+ir~2OlgBk_Jtd+WK)mf}W^Ul=6kBN*|BrG8=PSx4m>mzlj zLi#N9-GCd4WXY;*)mr9;_J}?lKTY%A(`;nJHs18|`(fpHsaQQtl(fqokmgh07*hu& zz60VU#BbVo<54E>;`=votH?(&j*#4Pvj0&IREHy&o-b)H5l-VWr4V9FD7@s}-Fq+h z0MsFwON}iI7r;X=HMX8 z3s7YMUq&JoFr#W5H1C^5aL~N(fkx`NVDf~!m0sz*Z%*v)ajXk0G>9cX7dhN~ zz=;4rwY~EP-Q!Rf7?cxbty0jF`;m)oaE}wwM@l0|M}7Y08!MYnaeR9)*w{FyQa#Kg zJOfH1o{or^N02VaL_pce4CZLjkLS?5g=ZkPqRhoqNnX?tc9~o^ig#UT`tIeJfzJ#) z;&M{rPfJp-Q44PIJ@7Bb42Y9DP0mqCT}Nq6+ecP_L@js<@w^#0Z6|Z7l>&q+fpcXe zNODA;G)Dxh28#Ch`m)SHfdZy0Vt~o*7K#UgNV^NpVJ<8zybl5lsQL&eASfgya~_(% z#pf^=8Wx^|fP+KU5?sGAL{UYMJd=yhVJ$yvOEMDui)0FjU-c>l5>kN!D z>(<>YM)2{xpc3O@+-cMg72RPB&)M@@s37Qv1pj#yqcXWwsQ(u|ig<8>3K~<)(Fk z9vfAYb%;qyx(te0U&}0Y&(>?1WxhKcii`^1K`hto$-bB#M!RQ?xlC_MT}*6c1uxZ= zm3v6gH-GbvwEI@a*nT5(AQQCpJ@l`%BmY#EOe>_F)#)WNVRX zJ9lsjn|P6`qB-)-Y(V%e`cV}h)P1nNo-gsGv}^{O;(d7wN3y*;I&D2$_FQ{dTNT60 z&Inqt&hW<*PnZ=v`Q(Y4rC$vl=HGgC_B?d(C&##a1SifVi)`Pjb)H3- z$(vhi{V~&0swL6dP;K&`@;BZB)_2mhhv3wP{uxh4SoV$o$L!r(k~^#{Ay&mkHX^ub%S>An7ZK2~*fxTk7y5&~x~ivBq}{O$S7U(lG!3HT|xl`E`qn)Rdn zsqT$h%hUWNEv<20B4BZ|$$x zxm7X21J}8qy_E4UCz4;a{xxf+qJjam-()s|4Q5aLE>;Ze zn8exEbNJwa^t=#=5U5hBvR5`(Ufcq#|3Z__)wAwm4K-o1Qid0WTEgwpN3yn?LPB3F z2Q6QJqiS7PUnS^6`&EC2y;E(i*E3{Ym#Szvns0AmO_1sROhBR86biZn&Ji42;~mve zTWR4J=v!y}v|hxBvKNwX)cQ|Mqf2E3<2+r@L*wsT8Ab=7?7>#>nRV(0Vf%#T3mwb) z(6g*g=F^|$y|${<`1lXn1nw*Kkrt#LQacaoVed$%;Cx zTEETT#CAxOr?TdZte;?doPV8l*!l=_+@nm$%NTrtc%(<^N!Zj)4s_43_+MfgiyAIp z!pXITDZYg-1+y9QB8lXC)gZ=YiB;OzpSu;Gi@_uD&FOCI5XE;1GSEi7bSSnL71HvGX%6sL0ktXf|Mn$Zpd zy6VZ%L((;u`_cM^ls>UOhsP?(wGv(GX`6iCzs%}|D}K9d*2enUrb$pcYq!3R=}8d; z>(c;Ejh6q6?GcWB=7c*q`F3fm3a8Av53AM(fvCl^o&B*a8;1JZSi(X%1pWzYK)Fz- zJpU|aB!Li!RjbxR3@u)CCMWK!ZTNY#6;pf>tb6HezAMG&Fw2Ef5B(am6h8h(_+atK z|Iebeq6H$hK>L)-R55EAZ)qrOZJig^`~O{A8AR+VU(X@NQ&j|)8@@P9rxA`*noVQ>8}e6V=V=l3x|Qx)X^ zFr?A){jjE=Y_Y}yDKcIR{_42w)UG3+;jxB7$<);-_O|~vxlE#Py6|Ityjtng<;XLHgj`$-N*=&tVKUp0Dm5_G#BzL8w)0$h09j0Cs@W_X_nqgn{G0jS(AEL z5rP`E^y@M_Yk&BpAqlJ2_p^Cg&6!=;DMcr1URkHS~AM*`mBqUCZ2; z=&hpxv>xHK!IYrOPE`7=-rmH=A{OsY6!>nzM^d2#SVhl67^n4nJgUj{|IVg}+Tb+} zAy?C}KG5RAxzzN(Fe$0LXT6?|rqS(vqM2`FT)nwM0pLMq?Z(@=1vM*bM89{dxiqD! z{#TX>RiJvNvX)GnoVnt^QR8guMfBQn8u|%yfM$SP2GBL{zK35;g{?0J9%}JL!Q-qc zf4f}zwm{c%d$ktMefUzg2kBTb+OvlF4pt*Rf7TEV!c@ewUV?H&L)xs*008Sd{*EY9 zeq+_LeyOmmk9{?uGaRNDtiSzQR-2x$wiS;owip%WcEbZgwJv0m_(c$jbtCO4S5I)q zj`dAng{{g&f*00L+&9J+T7UB8wJqzzj9e=?eub}!5cv%`aF8(3x+R1p=}9X|Ua-O^ZQPew!?BY`uyeq+H3}tmH4y=XSU&Wyu-hb$!mk^I8NkamZY?R#_D9bimX94(r>WFCq9-}GwLx{F4eWWE=l=bB=t9b?h$TtI4k<+ZciUZQD$-kj z$gJvXDQd@6>#e{9a)iVI)*Xt{SsQP6QMwNYr_0Bz5x_=pL`syp2{^T0&6ZGEB&F(Q zd{hqT=NJ)XyK)gnTPgZP3B*wkIIuYb$UVz#PFzaL=^!l|he>a1#jDwKjG*i@`%1LLezmOW4j3n)Bg zy;s2K?6zpcro%7k`}nM}bpANqVgpr>`E>w})@X=! zN~Ce2eMByASf2vSbf_>GM;9SiMsV!sD=R8^oWsERyL@QNKRC+x z`J)P~MVzs|hLO?@4sKJNAy$|YgJDS2hx2V6-3hR@;}$=2yRGyz^+)Yc%u;o7dkf%82vz)-BXwnYhk{!vb} zr@~OPf4KrG0@qP2DPfN*%^v(LAA^V3jeg%+t(`~+E;D& zn``PLP&`Dr{=p+yu8 z#{ZI)5iTOMD%Y1uqlYhp{`Aj7Pe>867I10}(l-iMqHPfS){lG+utyRw5>N_)$1?m0 z=?rua`rdbEPeTjEe*hiY4mpXJ2SCc1^=MY=a~B8ZmjPwd zGvqwM^bPN(xD@OEV%yu~3U4#$c`8J$T0dy!s-X4lK&zr1{AF;;1leeaM*c;NJ0pa+ zW?*y_@w>sV;+gV?ZTGUIw?iPnc!P6}^^ci_Iv?v#z5oS>xV@d_ zh4rv-BvK~LZ1co)J5=s3*a;*0=*{T!QbM6ttv}V*p=RX1mA&j5b7dLtVZ+CALp%#G z=@8wSo7b7mPwoSl_l@v9jZowm4U2oXMntflh7ioSELO?}l&@2cOh=VBll6wrt}!0? zsQcOU91GvrAV_7E7p-Pwh{h(S~K_ccr&%_zL3 zK_m({d2VY3T(y2oI#WEa2C;9e7fds=;%&g|;RjE>=H%d>+aLIflMh%wSA%+cQ}5ys zYC+4oi963V%})<0q)v@_!CK_}v<^V)UbDV!eFd=CUTXov&(kvB0tVga@ ze1T+-veu@oc5tQy8_QDqt6pNdjS~(S6;-pOgJI*$ZS6fwDNX zcu4C$bM;ziX!qnvG+p|ftdp#~sIpG4S+{7?0#oh|Dvn!gomxAm~F!_zU2hJs)CLV*hL zncb1}7z412^)H#VaC_FrS$pjPGC&Sf<;JR1a(!7b`=RGDMGX8)J_KU52uPwWNGFhc zW#uw0j2$_)dZaI$i6KC4Arn}&ez#`z4FK*stVt(diBAgWP)~##-M~1CsUc zIKW56>(lynknGxUeY9)kEq$xWidBGb$MQ5;f6Db0U>{lE1DpVN*7w5nBRyNUFp>YS zy>pGRtE%Go?oeKR0+mO3lv3J?v<&zCC~!+#P9H#_77Eltr}y4-PG_()({^SG1q~1a z24f7GA_-rB7>y)|!5Hxo6Jv-%q8}teBq*YWm}ra=L;QfEzqR*1kNcW?=FSX>aVG7| zz2}_0&)#dVz1G@muf6_3Xz)VXc@*i*M%bthy24lsR(tO)j0rmRv!GRGscUodsrAfc z+5M67>PZagxZJO(zeGw#PxXy3v^#WsK=Z9SL5lox^>Qt0(62EF7*w?< zJ}cB3qZ8Zp;C-|w3v?{g@$uuT4{G{D9)X!pGETDedYM2a#!Gz@>Nm!a+yO<6K(*=Q z5XHl)KbXu`roPFm#S~+)tDb;2v^A%G)IbHJTYKllkPn~lrrX0OtI$Vc>>LqmHYQg+ zLmz`hkEoU7SRs0Li_{&4$E)tKDhq_jalxbtqQtkrNIOPc7QJH?^)S^2_T-q#&@3B& zeF?&8o2ZJR`fdVp?p3R~M>Mf}wJ>5u{r${)rcO5HH!XqYTar63W9zFE=x$JGy*5TeOc8qsD}qQaH;5H+ka9k`2l~tmEoDcq?#uZDsn9wo#p601_@B1Jd7??rO^am|A1o50>O&DaIYD zGwUtV-j&&WMMeEdSXZ2@V%Ez7{*i!}wL4xt3gg7P-Ntk{J(#U}Q9q`>z&NzqFo-c} zXmv)u*41!;_B7$sG}1yzBp(ha^&#W0xh|p4X*uFmG?|qwS6NA;6JrDy-$#&(PhTq> z36O5b`lcN-=>sM4>+HO!qH;Zn%8GhF5X7coEo<4p``FPFB+96w7KWz02&nE7X>ZV6 zy*#`qn#Vdq+iLttR z#|oUaZ5aA()IE0Sh>oAeJd@&)Q~FJ+k;yVNf^=4E7Ku0_+^06-M+sCo5W>8XnQM%h zpHidoMB;cHNU4oTLXnb|Ozl>SuOV;5PFg#Oe=^#GF#gGBc_}s(Hk3KLC8p9}wRD!P z7}Jzn(bwJ)bsd+t9#+o;icn2(!G;9g$46BC*ywP$>#!fG8)z2wp*4pffmUN`7c+jk zd2mnVrJ)V2y+#xMfGj9JkQ*)e5Y_&R8GfCqYKtvCA8rhHRJApQUBF&d>sD_DIWC)B&6D7PPR5L$#>3o&^Mi9J&oSNYHi2dG zUty+;DWd(3^pmbIJ1o;nkN>BQ$8TTQU>vHYsAjzns9rH5M}(Ofu+Gk!3j^VtSh#hn zGUfuk2dybPj04qss%$aK{u{gRoahOzA3iiOrVg7KV-({$7*e8n-eM|PMTA6u4L;OD zpM%RWsqcr4?%cx$&&Tp5%vJVhn6KL5xh5@^r!pQdr%Gpw;g@z4pxG`F0 zqc#r`Pq8#?WO8x0DJU}~F_~aQCeGE;$!snE5%!RCd0%3}$f9F=!76j>za7F$2el>s z$T-K06Yh7BrWb|$w4LZB^%C=3g2k-G|Cm)Y*4MZW;o8wOoK!0OhWQ$3BQ+21p8X|5 zd-vRIts8>KjCEGVT25=DE>*k-Gkr!FigP>naR*IC8SDGbB-A=fpo zoB9`@ERNfyd<;V)pWtzslxmo(B8%+F5A`%Rto^Qj!sjrWK&Um$1H0vKt3M35D1xRY~;0v$iGv=;*k@=F^A64rBBDk|%@)26eWdZ(;PR zdX#S_nDRM3#i9xi*xC$v^&shh48k40$CI*Rk~n?6FqCmQz(oOY&GJ{eJuG|V^}!)L zmw(_n3--54->q^>wlYrGcSx^dq+^IU+6#=L4(e1np3>36>T{i+H{>@3Ubm0wI`nB< z`}Q|@yGb;tuH~b4pYg2vE_*qB>W!}{^$jH5pScpH8JRSHQ${^Pfsh?POG%v?>QZV? zSVd0Vnf&3BI>!4nKMP|=ujrN^=vdDH*jZNmC^K-&g1=lTj}T>xhM+&^(0iF z`Kpf>n2#O1ZJ6s-$kg>g$uIYLYK+MuNhH#>oUqIa^MWp|7n6^rmQ*QEs&^ChS=x1b zqWYyJ57Oi)qUiA?9f!4Eq*c*SO*UHx(mcw~e>TjQ#6t7_x#5U9LqcD@VeqQi5f!h& zyhT>uY6;)BFm@8?q$T#2jj^A<*xa;VPY!O|V;-m2+xF|J%i(@r6uz}6l;eOX*&C|~An2B? zr=*72iLy3#Mhsh;X?;&Oe7Z9(3(E+i!6fi=XKrY1OHx3xv(^S>7&t zw-W-Vd~A<&W5!YO&c40JYMVenT2SxKnPz*TB00laK<&;A$0*CvvJ`{^CqlJ5FBQ-} z;x+TB6MozBT2MkpwMRq-*2R)cU2335EueDehpmdgV=_3k3(nN%MB}O4FT65rDEc=6 zzT8C)1*Q)rw?Za{gUAn6L}cJbCkCA(s}tt^N2U`RLPB~6OscFE?TXam61l~}PXqbm7p}}2#T~L1mD^3yTZQZqPYncLK+WKu$!wg`fT@lVL zk(#|>qVyWf2{SS&swp4J-H9zas00MJJn;ZzbuuKD9ZNaVkwIca(C1rCKSknA7Ee4UNq~UG` zL@UgYh0_9aR-9&gAq(wo!8t35As(vKXs8kaot3vsVUt9EdPrv*#6VyW1q=qt>iqky z*vop4C}!QXK%HF`YmmewbgHL2*4foFVv9APW2Ha=1LU2xN-kZl1DSly#yIUGZJx$V zY}sdH@LB-XDx2C@Fa`9qjhbTOm=aYp9r(0s^$<4Jl$km*+NJ~XKA8qhrv0Xld$xHd zhPDgv*_Pe(Vuq2=uIs)W1&5|w%DTWh*8%R$x{h-y`$Lj|U~66)M8-Q8_$Du})19WX zLnAs=VSwKgo`|z_3aH?WTLljmH06@BO%{;p;xX?K93lYH69RB_bUdAoxhp6Lz`dI- z)dexI>;o_5Y(JY9%l?#(xMjD{6y5PaLo;;va?#kD@>$PU-N=6OF9ZB5$yrU(9DNIC zyqVIH)Sw-Zo5n~BipZ47)T@53UQfAI!Ai(D*B2TZVCaww=wP-5DF>!)36w#AlZ#;W z0`_r(m}G^#7Es#X(ch2Tp}(IbWd^`%%j!)cnL0@vZKOr(GL%=To~xBpj24(=S?9(& z^%so*Y@&Ac@KArhcZ~DaK#77O?sXJvO)v3CJ`Q>wxJo_{;rX(&Q!HiUsL6`cq|n^@ zbWwIr8WMC0R}?|~bn{*drcfvYeOdFoY8EB$?7D)gwWCP8pbX>Y>(z-d;a3o1(q5^CRITM*{yU$Pm1*s3F(c6Qgu&p6p>qMDTDu!5s`y1Vt7DG}sl3A&Ixr*76rFFS#q2xMuJ=I5bb6}h! zNQo9O&i!9D#F>NOj6rY?JZ^|G2f`VGa2^PDLLx75aum+$f+&YyEnLY3zWylyY}R*L zH8?XEn(iI8x~Nk#1di#6M}9I`$Ou}p1-#PV5-*#qk`{c*gEu6tBmqF>pe*3RhJ+v5 zpj~!^n;hy7|Lb~APUrRo@oRp;&=D*{wH@8;^*5?IVYFgl;^zE1J|La|t=`sgJe z&0KX3^=6r-(#2Y?=z>w6NdYpRb%vKon24OBBliKP%O-rEK%i6DFlJA7RQ|H>eR#f( z_1JSdsWjb*I(eS@P7_GZ3F6u3&EE|or&?sQY^VVi}}#35g?TYm9tn>Df83(7t1lDfSXT)*jr3z(u(KPg`!$15kj;6!$biMAoY>F zYt}n6^%qD;$I5F~t{NmU@2FvhRf`u4BW4bHW8Bzh?(~b4T6Ndr1;FF7+~y3)kh#qz i=*Jlasburbw{BlG^)}3vn4`cP1?DI)M}d!?0{;c_k return Some(Err(e)), } }; + // Remove the ECS Pointer to avoid UB self.ecs.store(i32::MAX, std::sync::atomic::Ordering::SeqCst); Some(bincode::deserialize(&bytes).map_err(PluginModuleError::Encoding)) } @@ -120,6 +122,11 @@ impl PreparedEventQuery { } } +fn from_i64(i: i64) -> (i32,i32) { + let i = i.to_le_bytes(); + (i32::from_le_bytes(i[0..4].try_into().unwrap()),i32::from_le_bytes(i[4..8].try_into().unwrap())) +} + // This function is not public because this function should not be used without // an interface to limit unsafe behaviours #[allow(clippy::needless_range_loop)] @@ -129,25 +136,33 @@ fn execute_raw( event_name: &str, bytes: &[u8], ) -> Result, PluginModuleError> { + + // This write into memory `bytes` using allocation if necessary returning a pointer and a length + let (mem_position,len) = module.memory_manager.write_bytes(&module.memory, &module.allocator, bytes)?; + // This gets the event function from module exports + let func = instance .exports .get_function(event_name) .map_err(PluginModuleError::MemoryUninit)?; + // We call the function with the pointer and the length + let function_result = func .call(&[Value::I32(mem_position as i32), Value::I32(len as i32)]) .map_err(PluginModuleError::RunFunction)?; - - let pointer = function_result[0] - .i32() - .ok_or_else(PluginModuleError::InvalidArgumentType)?; - let length = function_result[1] - .i32() - .ok_or_else(PluginModuleError::InvalidArgumentType)? as u32; + + // Waiting for `multi-value` to be added to LLVM. So we encode the two i32 as an i64 - Ok(memory_manager::read_bytes(&module.memory, pointer, length)) + let (pointer,length) = from_i64(function_result[0] + .i64() + .ok_or_else(PluginModuleError::InvalidArgumentType)?); + + // We read the return object and deserialize it + + Ok(memory_manager::read_bytes(&module.memory, pointer, length as u32)) } fn handle_actions(actions: Vec) { diff --git a/common/sys/src/state.rs b/common/sys/src/state.rs index 22bded5950..a58cdfd26f 100644 --- a/common/sys/src/state.rs +++ b/common/sys/src/state.rs @@ -209,7 +209,11 @@ impl State { ecs.insert(match PluginMgr::from_assets() { Ok(plugin_mgr) => { if let Err(e) = plugin_mgr - .execute_event(&ecs,"on_load", &plugin_api::event::PluginLoadEvent { game_mode }) + .execute_event(&ecs,"on_load", &plugin_api::event::PluginLoadEvent { game_mode: match game_mode { + resources::GameMode::Server => plugin_api::GameMode::Server, + resources::GameMode::Client => plugin_api::GameMode::Client, + resources::GameMode::Singleplayer => plugin_api::GameMode::Singleplayer, + } }) { tracing::error!(?e, "Failed to run plugin init"); tracing::info!( diff --git a/plugin/api/Cargo.toml b/plugin/api/Cargo.toml index d35c2a3a30..db865e87e5 100644 --- a/plugin/api/Cargo.toml +++ b/plugin/api/Cargo.toml @@ -5,5 +5,4 @@ authors = ["ccgauche "] edition = "2018" [dependencies] -common = { package = "veloren-common", path = "../../common", features = ["no-assets"] } serde = { version = "1.0.118", features = ["derive"] } diff --git a/plugin/api/src/lib.rs b/plugin/api/src/lib.rs index bb094c73e9..510169de17 100644 --- a/plugin/api/src/lib.rs +++ b/plugin/api/src/lib.rs @@ -1,4 +1,6 @@ -use common::uid::Uid; + +use std::fmt; + use serde::{de::DeserializeOwned, Deserialize, Serialize}; #[derive(Deserialize, Serialize, Debug)] @@ -18,7 +20,34 @@ pub trait Event: Serialize + DeserializeOwned + Send + Sync { type Response: Serialize + DeserializeOwned + Send + Sync; } -pub use common::resources::GameMode; +#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq, Serialize, Deserialize)] +pub struct Uid(pub u64); + +impl Into for Uid { + fn into(self) -> u64 { self.0 } +} + +impl From for Uid { + fn from(uid: u64) -> Self { Self(uid) } +} + +impl fmt::Display for Uid { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { write!(f, "{}", self.0) } +} + +#[derive(Copy, Clone, Debug, Serialize, Deserialize, PartialEq, Eq)] +pub enum GameMode { + /// The game is being played in server mode (i.e: the code is running + /// server-side) + Server, + /// The game is being played in client mode (i.e: the code is running + /// client-side) + Client, + /// The game is being played in singleplayer mode (i.e: both client and + /// server at once) + // To be used later when we no longer start up an entirely new server for singleplayer + Singleplayer, +} pub mod event { use super::*; diff --git a/plugin/derive/src/lib.rs b/plugin/derive/src/lib.rs index de4e96bd21..69fd927fa5 100644 --- a/plugin/derive/src/lib.rs +++ b/plugin/derive/src/lib.rs @@ -16,8 +16,8 @@ pub fn event_handler(_args: TokenStream, item: TokenStream) -> TokenStream { let out: proc_macro2::TokenStream = quote! { #[allow(clippy::unnecessary_wraps)] #[no_mangle] - pub fn #fn_name(intern__ptr: i32, intern__len: u32) -> (i32,i32) { - let input = ::veloren_plugin_rt::read_input(intern__ptr,intern__len).unwrap(); + pub fn #fn_name(intern__ptr: i32, intern__len: i32) -> i64 { + let input = ::veloren_plugin_rt::read_input(intern__ptr,intern__len as u32).unwrap(); #[inline] fn inner(#fn_args) #fn_return { #fn_body diff --git a/plugin/rt/src/lib.rs b/plugin/rt/src/lib.rs index 3a85a9275f..d8aa0d4006 100644 --- a/plugin/rt/src/lib.rs +++ b/plugin/rt/src/lib.rs @@ -4,6 +4,8 @@ pub extern crate plugin_derive; pub mod retreive; +use std::convert::TryInto; + pub use retreive::*; pub use plugin_api as api; @@ -14,22 +16,22 @@ use serde::{de::DeserializeOwned, Serialize}; #[cfg(target_arch = "wasm32")] extern "C" { fn raw_emit_actions(ptr: *const u8, len: usize); - fn raw_retreive_action(ptr: *const u8, len: usize) -> (i32, u32); + //fn raw_retreive_action(ptr: *const u8, len: usize) -> (i32, u32); } -pub fn retreive_action(_actions: &api::Retreive) -> Result { - #[cfg(target_arch = "wasm32")] - { - let ret = bincode::serialize(&actions).expect("Can't serialize action in emit"); - unsafe { - let (ptr,len) = raw_retreive_action(ret.as_ptr(), ret.len()); - let a = ::std::slice::from_raw_parts(ptr as _, len as _); - bincode::deserialize(&a) - } - } - #[cfg(not(target_arch = "wasm32"))] - unreachable!() -} +// pub fn retreive_action(_actions: &api::Retreive) -> Result { +// #[cfg(target_arch = "wasm32")] +// { +// let ret = bincode::serialize(&_actions).expect("Can't serialize action in emit"); +// unsafe { +// let (ptr,len) = raw_retreive_action(ret.as_ptr(), ret.len()); +// let a = ::std::slice::from_raw_parts(ptr as _, len as _); +// bincode::deserialize(&a) +// } +// } +// #[cfg(not(target_arch = "wasm32"))] +// unreachable!() +// } pub fn emit_action(action: api::Action) { emit_actions(vec![action]) } @@ -51,9 +53,15 @@ where bincode::deserialize(slice).map_err(|_| "Failed to deserialize function input") } -pub fn write_output(value: impl Serialize) -> (i32,i32) { +pub fn to_i64(a: i32, b: i32) -> i64 { + let a = a.to_le_bytes(); + let b = b.to_le_bytes(); + i64::from_le_bytes([a[0],a[1],a[2],a[3],b[0],b[1],b[2],b[3]]) +} + +pub fn write_output(value: impl Serialize) -> i64 { let ret = bincode::serialize(&value).expect("Can't serialize event output"); - (ret.as_ptr() as _, ret.len() as _) + to_i64(ret.as_ptr() as _, ret.len() as _) } static mut BUFFERS: Vec = Vec::new(); diff --git a/plugin/rt/src/retreive.rs b/plugin/rt/src/retreive.rs index 049f32e999..1a805307ed 100644 --- a/plugin/rt/src/retreive.rs +++ b/plugin/rt/src/retreive.rs @@ -7,6 +7,7 @@ trait GetEntityName { impl GetEntityName for crate::api::event::Player { fn get_entity_name(&self) -> String { - crate::retreive_action(&Retreive::GetEntityName(self.id)).expect("Can't get entity name") + // crate::retreive_action(&Retreive::GetEntityName(self.id)).expect("Can't get entity name") + String::new() } } \ No newline at end of file diff --git a/server/src/lib.rs b/server/src/lib.rs index 2f4d792e72..c45175d2a8 100644 --- a/server/src/lib.rs +++ b/server/src/lib.rs @@ -1037,12 +1037,12 @@ impl Server { command: kwd.clone(), command_args: args.split(' ').map(|x| x.to_owned()).collect(), player: plugin_api::event::Player { - id: *(self + id: plugin_api::Uid((self .state .ecs() .read_storage::() .get(entity) - .expect("Can't get player UUID [This should never appen]")), + .expect("Can't get player UUID [This should never appen]")).0), }, }, );