diff --git a/sandbox/src/game.ts b/sandbox/src/game.ts index f2e00bd6..49a7b85e 100644 --- a/sandbox/src/game.ts +++ b/sandbox/src/game.ts @@ -134,7 +134,7 @@ game.currentScene.onPreDraw = (ctx: ex.ExcaliburGraphicsContext) => { bb.left++; bb.bottom--; bb.right--; - bb.draw(ctx, ex.Color.Yellow); + // bb.draw(ctx, ex.Color.Yellow); // (ctx as ex.ExcaliburGraphicsContextWebGL).draw('custom', 1, 2, 3, 'custom args'); diff --git a/src/engine/Collision/Detection/SparseHashGrid.ts b/src/engine/Collision/Detection/SparseHashGrid.ts index 632bbfb7..159255bb 100644 --- a/src/engine/Collision/Detection/SparseHashGrid.ts +++ b/src/engine/Collision/Detection/SparseHashGrid.ts @@ -1,7 +1,6 @@ import { Color } from '../../Color'; import type { ExcaliburGraphicsContext } from '../../Graphics/Context/ExcaliburGraphicsContext'; import type { Vector } from '../../Math/vector'; -import { vec } from '../../Math/vector'; import { RentalPool } from '../../Util/RentalPool'; import { BoundingBox } from '../BoundingBox'; @@ -275,10 +274,9 @@ export class SparseHashGrid>> 0).toString(16)})`, cursor); + cursor = cursor.add(lineHeight); + this._graphicsContext.debug.drawText(` category(0x${(body.group.category >>> 0).toString(16)})`, cursor); cursor = cursor.add(lineHeight); } @@ -195,12 +197,18 @@ export class DebugSystem extends System { if (motion) { if (motionSettings.showAll || motionSettings.showVelocity) { this._graphicsContext.debug.drawText(`vel${motion.vel.toString(2)}`, cursor.add(tx.globalPos)); - this._graphicsContext.drawLine(tx.globalPos, tx.globalPos.add(motion.vel), motionSettings.velocityColor, 2); + this._graphicsContext.debug.drawLine(tx.globalPos, tx.globalPos.add(motion.vel), { + color: motionSettings.velocityColor, + lineWidth: 2 + }); cursor = cursor.add(lineHeight); } if (motionSettings.showAll || motionSettings.showAcceleration) { - this._graphicsContext.drawLine(tx.globalPos, tx.globalPos.add(motion.acc), motionSettings.accelerationColor, 2); + this._graphicsContext.debug.drawLine(tx.globalPos, tx.globalPos.add(motion.acc), { + color: motionSettings.accelerationColor, + lineWidth: 2 + }); } } diff --git a/src/engine/Director/Loader.ts b/src/engine/Director/Loader.ts index f381539d..34903ba0 100644 --- a/src/engine/Director/Loader.ts +++ b/src/engine/Director/Loader.ts @@ -199,14 +199,20 @@ export class Loader extends DefaultLoader { buttonElement.style.display = 'none'; if (buttonElement) { - const span = document.createElement('span'); + let [span, text] = buttonElement.getElementsByTagName('span'); + + if (!span) { + span ??= document.createElement('span'); + buttonElement.appendChild(span); + } span.id = 'excalibur-play-icon'; - buttonElement.appendChild(span); - const text = document.createElement('span'); + if (!text) { + text ??= document.createElement('span'); + buttonElement.appendChild(text); + } text.id = 'excalibur-play-text'; text.textContent = this.playButtonText; - buttonElement.appendChild(text); } return buttonElement; }; diff --git a/src/engine/TileMap/TileMap.ts b/src/engine/TileMap/TileMap.ts index 23bbcb73..3085ceca 100644 --- a/src/engine/TileMap/TileMap.ts +++ b/src/engine/TileMap/TileMap.ts @@ -666,12 +666,12 @@ export class TileMap extends Entity implements HasNestedPointerEvents { if (showGrid || showAll) { for (let r = 0; r < this.rows + 1; r++) { const yOffset = vec(0, r * this.tileHeight * this.scale.y); - gfx.drawLine(pos.add(yOffset), pos.add(vec(width, yOffset.y)), gridColor, gridWidth); + gfx.debug.drawLine(pos.add(yOffset), pos.add(vec(width, yOffset.y)), { color: gridColor, lineWidth: gridWidth }); } for (let c = 0; c < this.columns + 1; c++) { const xOffset = vec(c * this.tileWidth * this.scale.x, 0); - gfx.drawLine(pos.add(xOffset), pos.add(vec(xOffset.x, height)), gridColor, gridWidth); + gfx.debug.drawLine(pos.add(xOffset), pos.add(vec(xOffset.x, height)), { color: gridColor, lineWidth: gridWidth }); } } @@ -684,7 +684,7 @@ export class TileMap extends Entity implements HasNestedPointerEvents { const bounds = collider.localBounds; const pos = collider.worldPos.sub(this.pos); if (showColliderBounds) { - gfx.drawRectangle(pos, bounds.width, bounds.height, colliderBoundsColor); + gfx.debug.drawRect(pos.x, pos.y, bounds.width, bounds.height, { color: colliderBoundsColor }); } } gfx.restore(); diff --git a/src/spec/assets/images/DebugSystemSpec/body.png b/src/spec/assets/images/DebugSystemSpec/body.png index 0491163ad3cf63d62839bd235cdaba3d6a2d6e96..7c8dbb74c8ae68e7b633c78cd88d918a208061b6 100644 GIT binary patch literal 10769 zcmeAS@N?(olHy`uVBq!ia0y~yVEh8Y9Bd2>45zQ%?_yvOVDNNt45?szb2l;XiNz$g z3y1Eci@gVKwAEF~={q!l1kNcgSUCUjyg8FV z9F7|8f@f|2-gZZ-fMv^tE?jtDa{Jy?kffgWf`#ALU9*9hGO?kpZqezY5Rj1y7lbcd zs5VM|9;y!3Hk&Ks#q1(2H?ReLf)_6I7s~$*xymV^;P9Y~N$S_zb$7Uh6&xB4h_ae| z(Z2WUMtRU&kPT`g7cQvp5ph=nn{u8j*SL{sm9T=tgJ?$HztM8tAbk!GWSFFWS-v}|$=M?sFqfh6GIz#{<@=qW z0af?s!iB$L0tyCE4z)}yWdav2lskOm0DIpc%E4J)ca0q*Q!;Cay2Ar!2j~9@ANav8 zwb3AaTOEGF|HMU4@{V(er2vZ

Il28VbD=l8cG6df84L@-|E%+Xk|Fu!A^ z2t=cogR{NYy<$!Q1%oh$ud_KbUYPGLSnmxA)axP_F08Lyf3J%HY~_4E2j}_kykt7S zUbN9)u+Tm~jU8l4k7&SORz}{xtR~SM0-zAjVUqflWB$knumhQR8Wjj2F{)dg(iX3@sPCaDn~azDpo=4hi~E zSFND`TpoiNYDf`N&O0rnFL8fj7;mfGG44db<-W}HZ`FO7u0w0xGNfj zIg~Q7tkYSrF#c!RUTIK3-Enhp-hVcibDd(vFj8TER26BwwD=fXq;vVVjZCZNdpbDVU(U7E1{o>v zf+ORFti)wdNPyC1F009xT-#7(a9p%=WV~qKP^|${*dw|lzLfWGUHQ9SP;ftJVv_pB zs()1*6ut){8YNd}zc9YnWenmnG^(?jd{IBR1mdHOOzT6hUx+W>+zn38KB@~A`j^V` zIfKJ6PB`NBh4|HZ;vhRPQ&+LcmyPdNKvUPAhPJw&+TWT$ZY^MMv^M!-eP?kw$d8S) zxiemv|7ZR13oOUW$ouzh^_KY%`xF)|^e^D-1N(^Op6G=O_eEuP$CrY$`UWot=lG*4 zonVz`bQdflsp5f}?JpZZMoMuqgT_wC@M?+iPNA7P` z;9%ot)+;llgc|M%uW%C`Hy4$k*`Z#6>#K-;vJmt-@hXaN~R45o-xHs{d#s)6qHODnOMpMFI*^3{3Za3Qw4*t zgyU^?-&{i=*%DMLy|4Lw4_tZaDHqIatD7nPQ3>QahX)wN?keetE+7xGJQKTc;rTxK zXSSfYUX>cj2G{@Zux^%stH`UpuVGJqk90@igyYN7T$k2ZLc!O*)gEJ z{YSLF))8E`CGauw*7j8waDg5AVOm4mKe72|!SzuCL*rH^sb5i=m0*`8Br)>VJ~~~v z1yb-m@M4nsH8t<@Zcx-50A=UfaeKv~weC033m3kB{bm9-)WF5TS^m%}4QSoDfGgug z=n+V|oD<;SZ2xenr4dA~z>SgjZ_oB;XTTON;K+EvdSn751t}P~IXKHdUZn-{gTReY z2j}}!Zy)A>q@dqi885!?tEpYF6fucjBABxoDu2ZJpX6eoL+Ezt`WI#A>7GR z8CrAhQD3ld|MPTnu%R=Y9GvGrl9FkHq@ex#8rtgqT7PQ;Ii`S_k@qj#^f#i=YE_cO z_+ZO(5GH64o5J{z~dsIKMJD zL<_tadH+ti{_Fx+^1$$5Jjz@u7G>l9ve%cEb z&j0pGW)3(o{wOb4_&@ofI>gKkzuL3Ewhz>XQYa{9KSLb27+j~gU}5}Yx#Rm6N{O^g$w2mA)xSP;gHc?uu#61d7eGEj^nuF;^4ghq-(V=$Z?NeW$r#;r-9|_L@Qx--g`{ZTqZuvO`LRx2z^#-ui~Z3O5^p3m4=U%z(CA zgfCn;UzU8%8&a>%32|_?e|gl>44jI7=qy-Rf9-=YBed?E(a>hs6P5__hQfyV4Q>18 zZ&eqB6mHu=(O>&F4pd~ZtW#RBF#f69UQqk%7}pBBoegbvKUpp1z=lRBFIc!fa1yvG zOJ)tJk9KgbpB(^}QYZjbSAS$J7(v_~(H*X(ynn^6zflDhOAlT#N&UK-f8#eOEgpzy z^jwwwVscDNGAPe7G?ufNd@29(1`<-qtYP8TFN6nsLJF|YTp2Gu-|L+W(#X(wl}X?9 z%hju@;ILt2+Rc&iVz)sx2gpVN32lQ!XZhcU!1WbFqc&H@i|{?6@4;o(cHted&in83 zR)hV&qqU)}t~>kNBv8B+lrr+xUX~7n)Fm>?3l_>hezy`NJRF?uFQ)d|t^%j8f;2|nzh|~Te*@O|AfJ)gMnMwhZKyf<#8%zlWy3z6z~XXR?@l znVEMu5|XvMnWTPo7i<#*wa`nMSmp^|xG?|oByf$(vP|T{h2?w1+La*9t99xN7RJB# z+bali?41Ay=lu_tR;NPJ)&mYk-oG5B=OHeY=FWH_-K^!_04et>bQUbMFEa!;%31tW z7c89rYM0D3NYQ4$zM-w|-tOWeaH{;^?cn_1^&vZmBcZ+Emj@$n?UHr34zv7wZ(slC z$Dhcm3(xO-`y5mkn_qov`MG@4ysfv>S696fkWjo(=YD&6`0ll~zrK9Be(w4#@89#z zuK&7e|GD+D`*+vBEzX+P7U$XnPKi^P%I&wb)qTI;FnQnq{r`VI@BbEA{b$;3yX?=| zakp>VmDa5;Tz%Ir`f70dfoV)XkKF_reQn)q-RGaxUzgs$RhZR#YJKVa+PJ&*S0Z3N z9ES%kOrPaLo#+4W^Q%4dCp9kl{nD(sV|)Kx{9IZ0=+fs&*SkyW&#r!58uQsWZua%l z>wjPG3tlfCtp2(*=K1D%GrmfJh@R{T;Q7X3=oZ{M!&>8bvi{XE#+IbK_>A6%aD2;Eq;rfpyA zBB}kHPxOz0oO5ln;p17;3$IPyAAaWZ^m)@itL_)ip8MqLPpi09^S|!W|C;^g>Gi*R z3%_08C27A~|LZ3G$5&PxzCKxRdTp2F`&j$)r$1-E*&F|9)4al0sdkUoT%YmvNq=8u zoUQw@Ncq~nDEss4KbOw=th)bL`sd*F@2bnzEVS2Nd`6@NHWr`;E|ocaG%n=75SF_( zah>vn{Tb^&xmC{pvo!W`=)KQ(zjp+$y*zt;<+1miSMHzgxxYH=dsJh^^&MsZgXXpE zQ%M0=P8@R_9;|4qW0G>0(VVb9z}@a~$E}~sA|Hp||IU$oz9x3Tzqo53Ur*hC|K<1p z%l*HudptjK{r}Yq_vfXngA%U547Uffcx$EZ{gzXyuY9KeS!%P~!k+B7W0C%KNzW#S zCw~&U{_Oj!HFMWjR_2`xygvQe=Kb$ZTfAOrZ1t?Nvaa{NUH!_sYoF)zytXv*i|dVC zZ}>Iq--^O{;pZoQ+KOD-tf1v z-_G(EX@uaK$!unSEuacj@MNe~z5FKI7|=HR&;rFIAm=-y6LA*sS?qt@fLo+b321J1b81dTpug z<5}O|RIK#NxBa|#MsZ5*+a1qR>yxfce-u=AE&I*YwUv_JKN-*8Begj$`Rr+nN=f~r zPt^0K&aZm!#``zc@i!=+G#p@IlKRCm{lilZHWojX3IDf6B=6h#=Brlazuo7fS55vZ zb-y<6?*E+HpP?UKSFH8_wC|nWc@Jm%^Rbqi;E;a7mGL5WmbYGoCev)LC$lShXWOMX zY@B1h^z+#@=e}Q?JblLBll7*{{9dW0?Ynli=97@I{{MdYvr2lMx$A0IoxfCdc7E=f zh3CtZ&w*a*F&$GijoeRn$lt0q2oUMO$vyxj#tpt42b!={F|e@1hAt+^}iv@m_0 z?RV^}bjGpB^&9uy3aa~dy|y&w^_8#T$GuC7_dR)PDVe_a-1Wjw#`7bd8~gdhCCxo= zVOZH&YWMia6V+=!dxR%X$CQZG&3X~OJMcZ&>DxsvT*$9{8~4kcQ8<|MiFD4sz^gZ` zbIy9tjr+Ix^UD3(@;*)brmFw^q=n&U0_GxHc<<_>wz{p-U+uu{bu&h&+O~D{%*Sa14%~SzmmE;L7E&Af*5&gFLf8{ zFs)|wn-H;o;j`IUNwuwKz9+r9T3b42&y|(0CH0?P{d&dwOx3He&n8d*`lP#<<4IhR zfAO5GznUgrzJ?h=63Z4Qsb5>dA1AOZ6R4=@_{E!+IY;T_>!azPv+9nSKC3L<*Ejvs zrntweOXuBH|9@Wo>^`e6$8@*XR=qCW_jH^8T>H}z&i1E$Eg_lohns`*f41X7j7-g} zVyB+(&(vEI`7b)*r1opme|u{;f5@r*dH?eIuNN=uFW=$??r8XdMgbqql9|NND9)0% zS@r&dTlN2Q=l^|kB&ClLG-#Gqt>OPQA+&_8ySx3`ne=DAyJ^$6> zh2et9;IvWT#K`-%W%{!dENOxn_l4wYtDaX+`CX~^+bH~asom>NP^LD$w#Vw9*?)Wc z{kB_e_wG5fea`v$XVlYlA4^TYmi_Nm;rhIMyVB{`CQrYyFLay#G4G8}x1A4)yB3}I zJ7teZblz{Br>T3NVw1RH!@IXj0@QqGXcXqkc%i<>#9ggmi^IN!Tk|>l?IO=x8rMy^ z{cO_o8_#Yn@4FrIJH@VWW!<&w&(!q|f8X9LU%LrhJlM|kzt?P0qILfK&R2(x=I>dP zKIf}d{PC0LYlup`kVF=~7*=IA9N=U%`63)QOIdhE?1H-H+pqWhWD9;AcYgi(mzH0i zz5ciMc;V0Q_1FK#$DFpD4ob;qNlVFby;4=8hLASBy2ynK{uP;hJ_%)wHH&Zmp7WFK za(DIo^li_NroP=-)PHmO$3u0e**P;_upg|}0hcs4f*hRh2L+fsNmj1i;bLI43=a0QvuP3R0b@lJ;x>*0apb|RYt}@d9-@1#3cQHv- zO+Us2Hq8Rme44krD2VAY=M(AZ-o4G&_E^=G#h+dO)o5L%WcuD?YpzFpHhTB;>d&Qx zudeRcqW}8l^upfA^&6*$KQ})2uSdB0bL9HMLx1Go`h1bm;@A15=c1mkd48_?$sf~g z`L1s_PnlkOvf6xET<=?*x1aO=zVZLt)8DmuPV)Be@_!U~YYjGhg5+&}M&4Tf)blrD z7Su*(&fnS^o%egq+4YsV`MixU?^o;py|J<`ZfAahP3m4AUHJ^iY?*9p0xbWZU!~VxCpQe}h z?p41AYKSa;{`t?5rO#E@i@*LiEByNF9naGDn5~~4|6RW~dv1^L>wouZKE0|sws%IY zsom`O@AIm(Y2qm_x61L)06#XZTh}ryY5%?9JtVC_w2+fXj?zj!Fj#X zvDq9?^uK(&e_XD1)4cZ7KN{Q5rrQ3jKKkv=x5%ovbJvUZ|Gr{%a_#5RJt6k5OXFW% zzj1o~@9M`_PFEf4oLLVFw6A|8ukY#E{O?_5(DGw8>R&g{`zbYf`i?2{|E_FVCTbnARuf7|?Hd+*O*19JHJ*S*2(ubs4bU0VOFdgC+c zeC-7b^Iz}WGz&7Ev0-gP+rG8Sv+B8@=zsa+8lQaazu*5K{|l}>%ZfXeyS8@H{2R}1 zsaKk+>2G|x%^zIPtJ_)6ukCz0^X=!Hxlgw5eLK0zblcW%p8w)D+HS6WRcUn2GRp6F z%D!Vyu10(|%G-KN{pZ`~-%eKbo_u|D+xFT`>!)uo+jli<{*~1mudRGtdM9hE|F^4O zt@3uhy?i=;*7>T{7wuNwugjaiMt$4PZ=P|zCs!MSlUwQI=PV{)p6~IS_;vy)Z5G%w zf(BOiy_Vj-f0ul1ReQyh+s~?g&dj&$w~Ji=F)(kociivFv+22YpM8Tk>Q`{XZN1@Z(`$Qrvg7jaoPK}y`>PbY-&G%P?g{*98UO0~ zjxF>4Jh?jKtJLK1=e_a57cRsX@BXN_9z2#{%#{Hi!S&Ui@c-HNk^||VC(XaHdjFPt zx6M!2oQq$apSAhUgyK1o4$k(U-^PA;69*nNjRPC9`E?r8Pq&?4e2pr-ZBBacmD(Kl zT4nwAxXoUbA@KVm(Ht>*5zKtgkn#my@ri*S#A0l8f{rjzSvH& zO%7DJAM)9E=dq{->#i5RN{x?Q|9IB?+Rn)H`_8DR*%fB)yLNitku}Tx9$l*X)q#{?VUBh*7RA--k)o}Ke|jfvzy2V=f1u8Jo)26`~ITacbc#CuiWMuVdYCfD_e8=p&!q?`#&y>VKV`+to?dHOzxrd? z*U!F>Zx%oOX}WIh{F9%On$zK1tMqO{My8e0Zx?WHx>Fntp)92ToKX%3YZ~Axrr_1Y- zYW+aP`QGO#w!f<@XHJ*zJU;P!^7J$NUVVPE&*uG#6$|B6--DZ*7X%Idb~Uv9>zZZD z!Y6d&wY2j-OZ8_v-|s7Xwd7rp?a%w%A8%e$zxwI-Oo``f&P$noiOfH?lLIsW-*F(c zJL^UG-pKc*o{crh72lpt+n1=b_WE<%+4KLNpBG>EM9$r=Kh|jXwdYswKetJrwqoJ= zBH?r3@py3oi+7?XUmm}){W;m;-=uT#r%coSUY^!3Zyf*G_@BqG*YkUX|IhmM<9?5@ zz1sg@=_~WD{r9^2q&|54JmsUWt3C;Bp7$p``P=fi-bnwu;1Xy0|Ih!$s$+zH{`s^2 zhgiQ<`uCIXOV7ogpZ#_3;BL$0-Cnk^etGiS)W%=puP<5fd&TuezCSu^ ze&HwMxUQ4_Z=R;x8dgez3#p}h)?A1TdmXZrLRUv1ND!{6^qx6D5`@rL#LH=on(|G(MiKHuNj{ui4K zq#vK7U{LLR|AFXKi{=A4|8-x*ZoYX>{r;IW>+8GERlnWe6@5>6KY#Vl%5!#1QoroZ z&2ze~ee5^`1Lr!>x&UyKy^ZV6?uGnIL-%k#neCvzZBDt}`D?MW@1H(h^Zrbvf6VOZ ze~zsE{`J+>pEmoC&6-|#cJ*UWXF_&)-Lw0>E3bDie)av;I$L*r{m*-UJzKB4U}604 zy1lZX7942AR=)h=_H}dexqjxC?fs#3Dd_K-<#osQ7N^+$>|FmW{eMtQwEgqfPxWon zGiz7YT?p5J$GXZGJG-Pgq~Tv%Vb z|6U(xlqFAT!NU1p7pdEq@3VX|+o?BNcK@}rJHqW>n|}Lr_P@x9+J7>0|KH!^|JU|J z#cFe(y;9X*v*V8Kt@+Gi$DQ$FzUdzya4`63Em%1J%Of`V>dl{is)albyKj?q*J_=9 z5UA}W{a@t9t9^B0v!CCu`Y)OPb>GVC-Jy%7Pyab9-{-;RhPHo^htGp5REGykn52Gr z>gRn+elC6P@Q?ZSbzk-srtI6U|9-F8`>TK6yq>Fk{{2(kv+1?DXFgXwk6ab}{raC> zaq}mCeRF!pv(!0z${(+I{$$SH8PBhMPT#j(|7Z5+IFPq3KmB>4sII?LxQr`N-Yx9q%3A{y*+-;Lp9gO6{JXsySx*?V53X^4Gv;HeG-~~cKz>HJFZ3Vp10>nRQg+s-_?aH&)urc{`_gr-cO%xK1MM~{o4BO@@>$N z<^f+;lP|O5_FS(EeDEOmXZ`}yXS44fJpQ?YiG@$(!Ug^#-!qs%{@yUPp>5yPC05gg zEM7>zUzB(*^zkD%&gnuY{>Hyry64PoCaGVyTev_bGBiGBHTm-R{Q*vnH_8t*SvX>% z9Gv%m`C4TOGH6G4LtEYS+27`Y*ElpBILIXR>!A39k03i761W+8Yq?!bA#*&8OrSwi zrHL#ceF_Hq8`|vt%UUXe*Dux>s9(#!7hRF?W`-Ha~ zhd5^F>0B(=yj7_`R?4EA5 z5CLTwfeJqd=lXNrW?+tl_J^cW-oLIEw?W=$IN-x1^~-1bLmhBvJaBEC%KP`|t8L&y z4s!_J)mi>`7jy{zHFw5~>-&@QJwPelTwsTz^ZtXnRj#0r+p)Kyt?qX`BLm3L0?=IJ z+2}2ELGI)@qp)D%`2y~9;CU04dmK>n#|NRQ=m;>{eq<+o2H4id>&BmGWqB&tIeEwSW!iD`+ z5?~)S26JV+SiZ-s9Xfvvsu}0MKQ{+5Pxwb|!NUJ;NllQEb_D|`2WR<(tJJ{3b|cck z`M%_x$Iy}X-CP+j%J){j2al#t2h9bR&W&q>Xq*x5;5`3(-Ws<|Pbzh~w)q#VJn-Mm{0-9Aqq;OCQJAg?1U}LXw zWW30p@&qKs(0G#7G>X9Um{Nifzp@1gY*6Kwu;Lk27+g9a@2S{w)U;~O_JrGw_L-yWL-oxet&w@PN+2AaRl zU!?^0mF?z2NltI3z$ z_x5~;roJ+<3m3}SzFU9|g{3ygG@-)-b4K33=0d_?Lm$*IN&Wiy?o20S_7R?nL6O18 z6whk%Wxbpm3p8muGD-bXh)9KmH#}p2ljfZW2j~4CpH_o&+m615wz|2yzoX3@ z;$JUva@g|3Y3qaN=XRCw$?;{m+|cgGz#9Tr2hkIXK62szT<>&*&^zc)rH^ z9C%$`GOJ!ltn>a0sa2w&z}W$sNxHxL`!kT+48jsXv()SE$bprz9OKA%ksK2Wn_u)Q z<=xvL0V*RI8bO`F^gX8OkZ^KMc-$7ZN*XMMQM47TYO|Z>1P&O5f;dLrzkAA`KLJ_i z@L+mF+rREZ{1DC_CaGVQ@6VltgoHjL?_cqwH{_woOPST=%fww-kQ_6Y#pKJ}1;_2& zz=rPF-2j@FVt5Z8UYRa%;evi)Z*n}u#u@Prpvk2<6F>pOp~IE&qT59XGEvCL6wQ(G zB3fe=Bn0`yE?nT>$IuU50r5_0!NU7bm+b|Qtime2osguLAjimyIVujR0~s3AS^lvz pF#P|o=xS%kz`(!;YPm5pFn@N_ms@`4G6MqxgQu&X%Q~loCIEXXCz}8O literal 9680 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 ahTl2-SFgYPB*DPIz~JfX=d#Wzp$P!*XsNdV diff --git a/src/spec/assets/images/DebugSystemSpec/tilemap-debug.png b/src/spec/assets/images/DebugSystemSpec/tilemap-debug.png index c523f4a5bd073eaae19bd41ab7fcec99f99a7f13..96687e7bec22e8659bf2d4d5a03b9fcb21b6a96d 100644 GIT binary patch literal 7510 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