BT@M!ycGeXfVS8AiDu1?;h&u
z0;C<77#K=|fPAN%{3Ia1OOE}#wSA!Xi
z0m2Rp91K!HlV>n0P2R&;Ah04RzVztCeXd(}C`>JU8nkz_4%0I>#>~mWoU=9`;@sl8
zStCG@d2*S5?qthgv&ml_6(%zWs7}rgHmwf}IeCX+0Ruyi@BPdRg>8=0ZGyamdh~z0
zC+4OG6y=xX>lLM@>80f409}*MBlr}g_DJcBx#bI6eA_j{LW;sS-U!XhEU9!&$t=k)
z(hK!O(qOYt>o>y#28PEAR|;Pi-0!?0Mys-T^^Khn4SDIAc^;{#I=F5=S;hbiEhPs#
zu}_otJ5E$T`tSP26FX8niI
delta 499
zcmdn8l5x&T#t9}d4;UC2lBT@M!w#5OXfVSbAiDr0?;h&u
z0;F}AfczjJ-zg_Q3CN$n>6*Xtf}LLLB3~@J=-mGNoavU1i4$@d*(UzgjFbZ^WME)s
zPz_>X2nu3iU}9hdLJ$Z6VipEAI3Fa+%D{!f2dM*zGcvdbF#~CkGg-m>)XDXX;!LT+
zljkuiP2R^?wAq2_85?8WWOdG2BKZX+nYo!&i6xo&c??CVIjM=oshbaQZgrjPXevB;
zW>C~*&0yEfrT&7oGO4SDIAd8VnTIkx}kDZN?fsI9rmkksI0-TexLKIYV7!NQ68G}UxIk^!=rgDKKBEhl%M)r-7
diff --git a/Client/Assets/Test/GameLib.dll.bytes b/Client/Assets/Test/GameLib.dll.bytes
index 6cdb2a7029df9abebedb4ed65cd6127147bd49ca..d6940b293e22521abac6e2974ae7f4137bf81102 100644
GIT binary patch
delta 541
zcmZqBXwaC@!Lm&A!GeiBGK{Mxt_)`kpUlXp&RU|$zz{N7kx6HAB%?axkI9XU^@816
z3}D~^B$*gk87@o~WU`l3V$$GZVBlf^NeUaVFhl}rMg|5!hRG>R!NT0y4D4EPB|ueN
z44V%#ZDq{7#bC^Mnc*G-8-pC@?M21~VAAxdb5xmI{S)5}v8PplH8Ppi{7`Pd}GUzb~GyDUR
z(hRbU$qdFo@ni;T25lhe%wWRUz~BuOSpX&vgJn5@Zn6TJ$_uoQ14tVJX-)rB4>%kuZWvMt_7#f(%r3d#7l-k<;hOtDgP!pcsOJ
nnIN{pL`5;i?#YEbnww|xq%v;iAFoaB2WYU=&$*9iwVsay6y&ne0X6m^8Q;7`U{A4OkdLfHI5>41$w0nSyz=U@~l4Y@5$BZDq{7
z!C=gInc)rt8-pC<10X2^CMPjJ0kYe{lJ4q7C(NQJb8sm!v#>Kx*5~@k#KbUJ
zi`!3}fuT`h!e<6X-vB0{=2Rfw0}S;&lY69{qOBvU_a%CsC
zf86zD@*Qr6$?`lBMoBT@M!ycGeXfVS8AiDu1?;h&u
z0;C<77#L)NfPAN%{3IZM(zo3od7n0UZ(ONtUbFV*ofHYZyAvnmFtShls~Nd55U7HI
znc-L<3&W2OiU)8Qumm18I;mS;2gP$@Prl
z9Dc$M3>*xH0w>R4RGPepu|Qx&P<-jpiThl)>`<6m_%vwmW*w#{Y>b(c1vzJJKES!f
zb+cN4AoJuB|J=#u!Df>m`nyif4YrZ6S*Z1!;Q<4~-VmczS-kqj&dCRZ
zB`vvbK3T>9bhna&o!FWBVQ#mgBT+>$Z`Cf
sKtD1uObSuZy2N;ZA@C+xQ~)B%9h#R}Qt6tPo|%`*1(Xe90V`nu0B0Rz*Z=?k
delta 408
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
bYT}{y-reJS=O3#0x_VFGPk&Xmm)ZXx!*bUb
delta 15877
zcma)j3wTu3)%H63%$%9b{gO;VAS3|-L&7C@5)79F5)H~tK#8IuK)`%L29lscNX|ro
zihzRS1@A@ZCtliL~jt)v8pjR`Od>tO82)7i(LsrAqb3?_K+xWF`sp>3N=6XTNK$
zz1G@$uYEb25Iv+u52-tDwA{byk&`>O4H3v3>c-X_pAefPEE5_bQHcDabr6xG
zLl9X+I~bNoIEI6TnRl4*?i6B(_ro^$ZjvLqVXEiPzXyk9q=hCS)fX
z9LWOX!(6uRW8bMX<7|qpM{-M+A)JQS2Et1{NuNDzyb_uh!1hy;A
zwk5DbaW;krwhbd$23uz}6pWUs@h+RNY4
zW%7^eHW5Z|$%HlXm8h_gz{1-YhHx3=$W}Qfk#Yv522dmL8yB6|M^uq0Li#1tnj9DD
zT4V|%qzxvU*6U_!Tt$miCW0yk6U_iDk!gM5bcRDk>moLWcZA=;e3cM4CL^YMdk~$L
zQWP?hOxIebUQeqd)u`9O60?~cFlM)*9j;-kFwoafa-t!vWl^sk7WB8nytCNRIii%l
zhF10(VnKgH%sY!AwiD`WXIrlw7WB8nyl@TYf9_2!k3cny$(0wr0E{uda4lY8%+tIG
zrdZy{glQed^5H<23d%;0V7mI%ZAkLLYp=kH=g`I=jx?B#%tg;@k&9RvgFBPovIi}M
zu_5^KW5rC-vHFPsWu3yggY_agzhk0p1pjO%mhx{DEG!o(2U?0L7FH5>3EffmRVHPG=KVe*kmBW;wZAK|A
zl=V~CH0tt7-`8-wE;`zjVWa7(YxvA1^gk!n0uB$)q0}CgmS-^}sbTb@<4~{9mcwyo
zud$XN;>@0AIa-F^&{Mr9anCngAcTuyG;%4%Cp-`S9g+DUCU+sY5k%thr3^mg{*;g|SUHd`H3{azb*zo?xQyQjf*afujGh?HUIK*`N1m&bbu{gMEp?$oODp^egUq}BJFtm#@OQGFh%85yF+*B5pd})*0w8h~(Nssc
z3B~Y#fxwWVc{RYuFyhx7otdcH$u4hhDh%peFj3lNVeG_tvGuOJ2K7t|haFHw2O44t
zsP+zI0N%C^tY?;_y)5mVfnv_s)RCR&d&?Q^CLSm>(UB8niDqwY1~3mS2ptLH@8oue
z3X)@fcd$CQle^{SrnJi(I+wIC_WV3uHeSXewViosvOgrqNnI$r&UU{ob)nOy75<4W
z4acfvp(uPLu@AN-Zs8CeT06(Bj#F}D&$-8>GA~IsLH3N+&aI0?Vn4V?x!A-nV8Q_t
zu>wzu-fXue-6qXQHL(V(vWTpP1_Y@K&nZefw`kBgL`mrj-AP({UBR}zj2^GL=)SH9peR2?K;_qZd5otl40Xf(=1r5bkD30V^3n@4XRXf?GOhGP~$V@@0
zkQ4idH%CVza`2pp*d}EnqNOqsVGD`K(oQtmNJQ*%NW|^%VkRO>&YptYJedO$nRroVfStY51n=3nAYv-Pbw8d8YN9jFDivazyu0wXEQ(AY0+<8V4
zvk6&Etnr{2SsPE{bBH*J&mrO@HbpveAZ~F$7N5;PViI42Fp$jcd1w$P^|dA*+YgWL
zhYJkcUdTDh28#MB7$=osLhU$@1^6)Jce|DdY>5C%Q(O&eNE~1_hyx^k9AFSFdarE^
zKwN}AjsuGU!po7Bk?XjHIQmPlE)kS680IA@!VH$X$P+lJ@uQ9jnr*Pcni^RTLZYR!%)3x
z2x0UwG>~uD8OS&6EH>>xtJjXskq#6Xh6eHtL)i6Y4*~TWVmkx*hMj?Y!wwDyx-=B+
zX9$9Re8bQ{zF}yoso&Ml&Op9lC(hS3AVM9GxyhV_F&X%0$yR#-O`r@p7G!6VK%>X(7%rP_!^$6m8!_Yv!VW{3T6i-gW
z&Op9lryn2r7cmSiHVvUa`UEtPZx|ZLH|#W+cF=!)>1hP;TVrE4iXQfwzUD4dc8k^8)QQ
zhuPRqB%jAWEf0
zuTm583RQJWJC9%FW~d;saDIY|{)sghA2z>5cR>>ltDuitrHjM2aGmz)fC0;ylu7tB
z^;=r*z{g|+DW4a#2CQLpvcnxv!?$t-6(W@5kRQJ|jaH+Y*f0(KkF&T4qb+$y|4Xzp
z+buTm>r4ths0WJ_vkt7>1}iRm|tF5U^^JUS?-iOe&GdHFHz*TTCXIhx#;
zZ42K8uF*)Mxi-4>E*dl$!IvT&xK+bk>nbxHTy2l>3z4Re}K-@7QFQ8J%}%2tB-3%TvaZOj#^4#
z^FD8Bz(b`yj=v
z*s5Gbba^sSh+1%#PN&Jh^tNB(3-F6Y2CQD(BK>+c6mWRcN2k=AoEEJ>+yrPEyqBAr&*m|h{)#j$v;Qy|6dZfV`+ffaYl~Z2rCEL5n}yqpbpyZb=#^a
zNnI|gsLj1xJfLg}azKA`tq&lRg6jhzdJvyM7gNy5O;yoUjZUCnb&YOzb0^;gdI@c^
z-pYwipUbpWkjVBo
z6bwsr5TA7(O4A7|1k7BDF4|3Lln3WN`UB`BOs%mL#Tt1T5{%J!iP}t*j{)=1mBF`?
zw?I}PQKT2K%}0{oN)AXFqnk}sBK_TKBKXK*Ir|EtvfV%8;mnBJ?17Y!ndJY?o+=
zi8hiG^|~=ITOiwvvG>s|*xiEWZ6=+CJJ9)Cu+rT~YPOHQhw3DZ)Qz&DA-j;aCdg(1
z1z}=^G&6^8mS|Hi(rAr;rB$I%+-=ruO0sl-)_A+Xnc>@nvdwWbXuT6ur@y-y><==n
zwJ|LWG5t%5(nnmC1uz3JprR2h<|za!D_gwB3C_`0G7;tbTee
z-|>Wsh*a3gt!ML@}1u@
zRlbG3&-=YeHF{b62+ijt&GO%avXJ!s6csB;uAMnEJQ~UuSUI?%+WaKrFPGhBTuqiB&!ciuA$2J>g$|c$?%~+_?l(88L%`_2Pu~40f*ouW3
zO~h6#bge{&6)Wiyb>Uo?tYIa4rjPK~2C{z_n6FvswLY>7h8wM@M(eHgQ;9xPeudTC
zN-?nzG-yCIi))Xsbitqc~`x
zgq!WNy>*(47Mo~?xDx0p6WO$-K#!Z~l$FtUCYm8-Q+aEn&GtfxHc8Y)o3P!uXrCdI
zLkKHzq(k_uga_%kXoAsC<3e)NSB#XM^ju)I=B9-sr3-1sO^YSkNgp~h6znadSk{A<
zN%RVpVVKZR?5rVP|eyG$7e5yBN_<>3$G>nV>m{-W+Q
zH+^Jp^r`oM$7BEHoDC*_1l12rq2ch8J{7;{gZ|!&PN3fRX1x^0FR;AY^9`G;oQzUT
zL>@-NO!RV)(fEA+S8%wmvoWkNg%^ex)tbmI(IqCj)Wx!;CVE~vTx}rCk(1g`>M#+n
z2}9{76Y-ibl6nC-VyYSS&su9L9Z~P=`9Ow_I_zzR_CckRSp#u{*G!9g?jifsMev^T!wo!DQiJpf{PBX|3T8BCu
zHaT5@^n=!GoDLh$5Pl9?lROR^PYHewT7MsO*ko!;w9MwPaWeCB&{`jI*f@Lnfl(lt
z1`;iHIc%~!C3*`E@i8i&gVq<|udoN{)*QGfqR(ZdA1hO_9Tn4?3eFgUbU_}hoeC|*xxa^g
zm&9d*8q)JrAC$8!%-`u0_~JGAf5BN%q3#gVO@5{=ICd&HYA~JbWO_Y5iv_*x;_rtU
zDsy&uxLkp+14T~+=d6(K7U3T2GajT=W2FIiBwMn|4F&R#wLo;GC{4|Y&~%y;e1O)8yF+_1nH=t4An`)3{oqecejY906HYOGne=PWU4hq7
zi%r)`x2KNzc=N|iUP?qi%ms&rghs6rlpXmwlq3vtBh)TRpLxx~
zb<Ahd8Dj5f6xy$`BdW*W%)2RaDAuSJYi89`UeJYE2V^)DmyD$Og?9BPhrD
z0F72}NjXmxs4;J)$X3pGULb1K!`@k9uKJQ^zNk|lNx59q>FPebMo816)ziu6i8hpH
ziMy1G)rc6ao=G|n(gnzgBjQfcAsW;N+@H}#`p|Z_*hpIPUeNoTPl|2Q!Zx({uvnwc
zwR|YL)Gw`{h?8P>;4`sBeB<~7ZKI3T!{T)@%kibSO?nwE^uu1EZlfH>VK_cyIZpRV
zL-$HU_sR3pd_ANt4XF=@Jij;U+Z2GS*6BI%zc-7aYa
zbUx+ia6Dfo;Qz=3{2!Ta^C``v;TxA*vq&0UB!gHaH4jM515$I5)O=VxW%;eTMIEEQ
zrM^PLykDws(%Z?QZ2Vf0|{B+8xNSyrlfaJor>VCS-Zc$l(ILbe_
zPXm3$t}j*D!A2=qYT@!8Nl!@HVCBjU*5@UC8FaVg?3SF}R^}YHwt{{v`5#OE$C8hK
zJODpiV++|DTgcW}zfy84C8tuCtOm(ykgNvD$+B;yM{URL++wC*NP5afNz7sTg`}r!
zS(3x_3t2v8n<_a>zmVlqw&T7%aBRnt{HEMJ2n#bWho(nfyZd_n_u(o?~cjUtX
zD@d7?0oy+WQn737bPfUC>dOK3`wKy@@>l41&GS}+?h!LUo!V^B(^jUlWVuw*=Ta7c
zV{z4kPO~(Ej`c7#%2~-*_e!%IYf!$<$<*m#dMLG>Lg4W;~OJMk>VBAL{EDg74et2*xIiMb8
z6t1xGSGa|^*=wXIX8SH&j%6#OmFE=_E5r?Ar+88PON>_+t5>NvsSl_p)PJhiohIyn
zbABK=wL~$veV!kYF-ATa>;lW*!Ri0pj?)pRpPSD=J#o@z)zjk55|#%~zTZ^JR8M<9DSgE@ak;TJ~M
zj>eClOXJAI4a5^+0SCtkw)xAd4eLjS}sSv^A4YPRx`
zI!bZyNL5TOudgqdkzb!r74z0EX-N=!OFIlhMIXZ7Z=d1wJTRP
zELquzVr_Nv+EtA$CYsmQ(AHSh&>H)4!n3i*%R=YRYPhCpMMGOtq*;mzi5Z1dTid*P
zZCmA17EFt*T-hi~g;X&u(!9KBMb+Bn%NtuRiZm>1Y?-{QzP>m%xqOHyEalgGYD~s^Y4e36;~!%FD`%YbF$wR+SYM
zmlqUGuP!PmFDNLF-B&*Lg37X*lB(jG>cY~}D%6-zRa8<^S(#r{S)M-)U_udUR+Us&
z<(KByloyp(*GwxYE-tI7o?cKq9bTtXb#vpYb(OWT*URf{*EFnL+gM+}KYOA>XcsoF
zn-*CX8(py}SlzsAUc;)@D;ue*aYa)zmt&7sEFD%`)4FPAWZ7B>7Bn}tt*dT^v~is5
zmWvu!G%Q^gvrXzuS=P9+tzmxCsz$0@*|fB2eZ#_W3u5VJl4~3rQd_8$^
zXx_C=ZA-6`LncSe7{Zt~<+j*UQ;PR%Q@>UMiE+JbR+uHCJ$zM&)SbJB|I(+`rGUr9o+uJb#vnXr-ftk-W2=0;>b7p*L1|0tGNS8Vq|D
zu_Q>Ep%B~JU7}k^QHJ0oApBi3Ih-K20Y&j(MGAD)x$+f}66m@@8Hx`divvNzBp}|9
zKv#ena53@m2Qs8^6pfnijrf*KuNZGmFiH2xbr!j=wBdTlQD!FSfSb!j~FV4&||eB
zh#PT)fV|P)waJc#M&I>!ZSjzmOAL7U9N3sq=5c{-f7k7D9J_9}VywG%^Jor9(<;!$
zK-bS?mqd56uc_S4e#KvG&qDRL{9P%`oo+=?iZDC3TgI?0*6_|?9qsT(w;8?h5rze!
z+FdZ=R(kB%EOxuyAKk(I79{EZ1>_;dS$I62Bp*i8hYqo$?VNL6gM{7gLK2!qyWL^~
zNBY^3WV85S3I-i8n_5rZ=#x8m?5Irpi^;K`a
zqDm%G8FCK~ee|TgM^9!JY9lv#tT^%oItBmgG*odrFsFKKZ?j}khLvYBj>RzYaYoGf
z?wv{U5M#liAh!G6NA%TpOgcIFR4vei-zsLv$pKK%12ziHZqWkKonS8NVRl=!4D_g~
zW!T-Q6dy&&-_?g#CNvKWbd@kEw`l(8Pnqa@VX#uw{B3xr!ID*IA_?<8`u{m%S(07F
zK4qqH6t_vlL*K(LWA?pRT7(Bv%Er^JT=8(*UFd~C6NvvhCL54am}(klDCX4=BzyEm
zV|{vymlc08uI7vm=#DkKH&ididSU0a0KQ03eEwn={yeBF#R#X&;FZZlEs?aGX>=zW
z3#74goE??GD*ttcm#Bd@7-%EE{L$?^!;rgSglZ4VWd-XC7fN~-m?TDWNnr)Kgg_mQ
z0@+{%iFPH~dm|tJevOKQUaaH&g|VaWuZb-@a&^J1b=Q7N%FH=@09=9Jw(s!!00r~m
zb0YqzLH;w(H;{c3J9T8Z@4Z*9d3N(FFH}GB=&DgKZ4X=&3x6;*cJ&A8g{GkK3sV5|
z*A|}s@i%Sb-g^80q*rdJ!a2U@S;Xb6o!KEV>vZhx4{{wp=3oQzvG~?M78d(9^gB_p
zz~7&V%?m@Z!Q9dJkNe|e!ivGc|I_*ESa!fCiXfsm2!bFW5+q9o2WH3!$Vv}`0wx5;fMFH%n$gw8
zfQpJ@R@NLa;mLtdq=j8}8Qgb1TmM9~{#=6j8R1Nu7oc9j(@q{!`1NfRcbj!v$>QD}c_^KMrc6^UBCF
z4J%ZTYnm!5OOruA0#wswkOdALl0i<8p8-e!WB}$5=vP2~58w>VS?G2;3vCtRYq;pV
zkV_%4h>Jb|{4=;{3qU86i%c?k$ObS9-~uQDd=T+a2c+g%_+oifL8l7nIGrk@XLPEB
zWV4l!6~I0l+u)T!u4Sfp(76UBP)Or48q_L*aA192cdsR;(?pdLG9kfD+V|R_!P+F2)jVJJfiv?E(XPTP$&;va1OXDaNYpNb6^64o~=4V2>sdjQuP;JCq4fEf*N
z+#qjc_zm}gS;Z`$2D6A_D*QmfrxZ~=p3e`ySkJCx4g7l2bj
zhN2D>A_m7j%3yHZqd`8{qheU5CIdY(hQ&m|q#We9hms*2--ECouLt|FHKKo?7~c6}OT=$wIub5hz83gM%L$@k1hk
zc4X;5iuW`E-OSR56mOsedYy#>Yz*}SQO-7n)C^DzTc0sh`y|B*HbyNSE7-;)7MtJ(
z!PW5~WRRLpA}tRPY}C$bB{;}^_ASV7SLmeke?eZXgh;H{BH2iy;so-!dLk)=keV;e=SiqGX?pto%It#9W1Fg3Z%0
zwi@YFEWNGbO6-%Wt2&e7S5iM!Z@x{bqj90|)eWCX`9W28*DEAg>lUz%9sYdwl|lab
z-n$khS^Ixe4fXNMj86*9N{Y`*28W7Y9G2!vudDKjJyH$sB(n6iG?eR3jFztAP9gH7
z54ax0VW|nvjg<6B<9RD7x3bW(3Js%_>P!5;l^=V^HC`@m))cTb1FOpCJ%K58BO*5Q
zo)ec+-Sd+FX0u(r?Z(FAFGi2>m!1i~u9e&3<~XI{&OS3gt86mX8l!R-NtY=zI5)`imRAVQ$ls>kIonI(9#v|IC{b*3Reo7dswR
zk#ig_`|wKL7Gi7L|*PH4;9b4Ar^fs<2TvkSW
zHaNPa=g%FhP3E;*%IF=fH%rk7|AZE9mfq3)DJ
zM;*EymzHsqHyU58_I$oqFur~Pb)s#=Ch5i52U=Y>SU7&nS!!|ew}*Xhqbo(5)Qx?w
zEU13ku|TceK0wE4!6W;JZ1vuiOWRJIj@OXw;4Suk9Bz~}Nj^W@Cvc;ovLr_PS&ETl
zd4;>@6(4T0#?k5^c7s~^wO0GR>nvB)mLHy^SZlsy#bJ@Uuux>cEqE|)^&jJVsg)l3
zO*Mc2AX9!V%kSqd%cTp*UariTHHIpM=YGC_Y?=I-fN7sg3VeoX$RD_CTW~vEP82?}
z$?oKj^D13W1Z)+(xY?S0>3T%Wn^J`n$8LLWZS}C2Fy(9ySN-5mPjc6s_^B$wZrCGM
zb9Z!I;#B25{(hJ5pXod6VEE(O#U<~S`)`{|ZQH~OsqAsITr;|1nB|)V^5$uGu7+}#
z^}Kqon-;0^Ebdxq^+fb07m)(9zw-ja|Ww
zf9|f4XN9dl6h-_0X@l}9u$&asjERCzu7
zU{|x{bFo2oL!t2E9v4aLl5y>8b0;1tdhu7%Fw5Q4yw;B{YXdCZ$A3%~yvc86X-qCI
zDEZ^0hod3C-C(2AnsbHg?4G~;0fo4B@1Cs_5#)Gj;`#u&Pa=oJ;67nlV{NbUw&xRj
z^A%PYerk`Jk!>L;R4y{vMp#DfTX(W-^0NcY!TX-n)|+>R>1+>(_%-K@$=zQy9ZSx>
zc2G*V`X=pH>Oo$PPw*+P%EeE_?v7;Lt=^N}at;ekb(ehz4Sjhp`UfiKSmhy05of=}
zhoreW?qf_H-R9X>k9qv&;!%Yk{R}n!#Wi2EO(lk#Fgt7P(!Vb$RMdyhJFNWFW%Coq
zh7T3O3$=0lziaJ|7q(ol-u-;TPWw0?PL{8=wt>EJ_`1KcgQz(&b}KSPto`Mw9+#3r
zZkL`1`q0>j^Qlh0m0M7dtrvGDn!
zs3SlBEiR>w^ndhfnG@0S{h{r5
zcG}noD@O^)j3-;Pn%~+auRZc)R)qDoNwxbnN1wm#-dK7g^gy50u|iT1a5DCnx>c^`
z<-6vljz5y)H8b#a5|z5_{@Ko&2XoE}sR*|4%A1M4(x?)zYUdo8Or*v6+
zT%4$@teQD`{=GHo=XM@HSIC+hGAhz`q}T7Or@nW&H>EbRuj-EEX7c-wSDi~VK8qr6
zN(}n;zS!ZddgJ%A{#QCYxjPp`&meCmj*=!JqxH_K&0lDz-RkGem+&W}kC`R)g~qeeWo=%~2Y{v9e=6{BfQ^~jl;
zy_UBAcq8V+5&nl>Bk3z`U&?RMtVMYmOaC@sn;)8%pttx^-uU(xH~dn5K3uwJ4;!IV
zHIIDT9JEirlq;?fJL_Ev$ZV-I6^`GxXS>kO*3`@?_PLxOs8$$x+Un1f-hXI*O0)Z(
z3gnd^5=hrcADut{XIJpSi*w%J?|IAC(EgpDSFm>Jp(!i&2r>-*b?@fBk)x=St|i?I
zjybO$USV@(R#QWvf>RgoyUnwmeqXEX#ahAI)SPrHyMnja{NTz3ecJjP_>x$S-3yFCo1-4;iKxX)sa=_#%EXr#b$RrUrOb4p-B-8&K*{$x
zV|C0}Yn1vX{o)$*eo;r4*Sd{UTR%J9sZC6dc^h`)rpJeA8!Cn&>0MoC8NVfCm-sbl
z>3t$(mwu>HshZfNZICEK=cNrzrKYYjaJNBHKx7|DBO^e}<*hG-rggB1bzk(W+_(sz>PiNhAHEI`?^QUYEXe
z*P72^?m|JLU~YW4y;lxAU=?KMq}vDOXXFV)$@V$PDfUT1Av_>IPV`%YTH&a)Hd5ED
zPL;o9&&HZ(bJo{MZFBXsv*VnP;lir{E>)W{cKb?FI*)%B<8_m2WLpJ(nwuP-%dEuzY1b0m!Ysd)oaeSZQ&($#tgbpAH3OUa2@)91
znHh5aKDJ!q|448pyWD-%grI3bOGbXgmVr5$d6{2qDMVx{@t$DgQ~7n@7c|WGudtaJ
zk`uP~j$eL4e8xZYwIpA)8+9VIu-Q2Audhh_*u;&cBgI*Og@r%@-I
z_l`Va5ojVeeY^f%>v`CEno0ly5(k?_ax7=+;^$KW&>f9UYA)(WD
zk3@E|wG*ULy?lM`g>nAR5T8UpZ`moiC)njFdEjGLb4kurIz3-UdqRWlN8G@!hVAOt
zdB;8WMB5hS?!0qIDuzOZj$gLm7d2D9o7NxF2Zf$*uj7ju3
zcIu{K4_;1Rdt`N4(46?TY4FNLXvh#qo#ZGYIeZkxK@RY)MZ)P}BAnZhnFKN?Iq>EM
zhd{X4mE;&et_Y4du^{tp;q6RS%9;}}Hf0gfic)H@XvCsfR@REJB4hDczKyXGPE<|D
z;AA*g1}E%5i@8!!fwcl07=iE7Jw>E+O+l$Q?I^YEi??RTrLM#;YJ@}=8jBl^#8o6m
z2Z_r`d>BI(;WH-swUv;Vfr%-}QIZB1j-YsOTtG<1gUXQPsA5Y}i{P=ak`GD)lB0r^
zJlGEji5F;wksNtiLs#bq8ddQ1RTBgn?tn%PY*Zv+qj@s;>L@62Avs*y7Wzj>;$`5V
zYxIB$8xJefv%sl(S-F8BWQek5@&vLV;Z+R+JPrA2p>gC`ee6MoR7F}uztK7{G8!eNJKDE2ugI372V2mM9sEr@U=v295*Ob6iC}p`mQ8YIAws2y1;Mb!
zL!t_u5lcvp2@WJ*g2k|X-W8XpWtFYwIs#SLgF(gEtm_3q$3Vz~oKP2w(O7t3;X~J=4gQRA
z9PHTmRG2K1B{T@3fiW9ax6vf%mz%1*B67yt(+CpIX6(bgwC)^*uOYWa+B6+A!WP^n_o6sS-v9RG0wotPb8&>+@RP`h|^v(h`
z!{&s~xS^x;coWEk4Rza+_#*}zO&~dN7{@MBLBrug9@1eW6&W@ONA*!EaO4er;1Q)0
zh|)g^2^B+Hk)^3Hm1PwPR8~ZI!NyAXK+P~XFyrwlrL`6^V@D{!rT}5K#6pd&0J{lH
zaFT*AD3m7~x||9cHZqo-PR~^(BAn!E5rp_1DgNCT4k(Fm@Ch4_60B_esfP`RS$q;n
zeM=m4l?i=9yqFLlBT89hU;-Sb5gA~uLvp00B^ngnQ!A3Ai+iKb5YQ0<$>!Tb_fR~H
zgdA>@m0B@;bfNUwa9Ed4w~1hg=~J*oqr{cUI2|rtMyE~#+yOXq
zT&Zscb}2ou|LwTK&_u+-T>O6;z>)trg1)eW{c}vEJ|&}+65wkYGl*{gw;)Q}O6<5*
zFhA)9m9-plX-Tz|uArZv0Y0FFh$97_0p5eN7;5@bT&ALCf_EOqb=WQAVve>Uwv#us
zqz_Xi#iI#0S!PR1D1V9vvzw4?vLN6Pl?``E+0%*9*jd+|Y-Y+-n#g6S@Y#Cv4Wc=GrRHDp4<_dM92bl~O<
z!h{;azooD|bdVJmuts$7YGG2?Aavj^2x1%-uuJHmiC9d)Vn|J6ux>0Cj#$7vCrMSY
zls+JqJc8Dm;3o}6%dpjdq(fRVg#Hg2M(Lpc+A9|<@}mn`5QlG4YIYRHit!-JqvV`h)PF+gA-QWkKnH_3qq6A|8Nd2sUtp-1nz);PZK5QM*4ARoYNKry~+
ZB4fCx45kYDgeGBXj457;JWn@}{|2AsBFq2)
delta 8877
zcmbtZ2UwFyx1M|n5CS0yy*KF~7K$`!(gjfw5gQ^R#1Lu#0rd-sA}fj|AYwsX7ExRT
zMMXtdT^r)Bu8LR|`?}(Sis-Ib(0e9;=Fj83_qq3n=bba}%$%7sGiN5>cfR%_V$%v@
zoio|1g3yR%2=%BUv=u=kJEVifb>M|)*xOM!d_z!ne*SOaiFCs!0N4;c00F>lv;ferG|yW9-hfmGf_u#dUH&uUCjjRFmjMp|uK`q^0@C8)!SJ6lijn5kP_$t2I9P#hLcSaDNy=%6&ZnWmpXbgauj$E8vQy_HH*6`5cMLrmnE!9=qG2~v*BsAy3J
z73Bg*z)HYcKm}kspcc>oXa<}FTmZBK9s!;MUIR8{QjvKU6*&Xu0r-Gyz*4{pzy>`?
zwgYMb4S+uZssbu97DzIv4&!Mk3{K0pKMoRq4{9z;;vMAO9r+hB$gdb$}J(VF;|X$nfgDei;|t|@k{nMagE+c@}_7g9fHUdxQr_m*IFtGURxs9M6*D0y&;7$8%&jj7Oqe
znS!G*;9?oR9(bM%$1}>8;dn;Fe0WAh;Id{z6S@HP!<+&6wSZONq~>2I9EYFoWDB4L
zRN}`*ghHh$z8erK1yH2VngqhP0cIG3wWiX1Jfs9#3Mmy$f)wrm2}ecCXYdE@Kk37a
zB&4@A9?=gT?V159izvvSM?s|kT>hAc_YYf+r%FMpDR}?zua%mVPf5WKzt~=U{ZY_H
zKE9{?*9VE0nt~V^Mj(yxK2eZWhA9v;X@!5r2$1;JDuRpA8h$Je
z=~=_|=4wTyD4+(tYDo9%osp&;6dF>X{R3%;iZ%fUj_C@i8EZPEt2ECL3aCl%6q}9&
z_>M_U%#GsaCnA1)dOEx@ATHtx68T8NW|}Dr5*G{nva%8dlF`h$l6A~<_Bp$OX_n9R
zeYe`ZkJMpj_Dd$K6-;IXrY7?9{6ZZQvKX@|G>)FB^(fZ@Q#W+do^zz?!F3OF%f6eA
zV+nu%vNIkVH(b@AwyyEIr>`0u&rb|ZP0tp9qRLlA;Q`4LHBU;9#Dq1DD72BxUh+QRo&PFmvyheOdvtQ?O
z{j13Zbw)|-nWdB3(S^vQ4@G~BgO`!^Sbo~?uI$goJH8ZlRU8)X?HX7yr|2m6x-ReT
z{2y+yBBt25KA}qjBYu?V$1c0$-DCY?R8L6Q0gG7&40W=1?b;u3fBd`7*NeT}zkD9J
zYAou0bH^)jLER_Uk{P2d+sw#q=lw!9IBn>pjo6?~O$!ZB-@g8J#VX_NyEs4Gwl$JW
zcGp*0ZPlQWzvV-P*>k6jv>0+A}uu
zvYwU&y-g{jjk)wk@>G3;fS7~2VNOue#bQlT@gp~E
zSH+_xg}L5qLqGf-q(RRu`1mp8+{P89g*HJtv#V-!raGT++u38+pYyt7`-WVB`fA4y
z@egZPIv-)CZ>9rX)(*WBR+kQpw(P1|_ba`8^iM^9&byHs
zWy@{-80Awc4yl`^-7&3YFEyA`dF7+nitO99=0(mwuLicvd)y=pGN=5s`Nh0jzXwEA
zytYz~r_Z|Dt_DXSzS3<;n5&vgy>fV7kMp<}p*8YWu&nNE`c^7@&
zYB9jc^?HKZ)|ur83m@&M>*<;i(_+V(zDbGyb9ZXY^17vT?+%xyZlblYy4do~E=y!L
zgKYkntA~QI-6LiG4pDYX*30b@&9K-2gQGJH_l-BoROLQ6ygy!d%k3|k0SWm9V+^oGRDWnHf=k&N>i*Jqd%DjiNabmPxyMbv2*v}{hPh<-6^en8DE@IN!g
znHABQ;?{icpQh?kOXotB!-j|Kx5xG#8etZ5A?IUGJ&mV4<3QH56oYLaImp&}LV+J8
z=k{T;CqmaztYR~-n1A(Nabj~Bb(t_F<^1a%hJ89EYTYBA$7d-fixKt$Xi0-T%7=
z-}>Y~lvlL^*KHpzetOo{Ww8Cdjd0mNpZaS`LYzgLJ%elom#J{LslgP2HNeYQqKYNo@XGeUE$9$%g%$SA7Lt11b5T>H!VxCzmMVF2+2M?yM~)
zr!5$v&hfXhPoy2a-`l^0^QNlt^i8|I*F9sGFI>)B@_DLhZRhit0+$8ry;>tpLo7Bn
zSZrknR(F%JZ-ZyL(a!z#X3n~2(?(S*r+Kc6;P$L-jeBgg(&zrWbwAp~{pFY}Vm~aK
z>?}wZ&dWG#600{#FiG$DZ||cR?y<2ilU7`Bif%nM_b<$||{4tw)w4khLvfdvheJgFYp0xYvr4EDlfP5UO+_LM*X=k-=&x3()
zCpg>{)c90dSVV{ox*nb}6}imbpAet@Ximzs-w$++jK3P^oYJ|xF;;zNac9S&y39{?
z0UAd1nw00S+Ks=|mONN=RghnGzp1`zSK^mwrZ+!><+ShG8?VKq<3%c6PeWJwBtEWl
zv=l`DD|!6YLQ3RAck*yq6w{0PA&C4xJ`A^oKuCXxDy%EgYLBMG4QN@nP~Bz
z*4eFJ`^X{cvQGprW*X1D$ih*zH~II8Wrwy|7d6dvXB}&tziP+0%yGHr?mb;MyYkH4
z@wH{wdhe7OZ+sWhe{6PV+lE=09nQ8keV)zbey+vi97|f9##t7)TawG8y{*De)$jH(
zY<914SlZmlQ&Fgyy3V!6{*Fhl3;WphjxT3*Dn>lDI38H~y2;G`fN#yU%5B?-A4PrE
z-JS)1cqy*+c(sXHB1{~w|LT|Ss_VvkXYp=5`=zw0%ih5Qv)o9Sv)$@TTSO7}O`hPr1h
zy)a#Ep;Crgcjk@jT8&$EOy`+S-SO9D^XAjb@7`OUUQ7Myrrw5UeG`7*8N@zsn=`A$
zOkw^rMOUSb`7bV4A4^U(P(8JAZZIq0Sh>=p;2_`fA1=My!`OBxD#g9>N+p@Jq~wnj
zozO-3p7T|v@9kw(H+;7Fu*Lbdg6E412lkq5N`LH?Dq3R~c&GeX_`B3v8-=;npNZzm
zxQf#19CQ9P|7RgZ$Mkafmx7ubdET8b55Gu0?e}2A8P|!sTOQn6EN@<4$h{2nm``br(R-9W_EpqBen(2mb;HQ+RRbj&n!Nt*NgmVGXZ~uF
z*ttkJXYR-VQC;DxMu_B{opL(tj4%6y&Igvt+?l)g%=Ow$uh(WCv~$_HDkQc^;?{VF
z*)q#zRotJaBl~o=>L$$8dR`-NY?0)Rdi7$AuRHvuy`a_7yU;fD?7dT)R@5#_cQG=2fBMc5L(Oa>buSaT;O=6Vzr&e~
zJy{putk+JTa1wDJ=|o!Y-f_S^(qxfi>&R?W%W7CfwsMM=awH|)t>p&&rhbC|2?vzrN#R0x&AJr8;(UD
zr(0D{9aFa3X_9OZcwd}?FczFl9y6CChbYh@$0Yq
zC=ybCoI>~N_SM}@E&87*ilv)M>q|SEP8cRANb_aBO;+Zf3Q9^8MGAd2DM_{#P~0T<
ztgSTD(gj>TH$Ps$O-n_Yi7AQkS&2=A&2<&RZ(~!3(-U_|TRLCD&j@Tf%I8oe<1$<&
z2QnN+`(-cSra4Z{P6h2m$IQfqjtf#!;L%mD;y?{Lg^>9AucJ@YZI0Y$sp{SJ?re?Z
zW`-HLW&Vy;Xa_ql*c}vLO(K)Dw&vR
zFh%fq`+D?{g6bKUpSu3EENoBtoUo!LVf3#(M^FGF$D$(d<_G?}&+P0E{a+x|5%zq%>JMAVgdJM{D<
zS%hcLk5B!M#o7~gzrYq33Oy1hT$t(G^1!#zO1RM}CpwioEk29)9hKctE8nAsR8%e&
zXVf{I@s-@s@la;8o|RN)8R|}DWfvnM1I_a_`{bAMC7@x&3{LUq{zH<>Pz?j`ai
z(B)Rc`|N`g{MHxuoyjh1)sRpGdSvs{qaE0isxd)f>OZDUY&d`D&m)uW{se{y@&Z$n
zxUh+^=-=G*)@`j#_@%Mv_kMwH$@!q|g>7+evwl&EO-qx$>Buzw+}kfgrUVLl-Wr$f
z`8Kky+@t*5{waUk!Rw!fma+`j{29n9m`QBxyjWn@F6Ltu=SAsyCMrlF%u-bqHu4V0{h
zlq?`riHxG4){TI-+pz?E-*LtXd=F7XS_H&3VHS8|w8@s)lGtn;1;xU~Jes5=yU$Z?a35y5_{z3=R$Q^#6HWyhat4N}997rW##v)H;ER95d
zQmG>fR>rMZq6pX#(8Gi+iW(%irJ5*aESBz~*;0+MqWOcGVgpNDt|2Zm;y@(FQoN3-
z3^BTJZJ3w~E-?{rgAyO)s|~aC`5mADRyCZS2%$enN+RBMKk@F6w4#3pLW9Ar+T
zv+)v3PUIR|X;Mxho)sjryTqnK06+beum+^1IE58r
zNc+VjT)|)8Y;>UEXaeF4h6H@Bg9Z}&JbhAGdeKkIOHVY#?Xjcru0WD966XeOQwAC=
zyoe{QWx`~j5knndzcRLDN;|_t*g47%fm^t_Fm>^8*i|SV%D5K|@8Mp&p+eeCz_)H}
zCdqe$byTC7ipT;V!eNzJOtxf1{>CZN;~-rVJ`0Tg=5~BNpnQ8sr1RqYV>%Hh2{;kp
zBp>%}st5Lrq~WMAkvC3JVo+dcpscSBjzA!Ff`sofqz4V+dT}(^z*rObwKS3B75I_T
zK~v43pHx4b#Ca+qWbMFYq5v8lqCEsMro(3lGewxZ9RcwoFM_Ut%xHOP$Q~ahJsMI|
zpb^Lc%~C_I5N6T{W71*2Z8XscS}X%u;^|u9M4iTf^&^lGL280E0W>H}(t!}8Vx&KW
zrpCrH;e#4{;e=3;FGbS4WQ=s60j5{OAX2YeknX*@BY8@^@k(;?{*_gnx7gPhgZgdz(Ftg`Up!V
zxw1rGDFOm+L(_5mzfDJSec4F%8Q31FpQK-e9Pf&RMe37-1^DJ3D#b3!;27a^oGw!=
z)x~vc>SoxbWb|;qGRkyaW86;J*b3iInxX<{e81T#0nrhW(tAipBp#BIdUCAvveOq;
zTMu4tHKyR+$aL^>t2M*K94j+LdrYz9i0UJR+aVJpI>OY3B@#ALkOy&c3J00t_$i!B
zU1W}v|Cxeg=^|@LNbFv^*wF_0AcZZ^g^LdoxchaHCr-xW#0w{KT|4127o5P&DLv^z
z9Mm-vJ%n@rzZpb=hSXj;3*_j3Xb=w0`iZGb4P;E0XK*Mt|K)E%9h;yd7F%XQ|W{yA5uj*h6Lm#a=QS
zDE1!QK(T+QD`-ZEBc%IB3U^bGD{(TGBfkf7D*$F#f}W*#9;_8FHV)6
zD}0c!7B4mb-c+Z;Tt~~!)fV4}FgGd+wqn}iZ&PrsC?Xqt2^rv(f~Y=>0uo2R;oBNQ
Q__L+32>U%Jz#F0e0;zCj0ssI2
diff --git a/Client/Assets/Test/GameProto.dll.bytes b/Client/Assets/Test/GameProto.dll.bytes
index ca8a9fe38eb1d157b73c2ab433109d80eb78ab4f..a4ce0859895ba5560ea461dfb352b554b217bb1d 100644
GIT binary patch
delta 469
zcmZorX;7Ka!7@Ym%G8NHGK|+It_){voXp6m&N@e(fgxnFB9qSKNJe$WJChq3>jk%J
zFo1yvkYr+DWmq#=kja_T5y)d?U=U=O9K&QS%&pD9uBF7J!NtJ9#h?X7n-?=BGx}d*
zU}Lak0Ff)0t^vupVDc8zO@;skkO>nRt})#K8Z;NgV`!7`WMTvImVtQ_8ICYM1oBoQ
zc#}g}oXy1;^%%Gro-*h$2s69`lF|&kjLr&*AMKu``fc7vjuz*Pjp}CopRi0U3MxWmPdRtM?u3a;Q<5O}LOt#=qVr64z5)_#n
z%kh$lopG`Ur=O^F$%cyzjJ^R(K)qQ&`~etZA11Hm6laYBhEvq!lbp%|33AsKUAgtu
zW6Q!58;`F(z&!a6rvtM~Qu<^YE-53Zq=pGp5@eu)bJ;nT`KwpYu@-*55*pkfw;cwt
t6(%Z*F>akapG%va;lC<_0)xQji(E#GoB4QtF*Dt;*eodUo^hf9I{+xNa^wI2
delta 488
zcmZorX;7Ka!6JWBWY@$V8OBo+SB5i|O=e_NXPu(Xzz{N7kx6HAB%?axg~^SK^@6K3
z7{I^-NHQ_7GAx-a$mGmn1LQF>FbGbLWwPecl4H`~VqoCXV$)*VyqYPQ(f|&~nV1+R
z2XXotGcX)|EqalG(Kmnzs5c#mUjReu1t-EZU|0a1#lQd*X7C4wnE&L9oXP?z%d=eE
ztp0e;U3=Iz=S=tV$t+wB?s_SS=`rq!xv2p~`6c;!1u01k!5)rAre+LK;pe
zJXSjI4*LyNS5*N&+j-Ea09m_Zavzs8
Ge0Bhwe{~xG
diff --git a/Client/Assets/Test/GameProto.pdb.bytes b/Client/Assets/Test/GameProto.pdb.bytes
index 7926108ec296221bb845e7a3b23568cdf11e0489..9ee22b5d42715e9c4c850918d259bce7152f56d6 100644
GIT binary patch
delta 542
zcmdn8g7Lx%#tA0TcNiELlBT@M!y1@aXfVSDAiDr0?;h&u
z0;Cm~7#IwKfPAN%{3IYhLGIe3E4RLSY*~0>4>T0$3N92rNF7KuBg6kdX0SX111p%X6vPgsIe?fG
zh!q&v8LkAX1LZQ<)EU?qE(?VL%~E14n>?9Obn-IBB!Lw{@uf#6?sMI;Lt$#+)1bYZ
zIhZop7&9jqam?DR$hpOJbGyGF^W=pl!joV4MNOU&WHvd(QDJhDzv|?3L3U1s3FiA4
z4lpuY^t0?+oVU)aDeb}jnrMSM_r%;(pUfn^qSQ3Kl$;!(L&HK&-eFk4z|iA+Kl4Ii
zo8xqwAn%|a{oj-Qf+ZyCO8K8LJYZnx+@X+s=))h^-kXBXT)TMmCf5Z^O4uya`VEqN
zyl|!PWx@T<8)CF7i&x*+IeC4sq$StQC(9Usfv4nPC-!Obe#eRGXCLz`MTZFhLx)j~
zlaY;uiNlV8k*|`OL5z_b7$S`PoWOu)Vwn6cSV89r;{k@i*I;1*h%k3(US>(9YhHS0
PUMd$*Hb@Mt1gH@JdqR(<
delta 533
zcmcbxf^o|V#tA0TR~Q%=lBT@M!xETSXfVSHAUgph?;h&u
z0;D;Z7#MVdfPAN%{3IYhWqFp1o7ErBxoZ#G=A7wXe)P5I#Qs!9)`?$L>u&@C6)-R}
z+z(`7;0a=6U}9hdLJ+V4i?hM`AW;?uE)+gU9Y`FgCx{s=&%nS6=F11M18EK*<^*DO
zplAl0Is+TS3!yNeDN2lGK$4YZ+T{6+{F65@CTvz<%4B1#o7}}QOC-ObBr`X&DzPLp
zKaZg(H77N(ICZl!=T_IrF9UNY_XN3azTqdxJUJ}LZ1Tk*JExLI^CvPqU}RX!b@r**
zk~*)IQ)9i_YP>ky6LV92GL!U*Qq%NOa&mxiR
z`eR$4?eM#`Bs4Fxq|!AnJu@#=FVqvss_QpIXD|Q*v+eee5{d3(Zu1*Y#al%0V`pPz
qU}I6|Wdnu@qX6e*mJkKCXN(6J0^fo~1Ub2pOymMe1POy>85jV-IFi5s
diff --git a/Client/Assets/UITestMono.cs b/Client/Assets/UITestMono.cs
deleted file mode 100644
index 1659bad..0000000
--- a/Client/Assets/UITestMono.cs
+++ /dev/null
@@ -1,15 +0,0 @@
-using System;
-using Sirenix.OdinInspector;
-using UnityEngine;
-using UnityEngine.InputSystem;
-
-public class UITestMono : MonoBehaviour
-{
- public UXButton button;
-
- [Button]
- public void Select()
- {
- button.Selected = true;
- }
-}
diff --git a/Client/Assets/UITestMono.cs.meta b/Client/Assets/UITestMono.cs.meta
deleted file mode 100644
index 098b164..0000000
--- a/Client/Assets/UITestMono.cs.meta
+++ /dev/null
@@ -1,2 +0,0 @@
-fileFormatVersion: 2
-guid: 505f6b3030031c24f994c1d4b93fbe20
\ No newline at end of file
diff --git a/Client/Packages/com.alicizax.unity.audio/Editor.meta b/Client/Packages/com.alicizax.unity.audio/Editor.meta
deleted file mode 100644
index aa06115..0000000
--- a/Client/Packages/com.alicizax.unity.audio/Editor.meta
+++ /dev/null
@@ -1,8 +0,0 @@
-fileFormatVersion: 2
-guid: a468f89f8775ad344b122add3a3df2a6
-folderAsset: yes
-DefaultImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Client/Packages/com.alicizax.unity.audio/Editor/AlicizaX.Audio.Editor.asmdef b/Client/Packages/com.alicizax.unity.audio/Editor/AlicizaX.Audio.Editor.asmdef
deleted file mode 100644
index 8bf6348..0000000
--- a/Client/Packages/com.alicizax.unity.audio/Editor/AlicizaX.Audio.Editor.asmdef
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "name": "AlicizaX.Audio.Editor",
- "rootNamespace": "AlicizaX.Audio.Editor",
- "references": [
- "GUID:acfef7cabed3b0a42b25edb1cd4fa259",
- "GUID:75b6f2078d190f14dbda4a5b747d709c",
- "GUID:198eb6af143bbc4488e2779d96697e06"
- ],
- "includePlatforms": [
- "Editor"
- ],
- "excludePlatforms": [],
- "allowUnsafeCode": true,
- "overrideReferences": false,
- "precompiledReferences": [],
- "autoReferenced": true,
- "defineConstraints": [],
- "versionDefines": [],
- "noEngineReferences": false
-}
\ No newline at end of file
diff --git a/Client/Packages/com.alicizax.unity.audio/Editor/AlicizaX.Audio.Editor.asmdef.meta b/Client/Packages/com.alicizax.unity.audio/Editor/AlicizaX.Audio.Editor.asmdef.meta
deleted file mode 100644
index abb760b..0000000
--- a/Client/Packages/com.alicizax.unity.audio/Editor/AlicizaX.Audio.Editor.asmdef.meta
+++ /dev/null
@@ -1,7 +0,0 @@
-fileFormatVersion: 2
-guid: 354e73f64ed57094aa53292cb6a837af
-AssemblyDefinitionImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Client/Packages/com.alicizax.unity.audio/Editor/AudioComponentInspector.cs b/Client/Packages/com.alicizax.unity.audio/Editor/AudioComponentInspector.cs
deleted file mode 100644
index 89c2952..0000000
--- a/Client/Packages/com.alicizax.unity.audio/Editor/AudioComponentInspector.cs
+++ /dev/null
@@ -1,44 +0,0 @@
-using System;
-using AlicizaX.Audio.Runtime;
-using AlicizaX.Editor;
-using UnityEditor;
-
-namespace AlicizaX.Audio.Editor
-{
- [CustomEditor(typeof(AudioComponent))]
- internal sealed class AudioComponentInspector : GameFrameworkInspector
- {
- private SerializedProperty m_InstanceRoot = null;
- private SerializedProperty m_AudioMixer = null;
- private SerializedProperty m_AudioGroupConfigs = null;
-
- public override void OnInspectorGUI()
- {
- base.OnInspectorGUI();
-
- serializedObject.Update();
-
- AudioComponent t = (AudioComponent)target;
-
- EditorGUI.BeginDisabledGroup(EditorApplication.isPlayingOrWillChangePlaymode);
- {
- EditorGUILayout.PropertyField(m_InstanceRoot);
- EditorGUILayout.PropertyField(m_AudioMixer);
-
- EditorGUILayout.PropertyField(m_AudioGroupConfigs, true);
- }
- EditorGUI.EndDisabledGroup();
-
- serializedObject.ApplyModifiedProperties();
-
- Repaint();
- }
-
- private void OnEnable()
- {
- m_InstanceRoot = serializedObject.FindProperty("m_InstanceRoot");
- m_AudioMixer = serializedObject.FindProperty("m_AudioMixer");
- m_AudioGroupConfigs = serializedObject.FindProperty("m_AudioGroupConfigs");
- }
- }
-}
diff --git a/Client/Packages/com.alicizax.unity.audio/Editor/AudioComponentInspector.cs.meta b/Client/Packages/com.alicizax.unity.audio/Editor/AudioComponentInspector.cs.meta
deleted file mode 100644
index 12f8af5..0000000
--- a/Client/Packages/com.alicizax.unity.audio/Editor/AudioComponentInspector.cs.meta
+++ /dev/null
@@ -1,3 +0,0 @@
-fileFormatVersion: 2
-guid: 886dba87f6324f2c8b9639a9d4947bff
-timeCreated: 1737390298
\ No newline at end of file
diff --git a/Client/Packages/com.alicizax.unity.audio/LICENSE.md b/Client/Packages/com.alicizax.unity.audio/LICENSE.md
deleted file mode 100644
index 4e6513a..0000000
--- a/Client/Packages/com.alicizax.unity.audio/LICENSE.md
+++ /dev/null
@@ -1,201 +0,0 @@
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
-TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
-2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
-3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
-4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
-5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
-6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
-7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
-8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
-9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
-END OF TERMS AND CONDITIONS
-
-APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
-Copyright [2023] [ALianBlank of copyright owner][alianblank@outlook.com][https://alianblank.com/]
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
diff --git a/Client/Packages/com.alicizax.unity.audio/LICENSE.md.meta b/Client/Packages/com.alicizax.unity.audio/LICENSE.md.meta
deleted file mode 100644
index aaebd86..0000000
--- a/Client/Packages/com.alicizax.unity.audio/LICENSE.md.meta
+++ /dev/null
@@ -1,7 +0,0 @@
-fileFormatVersion: 2
-guid: 8dfeb44365f40c74bbe24547a7b24d57
-TextScriptImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Client/Packages/com.alicizax.unity.audio/Runtime.meta b/Client/Packages/com.alicizax.unity.audio/Runtime.meta
deleted file mode 100644
index 6ce0540..0000000
--- a/Client/Packages/com.alicizax.unity.audio/Runtime.meta
+++ /dev/null
@@ -1,8 +0,0 @@
-fileFormatVersion: 2
-guid: 716ce0c831ca8a748b0054866f8519f2
-folderAsset: yes
-DefaultImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Client/Packages/com.alicizax.unity.audio/Runtime/AlicizaX.Audio.Runtime.asmdef b/Client/Packages/com.alicizax.unity.audio/Runtime/AlicizaX.Audio.Runtime.asmdef
deleted file mode 100644
index b6edb8d..0000000
--- a/Client/Packages/com.alicizax.unity.audio/Runtime/AlicizaX.Audio.Runtime.asmdef
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "name": "AlicizaX.Audio.Runtime",
- "rootNamespace": "AlicizaX.Audio.Runtime",
- "references": [
- "GUID:75b6f2078d190f14dbda4a5b747d709c",
- "GUID:f51ebe6a0ceec4240a699833d6309b23",
- "GUID:be2f20a77f3232f44b9711ef43234aac",
- "GUID:e34a5702dd353724aa315fb8011f08c3"
- ],
- "includePlatforms": [],
- "excludePlatforms": [],
- "allowUnsafeCode": true,
- "overrideReferences": false,
- "precompiledReferences": [],
- "autoReferenced": true,
- "defineConstraints": [],
- "versionDefines": [],
- "noEngineReferences": false
-}
\ No newline at end of file
diff --git a/Client/Packages/com.alicizax.unity.audio/Runtime/AlicizaX.Audio.Runtime.asmdef.meta b/Client/Packages/com.alicizax.unity.audio/Runtime/AlicizaX.Audio.Runtime.asmdef.meta
deleted file mode 100644
index 2ea9d57..0000000
--- a/Client/Packages/com.alicizax.unity.audio/Runtime/AlicizaX.Audio.Runtime.asmdef.meta
+++ /dev/null
@@ -1,7 +0,0 @@
-fileFormatVersion: 2
-guid: 198eb6af143bbc4488e2779d96697e06
-AssemblyDefinitionImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Client/Packages/com.alicizax.unity.audio/Runtime/Audio.meta b/Client/Packages/com.alicizax.unity.audio/Runtime/Audio.meta
deleted file mode 100644
index bcc9947..0000000
--- a/Client/Packages/com.alicizax.unity.audio/Runtime/Audio.meta
+++ /dev/null
@@ -1,3 +0,0 @@
-fileFormatVersion: 2
-guid: 65ab69a3b3c64f22b899938b5234583f
-timeCreated: 1737390310
\ No newline at end of file
diff --git a/Client/Packages/com.alicizax.unity.audio/Runtime/Audio/AudioAgent.cs b/Client/Packages/com.alicizax.unity.audio/Runtime/Audio/AudioAgent.cs
deleted file mode 100644
index f53c018..0000000
--- a/Client/Packages/com.alicizax.unity.audio/Runtime/Audio/AudioAgent.cs
+++ /dev/null
@@ -1,455 +0,0 @@
-using AlicizaX.Resource.Runtime;
-using AlicizaX;
-using UnityEngine;
-using UnityEngine.Audio;
-using YooAsset;
-
-namespace AlicizaX.Audio.Runtime
-{
- ///
- /// 音频代理辅助器。
- ///
- public class AudioAgent
- {
- private int _instanceId;
- private AudioSource _source;
- private AudioData _audioData;
- private IAudioModule _audioModule;
- private IResourceModule _resourceModule;
- private Transform _transform;
- private float _volume = 1.0f;
- private float _duration;
- private float _fadeoutTimer;
- private const float FADEOUT_DURATION = 0.2f;
- private bool _inPool;
-
- ///
- /// 音频代理辅助器运行时状态。
- ///
- AudioAgentRuntimeState _audioAgentRuntimeState = AudioAgentRuntimeState.None;
-
- ///
- /// 音频代理加载请求。
- ///
- class LoadRequest
- {
- ///
- /// 音频代理辅助器加载路径。
- ///
- public string Path;
-
- ///
- /// 是否异步。
- ///
- public bool BAsync;
-
- ///
- /// 是否池化。
- ///
- public bool BInPool;
- }
-
- ///
- /// 音频代理加载请求。
- ///
- LoadRequest _pendingLoad = null;
-
- ///
- /// AudioSource实例化Id
- ///
- public int InstanceId => _instanceId;
-
- ///
- /// 资源操作句柄。
- ///
- public AudioData AudioData => _audioData;
-
- ///
- /// 音频代理辅助器音频大小。
- ///
- public float Volume
- {
- set
- {
- if (_source != null)
- {
- _volume = value;
- _source.volume = _volume;
- }
- }
- get => _volume;
- }
-
- ///
- /// 音频代理辅助器当前是否空闲。
- ///
- public bool IsFree
- {
- get
- {
- if (_source != null)
- {
- return _audioAgentRuntimeState == AudioAgentRuntimeState.End;
- }
- else
- {
- return true;
- }
- }
- }
-
- ///
- /// 音频代理辅助器播放秒数。
- ///
- public float Duration => _duration;
-
- ///
- /// 音频代理辅助器当前音频长度。
- ///
- public float Length
- {
- get
- {
- if (_source != null && _source.clip != null)
- {
- return _source.clip.length;
- }
-
- return 0;
- }
- }
-
- ///
- /// 音频代理辅助器实例位置。
- ///
- public Vector3 Position
- {
- get => _transform.position;
- set => _transform.position = value;
- }
-
- ///
- /// 音频代理辅助器是否循环。
- ///
- public bool IsLoop
- {
- get
- {
- if (_source != null)
- {
- return _source.loop;
- }
- else
- {
- return false;
- }
- }
- set
- {
- if (_source != null)
- {
- _source.loop = value;
- }
- }
- }
-
- ///
- /// 音频代理辅助器是否正在播放。
- ///
- internal bool IsPlaying
- {
- get
- {
- if (_source != null && _source.isPlaying)
- {
- return true;
- }
- else
- {
- return false;
- }
- }
- }
-
- ///
- /// 音频代理辅助器获取当前声源。
- ///
- ///
- public AudioSource AudioResource()
- {
- return _source;
- }
-
- ///
- /// 创建音频代理辅助器。
- ///
- /// 生效路径。
- /// 是否异步。
- /// 音频轨道(类别)。
- /// 是否池化。
- /// 音频代理辅助器。
- public static AudioAgent Create(string path, bool bAsync, AudioCategory audioCategory, bool bInPool = false)
- {
- AudioAgent audioAgent = new AudioAgent();
- audioAgent.Init(audioCategory);
- audioAgent.Load(path, bAsync, bInPool);
- return audioAgent;
- }
-
- public static AudioAgent Create(AudioClip clip, AudioCategory audioCategory)
- {
- AudioAgent audioAgent = new AudioAgent();
- audioAgent.Init(audioCategory);
- audioAgent.SetAudioClip(clip);
- return audioAgent;
- }
-
- public void SetAudioClip(AudioClip clip)
- {
- if (_source == null)
- return;
-
- Stop(false);
-
- if (_audioData != null)
- {
- AudioData.DeAlloc(_audioData);
- _audioData = null;
- }
-
- _source.clip = clip;
- if (clip != null)
- {
- _source.Play();
- _audioAgentRuntimeState = AudioAgentRuntimeState.Playing;
- _duration = 0;
- }
- else
- {
- _audioAgentRuntimeState = AudioAgentRuntimeState.End;
- }
- }
-
- ///
- /// 初始化音频代理辅助器。
- ///
- /// 音频轨道(类别)。
- /// 音频代理辅助器编号。
- public void Init(AudioCategory audioCategory, int index = 0)
- {
- _audioModule = ModuleSystem.GetModule();
- _resourceModule = ModuleSystem.GetModule();
- GameObject host = new GameObject(Utility.Text.Format("Audio Agent Helper - {0} - {1}", audioCategory.AudioMixerGroup.name, index));
- host.transform.SetParent(audioCategory.InstanceRoot);
- host.transform.localPosition = Vector3.zero;
- _transform = host.transform;
- _source = host.AddComponent();
- _source.playOnAwake = false;
- AudioMixerGroup[] audioMixerGroups =
- audioCategory.AudioMixer.FindMatchingGroups(Utility.Text.Format("Master/{0}/{1}", audioCategory.AudioMixerGroup.name,
- $"{audioCategory.AudioMixerGroup.name} - {index}"));
- _source.outputAudioMixerGroup = audioMixerGroups.Length > 0 ? audioMixerGroups[0] : audioCategory.AudioMixerGroup;
- _source.rolloffMode = audioCategory.AudioGroupConfig.audioRolloffMode;
- _source.minDistance = audioCategory.AudioGroupConfig.minDistance;
- _source.maxDistance = audioCategory.AudioGroupConfig.maxDistance;
- _instanceId = _source.GetInstanceID();
- }
-
- ///
- /// 加载音频代理辅助器。
- ///
- /// 资源路径。
- /// 是否异步。
- /// 是否池化。
- public void Load(string path, bool bAsync, bool bInPool = false)
- {
- _inPool = bInPool;
- if (_audioAgentRuntimeState == AudioAgentRuntimeState.None || _audioAgentRuntimeState == AudioAgentRuntimeState.End)
- {
- _duration = 0;
- if (!string.IsNullOrEmpty(path))
- {
- if (bInPool && _audioModule.AudioClipPool.TryGetValue(path, out var operationHandle))
- {
- OnAssetLoadComplete(operationHandle);
- return;
- }
-
- if (bAsync)
- {
- _audioAgentRuntimeState = AudioAgentRuntimeState.Loading;
- AssetHandle handle = _resourceModule.LoadAssetAsyncHandle(path);
- handle.Completed += OnAssetLoadComplete;
- }
- else
- {
- AssetHandle handle = _resourceModule.LoadAssetSyncHandle