From 4934dc2065820520541ac356bef31baa540a28fc Mon Sep 17 00:00:00 2001 From: Mikko Mononen Date: Wed, 30 Dec 2009 08:49:46 +0000 Subject: [PATCH] Refactored sample code. Separated navmesh test code to a tool class. --- .../Bin/Recast.app/Contents/MacOS/Recast | Bin 534496 -> 532492 bytes .../Xcode/Recast.xcodeproj/memon.pbxuser | 3003 +++++++++++++---- .../Recast.xcodeproj/memon.perspectivev3 | 265 +- .../Xcode/Recast.xcodeproj/project.pbxproj | 20 +- RecastDemo/Include/Sample.h | 32 +- RecastDemo/Include/Sample_SoloMesh.h | 73 - RecastDemo/Include/Sample_SoloMeshSimple.h | 9 +- RecastDemo/Include/Sample_SoloMeshTiled.h | 8 +- RecastDemo/Include/Sample_TileMesh.h | 52 +- RecastDemo/Source/Sample.cpp | 24 +- RecastDemo/Source/Sample_SoloMesh.cpp | 445 --- RecastDemo/Source/Sample_SoloMeshSimple.cpp | 41 +- RecastDemo/Source/Sample_SoloMeshTiled.cpp | 42 +- RecastDemo/Source/Sample_TileMesh.cpp | 468 +-- RecastDemo/Source/main.cpp | 9 +- 15 files changed, 2843 insertions(+), 1648 deletions(-) delete mode 100644 RecastDemo/Include/Sample_SoloMesh.h delete mode 100644 RecastDemo/Source/Sample_SoloMesh.cpp diff --git a/RecastDemo/Bin/Recast.app/Contents/MacOS/Recast b/RecastDemo/Bin/Recast.app/Contents/MacOS/Recast index 22dadfa9417910f86ea2e765b92ebe16b136be3f..0e3d4df94bd720c108ff97e83d04a5fe3b97e57a 100755 GIT binary patch delta 146179 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 IeZTU50G5C1G5`Po delta 144795 zcmbS!30zcF`~RHFprZ}Wplm7#%BY~Y;F7!IGJvLOC5nklre9*uZL;VLfPj(Bs z0H)I=zbR!QJHJ%WU60i1=5LY8{RjHZtP*rfd~~{*#|53Q92=-_Cv|Pv`kpi22)Y(v zedbf)#n{%;yp|F7C;*uOQa%;r7A>K|TP;JIRYSiuT)+Re>_@p6WT0(}R)dVlg(4G! zItbDOEn7By(>E%{~C|8EuSRx3MerwgP*?ECm#Qd4mE?|%Wx%s|2U8vmt ziqKXn3ur2j57f8zEBqdHK$QwldntX7ydhBE!f&l2=pw*#?HNJmBV7*YCzL5tr@%qd z@Q_wgT3|P0s*f%J_S$3agHmQDwSHv@1i;hvXn2Msblt@1Kn@Q9lp98N$oWt0afF9-p<{s4yn z+}{J1z7Gy>2A~1J2^XXmA-$Vr!dFCkMH&;*k8-3aa?ghh3PtWA_#^I$pld=}~%rFlNOvR8Gwdr&sPi;g5WL%x~xKvMf{ zE07zEXRx%qbr17rbK9(Yx4mmx(uG5_?j2!vN_$)P7xbN8j14L=w&|~bFRrYqG^*Vo z+lLSP=&mcoIJvI4;(b9UW`2v`x@r|BW}f7^BqV=fJf7+1I;R_) zdW&K^G}T8Z24*Jv=wgq#mN1t-c*rockj3qR=z2AdBxP6(&QObUltr)f1-A1n8$$Tb z`_1CC>tgy%arv!dhoK-SOuLiJn~osPAliO`WezDrTDR#ae$$&}pC}~@rwg%VTEXiF zZ750el%%2L^+TLGAUBXm%YDDbFCJgfW7Bc`7Mw*KBBda%0)k-)DVukMi9cLdP3JI z!wqqq!D+N04$#GX@K;^kvBS=TMU^0e_=g;2>D{tE49Dq1Opy+I@H`H{aw*53Rg(3;0E3e=+dZRFsN-WS_W$7tGBL zZ6bIP)!peD3u}pf-1r5Flnx{_xt3hADmFl{~GQ%&`G8a zK|(~0)VafiR@Biy)ATuC)8u2drfVj%Z;D%bzC-8Go8YKR>nsLR$PPGd3vEjyq)$4;^`yF+992*`a|n;bw16VQy=L69&0w4P#TVCq(4AWR+IDdHZgoBdFeL47L~X=0~@79Kxp)qktgPytS@>D2Yk zk`A4FMiQ}RiiEqFBE54WRp~(IQMQIEi9<-;T-5P~VG%GPYaN4zzxK(}VvUFkfdEWBA)Hz@2> zFcIXsH~ZHRrhV|vNmEMVN z$6MMS(u8~9OmycvHSy~*jO=%RmvP?a9&$Hx@9z>dcO80EvF}>?4a=wBA#3pK8t#Mm z;LSYx+BH*`lhGCU{nQk70ZlV31#R`3Y5I9n_bSt>WoVzyU!o5c<$(@Jhn&_kC_IRU ze9bfs$wR)$ZfR`S=tv%7&ZKIm^}Xc^kio4B9xs#6ZdnIFvRyx{{~}{hBG6+DNi4Lli~W~pyqZCv`M^}WT=?ooUQ+h0ds!~{n=*uAxs*WJ{K zTZzwj)EN*fAI?~9qSnm3(6we(k1Ad39z`Y!>oKG=*L_;3xZLcsJS0v`H*O-x!D{m+ z3PPGw{Xr85X=RUAHtIY?Yk*HHrys?)GmM;x0m}YkD0+-d)O(0lvonxaDUgES=~qZ7 zWla#Mo2X^D;(yx2+lkd|S3);!28a(Q1FS|{$bj;U`VPg64&@8pp)5y-!sDbHy5zFg z$$_tvv$P)Y?_;6XhsO1s+=X|uwH>r+W1?r;m`kQpjpl=fLDNR*V9%aHcCvJ>=QADG zC!ppd4G0fDYkYxc^~m};tp@v%fT_o7o=cF#*!Y2ispui2noxMdLX??HOlBL%m;oW%YkzNu0)%8NS%xB`ImwF9rzFkIe z(8M)fI@hbi(6o4%6l2>WJZV@%MDVE;J!#Tft~^K>eJslNR!r#2oQ?=gpwdl5V~&>w z^^R=bOk?q_RhrlP>*hN&0Tbh;34JyQ{YObx`fLtbI1*ZqGl;{@E`1!;2rA4OS+ccn zMWxeC37t5eRW&`pO+V!u$^PjNoF?6S0; z&cPOCIgnrw8kdcKyvpZ-hG|+w0$xL2Z#e_7G8lMNl`Wv93KZhmcnXd+LgtX2hzGtt zNWX~%gDHChSY-~`LQs?AMP!PyQ*GdYDJf!?wCq0uS-r(sq1cgfr81HdfTW|$c{puW z(KgV!^t2q}R7J(e6I~QXNpDWd{0e1i`)%SyX>fOjMNeQt;q+o4FAB|y+XQyf8~r=l zNKp!nqFgK@Rdu+lov0_5QSM7xGb-XdNah2tLkT>GKpy75yw@3vdWcB|G+DH&q7dR1 zpe|U3lF6)9DvVb+gorx>EVfRnLL+5|MC--qL(WQ8=1e+6g`e% zy&;8h(kBDjvsCHl0U>>6lOL>SoK$VNuxO1|ouYh7fa6F)0CTkoI1el7L#06j!-YAo zNht%n+fEEa@i-&5o#i) z%*kv0#pOmxk;VN*RTQr{g zP}o@f+kk*$>^a~Wik4_fDER;@TL+^IDz3-V<|uO>N^4sb01RsVW3dV0@%%jEaaeV{ zwt7th2+DRT3e`9kZPQd3gc6J-l+!E_t&)?y8Y%0~F{1#6K${_jBx)qTq5jSkivi7b zK7q@NVl--{3PoaIPs;Y8W^UH#jJ$$X*jYPym5B6P?WgFUFv6RM31 zP(@~tNVrN_#AU@1qADv-)$tBlV~D}1##m&-bt)fYQN30XoM9qRsa%JR7*CCDO^C_Z z1}0Q3LfZB>CRK3P->X(m&b+f~?-8n3&GxFy^vYTkh=CIt#MzEh(L~D~Ra-<1>OJQ% z<5W&PQLP4d05qjNMy@ew?x|KRFnMD>T$D`0wD4&|42Dn?7o`9!20LxAH{wlUoHh3i zoZ(?pJBW~qW)chP8niCy6u?EZ3CJt1R}R+$G(kHEP_MtInXDsrfm-Alsz_g(7I|4H zLb%nFc&hvaCz%IXsH*uANXR+2G^2@uWDGBMs{6L571Pf zMu2)FtyL?pBoMzwyTo>~bzz~~wra-s*Nlk}$5N5iiuES>vS^Xr}@TtOz{?d=bR|m|- zBI259itjxB^arP%_m;Ruv=D@+`$+3Ybr4EllMapwHowr92IxVqKIB5Bb00}T+4a{X zqcysDEXt^RuIw!hvvvsSxelwDH+eq={V4oN!Jqq-EVaJPnx$gX+b7g9v#O+9!a){5 zd*GhEJ$to}sCT4RNy6yYXwI{7^d~}5cWJ?x3Bvg9QrVae!u)m8#W7cd)_};g-7(>I zU7e3(4gKm1GOMK8`z{Ih#z<$!b`V;|l>9aJIBS+k(u|HZRnm$37YcZc93LqFb>8@? z&4`PSem!!>$7i>r9NVP>Gt>5c^k6r|ePtfrB?~54nMsxF<6|vT1s;0fIF}#}hJ+IN z!H@M&yJYs{61|YWPHLSJFT5KnJ(AK|_#sTnNNLkRKJbj1YZY?FxI3QdKky_6T6Fv!%`p@hu7}l38oH>*YofM3jP%E

PWSWIadJ#?=N<|TlD;HJ49-q=CSgL)bP4nA9s?V+lNv2ujg5E?{ zoqjjWx22$xr)O9L7^;63d5e23Z5fWXFO((O5q z2u}t`kId~8sba24Dxw76_T<~Sn@Twcz)O>*(z%_49xbKnxnY92Wl7!Kk6818W?&CS zZOkPn=k>!(*en^JSSnPRN^+hE@)hFNmuy`4v(L~naKVnV<9_TfrFX{gNC0JtFQ4@W z)5L8=fCk-kl!|7d2(#_jIQ)v+`2tk{lr-SCTwDzqy%P+1rpsrmnecBkc6;S_58?K@zd7&OzFFlYRDjZEN zS(xt6e9rs$NcLxKl-DnwAPDc*Nt2dF3Rl)k%a(Q%=F~}Bkqg}*eY&)*5LqW(S}H%7 zxPkY&dfF)^e?M6Z-Dfc88Pj%O(hSp1Kxf~k#kbSCC4HpwEihtlpnHfiZ4cwhe+G!B zo*5gY&!3AHOt)WJ7Ab7mAaz{U8|p|8FAFzZ1``n!B`cS8U;#wwT7ez?kl0?=5kM=99ZP2S5Xx1?puIn(0h?F?&gsZ6EQ%O4X?ZIFho z7-n<)fj-0}CT*j^ZwX~WD7v>m=l0^bEfmPJ2pSN3L!7pSI-iG-t?7OX)d1dR;B^+4 zZ>G>0NO)}kBP(=6MocOst{n*8ov;gmZ4$>75?3QZ1sj3a0o+bpzK)pO_#I$>2(zvu zHa}37Ym~{6k}`?oXC9<+nZ)W4W!r(%z6?Z@qYk?bJVpHeLuI7AgUX0yK0z=Zh`W~5 z)kzsPQ=27#P|cpi6PPZ*c?+KTyYz;wM$m7R)?~I7X5EzD$&3_YHcBTl2L?V2T$kPk zmpf)_jDPw~YQM50AtbKsBy9XmN?jQpJaZ$Y4Hd1KVtOWmncW~2X8a}<12cc4^u@|? z!ibwvr>u5DhnrG-R(NxE6Uw0HFT5cw%!(9_Zj|z~y0qBx8(%x>;_%*Jl)%bg}`l`hvBRUa?@za2UR#)c$gBf z@6S@DGhl4^oh-)Xkvs!|JCSm^kav%mo=ft6`APNVcX)cKXw4<5pZ`?S^Z6l6D7-8! z6x&C}6@kM%PNevccoM(k z#P5Pq61gUr23l!w{#2o?N_r)Ks4(9xoz0&Zq;Bmdw-F1D&_Et_(lj{`7$XZfhP@zP z82qi&`ekfZUXZ4|JWZHR!32KBA=dubrUeudjV%ti}*%+8&Nk zu(C?}c-?H_)Hx}3eTZ=6oOIv%F2cIkrN!$l!qexZ_3JH`%GcHY7()`R){Io&=%aYQ zv_6WOBq|hfuH?J*hnh62q>**7qq<5e-aM@(2@%I#G;Oc&vF`NI?}DiCH!6jIlO)_gog2fZ{T4aK7+&lO*1LP5Edy5rH-JtmP?m* zbQStem3+N7 zk_pB=lF$AqVe=-b8y=+}NR#*X7EW!F^7dQ(2Y&$8)+%Z%XpTy^52OqGCkTD^NPP}O z2rc)NOgbQWd-9hLmugOc8`olf3CBEF{!%j%3}07Pl>}Do_7VEOD}C}&NOHS(NncpP zGk+ta@cEk_CF=a`k9UCMpn#@oT|!PBCkW!Wk=8;Dc4|hIC?hKzen%Seai^d{BIJ9j z4U@XOcci5sKPJ5KPRRw#R)vpFO3Ei;p;u0-Yg9U%K_j$Ff54^BB5_Y_liL6HoZ!Dz zy8Yi!;o4hL=%-=Askcf7eHzY$x3-j|RJLLfFKj`uSozjyt%($QTm{h1(y^Mq-jr5< zW_jd~H>s+;H9U)A^>z295SNwjmsRo709qQ-el}m&a9pbg_n|%5WE^I{6rdafE>-g) zJ*R2A!?kZp0Vn3gROpoN8&(wml*4}Vv6?ym5p-)L^GPeaPnvYHmr(qI^!&-O!qGRS zGbcNl12$tX^c>y~qxqU$@ja!uQ{hcI5b%W5`&3M`7)ln7tE-b21hX)C@}Ddq{``Ej zaBDU6qPb#!VBo2bQw@p^{37aPRN^5QD5y$doDvTS%K7{1>JVFr#FCAbzBv`u9#L*d&RPpGf^b@7^SZlCMbfKaUQXOUWmQx|K?uN`T(?N$-4aX}Xxw-N#C2K93I0 zq4aIwC~uD8VqPUcg%ol+y2)FV+%F{{`939AOV6I}9&(hDQ;9;aQhY%G%NS|z>CR2R zrF7_h(vPRxM_i-yb>JxLN7vQak7U%p#8F??NC{s&?E_!P4;Yz6YJVche@)T{IGGd2 z=l$F<^+h&1=77T;6}mEy^X!*GV3oXd#AEs`=d_#3&O%tOoI-MX6w}qV#L5}HK|Vnd z3R(2LB2K$0rmIIqRQk&Ndiu0_`X@#<&`;#_qb$mZe`atzu%1DmdIotozT#0JfHSZt zLSf0fXJeRvmxWbd{v}+glFpqQVtZyipL8EiGoms*-ayB;7Xd+m!Ow>1EjVDMQ#t~R zV08WncyxY9@z-F~r~t#SPWfw{il@Pdg;LWPMr#1&a}SKpwt<)iBIO`}$~Wtzx2k$2 zA3+*jP79PJLMdhR2J|U?Nd;gM#XN#;A~t$U8l`<+(CM;+VEA7 zZ8VXi1uY^?G>x1NGy1xsaU4B>k`M4?2$CkZZxS+C{Do3(x9?=+avklEaXG^AOCjS2 zYq|e z(wh?UT_>{UF^gw=;Am0G8U#E*0j;$jC&L-eT0J?$Rm^bFPC*xQ}BCl%$uu8E&cFH=)83Onttw+u~6jUAZHH9u0zFM1T+ zx^%t`8!t7zki_1Rrd^nBqeGipe9|IB2kEG4Dw3Hv05?>Ribns(BAS80>3uyoG0-gM;|%v3-;3qz>PPwJF#J z$En~;`$xhSy~+BeGJ~>?6v_W$ z%#fL2k5dDOXt;u(T$C3J)Cip7mrZWMLLNHdSi*GQT&|s-?f%7 zM_FPpYefnW^kU9}G&OCcJ@6<|73E5mR(x-{HxaBv2XXkt^sp5?9v)XFY6K4_m5Q!Z z;+STM!0eY&ocDa`%=h;TM(ZJN(?)EbQ=+?h z&?_}`dMav8tH0H_mI6RoCnHGf=|Ma=t`FQ{n+8Lm31hXG?W+HbjI=}?8di3hyGTxE{2*kI6FG3fx zQ5?BIZ)t>ORC+-YTu*AkF|oZ7{l|OZ6sbp^>H<@NL*(L31qZWTlyrV-%FY8vb?6bB zpn`Q13?5$~+HaFVpB}^={fLzMQ(#jSCrZluDSWUV@uw_ASLV7`;q``G{nfpS3p-WrjvR;%f|J0@pB(wq#yV4w?X%-!usRk6JC#1GN zcZlW9P!(uaE)0vb~}v{&S`8M&Cd#Mf^&8m zKW4Nipc?xs*2>r$xg6}Nt~ipP5jfDF*EX!K6*jKR(*gm;u&*gbbF>*EG(K!7jRBhh zXVS|YH&pMkv~=em*(ajWf$-Ug$Y^ArpwHY#rq((6@U8_y+I^u3$>~Q*o2<9v2koLb%s6K!YsE|LuXgSo_B;-I zs!EhQR%7hZrG?^DER>?^d;|lDyLb-a-6t23v~Q-g>}vR|cbvS(qvg3`1l-A^m)vV6 z8Xm!py7b`MC!FPKq*2+K94t7lqAjTbsR^Q&q!9MhaIR-|S1dswRJwJwUB3(jYHf(h zj&@a6fI-8|QVmV)IE+z)Smg((^uR9zvBt~$Wd^-ty!=b7u+}X_Tx&OV9U2toV-!Xm zz>3DDYPb)vMw4Qi;}kYv=u`~fB^*SPT~C`O9*(^r#M4!Vr&7>Qdga>Srd=uOTMm}0 zu0>n?yCLH11HCo8khw34$M}l+iK!HQy@Ty2jEF!pzN|j=&GGDZ0zU{+I$6V;%gfIsRoLz6>werk2%)E#ktI-*W&as9|R}JBW@HB%F?7$S!wq zUYoWp}<^9&N`)dHx#tEH@HDeo=q||)_Ez2sJ zB>sTL6F*y5v8t4efMt7 z$|Df|DpswjPvzIAHe)1KOSfRZg#MhXjv!UB>Zm6V-ArHBHLr86n$H=|m+{squ$gPs z5}sYcvo=yT&bewWhpprMGm$Su%6`N=b^5Wx>b6hQFX4X-_hP1Mf@3uW=uF8N{Ip&M zeOi=WNPXZBz(n)dL5=$J&UJN=kU5-&IBM;*<%H3SL8(p}Yb z+c%L8r?l133+dWcKp0EF<|=Rj(%9_n2tUX}7YM=a9(|vf;sB&6dn5Q`KyfY8qyN$? z>-QlZpIIP0hE<1LwLs`CkA6(JXRJX?)jMvOvM1u}M={xmJ%sGhluR^ZCn0+%k}e#m zEJ&kuS%5`ZR>l1xuHo9BNE-sEO5sgOBH6&uK7J6NR6zK! zL@xMp9x6(*$|svZUdY)t6?>|Nov$%$%xlP?Oyl(!ZAh01Xd=eRr)RxXRZ z5$EJ$uGvr#m{PMfQpna;C>NiDB4{#624C_FT34u;m8qse#HXk`##1}9gP1LZ>)M^{2 z)mF@;x{|=hI4Mzj*lQfL#&dVdZlF{SEYVDkS&Z#8G6<2(Qa+3}_K?Suc=F)^exg_W z$|D{I@Y&018k(W+C0=CtiKM7ni>wK}ZuJHrpN-`pUR@jNO)ZMp{NG8veU@@}N{>P7 zg^OG?nXr>aW&0;xJy!L^Sp(UX#oSutGpgg?eWum6!Dm!g61cmb(!-r|ppHv(_gzUd zK&rIB4{s-MT1VnVcBc7?{U$cF_d^P`t8DC#i&<-sBMA3_+D03iCn=KvSzrJPn=y@( zjwE^wk!0Ym^7fwX?!H)lzv>H-TklwU@0!1`V*bCo zV+hfcHS~jakO?!65G`3A27&*n;uZ4N48dfZlh)vbSJgCkLJy?>S0@w_O=GiI0BUf; z0961cGjYmro=#DnaOj!;U0QFF*4X84u<L7whbft5DrqLMQ`@>$ zus0BH2Gcbf^GcLrvja4_r7BIXCI;Id2@s&1eHy`Y2{B{8>0@$?hT2frJ8teCHWqY4 zKvoBEsP{aLIOu!KFVVsW&sS-%;hIq`&97_2>PKK7IuQ+>s~%#CIt-1&ig`0j9?>6A z>^b8Xr~Ela06yjf#u0Rk7ho6;GvjwQrqMYIwaIH-oYD(bsj%rS#9FCd#C^lvum@?? z4ZbAB+YQNCs- zSWK;))}5~9N1WDDr**H(T3KN&LzoP6^0%TjI2z#H=>EM6+&Tuvmo}r-V_|QDvd-Um zH`|Gz5U5(4rgu|Sxj>Mk9%)CaOa-DSuLVSLCgpLo?AGE-_KMl5p z8uo19XrBk0Rtd;pG4czxwCUm)x#uDw+Ge)XL=>T9&*V?q*Pe1v-G?F$sah#bVX;ls zP|Eqw*Gg$x>s5+y*#f<=bX)+aJr|{%V~A+aLmI{lAUL$^jgP{>6QRa8(VbWQvgy zH)T`Zl>3nZbHio`shJLlxPi~A&!w43)^D;ZQ+|rK61p!&DL@)ab=2n_>TocoC) zy?5)K$W&z4E#?%rdagp}M*cpa%(wQm#+ouRFq&S|mu{!4QC_o`xW*_yE9TPvC28 zXJtVl3-(tRB3O6xs-Q{*M_Cskc7DNi7AY9#%dHt}Z=zcAEOpUt?P887Q##Ip*7nilG7GmWh&`z@4+Togt6Ym}2n zl;eac8=qs^bS{zfbCqnS-#uI&nPl84xH&{e;?pbv=-15ry=Eg-jOE}{<~-!&(?C=9 zpBNNf_ANByLmS3tCG{*Of;cp~8<7PwPcuBXUQ$B&uS)7}URn#&=a3kVzR-K(vpds@u2m zH1*R?dofRQ3)zWA9HFP1i$)mmX^zV?`wns0Y2H8vz)lYyW;Fm{icoG%?Xy5tMJIi# z*WlZT&D@~e25BqMB_v%mbq}PseMKEFX@PNp<~EqInC(~_AfNmZqFz+z zD`t^upyAM-6P*V!+b43Mzo-u4W}B#vL7bBZ%U`5vlGwy0?Id5?=@-X!og?%jK0+E{ zs0jiS%zo16)jNacFZ5^1{sX_FL@j|r>=JTb7U6dDHj0ftbv!x(ApU(~gDG4%4R!W4 zVq5bTc<^aKArkdbE+Nw($H9wuQ%cKdFpycK`ocLF^5dB1bbKP^4tUyC}lNPASJE#92i`m)I7S-8mDEsi zcFxZ^&FCCwz_kSZ|G@Ntr(XIKbBh%UYu$OoT+E?196?PgR+ZtG{yd%dw>T?DBT3|3 zLEaDK=D%rxx;gSPAJ(RM@3tz!xjFJisdS7WId)wO~nKw^bJ?8Jg5#@&01lU`4$<(u^|5g!<)dLS3t&V%IRnK^bR`Swq!?gX?yVny;Zw0BQkcoN@p|hiE_K z=i& zrK@|Q6hY{8lmd#QCplN-AAMP*`4+Ks?A3s`baGe|jJs;3%$yrotX3^TP2XRGnR9M} zQtdSSd0JhJ>Rt4gU=>7cQG?1mW=FH}X<km`Vvb&Z#lWJ%NDRqXSV~Ntj%~2EDf?NluE@!gzc#RTY_I&6frT|C>CBxcw{ON; zH!XuoVosSnycr7*qjpF+TbCXRAXs^(N}tUT zz-bkJ0t~8o_md!zp9IMOg!K|DRYw^54lbRnvzn@8JwP8SEnr z9m-~8$V_oCQ;idc_A+fy$|7zghkAO?H_>}hH2yGMkc)p}fwqb)?#6IslE!Nx@fxl1 zN+n+1!AsBS6Guk8g0N0Mx*`-DbyuKe(nluYuoo2Us;4J8Q?@Z z72qU=vQT5&b1T?R1Y7RJL~$e4*5kyj{@?{C?nptbZX`V`xHXWd$N65vc>y>Tyy{e{ zO#owW#NKmGd)a0`5GBX@Vg66foa;23+!OS3yYg;-u5*H3Tuo!;phd=v&%`Olm4DvG zo01iylwF8aQu@C%704kJym3@EQv9O2IA*}dz?rB8wOGLF*GcE`8n{LV8I~fVtQlyO z%i8H8%o8W_K?SZ=g#&tURo0b(nBNO1!JxAW)S?bD5Vs zoII>@wSHFRTtNgHsB#Nc5 zBOO_xU2s@H94wD$i@mdc56TPLvQC2OLHXsjtlN{Ryx8A9pFg{lt37e@$Oyz4->s#6 z7kdgyUw!43p%wO-NYNf!g?%4 zvf$`UfH4diUG^nv3Y#4yTpLwU#BWr4qE=oI$~rcqYLJDx%IiW|BtM)*+1l6n*kzz4 zW99^m;EnER#!A|NtH#t#cT6QmlxNXeo{7x$>R6J>-x!O-`I>q-UsLn9uAVh@60NB( zVaDdsI89jv1O{keL$J#McJbfCEroDf%LV1AQeEm-i!3t-@S$MZ97mt@(+~s zdCnVNlzSRcqDgXfJA;xocx7LKndQr&?0y@qq&!nk+%Y-16){Ix*EDk`Tx56+%v zRh+57X*fXXOvjhTbOy2J8w3))jKJ|Ze4I)rFQ?s9k6hA;yn`rh^uocWJgG6fhYQuz zv5;~7HFd7uhuwbdo7VAfAox*s5-?&o40(Ln3ifJ;eGx|i^in^obHNjM~`U)0v@1sFn))!6agOa7`I3vLljRDL4=dOPes8K>Q% zNB%MfGDZ&etRTPT**H)36wi+GWIyEDL}VL2Pk(QWya31Mfnrph?OxE48JX}|yqwXA z^%B;{%f+2o+cwX}(^v5nwRnjs(i*=R{}6t9y!>4!c8v~Ve%YCA#?ze{#j5DeQTgXo z7S;9$Rvu4Vv3JcAcnSX@dapy+_d4o!7j^kiYo{{uAj z0f*8}rri(tnD+bbc}HFn%O1BJ8>AljwO>laD;wVUuG65qoIbG*06#?@Ec^Ciy=)(X z0d;s0=o-kpRg~9Th%e4ptEcDx0|L~IRDCAuxla6LyMGco=qbLZ)Fl@NJbxgcorZn) z80*E~&eV4B#yV4vRXdQdstF4}W~;or7Yj3LL`(QI{rdvMWhjr=pjK*V0V;)JwqkDhwA7Lib z(ka=r{_g&L87^x`>@QEb7qgG9{p6MRvi5?ZpS<~AHc0sRUitjJEJCPq%Rc>>Wdyx4 z#_S07o_a6h&Kmj^U4w0=*R$zJB#*@L1bRJ;JE`k2V}Xg`4>K6E-%Pjr@qX;Ga1Xug zxDSwyWnamU3}iEsbklrv&a3uA224pp9eU*A2c#ca{F<0_)Om(JQZRRemFbp{{{V2V? z;pYvAaqT1MQxAUYqr6Im)}!pq%EJUF{2UJA7u4vHq`omteLDY4P#)){G*wlm^CXvX zE*6M=EcSAPlGsZQ8_a?qa|0w!J8C~{s11jNc%o6$75YArqWc)`7-; zWGsI#srK$gg^%&;%i2-wQW~*KW3Vy}s1?42kIAnMX5)+vPI$Gae0?zMNkP(S2n%o9 z^o!dx8*YvVNd1k72S+}(_?2}%<(Wg+{88i}c~OE|CKIM^VKgLkrdC}y@W|KOo)NN0^>wdueJ;@DBkE65u@s7@wN zCU*l-;ZPPpdhQ;|h6~ln^6x`gS7Q{skp7t|>T_VqJ%_QrEjZ+3PPivxiu}wlHY`Tt zQq6a>{UfNQUQ`*=VWK!3sim9l5GD9FRsMPyTSRgmh+{!EwJP|673EY#ny=xBaQ2*j z>_Rg$Y=)%p?^?mmQK{mhGTclpP>ulSWP+Lt`i+VIfx`XlVm$H)efv@zG^^C+8of5i@be z-dVnZHO03I+fXA|m=G~jz5>b~rCoSG%)j~m5NRIhh)@FX>H7*5fo62dQ(fd~BeAtl z9HCY`>O);qU9_A(lJyY&8!dl`XBVybTlgeQQTq9T_WCW{&?y&C7O1%8cB5GD z7Aj71HTe**8Kc-x;hkuC<0uTfMbYvBdOj5`e?!klqUAbzc8iw7t$4PNmWR>va+HdH zK1#Mx{vG7$SrjE7pyyLj@;7+4dL&BFC75C444`!n;$^1^$V5z zJOB*`hPtObz}7RN`d#_vgY35O9i9)d$T2^H-1()`T8$fhlrAvv`#-CYcq2jRVvhH( zYY<$1V^o?D(*QiV`^Y>;3PKO ztc5j(b8;h~b0@LKJy?`KJBht1vwGF!+@PY0kYP71*LGz86@06Ad_ z+bygQkn5(f+d+MBj0`3*&{)ZjdjV&6E4kHF)+glAmNYt46In7Plgel?9oJHxF_m2s zX86nFQrLLG(9*pjg(iAo+toq+6!zos1*J82fHl-cp9UE_YbBqf#LNB$fRzlBd~O>1 zgnGcO(^=TSY#zDPB~0fXw@-E za*HR~s%E;cv1QWTx7zJq|0H`(h`r83jshyRj-j_Tk1Itajx(N}b_%mv`bqZFaBzZl zY#oym7qBNxH$k>10=z&$E%D$2wp5t;wLEws3+ufF!-Ouq6C6k>SZzlCMxg<6iM&?!1NUkvkS3ah?T8Ka1u^ziQ%AklQa|slo@>WoZdI)|ao#ZhAg_T|P(8`>)G&OIYiK-q*=4xTWMrTwoigY(K9C z)|WWeq5Y>2p$=-bN&!kdkuz8m&i7j&{F`cd#!}W+`0SdTv6RJiZKH8%4K9kG7h&oh zgp;e?KP+W0v(Ep$%GI#uA-KnVqv{Zj<0(oUG9Iy;i{;JBSX6Htki}^sP}?WHn{w-G z75%@hq4G$hOVjr|fIWm&#d6&;HoCKqDkWYIDOnoXM35=zUdYF{%L_9witfK6ug<{i z0kepAGgwU9TVH8%LO}2{G9K>v+vQ&~*v%0472d1U>_O*TuY*CU3;bla+jj+P!h{cZ z$$mEQePfs0&Bj6mahE&6#?qJ&xKl0owM70Z69}J|$bV(B%4XGAsrm#su6!k*UdhA` z3wIzMtVhM9BhHMhTa+pw8F75C4nxHF9kM-(S%l~v@>^N#1)47nu(J=ErFt5he9O*u z3g;DhM>Yo3>xz4agAJu{cmJ}AtrgnFzkR#TwY(D1rB-3ztr}DTon5!Lln8ZO9>YEO}# zrRU`mk#!Y**&G ze_mkE)3euVb|mD>%@AHdwXU}T?0RIgyTuyz7VDIMj>qU>1W&**H5R@{3s9OOLnjl- zA~WBUzj~2%3RqW#5M3T3Ce&{h#hjCaUt%xbyXi}fOK&9-GjZz0e?=o!f{^iW$=B@a zXK~z z9h*pZx4P$UU>VGR`g-0O=*4OIB*?MeeQhI~XLTaK~oeKede%` zQu*!eEcGA2F~!)pLF=De%w80>?2~^lX0MRs{P(b`qr|TzEYyeAcdguP6e%~w&03L` z@`6$ou(OombLHDR>sc*TJ!z{#C*p}uN zj^kM75U^zOjQCh-8WA%{BH!Ce~=BQF@HPqgWTmb3k&-G2d}w1U1@@P%wOxCcABja zgw%Zbt1~P{c&$Lb=PY}hLZtL88woBi$$y<=L(Q{aqMG48Wq!|$@S^*^Dr`9l*%)KK z!j#W{jhyurwlzHYH&)B#U$L1&+tqT^*Q}p>xx3KZCQhI23F0pAt3mwH3s5S4Hn)~` z73JUG6KwfGopR%lMxAHN|IZ%~x~R4d45%ix$a`)1KMnAmTmH5t9!7J#7?o&@`Vpgs z?fZ2A^X+>#aJ5Zf*P6{~m|17iFa1@F;Nwlj2);~kttsZE^vg@*=BtlX{>V%V;Aq5P zNdU({DpwA}hyS*{8V$eVRoi=~+LhK~yz(KnD@Jl7Rg9d+xs6nLk5qZv(>$#0^{nl= z9zEi=20^3oPkl3ropMWXFGb(524(~0|GO%Xu{ zc$BBLcjZt>Q!u!4$QV>B+LGw;1^S+Z`L#_e5_l`hJisfLX7MH<#fd;nm`z6b^EA<< z5)E&1V!}L3fE>3l(HX1>G-aPgPGe@uK8B2#FrTJL`zbj&l@z3_LS3tgxobw63nx(f zKOD@qd*nsTJ1|H@CM36aes z)YV{E;n(uoG+}^%6K^Negig&0)u}mJxsWd0*P6DPOx=$@OaHH?dch(6kG|O6mFK1l z(^Qtl`{a+(h2Cmr==-w%Sz%Hz@qebZ1J^~*3hiv9-HfYUGyPQ~pm9;d#Br03%r9$qe(h**32V%J7KT5wUo z#WCw8aFv)tt<;&5!PC@!ojI92%_A;{Xw=UqZ0h$Du7otWGQ^cb;|fysU)FG;Xt9mI ztZC%<$OAm2xJv){NzH0%7jRV$2}hqw`)HMvM=Pdl5%@PXt4SvSSCi%%lILp~a}KqB zbZ@J-Xh>A0JCOWWZv#;Damm>ftU2^c7uMmE8g%LSq~-zG9$%xU&#HF-hAeJ>IG`^I z#mV!@wOx?(G6XjkOk!5sH}zzVzNb-}?#pNE>dtPYF|g)GxPgDTd>)DVW_t=5O~5e@ zSNpo**>von!8qpCR8?0_8U}q-keeUR)!c{Vmjs-V^ZJwqN6znCDs(mS26YU_O3<+7 ztffL9p?|4dx>Sg?X&=y#IQ{_*kARi*>-_(>X_E?14{u*KPiMmz<9(RL)s3GkF==xQnjc*HtzlW!IvY)&_%~)FU7Uub^|J4){-gsRDT2!ScWq6)&ZlBc}cxV*@Zm z-fFS1wA9ikvBpY59+}4Pn`o>{YCSeSxTd=;@I}ND`S}c?hb`CEFy-2(rpbEBgGkd2 z7SvbO-(Zo744QnS8!YBigN5D7K|mKuxT)jJC|AZI@BFjj?u41d99m|AJH;3tc*<{Q z2rX=XuF#Z-i&I7so@W0K0so(r7;uLYWgfROaX@r8@RP*% zX-meyr`>+Bn#Ni*1#RT>$F9<|V67PNQ-doAX|OUmVxcNI(bL}l*3fZ&18e4OP=*f@ zc)m%)5S}s(rCbfVr^37uy?1B8Q;vgQXc<~MUohaV3%bc7P+KV^^apgTd@xIBCI6l& z1lf)*fdbT+5Yx}#HY}uxR%x%Mxg~Es=VeL07EvvktXYyTkko+`flgdhyWe4NE}N#q z^{9!<@Nz}@66`&my!sqGxl-siQtPUSMdO}|O@u*28bBS#(h^W6j@v0dl%^D1!c3NO z#iB%|O19i4OXxg0_epe54Xq%HEJy<#nM|E$nE6~9d2Jq|T9z!y4X@rEQT(<1e3sC~ zb9F=lzdE9u?J~|7LU(SaxtRWW-}C3S2LB2BiWNQv1=mB`4?#E<$pPuqzfmfrJ{4M@ zil|Rn>QmYEsa!2(pHzR??pTdTYio6VN5}4H=zaBsx>Zf;nRau@Q1%uUNwBM4DY5YJ zuxVxq>BRUDSkou`cAcE@4eLH@cDeNuLr+*xmTOgVtu?vUA9Jm>BG*>~U(U7uB-%-B z4e)cW^-8Yws#ro5z^#Hr`%A9%TCVkauJu<@q}t$&c7gQoG6h3r) zOPUwS#6~34D}toPn}p^fSzZ(!8d0dWw*Kf%K{K8;UKCe4cvZxvqgfAxT=pjM1&PJ0 z?)$w-==(FG_{p212`FCo5|Y=50#gj4_}QDHDJXW7*c#0Ba3c~-dWhtTHwj(U`+=8` zs74etWP{@WvG?uqH682UYp=a?5y{>Wkwip9#62R3AR>r}OM^%iRdosCel3Zrk{x%k zQR*_p(PUn`sTQqn4QlOo=QTxB1_we1>gte&$~XgE9g^|u4|{wJZ6Lht zL$@1LQCKzL&0M7hRf1ZX;9tqfXL*uq3^~+Gc77l-FIVQCyjC6W9`I!!U-uK%%6bdu zXE3&;iB;_~GzRpkwivwKa|RyV9vJ6VyXMgy2x_km=oydJT1Vslxa6r7jD418>mU`R zRxIOCXC9wt+_M;QTpVXP#c{5qem*{rqM8#r&XFd_gs5wd&!d>;I6rZmt}+gF(D8W` z(;UYuMir<&;vAnxap z$kRFcN;q)7qR8H75e^!=FklbvJmtw89rqN?@BdJw5i-&)iiAg!SbSx1ehx=cxlu~# zG7>!{bk0WpvCuor&sDJ=IDum%xUv&C#>xm~CvZ%Z-Um+L$Wt-s1dgeIuv*#!EiDe& zsBp%{bObJ*pGN@oryi3%)`{a23I{^%#%Vu{V2|$VD~KuP(r?M*1-bE@=1u!zc8;v#iKB(B|}rJ zEDanMLBpPwQJ0)0l*{EOOu3l&t374&cBAHO+sY;uq5L$$$xM~q2VV~_X;d<`Ny{X(V zSNakFWp>K5GpOgVyvZ)AO96a}MiVM1cr;9!>e~5HW%<#ffn1Q^*oX4lmdq7-M&{?3 za~yZ{?p&3puRKK~8WlNi^Tnwd2>Eb?I2^4v?t#;N%2J(Lma5DX%@aMIQ~k4-YW?n% z>UDUi_2t3V@{g#$0HpmJ$y$f9u6s8n5?dy$HWMH$|7 z+y$16S7P+O&O~hX$@4DSpy;$fEXOmQJ02ctM|s}GuQ*2w?I@?pG91^hKKA+M5^Vb1 zE_yaMKix2v7)^m#Li^&^RerKx7QF6Dm~WJP5+(l`O+F-lemCqhue~7J|8A+ahwTxZL5i z4N`Q;x5rOFwbdQwvW;G#iv)QVxC0=CXx$g!pFB>__YsG1q$E5p7xEWQl*#Xxj9LB> z$8n^5lda^>m&p%%Nd6HAbEFip{KYc)Di6s&;(U&j<}81?O#VH|n9Ki&V>(j4>!Hf; zE|VYiko+S~>quG5@;A!lt34$Dh(kM4TCx1iGWo-jF_-@lXLqFhn5D{pt4w~}L-LO} z!XsrF%ik%Jul|tyBTn*2X~XjO%H%(kjJf=eIM5^IT6a}`4O3Z--)A0@f5f>SDJxmt zRwiHbA^Arf?~&4;c8@VPLnq><}L3Kf22D&-YdB*KxJ`IVIn5H7z1^9H(!Eqd>6e zlpk+_dlGfRh3PzvwMbK4ZCrijc^dVQBqdaKo`$lXwOKTg6{mX-9!mnfkGi@abYbPg zX_v0v`;7ZsGCk??7S_ZM+~2CQen3h6_v1D~5t|-kT7H2S$%p>SQqM`sXgu7yfBUuE zAZ`?{7qrHo9DubRVNbztGKf0}8c&c9zJPC}^M)y%+MLczN~hc&&JQ%?PhKnbc$~&V ztD&pjjlkp9k>x7#W3xX%H$p#7t2q=R>HkerPS<<-J3c!`TI~}$vBKa^F;W}7z57!+ zo@bRgZ~3Z^Id#L81y@A*?V=Q0>4V=cT0D7huv=(-(}~O}wB# zFZ)1w=y>SZ@z}PG#EQOB-zdU|i-hyvcvpHCwGZ0+9V;G7vhj~PlM;69okx{Nnq|uR zzxmQVQJzoXUJ9|8V$y9iVs=IDR1o(wWih2%-~Fdfc2DJB3YSmCYmkd*dk-e_h4~`) zo@IZayr1zn@Ts-#`&_%D@ziS8@rDXN} zH&U=S)$RZlq@o6YwjpPfl$H3G9w@0vi*J-PlLeh+?a9jgZz~j4>GR7K)Imm$MoC$t zf4M?QD=PKB!l;)`W0X|s^_?BRd!VQ$&Aw68R}D#{=W*XoI_~c)l(eFTf0Q9-l$4eH zKbTAEM59(z^d}gCMp0SUPj|`XW3*h^PpW4G+1z(9+aBnCOk^tQj}=O4Qu;fkV2L4U z6qObKSEXQi_gB>YFEHeclCt{$Cn;ylCX@Q#C}|HvFu`b4xeM@hUNokH+y#g!y>ILS z%sfgHo8D)?W-q-j@LE=Q_bxWl|9_26bY=UK{{IZYseyBGu;qt}gD&-;sB7JS-jd5`-M`rEz4GMgTuuk0np*z_2E z0{b8DC3f2MW+UHzf}U6Kk+WQEoW#52xozO z|962(CV`=S+WmI{ul&B~I_ef2+4!}4cu&;?vQR(QccnLQWms*{4urYT@0bnL_p71V zi?4z$M<_M#a{0`Zc4Foeh$h=!$p>H1%(+62g49qMtajH zipxkBJlYnavS#L#r`*ODU*F0wr|j>TJ0HoKQ;&Hd^*-gPcYYvsd=~?$e??nF@{1%g zLwsored$W0MpK8c;}dll9zUd)7veJ?J*?OEY*Y0D9<1In3j3c{?^#pIRK2kF=9K*$ zb7_vtF*nXvubKGw)Utw99CPM2__0S>5k#P`9$i_OdR(^RN{V6hxIKR|OS@+%-Ze|! zB9!F&Q{JlIeoi(Gp(z>I;!BW?8|F{Li^i5qwN^ibl{LTv6XP_pk#nqlh&g{pdH$tY zvRtlNQ8fAfbN=s&!eEnxzmvxuxuck${zks&^-LHY4`!zj=+`KU07M?n~-^zR35f_k3=Fk4qaEb(* zO%Iy}b~WkgnN35CpNC0Hp(9=y@ZfOlzyLbg#nIr5qt|ET>jK)*`|!`Ljbt2ghbJeH zhos4aG6s54H2l`QQY_B<=`Hn$7-6rh$HdYVwKCp!q?_3u@2Q6f$001ArW0WGI*S^D>4K0X#0uG@{88GOfd~y?Qod^4kwgvRg#D=7;C=&Y>!v|5x2+`?*-^} z?LCz!X-C}+GR4gReMHON;AS7QwO)&JjXebi+&@1?WxyfYp2Y(SQCC`%?%}o@zqT|8 zqD=nowV7gxU2kTsee=FJYS)`ufBWsexNX;aRK=HNJ^N^=(=%f?G^P7X(bu8Z)`xcy z&pY%Mx_1}xwnL8#)sYX4f!m!e+5yC;417Iri#razX%GdX59X@(y;2){l}5#~PANzAFDcg&HG zVx$o7NMCHBagP%tsGZ%(EJj9;DZEp8fegX4+WeaG$b`Pr1!$C}p3+8G1BopUObjuA^ih z-rRgC0!2fd<}wZ~g2(4kO!_m@+5Rt;P8Au47OJ)nZ-9Qxk$&lb9x2=Uq$lm4_h7Qj zD|=d<7c*B>v017K-(cA2#U&{9>dA17&D!wLaFBbI0k{jnid}d>c1>QNqBCC9dKA7M zcZoDEsgQKJDyD+TFYi7OVl8HY>2O&Ao}S?@G@AoRuu8KrE88dPz8t zDZ0b^FkL2aVXf`o@;ssRG~7DQB~Q_;z7NF~6uZ0cg|(WB?QBnbq;ttvG_${oK9h@p z#79x|0f>GNr9lBZV6!xKC3%XL=O8wHxnOy`66=5($i2}HU5aMsf^&7~MYj1xvuQuX z2Iz1(SB@6LrS!N(QLJs8rz|7(d;}GTWT?Q1GQ*&Y`(Z&4Rb+meVm(lELBDd zl&yrc(sQVtrh}wo2+*AE!-`JNJ`y(bco%R*GgI?Ln-JXgkPmyMMV;k$GCKRZ*50AI zobYNu(J&Wj*Ulvyfb1BiW5vYCaK}`FhDn{~nT^q5jFOojklvd*_(`-A{kr0ym)Npg zJ`}{#I9lmXEj!m2|J|3;#AhM+WG>AFq~@AUmB4PT`9mkJ_{1&)&RE?>F%aY)CBt|M78)#8Q2%X zVeYC3qxqDKRfd|ATFcl%8xV^v)s+x(*LYDjQm|~KVA)84)JQ$riJUM!SP#n=Q^N4N z#;Fzb*ojl&mqC=aOkzoT4m^|xeH`lAL|k6n>z83UnHxq4t&E_A26O!1k%PMz$FI0k zy`eEW7I&GessCNOX%FGB>hrYPNg zF`Vg>5M!$AP4vGt7B5%Vqld2I<(4jF)S#c>AR;yJ7R&GIQZl%+q%gFX%^lcIEeW$| zVikSndXf5Tu`RtweT7$k{>?Qrj7qFN@8D`9YK80dTT&-nyGt8GKOhTgtOB&JEVzt~ zk34*Y0LpI{%5-fvHX7YmUl23G@g#`{vRA_OXeVXr*g2E(Yp(+%Zi$f+ z-RZ5*i*U_tKpl)Wym}LDxKjFXe-f37TfN)(Y#J^MwtrwC;MYG@yi`MPA5S$Wi2*b# zr97G%Nf*uSONE;g0j&})_DLWUJnq+93%>|Gx6@*&LvYMJ1=_u@fojd=m=f--@VHh| zleiXV;6JtI4QkDPbd|^an)6;B=*}(|hVY&Uy{R6VDt?U6V|BMxRILer^Zp{Ere3dR zQ4CVT%|7~^3b?us3dkFa4N}DXntGJ8dlm?5PayLTfZ zjjF{Y^*Tu{mQrgCscn$DR)lsyJsMEU-AxwnMC$dQD#8MaS=`v2#Yr@zB-&FF6`Jx2 zC4tWM;9WH=HPvWUz3_{=RhXHKHvxWA$;-|0Y00!X9xDdd(nH&P)7B_vT`neKx?hK< zVlkukQZZ3J6jSbp-)%|h)E5_P>5VdmrOTbyX6_hH$3ry<{fl(^BOPos$cx6cV`P3n zPdTJ*7M-J@S^1+#jEmCi>!n3vRg~V$cMgW42e%92vnV|^p6(+&@|M9R=Lv+1WJ|gh z$kkN#Me8b#MQ!N*Z|yD7rZ(0?nmIoob1ja+7^8zX8n?h=A%`_?4ntgP<&;31ow=^s zED+(w)VM_)hQU3&-AAjQRBtGK%i+uN=&_#=LQ^9asprSJhhj)lhnGUvr`A6ws^AK9 z?CfiEcc$@*!M~bXv*~S=5trU&vglHU!%42>B;%1}UMMC=0;XXSJZM$ESpEE*`!39) zDW{cXIhAL031O7cDP*KyJ0^0X_4HblPY0K!)d$n}c5eNgZH6u3>z{9;KjpaiIf?o+ zzEK1vvY0Y+t)(i_#a!+Tp@DwtD5sn3|79|MeNu%|J&W+%EV|dx!;{xGg{W)|nxXZQ z)Kxwbzlc_NK<>9V=Dq>3<8%8Pb;6ZZtf`~deKPi%>Vvb*5PzWm@lH^Wl-~gNK9H9$GGp|p=CZ~`QK&cS zT4ww(yFUmtAvF#Kq`GFydj|T{$Lu7weTZJewhv8UK}~&e0=j5-6g<@U()Pjs52@hm zhE&`$6VVvQs99cm8jaM^7v>KWP38|zQaIYVBYsUr46WgHe~ecqD2L&c!y$N(gAeQ< zFp##08Flr#k8hv%kom(836Px3l6I0Dt|Wb>`9n|GM7w9rL5t5#rmkL@ivR8o9RHN~ zqpsdK@EL@=QA|fA_wcNQXWe+-M=2J}f?giRn&>6puI7ANk>u@V+EVcM6S)c-vUXepOS+ zKEhri{7wX9=~JqWTx{~7WT&z0BWxu?S3{Nr+15b`)?~p)7)gY-WZ+uVFmedJ9i}p5BL!8(=UMO()(xRAu^?L~D8Wb;e1us; zXetYyHxHb{VXCN)uxAMUHdGar?Qv9&xh(hyLx#{4z~)-YOzDtz4J#DBA)7=y&i-uh_F zb`&>3Qex7MLO$5&EkZ<}INbAiPnRp-T2-bGDAs>Bk@%vTT*&Ay-0@jfxGxqe1(mL=M?&}-=Xx{CfS^Z|O; ztm1cD=*w}KWH*tWtT&`nq@GXKPk2Q)!N;fM1|}Yi(4jak&PEn3-WX^ds2hIkD2BDw z3qsUUVFURXil^|U_or$uD#l^g`gS_!c5^#DN}jomBd;;;0y6fAFWTwyFl|ekekqjn z-FQw*vq8?Qzw|ui1-aX4`n5W_^17*xhjk5zaODT%BZ5WU@u&#h)#8Y!-9J?mdb-{| zgj1nHpzf3+B~tuUx}ND3HAkjG2hIj^NuYxtbVk0Z8(0lZ^+9L78J&(M?mVXNp;OX! zWaGd1&ZZ0 zHAey?bIHjF?l*Mtw?29|ItJ}pAAKO@`Ph@XRUYG()lWZci}w7B7WP0Wg!7jc<*$KQ z#|7la$2dxg@=qP={jEqCr0=Xg5gQ@-wOt(>V8g-Hy#XpNE04YeteET-zpCbbg)Pa3$cqoj*e2&=ntr$EM zS_vE$wsff81;52jhUkqfekTx_BAj?Af)%nf(?;l5^~$x-Uh=W^ z7fp;At@mnM8-zRe7rKL%c3-5=M!Gf(YkJUXM)6^sjj(y-K5e*+PZ&6Q{ z2YFPXSiOB)PYRsA|H0Vqe_z)`&^SFijmot+!`q^YcA1K{^g2H6H{;^;!=8>;NJY^5 zO6w>5r!S>*bPzfap>mgF_R&=6-o?S$I69#O>!^0j>#+JcLO;j7j^YO+(R1AEL>W3o zLDa-vXUfpoGIXBNF|Uh+j(L5felF3^aj(l9eBA3w8FCY9Ayd3jM&2w#w}5gHdd%w% zamT&xl?7?n#Ns)6&EjoybU%kruTf)1jUSFKT>}fxCteC%1Z&7^fW!-M8k5 z9X9BR31cU8M}pcDd4nhAX&uMs7UR^#ffjm%qXeE9HEme&!1cO6hM#zMqu$r6t>2fg zrHbI!^{IiRjr9An4t9aHc2iC@P85q?*JGN0a_UqY`JAN{wxOp&`m;>S?x|U(`+EOv z)^SY>^!KtYpmUzJD7Z5d?|Z_;%#(UGVc(=j1gAU{V_u5^+C#HCGoG)|wO-*B;Or*0EbZ$Ng{lKY-QQTsi;mbiRO zw^dq!*vT*4_pDT0)PCLOT>@^$DpBx;9_>}K>b|GB_->P4LzIyG=kWI@f2g?phVJXN z4zeC98)~st5An{ybRE4^U^!_MUg<-WOI2FasM;}b_jcU(B#MM1dL0Mp!uue-=g?fX zuj`6hTlAVD{;(bty5y))BcrwULhSppa{GFX-AU!L>_UwW#2FEdrm{~XKPkhwEI|Z8oJ|1#RBj6`o0JIj z`iZ6Qq6=;!d9SuV-1nR>YqD^!@8Q2I25;5t`^BSZd*C)-5d*jCiC$xWyzhC9qSg|7 zw(32_6I+N#It!-Iu=8-~mH;8IT)@!4U$R={Qizj*V$Cmp{w(SC;> zEM{!eYgAqXE{`hIzYbNXp(704cK+^tPd8tXJ?e-T-qCAU>H_i>Y#FbYHBeCH9bToL z6|lgvCDkeKui(4y8`Y-*MZry~Dhjsi@u7RmLa1&O(i6q|RvbQthABO$2ZwV8tlomS$z{Zzo6dfjj@eAvBg7*iz5q-ScW zr=O^@4FjjoE0 ze%;F#OaAC?rJnkfZY`00M7KG5fg9ev)blpt+rEnwzrBgEHwWZ(*wPPG1&BPT+i720 zi^Tg4(Ka#g5U%p`t@CWihw{3CpcZ%uDy^!_D}Xdr5m=`?jV$$?P)Q8jtA_{R6DnHl z=u%Hp{PKkO=YHK$X#w%$N|J$Ax2@WTp_+kaPZDqK)@ylF3fbrpnkDpwJGD?6 zvt;ZH8q=5%)y0y1dWctUL8<50vh~mAT?pxVPVxCZ+)2mH6{Yy~N}rF4m5*=ldx-P> ze37*uVKLa>TCCQ~HTyB)(y=d=E(X)WhxC2K$^Cj&{i~JY5=CBujpr5=7$F)S&>dd! ze}leFtyq}{^^kxhBpihnF91J4@e2>&p7PE*vE_iCsHd$LmkuDEUK>h1R+VY&yT~+l zW2xt+7<@=?>_=@x9du=*82>J!YHyT!8c#7j}{1- z`(*?bY%!Orp>EkD2EV0O^=k1=sVAAnXRS)zkV>bW)U9%+ev0+R>nQxw)QX1nC*14v zJv5W$FsDm^_Z7%Q?-QBt>2Y4)zbl6XwGw3g#QOJi-^w|MNtodXU*hFB7Zu8rPd&w^_3T(LCBMq-U zR*$EzDqq}jly4#;c@=nha2b@XKjlr3>q~TBeXoz$Qi3bi4uA0#{U!zpzr%WRXyQ&| z8W>ZkL8!;mPCRo0t6t!nR7AAa3e#2f%zJv(@b`9@+TU29=R|pMgCH|5*s0rti0=zG z4}2H=+OCPx!{}F<)%HaoUPeF~1^m4%pi%&pqXe!|ZI5R;rB+KWEjK`|0cBe90%#e6 zc0h}Z_IUhMGql~U+bi`2=ZhEU`%uf)szT#q4yeSs9?xhWWG6m*7sbdrrQ54eZnT=7 ziS>AX1U4?&r}WBxZtx46cs$Sgh{*S_nr=Ldn!mZtRCAK1k+&PRU1P+|-Flr$+3?aAqBjbFr1pEV$Fm4aDDuJ0Wu=Rt`nI7?l(%PenHb;Jb z(_8e~j%1KsvbYKRS23-OV-eCHA!$g()`>%2`9O~d57_z_rR<5Q)77<$O1TZ*cI6{p zUe6Bp@OZk4?IpM|+Jz|RdwD!}eO2w{z3XL=8wPkhU#o7ubX51NLM`qGPhic8f*Ng;x)@wKfpzso_yg2!RNIr7`B5j4bRIT|j;co&kU?JluX=Ea z#JyH6dGC7}O+00zC^(6G-%gu7p8Fj24Xn#)XuGiO;?hav?YGn8`B0TO{v#y2ahJ!l zt^De66j5V#dpw`1;!OKUkMueOzg4XyB_y&6R#bkfc=Y%cs-vn8KA`o*TT_=P(fVF~ z`#qj1GJSFRl)fwR3Ld%1h5e*{2LU$%?!>$iZv1|8U5r1i_Y_Az(NhDLR`^@>sa_&3 ze}Y@#NvHKJvHr9krT&$Cs;>@6NXX647&at-M8>4S&x&78>oLpHe4Ut*ewQ(ZUe~ou z{8q#7Lj2anuNHXu1z$J~ar`gqnlGFUPJ>$^@Qc3_KDZ70o38mwpYm^fS%n$lQxOhZ z5cx;(o$%w4NB%j9mFurGJen0SezxL4G6r<_x!12;UAr zr?;$SKyk!p`YGLc6()KbK1r!fuc~Qh$@6|Syb6ThGx*i+;NL;4a5Cg$1XGBVsf-zG zR7Y#Y9vKbeq&~eXQWkoHJ+PL>5{G|fA)aW&rA#}*$-i9ur(me_HEkALU9sn^en+I7 zL;uE|(;G$A$E|}l+Gvm0-gtF{-Ye$<6LE=u`Ho_=O~?_!8z*U;h{nLjg9jz`6@HDRuHvg&ld9<2bhtx7<;_LqqEa=0p|MJ; zLmFCj1(tPxxXVbAl8UNZp43=;%I|lK!t^A>X`_;&B+f%ON`L5;w-N^Utgzagw=o3| z!hM{EZpD=A4A&a2DO^Lia5xLx4=*7e+*Y^^aBJY^!i|8-hRa#4Yq9u^f(wPK1ZRQ! z1^hQ~=i!dQ?T6b2w;68jYQ3-a7{CI!F>vFM(G)CGSRB}PqMz1us@*c!BVJHF+bL$-^0GswZQK%qUsi>-PBJx;&!FuE}n%g z9Wbp>&$F3LVdIXQKl~eB4~r%E7>QS=SflOU^)>A!ro8K~9Bqwud=6?iQ^4Yd+Sb~R ziy%)i2`owbRgl-2yjp+dU8Hvx)IFx|O3GnxfR#T(|fu=Oqw3f^Pi*KV* zpcNpyGP$C;n1YDTz?PaelsUrG2{CZn0SMzI4vFU>PCbl+gR69{m@!=qzb1?YmGtFT z7)M>h{*i%OSvBuYDoz@35aU8<5~4ey?@4$LJS{k20dNP#i-3DDUJ9JUcm?n{#;bv6 zFkS<^i1B*hzcJn@o=LFQhQV2TydJvv~Kd4O6Q+#MJI1`J5AY4=77b|3Fvm3(_@)D&`xYZMElG%n6xrC zGfkW$?qhJp%zd0DynU?EgMBbpe`k&`4G9_^S>ENtgYX^1sb|H4jm5z?Q+4-d^gsmT zZNPOH?*eYbc#rCtR`42iT?t&Vu6mqbtOr;nUBa1o0 zGrNiwzL-h}fG;wC;4v{CaqZE_=TGLMGsQZ|!CwoDGL3-fuHsYTHe}=a&fJD!BHQF6!E8#uI@r z0!Ia)y~Sr$F@XOGuhC3>yQ^mU!nATOLDHANQ}LHPF4Fz1(d~RkYg&yg#Su1o5Q|3H z1ScGaI8=l}WZRnY(u=xq+N{;%x_~e;-U3{)e^QWe(;h05l+ofkGPXyIfedpIV?=mm zYk24q_$ib1$mDN~cNv*%24Q64gNCb^NzZXGo&!&{>p4!mSQ(j&2e+EJ@ysm*_Xcwd zncDDJcjVywT_*Pb;VPi-8MHD1Kk#?@SOvcL2+=0nr z8gW@uH0?9yvZjbF#BH037bcn8HdTB@TLnr z(}pk?^`aQaHdo+;ZlC#rx^j>Y=ZLpecL?Q+PMy%f=Lb zAB531QBOVGX$z6!M(|Xcg(?^OA#f$k9RgPsZTuDdMmo*rKiOC;Hg~R7sTjl=stRC+{YZSx)r0x$a752xgb75MEfpq zx0u^?K~?G;IR61E!E-7>dyB6yaF}cHm0X?d^dQ=fxeUcQ=)trHbHHLm1Kg(2GvOd6 zfyHlh+f0wHGnfQcBt6TnW)fJELG<`o%p~Ez4-h*-t&JS?pc^w#l@nM-wx@yY&Scux zA|wp0K~KleFbAx%qQ~VInFLlOJu|<>B(Pd=>0$a5lS?m&O_Zb?+U8{CnS0qlOP@27eT8YUr<%2|q#DNAbf6I~0D- zgy)&?OD4RDaG;96e~@UKWepLRt6Ke=o*oV@v|8hmns!e#zuVmxW&qYjmIBA23P>t0V~r0?*OZ-*^*7j_RhbM)@rR zZMYIoZ8xM886rLvZAhtD6=98jjGh25GDjFeGL7o^B}~s1g#U>+^(x`+jx=mT)Yae= zt_G2e&&aF6z!Z3m)>#Qm6Yt*R<*joLS=1b=ia^-NZU_Kj%Fe)45y zHH-E>bA(AQ1}@rGo`!)b4N^D#!0`zi@p0E#mZyO!{z$~J4^!nOY{dUw#TWnfvsP)F zS;L~maU{Ypu{#pIKsvBO=741{v?V3kn@kcm5{|c)Cv0F! zn3QLqa{PPzyvn2yOy%z+y}_EUyuG2WSbCz~bi+NauijoynXQ;-eU3y#d?-<~AtKc?H}T z%n>%KnP}=1!oMMou~>PJP}k^;Z*;8+<6giKjB|mzG0p>ip79*uZNSEY_Q43vTY1#; z$5#l$_>g}oBh@T4-};2Kv}o^vrvV(&QutAwhJ*W_x#2BE3OL7QaFs`?c)+5aFB)VD z_L^!lIVD+5$wF`~nJY|IjdTQDH|CD0c#c!x1~UgN-nCe32WhRK?qrhi%28rqU0kcq z0^edDSVngErdTvTJjGDafhB2A1sTO;YKpjB7xn1{t_5?wm>UbO8*^h*M4x)NRTu@o z(N-S=(~4zot8ACcrHckt%r75*V>{@W)4`)hi)JM?^Z5lE;dzMf;ue74Q?NE zgs+Yfnf39Q+rO6E3sh4fhx-wTUTdbmZ2f$5c?m)IUMqGn_u&igUK|gVuxV_ke zd6l`n{pFCdPr}K5`Hv#pttjT^(H1S0$<3ox$GEX)KbAT7SW&MjigaT<1}$?p#*040U7TRi zRxo#Qf|v)+5i`l6ZD9^rxB`$#w>*n>l*w*+vc>I3zjkvi}>tQCUY-7Co&VQ;m#rOlm70&b{J1HZngu; zD8{{kYvrjp(}6P>p8_7q*moyn30J{hDQ@A`82BlxwuP}az^d(M9F=3$=ok>hw`%K0 zhyt56Jnkb9#CGSi~BQl#`}slUXSEKfzO{%z9G|+dJTVrz!3ZbK|#I zv>MEf-y-zpsC3L$+#fO*vsJF3L2=;PGe>yzG%>t6E+=DwPcc7st5`?!Q@7!A!`#$u z;#1=8RiIBhS+7;|ZR#UZO=^uu`WVNO3R;_!fEUvSi-ea_s1 zqw=B2KJXaEHgf}yi6s;-4HiN11uEaP6XFnY;h$KvLCl4JB7P-qI=FevP5(s64m^#^ zJ97h1i!9m^%szu_6LZ;TL;-R2{*HsDn5*}9v4gmRFDzPBr^>hB3w5naIcL$DFqd*p z*jpps^)Ip2&fN7cMO)&6zQJP$b3xyT@x&eb-lA<}?%4NY9dThlp$(V|`$>G-8XEl{ z;HP;Tfq7W7P~jNhuE6CQ{iZ|UHI}*eeoX_?MLu5 zy@BOr+d&2fezO$`Ov=I9j(#9xm;_d;2Qo)!%jC_Kolm^=7~yxVXryk*f&GY2f5?TXT@xNXt?#U!wJgUIWDTC_%U zRJno0mqe0fL>804s)l6e@GO(SiX_X04NL-ymfftiotreg!o?(Ew3EEYe%7b_9-Hvb zh+{mX>2uYfh{d2tWE>AXfN>J=V!~L!cVVGk&6qxR`5I&T=HzE{wMJ@{ho_VS=i&N`k)(1Iy>QrccA0t3tGcz!lf?NLYDf&R1;&EOuh|*s&1gXeNP`K91}{7BacQ zR}AllwT)~<_Av)6nzgmoZb!xZVs|E>Bc0m zcq0sre-`9oCJ7rUUq`A&$_A#C$yDWSj!)Q#?-y7e-@p`~%wH~Xe8NWjE-HO-I^9~u z9tfkBQjQc@NBo+ODM_|7kwvNs*>yx@2WxmjTlkF;@H8;>E`3vLDP#ID*Kvx&9d||4 zPP5i&YFSv`VS|Ayc33}T^(%Oqp}?YQEp*s9kO3}50?Q_BN7gs7OcFL~lLkPT`oX|d z`zToHJjL;WMYHx$u9CUVd?pE#U<}+{-||EZOoai(y8FHyJpkGq<8I^*5gA!3|~( zSn8(j4W5E25|a&{5<4(3T5W^h7#JsjX<*P1o%a~iVV{Xh!12JyGO*IjjE2{k(Vqa* z06A}ZKp&4Rd%U3PF#ai#n1MQ61~-_w%TI|R8P>#rJot@tz7elxSgSgw_0zRsOO+_F zyj2Mbd|KD$FiH5(QgJ&2cW8zEbuDU{id@)V#C1eIQG+mqn2Q=D1`;=Yu&ym)Zu(%c zgt*iZx^{}W)DhxPM{F3|UR0}O-+j8)fiRjS?OUalXxbfwQP{n}ROt(*N-si!ZI`RU z0IMgWoRP2rV=`x?7~TmvuNVcBF6LH@603;2I2!h2%v~HUju96-7KSa%#f}xXiAx`^ zYwcI4Owz}TdY!=)PSmw!%oR=)eTZ{U(zWlIb59cUh+8sQ*X%2m?2^f1FL7(8=vpV{ z)=UvsiOYE&!k=nzbO{sflGC* zrBJyLHs+L{wR}zyo`g7bTa=6b+(j7unT?_S4P$y4yV7dK(~H$lFs9e4*D|KJtAAp= z4>;i^m>W_;c#~S0D@=WS)y%aOeSdWGqyK? z?GR%!Ir~*%r$)AB79>s?z^+US#xG?|re*b+CzG=FjLCeg4`VVP8_Af=#%3@kbFo#7 z$xIB-WHNoS4m-k_EWv)nw?Sn9nML8QM`ALEs*Yx%0+AUM7Iulr`l&l(GJ3+mmOL3d ztzk??PVWL!1;}{mJYzCiy33esm1)Wb%b@j)$s(wP zF=<+;OIANE4BQolh7uQQWaYDxF_wI{COeVMz?2Tzha8tY`kxF# z=u=k|Kn5YVS%3^d!hKW*WB}3{nBtJ($2i7h@Ue>HkhR7(#$=`O9mn}}J;sr*lHK&G zrgdga#u(F`>>(?RoxoHZvaa}s`J=#e5Eb!cP0@le8Bz3SOvV#48I#S#USKLH*-HGv zJlRMj_$i)jBXT4z)SP4#F^N573^9izEd*ZAn9LXG@Lwv#N5G#mCUb=AjL8fku(FCn z<_FopR0uLVn9G>V4T>3iUx58lW%NHqg3W;D?XLvLY=FMtLOhuZq%tNmfkBMPJYWK2 zG7E4rCUbxn7?TyicE+^%e}XaX`TxXt+E?g*YkNa8}d z7ySxjX@$&jXjAxe#*3w?z#?RkE{nD#nvDD0Fk0#vD@5~cmiZj5Q)ayVn! zuPkIt`;;$BT&U6ZREQs)eJRi#h+aZ!wE8?FW8R3|*$*hAZH zLm1O`o0BnZqitYJ+h^}Hj!m^_KQX2)vTDI9Guk3+$C$RmCNQR5D<@;xwORs<^&fK{ zp0yl6yHs0&X@Jn?)M4gnQ|cmP+Kc)(W7>l9ucqSD)>ABF+HxAon6{cWGo~%3DzMF<{D!c6^2~Pdh!&GNv7#rHpA~=QYN(p>vQiZRA{F zOdB{ifhkSexbY8D6{EeHx=zD00vQ8SB-)!9%{*<%yv&%kVzx4-Etn&WY3t=YW7=~0 zoiXjS1XNd<(GE);#qmhQtoWv=Q+E$Ds{~KbfbE zhmdfU4sAFjFs6-$UW{pjVIpJNSXda2^`A1P9fd6%KsyO%foXuy4nm_EgbOv=IcP00 zDd3^YVoXZ-!Hh}yp2wJ!?(-Rwf_)cbQm|iQJarpN>KCChBaM1P#-vG4XG{w8{)|a) zK9e!&%U=Vg3Xq=s5c8xTzsH#L;>~NS^hqE7Bx6#8&mc_eKk2_WaRBMPPcbHaw}&z5 zxobtLgh;>Lk#R-|#tP$O!1EZB9(yli(qDhanDo}cwNyH!uXc7|4=JigGbRP~i;PJz zy`M2Dq`zcLis(NXlLER*luDEo&n*~}!a0{QDVi5BCI$0ei3^>0KN1T9Jk*S&3jUTc zX@LJ^OqyRuZ54+!zDd9|K1kC$kuhm-S28BW?M}v|uRY0_)U-b^CiSdWv{NNSdf8gh z3X?vz6)+Wu^sxPyC;jUj#-w(AhcRheFEA!0t6oQ?L%P)_j7g>1lQC&er!bCmLXo)2 z5CGoGn3RrJ7?ZNGYK%&h^os2mlm2ijV^SOLXG|KxZyA&J&#$hMCCy$V#-z;41eWVR zY4JvL0IAuE7?XBwGh<(tS;5o>X2hGf(QR&ly8? z<<$OU52>kY*H?*>Ix3AZsi6ijCiPQ+#DyBEoi;EgZPQ7PLu#O}8I$_wS70g}>3HZ} zeHu5U&gl$nr}dxoIfWcRdYrdq0PfA9zxjiC(%Up{s1hQTOE1QxX~_qcixo61Z!#v$ z%4No+QHg7$;*ch#fH7%MPCMB{s*`^+CY4FE#!7%xB_kP=isVhkq#F5#F{woSV^!fu z6_N-{1tJwlK4a2+yu+9@9zQU4lBy%7i4q{K#vsO|KUlz+^ak$%+jaGF)US-`<*1-I z@K*I!Of+yLFui2joH4y*n$DPB2Yrg;(=Pm+I9mT9K-=)gIDod{Lz=2YX&b&ZW7>uv z#F)0>=Kxb?^kV4W7}J}b`xw)!nP(}!O&R?7#w!eiAFVCpo5j$73}p{(InQQHTh4DX zrY&bjf)b`J=P8V7+iMqN+V;A{n07nti7GzrcC=zlyB(t#ldf+wVR|+vMbTCAc;mV3 zA_g5}dOJpIrg(Z~C4ezrS<%87(_1F>8RIPzEr~IiuD53l({(M2F`3If#hA?HoVn~F zd$|>i$zJXQ#$+#di!p7oTar|PXp`N}m^RtN7}GvZ9mcee6UUhLar!g93|yqJQ=@&H zeH=jB1ivt*ZGxEQDl^g&_hn34;w6lsCe>CmCKcO9Ko30Wz1tt?=sF|jCUEG+H&^L%ZwWsZv@`Km|n3v!kAvMJIR<{ zu{*Gh*)j1L0eWLyGVJw;XQ1aO+f=zlWB9>@V_fTuAg`<@~L!@fr_Ci|XE zjLE)dC*$=nDJf=5rY4sdlc|ZdHS`Rc`bz+IR6`d`v}%t#*`wj@;?aaL(C9>lNsQ@a zhG~rHbcT7rRxJ>hFzADrr;{6ABaAiQhO6nDz%YVDO3->JT$%9CCf=H=;-LO`9Z-3E z3Aa*M3iLJMNv1eOCcM#v-!aHdy~rQt9br3h1Y>EW|SsYqB;| zP5d&2u|z_-Xu=0f_+t~kXu`jhVbuSAnFmeSR+dgCTHS;jm~cxIZg0X*nDB6gy{K?g zB-XIdd9|Cf8TvnG7mgnw07j+NUcTx!DJ>E(mVuCR}WzX%f_XTnJmJJo1R zH3g)b@M9+2(}bTk;lU<6#)K!E@be}-+k{P_wa9XTwTJ&vN6_BXCPn|INB7c3KtAl4K4&O6fO*|I$RC72sr$u z)x>WkTrIdLxY}^haCPA58?<%d>cQ2AYXCM0*eRPF(b-KVk2A2uf6|NgxcepIL z9&p)kkNaZE_XKzXt`}TyxIS=C!u5rF3a%gA({TOa2Eb7!1MxcuE(dNf+z_~-aJg{9 z;D*DEfEx)n3XWvx2%#}>W8ucZjfa~c-Wy}Bf!hZyZ3?{4!cBz}SH@Ul0*IXj-)y)! z#YN++YyCx+Y1Sjnnok~<*K5LrvGOeB>Qm1@ zAwCZo^&B>I@Ytc^A5Lraz>1lR%S(O2R~1;Z#P+k+y7mXNrobAMW?k`qfpx0L`@*_f z9Qf78Uv&S)=Xi1dS=Q0^u!jzLPDr3kJBYSReL`$>^0P=-W*~>t8j@z52Az@6af+J#E;q|zZl%=EQ246Jz8v>3d@Cp@Ggo6wSy7VW>ZMu-VBtUgX7 z8FN$pRi<=&^ z{Pvbljp91HeJbnKvns|I$qgV5@A0Yr#6!(y8b}?dbWD1pTaRq2dcXgejvRA{+Ukj3 z9kT~L@mN1`=~Zi?bHec9=+(HSX3dkeL1ms6NoAg9Es_$^37Vs8#y&gPW&%TBfEE0$CeWZ=Z)+zVeEg5-C0coj^1L}_}oXuejsx4WIAb` zql2;wI40_=^?d|6d^fFE0>X|MCJcO3u6|9+-LZD+`ZYnB@YW{=Z+~#f?bc zaOeM%b?A-?tV^(~J7!&=8e zm)&s|k$)R^Qjc0Z?c$65J}rw+-nLG*$V;JUwMwd@iHrj_RR} z&!)`*UTugZkq0IHT;EHg|?`&_#;*PHe(QX%;|~Z zavfW^o|!A|)v-nEcXLHl4E&=ui_{ofq+ZZb;2Sr1=WnEQ!}Vb2Yd=rzqR;RWi(+hX z-gg6&JKqfyB?vdL8!~=(1KZ?i)}?PCEU>OE#4j@!mTSSS8Y0d3y0(SZhv6+8Q)wR_l|E;>VM)Vt1&z4BPz3SQ8((j6Twtn<`6MRTs z_Z78E*C+S88|Yc@yVR2twsdB7)GN8ZtrOL&us-So|N8n!>u|C-MgGG{;s$=v>r1g| zzqGw};^e*~3q)80+ayYNQ3G42kRuDmYK0oY&ZnZBh;Z^wpH{S7;D29vT{YQSk=cH~r;H{DgUsqCw$b#vw5e^0_n-Td`x6(3IwS6hIFtc#-Ep=}9Op&)jfqG42=79_ z2p=17OCf%9ylq-K#sS{7Tv6MT)_8%ef0vqFv|wseECW? zvKhu3(puBZ79M$I!Qp*}lXxsl<*_jRm+gHUAm3f$Y%^PQIQmxAty|5JWp(qSx{1If zHP2#`Y>|l%jFWDK{maJ0wwn5bW1>yYQEe&JeR`7W!!vPeJP~&>$=1R?YFpD;P;9Kz zx+On}wvK9U3(--Y9&|qk2Ku8FKp%)1i4Q=?L42Cr}P-vKF zn4@ABZdiEla38vj&Ox!Og*BwP(NOURiKT_5cd$@r5WARqAGqoL>P-vNZhC{F(jF{i zzMpl@K}MgR_j&(#|9Jlx&N+MSz4qQ~uf5jVYp=ao?$?FM$&57&|0iw1e#gaMARHGQ z)Y2H$t)*>n9QhHj`Sb0i_r73S&Vsdcftymr;X@WoqVME?)D$OQVEM>*lG{?npLO{c zc=050n{M7o9z0omb*Lb{1jB`A-D`hJ)nsrZ=p%0}-E8NGIsNGNPMY{z@?Kh=H zx2UuoX?rvpB&vdc?qcQp5Q`zA~*bBznPUow{O&>KJAk!MC-YX6?fQv3bX zRAaQ5Eo1V3#7~>VQ9}yPjRoPru?q97(iOJypmZ^E!TcpDE6|7)7ttW=R1gqEW~FI0 z%rC7S`)>yePo;PZ&&Zn)@PPr$DGy3EmNN{#b(h_$5H?7yaBh+r0@#u9X{lr7#ZqS! zI;jqTz@6#h)4IZQybJXW0j`CGr>aoDnQfEM@WI?L1xz;k0(VZqESWu%$3G-K{LBuU zSvN1q{-RQc5ky0sbFUMzldMc2#&#|!JhOHo6DduOz)^|?h36^@3r{&=B%m$Xv$h8% z6U>M_Yqu4iLiqz)d6s0rq(OOp<{^?;=hkOHVdVyJa|W6?>nzb6%EUklz^t2fg_mZC zPe#rfhxcLH_(WhVL{b)Vxg2b){UL^TWQYreM4mlWObf|J!%JzzCR>>}*}z2O!XGmD zj;Z1U_*W`triv*-4iA194;#;ZSR5;qbNONMf#`J>{8twYuqaoJ@htbG@|r38f9gCYZnVIj@MLt1X1_PrPl| z4jN;8veWEpeq8)a7;3aH3>u>tHt1B&!h4d9Q##F*#)D>v;r#E@#dCumucRIuqZ$5Z z3MOdd3}{?)ArE{4y`Of4*F6DiX4)Dq=70}s*YWrq@s)sF?0qxi$DIY-og?<@9%(`yRE>o`fscu-otjj^k_9?pHrG>F$ zYVg0&sSS>>Il*XPt}Edw@o7KU>y)TSjjE@`FG=;;=ZSyB({**8_`0O4ZRD#KiOEwQ zJZWEcWeh~Cm{V(*D3`HJvo7U;JfCIQ7lszw7Ygf~4i=cR&@j=gdvGh>^(2P1ye8yb z;}V|{2kCUR9Xz-IGB@!gZ!Qr35&ppGwdcViH<&2D=*v0}9OU~7p}^lt;9Z5{zXpuo zfU%A+>&92|_TP!a$BbW$?=XBXLL(aRoJ+hwvMv2}$a^(ynktXRkK+l?Vs0g5@|q+V zPvcIK4&m)dP|V|Y^N0~rnCslL;+uk0npDxb%4J_H{w(MUFY(gnL2*2*o`)nIzlX;Z ziw}=1ywq>TYVV*SCUUz^dOLR(i{r!NPulGy%yh*OAkQqTKGktf7i`wW?{}Rm79Z6O zh|`)Fm+ngVgSc7H#kcWRoA|yiKG0QOBK}Fzy;bm+7sY>w;f0sUih?yNk|jkQb8cnr zX5Fwh-sKQOLkqj`eiTH|PiC-+USvUXabXvakRjKG!E%>Dw8AdUveX%C-&$w?V%$F> zK4yLv@3)<1HsBKFw>yUZLscpfm_V`^8Fxz=H8Jw(F3Sr?W3Sv=#<7_^2<5cNdJ4z%Gr27v06MdWXM;<<|#F(Yd*_1>xP`>)h~61BkmJyDZ+G0%Cva7c^|_(u*%rdL{BjXzwe5BL`_qk!GU2=wku(5!yCb zgU#nbuZZD}AyfPCBRv;oCJ-KNdc`c;{tn@e?#rWn55Ae_RTks8?>O=dzR{OQ`^MNZ zgM#N}7U+2BQ_6Ez9nZlY>Zg+CryG3KwfhzEQDI13yv6$^daEx`b$QTgu3rNSw=Rbp z*I+b)r$#Iz!Am0;1d0;uE+~jK5axBOAk3+k`8oIMQ*->tSi0*VKLwbsu95fP8F%+m zxtNJ$FF;Xv&APi6<6GaS0PsCmZQWf{dFHF)_{h30i}%7fGxI;;`05u;>D)cgXf;9k z47$dvUq$`94E)5aSZxm4z`OAb-IZhUwyy!_o`^cn{AL}Yb_|-$jjxGu;k(KK!~Bq} z#--riC4JmGD1_TzLpyiX^Bu~w-F4zMQ77nv+FY$paigHSYXmQPUHn1!b`ZC&75}1p zJA;R<6Bju2*A$w&;m^4E5$LNY9*Q8dG#%rj@{zu+FOT-^xtZr>B@g&SzsDyJeQ&~d z4B-Jq?Hb?2sMOJy_2qTkq1eOvCF|dSNv)sRm#*@WekzYgdZ>PsI-2^yDQG8PdB7jy z%6o&%30zIvupV81yMVW^$Hedl8P|iXZ&&kJE{+^9V7gkVe-h8dx9;s$E^{$_zyL`_ zDs}Q5T#So+N3?kV&jn0g6WIoiqhyN*98`x&s^uNXqkG55!>aIlUQ|mzGw@^>0F3LLWE0NrT_J-_=+xeyi9*yEltt26>ER z-w^w{b6{Fr-YmW}z+h_7j`Ub{-D$;2<7f6NZ-9hoZOd>zOQb9 z34&*K4Rr2})4ZYvj+PrE_=y^r%{_};@ms|vLD${NyS71*q9WsV@moAyu{%V6fnE}7 z#ZY?T=C{Q6{X6TDp6#q!zf*iE^x74&yl@`HB)`D)%0v~eVWR95$ArGqZ1Mh;*wgF- zgN3tGj2rY$H(<4jI1sMQc7@f6uS&oRW2efsdyg0?=)SFWop=`pqwX8nPC6h#sfz3OiM>NQtL!W^fvA;p z#~qVl7}dGL_KT6ykc&ymzzG+lmo9v&)GS;avZSA zd~U45FN|`Py2UwubIvML4b#G?S^9djaCWt_KoZWDS-jVaHBlU_r7Z>x^^`Vtvm*Wj z6Nb>yz#FXsof_m-ksp|J9Fg!p#Fv#&BE!*^)1wm9vOj{9rny8a{&*-_e|7Kg(u{wrd?iDj6h1$M)H$rZu(T5 z;eYHr1}t#>2q|25tdZ~g6#V_kc~|f$@m1ZJwhWXH#@a`Suw${l1B>F1+lm|q2NgRG z3hV5@4-YohAieS5!DiujG;jTf_~H1EB^n}FywJKrqpFJ_--V-{TDl(TJJx=|0s%w0 zqo-Ys|3@4n=$co$I?jkM34@My(sCR%2Lig6%m0MPYcAkb{}iVLG{2!N!G(|cyg>gD z-fj{_-t$i}ZbvpoEATm4u9Elns5?^e8LYwwA8&(YqEc+b_|Q}Ldsy_@iE)!sAk zp0B-|@m`?3&+=oL_$bl<*?2ETMLB&7C*zcEr*R7G+lLTxBg0FKhWu}7X2BE8GtY}p z2t#?zd06VNtmJNbb~f<#^I*(64-fntzK=u0$YeGy++(tM&1Hmok^w#pE2`MU5@_{9 zX-AHEO0nh=kS{x>jG2yn>9JFKkLj|r$I#_GvfN|rv35Hx-f4^IN$G@x$`Bm55>Yk} z@Tu-eEP><$RC<_^@Bds3nfUBn*~5(T1(vGW;3k^7#@amv7^G43j>ZWV?<4z_hArHK z??;ZV{{my@k%3q4F;U&-qx9@Cv@3O^&eR@jms4vu%pG&B3h(NJn|$C@ex=eUlqbH? zXplkWp%=brKio+zoeTF|RV#mF4>z@o;ZrAzB0o`%SYG6oILbY2ZSBi>B_j&T<6)GJt|yCHD&AC-AqX?w*ieAG$| zi68&5UHomRI)Rc#bvxnX3C2$ZFDLTi3u3T?rc%-y;507dEH>m|XE{Y@l8x|dbHRTGs1e?g=s+ypO=UUeOss!%*#AK>9%KU59r;d-pRt z1lKhrOo!@XMr@|a53!)K`&eL#&Rd@x;O%gTM@pCZtpGtAmXgXc9fAskT*EAZ{x}$b zh8UG^87~Xp#Q-!c(%_9|_R3(T%w`s$rJXPfji-?(+K5dZGYg3iLvN4LbVQ5DX+GBe zJRHzd-mBvo{}QK!HjY+c^M&^`_!7VxdG)`fY3tvS79!ltC-OfpvPss+TdSPOfGksz;;Yv2)Qkr8P zVd^ z9qk)u;91=d>&v4&jk3U6VMN^vmxpL(y6&;-Fw&cK@vG9=Cpjkn$zx^y$z}1b-&mRO zdh~-auctp~KsG&!2*}39;LuC@>q7U~^@^R-wf+k9EX1DS3iK@24VhQ4MUA2V;3U`o zTYN;Q;o1KdCr|lcYO$61fvv;jC)G8Lu}oJZW2*~X6?|J-81;{~uhGY7z%c?JNZkEz zF>8!fv5(f(q_e+`UCY?EXm-Lr#hslz#p{Ky!!Dz>WoWfs=ghWGTg6kp5$_{!vGp4< zG~81|Bh>>@aigXntb?shZWSJk$G}u`=Qm8?aoH)3e&MgYqtuR+KvYkCe6u6B~M1K`d4Joz)s+ z7WUtuMocoO&Q^MN7kcWzmYF>=%nOqqQ|*K6Mnvr6c>(PArCHcF+i3OE8D&2|q+!`Q z@B-2%0Ja3rNk;2EVDWvY&0~dqp68g%)?S$CRuBsh8hd2f2|jH;{-w&7$Co!LRA?FA zRK@E%#8Ainr9gnn_N~NkiBc~5!345t+zVjm$YE&EzSUZKJgIhCH}=Rul)l6*JQ&+! zD$ee)mS*=D;FuEj?Mc3%GoW!hmtBI>LHM9E$s^GBTT7e&K;P$+F0clCZ(Dll#Zq$s z5}q^2?71oYu};yXYpUbUPAs$c?dAJA;o{#nn+JX?#y$Gp(p7%!Kd2c>({!HQv=Zoi zlZ`iRW`Rocrl`x^Z<{_y#-JL#;80UF3+#0>CzvRLXztksR+YaMhmZFpB26u)^OyWx8m;@S`d4q=J<0x*e&uJo_o$LygNagG|HAA`UD^4%{K4jyT22kd!~NFXqt(y zvWUJ(gh>_QJApuIt68X@k0p+}cs*Il4PW=Mg zoWuK>7MehE7g%NQCY4p{_oM7qWzCqewv^l{j)y;ml{!H{J7W9VLBqfF=pRa#{_Dk3 zw8`Mxrj&GDO{xq{P{XDg%ilYpF7EekN^O_DknD-ZDsKm10^zlOjsFhrozNyfAv_qi zbmz0BH1HU7z2lA}rH((lvr~$Ddla4XHFQ`$_H-KA0O+RD(aN!!^$L ztATrTiMqnCm*V|^Xt}pR{oXC{pdTTt-#f|^epG^5h$+!7ld<-_3<_%S6nb{>iXX8C ze{UKMh{gLrw8cCAH1GZq0RZp8myw#q6RwI;LM+d|itUs4uwr?4CYP^@kyGBCDhu~y zP~1y;wHFrr_+b|Bq(UMe4Hsl{E|EkTo*wT{7y=B@d)R7LhRAI3K6HS$1E+4%U>7GLde@suo{`4ha8#--f$llbV2J# zRSCK%>`(=h%iQA4n5wwWg`K;oM>Lu=0x*Eq$+*QB-6qZGNk`r>^0q|AGrPXEZn~h|-ii!cP1b!T-W` zZw#;gFLCnlcM7TM&KJAlI_I>2WTGlWVg+KFt#HBJF-IE zUVm$9W<5LkZB9tBw?^ zo(oDpGR2c|WS6IryRVDmXVi{sfkWy$&wu@iEJ$xVIiPk8>qz(Fy9?TJrw3a@ccTw5 zoV+`Lf2-CG%=(=Y_-MA7W#3T6@>?ZlVf%cZ@iU~+)M`_<&Om6rE zQXuUtH~j)NyEUHY|00eVP&XKX2~Y{!uJh_&;F;Wck~jQ<>A2I$Wq&E$@zvZu+N?dy z^6_iHuMs~tRHhrxW-Qsx;Ms!T3H(~|JGJ((kcgkLHA+auGne=t&piB`_^rdQ${7{X z;*1hj;a9Qta6sMK!y&uzJ3-4ol7P;6IEUr%wntL~lG21?6r!IUoT<2@k{p74?JlOr zPsE~~JW9LQzJu>~nAmn$*nwX)8c+knSN{>#khGYmg?!(75xXvP)s@@UGVBsDWvyA} z#SZAbnD9!xniWfr3t6dFaE1r+a$!B>`lz$iAW9=|f^mzG3cE<*G{6(UZE#)a;b)0E z%Uc5dqocf;-+K-VsVlZ(5mloK-W6pmm4vggwmy|N_lT1R)he$4l!K)4Mos5IH^ldo z>oX}2$YXSVA%Jyu?4fUqH+H4`g`nV4a43SjJ`eCU8hjD&xgmz}M6Ym3usgz$BA3hu~(G6=U?URO1D> z%9pV)WHREHiseG&8C2cnv+%=j>2#L(Sx!3&g3`VENo7q{upKaY7~)YLfT3q4v5kId<_=1CPX~~ zb;>~nbv3*ZRoofuA0=Ro5bPiFl(6L_IT{r|AN+Bk%fTK4tybWGRKNH1f1e@vCdZb` z3=ys|1n(=0^p$<@Jys=O2{(lJhuke}nR^=`inSy*ulBi}H#T;Y}= z%11;o3v*tOBZXXzi#kB8Aca^CH}isepx7pfraPu}1>TR*Ab@Qvm9$790~MRVC5foe z43|P`M|5{=hbbrylwRz<4GvhG2Aht?X1F6!j>@BK#}t&C!l>K?f;nyj#%aKz3R0~? zDohAF7Iw#?aX0=47?5tdfJUn@q%|*|$wT@+?*E#*Y-jseT%%K3aUT+$qAXR&vLzVmV zI^chRq1V-&XtZKiVffJN>Va}($O-fsdRed%KgfrKb=d6jQ~2TIZ=uJZ_)1B491^O0 z0D1sU%1;N>Y4NrhX)+3Z@nb0%R7k1r?8b~TCOfNT{LO1r0V)jCDm+IGM%hhTqnSIED6;W}hJQE8z+XpoZlLf)$NyHr z8@E>gWa%2xvoJ?%KxQ4tT=VN>o>A6M0Y4ix?pA6>Vp&V$^WVrhW11WpP{+$(_aEU9 zHcY4Hr+`%I{MZE#*=Gh$5=s6VPaBG>GDN~2x&g2ej?#~^jyZ?mB&H~vRX6#F09Q;h1v88bvyVIi6 z2$oMd*m>D3WS@3NhO|IWWl--NZ+}zTCz*(wq5F*J@rjNs)KkXdI^1D#9eW(HkUT85 zBbq__yf{fC6~tuK8r7`gwQ8?;meTrLdbA-474Cx&ffChvs))@E(Pn|4*KmPDtJ2X4 zBRV01nUsC{G;}DeZXN<$M2?! zH4E#Hx>K-XBmqDn$jAsy57X>-wKPAKRSmdTo0H{7J{Qc8UO7j4p#(^(u`W;(ih!~4 zpehaHOu#dU{6vvS_>pbd@wq+@bvR04c%JCkqL1rH)5j(~+Igm<217y$VObc4{YSwNS*2#W14aqQhAza;C1d|bK zP+A8$9e_tE3*ahEzJ!6KlqXZmvlMx%YFXAq*4FGA`)TLiPmq4eBD%OK}GTKdCEnkQr?MTIolAHKU3EB?A96ZWjo zpti#S^=(@M_O&@e>Yc)q&>8TJwMH`0vyJK7Xd#Cl6IIM?j}~-8y<<7JM^}-Y#3kNU zm@3uGgo;g`c|wLK4bnGC$V9`k(V!e|t?&;=1#O2z_O)$+mOX?;)4YHNRNes1E4HFe zr0LsGC#Dn)6Dd|RI+|-VfkN{_TC^dm_Zgub#Er^O9|k*kL+Yu6Fjr2Q*(V!X(?ZCK zlYtBR4JygeKjuX%z5oR`D+0)hO8Uk>2MsnuR^-rdqv0m%1m<@`M|1&Hhm{oa?>h{7 zL?Bhx(iC?z!=9w*RxcEBxL<75>Tv?!H61C*Y*^>EZ48 z95_t-+=`N?==ezlx9X)SSZvOUYX6i_0n&oK)jCTF#&kRs_7MhX9r042&udvK*H(4JYF3jjdjF0 zy+Uy1Jl0+r#V$GL2?jfx5nSmING3(}FjFLsDV@Xb%o#zfu`*SW$%428GAaxl8$=vL z>KUA(@7#UI4^R@;H0whNkZ17-I`2x^!g?mx;0)b-u_fg&D?rn;k6(kw0NrqGpYu&= zM(#Q`art!zFfpU#b0%+ z_A_Yo8}Z(zkzGhb-;A~IBl>2}4Wu8CzhGx%FFV%<2MohB=K^4x&>X!y53vd8EBYp& zzn9m}A0T#lHe&a+_WeAbd#CiYW6oSCv_xV#v#@Fs2{p%`FP5&|4i?;wGg#YMEPnC$ zB|y0~yVKZZ_dM1C<#q;&?i@C5hEYSo)KG47l#Q13&4VuE{is$kH5eV5jVS9ut!PlA zynq(XfA&y0r^CVAC`>(iL+$aP-FRP38GR7c%S{YBPP6v{Nd-o<3!17MUPc*_2*n_F z59E|++{#Lg?E)QoYov~};>PT@t<2U|#!B1fGdS>$jI#fU!bS#}9iL%2>SoLUA1Up7 zR>}7={EHe~CJHtnr+QhM-~=K!KNToF=x{n}E@wLqPJ!ls`3l5|9t02_Z$VsuSRjPH zEQ+~7j4Tu(&97H91i`*wZorx?-Zj@9n_Fo)Td?8_mQSJz{U(j#)<#-y7G9bQyT}cE z&9XzlDNF%J(O-29T_aSRNb%lkE~u4U(b;Ub5?0cKw}L;ia)wUJxWjPJB`sk@U?2 z@-5yc(?OtCV>@I0&Dy7@U1dzYK(OI_oJmSWo>ROrNV=%X4*n&-Xrauo(muuAgQdvuoNEwy1%T_ds)Qr| zBuTd~hj$N_9u9xvH0Dnw@)RLYP+uOvi+S!4>Cx~fmH<8)a68~(K5!>*RNw3drvCE#O>jRGe5l1c{WRcJfSY~bc|14-@a+A7F9Ez7@N6Hr zotG-`>3|Oeyaw=GA9yuCNASlxE#B;1fbRg@>H}}&rci<-s5E;j;B|l(_`o~(4h25K z;(h!A;KhI!_rw39=lXk4{xJ{WO98h5Ug`sn2(?he!CvUg>B~BJ9GsyB4;9Du)gHB5+`)XKf(7_dp zw|)`osP8LBd~K|C;Zm1yY2rxBQZi*o^;6!y^0Z8WOud0}4W17XlF%3~-7l=-m&2t5 z-V-U^j};_TSvrF0;d4k;R*&1Uio|O2yG~j?UMBAeR*)~uUgIzXARBuMXax?H{rb`s@YahfPV6d zkQ1p^m{JQ}u?Cp)8Z&q#Iaza6q(Ri`ay&ItJ2cjJ6g#P(+g#c7Oy@;%_}s} zR;M8_1!yha=>1rgq;l)M(!&%%RClj*pHxgF=dJfbYAZ|dHiu9S@|E(Qd!^rurnPr5 zj&^PW3sDHHN=aI_&`E7~A0_K25G8qbgcLet_gqaX2dZ8Sn}?T1NXb;;z6dGaK@GQf zFL^AzJ!SZ9mA7b}1tHM*jDm6|^mkgPI8tb3Le%c>^rf=f%4MURUw=8_f)BC$e9Aed z-BvIk1$90Jcli|5`4k*{Te%{X6Mf1p@hK$OSE3LO&%E zDQ(o05Qp%4@&8>*zFP7tEt#ZZUE=xgEzwnKu-e;NGEGZg3@T^yj63~<^k_~jwjYae zE0YvAXvqYW2!hKH7T%IkeARu@V-t(df?ZR!@q#H_d<@?vpYH?s&hYu(g>SQRE~$8x zaweUdVlam$PvEO!q~W?^+@WBT!gzCxG;+xEN0GVzrV`=#{k$heiqt*7j!I4*^8C!( z;8Qhti~`p^_m%P;`dl-0i5RDEQ=dX4T-C9Xzc7CBF?kpZbS}m5H9tDOw)gWxZ)0Hay*R=?XL#Sa&FN?0yjV%$} z76)Nne8E*6Cp{+Uo-N}Y_e+oJo}EC?2m@Sc%8e}~3*kw>eB1XKZi|=xg0N2>KU$gr zfz9R7(%*bS4qUloq&Pw6Y3Jo*)eNSk(qlT$B_5j~J?Wpnzv)X9E>Do&CnUyk(qwv; zj+5vT1l~0cLIuzG@se^pa@BZBPh9_i^l<0`B|vH|f+38|>s^{=DJ6x$^B%y-GEaxA z^a1H#g3cv#>jdeOkqfMv$NdE9Nm$vz_RaUfK|C)2GP&3bx4v0eG>~UclqM&;%8lhN zr}1MKTn$!j(ZhDr%tHl6?-nd_s+r>Uq+J|1le#+6C@O1y32&Jw4WH;~*1o6F{ZVk7 zn;@7~nU6h@j+Cxg_b^X0Tn=JK+T}lyPZ?#0al?bs6y4KCp8udUd_V&;e(iE5RWw9! z=Y#NO%sb|4eo(^6{ROkRn1lg?q>WD^VkPpTBq?s92MjR(0{nyfo;S#>@`5h+*t@tm z=?#Qb$mFZl<)vA%bAwK#R5!$?yy$YK%xN(56G_sH0dp5)IgTat(~DfO$zX!X^RCIE zSdP99sZ@QVhvpVkVjyG<7C3p=``oe!uj;^-L#jirA;&`CvK8Aw(Y&*KUkZAXw~lwG zNRu6k<3x%0J<{a48ubhdb|+&^fQBGAy58~T55evTrUw<`day%p7M?olLG-YD82-6H zjXn|{wK(iB7!m44uw4kvNTu7Ns60{k`2pzcd}hWk``GfPRd^OqYz3aV_*pCY{#0qO z&XekDNtNFA)8(AyHj^|mRCQZBYQ9kx?J1?tMc^2kk=L7~F}kNF;hdlJaNKhdp5bZ~ z-XxIDeZ|u~$$*V7lyNtC5{+}ptJ)Qv1I-Z>_9di7x2RHFecHDb}{L-M*lLwXa z-@>dBpkUstgJDL}7-k`NrTqom>9(mUnC>ee-vH80VP8y-!sn2`4U$L+)`AM#r*2ctXrxI)Gc2tgeB&)`pWMJp#-r7dTm{FPrar0vykKqOr}Xn@8r8OS_20=4r2#Mm^qH>qCxoN%cfOLh1%fY zyJ?Ci(R0Pq!;3PcpLB&iJb$Y6cX}EhmbMKk?4fc*V55vsqTx6#-SM!r+)sxN6+a58 zv;=Wrk3z=ddHGQ(Zun!PDB3?IYzZdSV~geL(ndA;)hEZzy=85Eul&F=DAzkuWLQ9X7JrO`Cf&%tGc?-jgYfjLa;o zgG#8|!UohGW`T8Iut6w8EDCnYM5J_<6dIa2!WiwR=%o)aVk$S7886C`{xzT>M-`6^ zMXtQZr18R_n+e5c;gRoo_2bf^Ave>CpoK8uFwCf};UWgd2Nkg+yV$ zSVWZ4#4y%2z}mi{+yF@F&SePVP}5H#eQ95Qqz7r~@LAqibJl5UYCSFx;bPaCR_#T<4ykILM|{o^O@@ zsY}e}rupF12d?n^`O*Si(i^;GzN!wo=1ZZvq?s=L0%?eDK;jad6UV$tEaWly$S^LO zXXZLw9ajP;%Rw17_E7_5^8C!Xu=^s zHSg$|;QBDS z8r$(t${2nIW=JwIYsx{$l!Rxc@IhlL>Ao~oZj63|=RPZq96ttO#{(}I9Ql)S7z--hZt4ALuKb1S!gKspp%L8g2jVTg*H-dC8~ACqz|YyF z-#LblAXA!*RmFGOd-b|%TI+!0YNs*{p22Fe_CPjho{BrCf@f6+C9Bx2d4?3j$e zbTzoth_tgj|4-8T$fh7-`(vw{R@sa0Eu}*bNzZ;;kk*bnG#6m5hrK8rS}?R(v00OWpR5?(f_GcG}N9pk8?>+^cz)nSt;V7g0I4t|_=Rs(%&v-M z(z|}TyYqSKa;!BDU*oHmOP}Ztk8l!cn^IK&fijZ5!o$ z9F%P7{ql;Lg%`=`AsG=1=;nx^{k-8NY2?U@nvY;;56UkhxKh6M!-9w=6%WedHnu-Q z!^I7%rOMDCS)DZ(ln8*s@1c+3y8WA6?G@6W1l)`0cvT9$Yq_@vSKPtQ!0D~t4{oTLJ~+#Z zol-Dwcva$(IeGuLxjg4JSb6W`DAY}i?~hY6zdw*Nzl`g7jufy2?*_yu5`XI};Vr<{ z>;*?mEO6ijU0|s|Qx4?PnKgt!1Yxjgu{UVw`FkEzNakU9`0=8`;k6#P* z1_6+_R#~9BPOX*J>xS$eoQ#znWuk-Jmfqb0x38DRB!8+5F9d0rrT5bf+OX)1wI2mp zdjEbb1%`SG%3wxTqq}A*t9JRF4gAu2OoVs%SPpV*Q^;Y~U^ooML9=&8@f=P<8`6kN zGe&-}M?H+jY%ur(LAGm-s>_H4_nvdZI#PSbM)BY(X@np1R`OK!1@cIJN#_++;ILiC zu!bys{!5ur^!qXFrF`mP)yhJ}3QiS5m@_>@RA>|C^&a^WLgG@DbVyfsmhaer^=KWM zz5&gvE8+T$stYoEqx3WhllqM?P+$_YY?S^zq$!9N(jZMd;lkh;dGnjnlY`!xuaE&` zvGl$*lgCzLDT$N(Mb+S_k=IX?i_)}>*!P6C8RQp?cV#n(6gg;{%NsXIk)by#iQTa` z-0!Ag*XQ!CP11)WyFLAQj&D%eS%(Ubujyy!k1BZUX5i^rs^RJPqOk61E^&)AM~ED~ z)V>M&1IDAJ_t*_Wgh3V1t4w@%a(fNt5tM&bjTHIVPY4LbRdVfc>nd)(pH|{qz0ys& z7AypDZ$B;R%OgV|;TxM|bOMpi8zD{w_<1W;52|R2&=Jt;_c=mSm>BsMR5uQVSJS{I}G5ziOaX+ux4x#(wI#34X#I_fZYFdJR@??`_a25nxXT=X-aWmtMQ?{#JDk^bTr+N9`>l#j8T z{Tdf5t=0w8>fRN!S9%vkQ@Q&C=~e%xpyd5cCRffr>5rm+ld{i>3lmWXI_MIT_igWb$0^n`k#}qNlqKuF(i(1YGE6( z|AeSGA#K!sf^)Jbfb0{9kdxBL0iTd-7rXPv&bzE9G0(#Px@&C@OOWj>F~@3{NQmtV zVe7NM?sYZ(Cul?!GIKi!e*u9!1$Oojgbiejv@CUQLFE0cOSXjghx zdR6yP64(Dz`qtkw!acaj?CSZa^rfIX3^&U;wC2zaZa6QE_dj&ZvlqbJ^WZbxUzp4J zg|tnlJ8;F7_@#8WZh`^J586PfSNs?3gQ*(V#iT(sPcp#R!7@$G`ys*|(3FU1F^JU< z#&P>4Y*s>0U8P@3FY7}0 z6ykDiY>7xpFwfGjUIelBF5+STCMAHI*8UAv2hSD!Tlzt#dv`F;>y(ni_ne;P2g8Ex zI!Qzz4+hO&IJ=y#`cABub-QNsOW&fCby&xK2d>$PiTRy0jUS!lA3h@AH^|E3{h(7F zqMb`%oHBA2J0n>>uaAKu>>1#H*M!(Uvh?o&cvquK{hs{Zui8|Sy`@|a4NJ;Hj{MLm zZ{bYd?K=wBe+}QL+wiGDwd}1ow7rSmud=bqucH(34&4^@+_u_tPv>K7Dx8XQc z59LjY(&H2-qL(Q$c?9w!_6^55QXT)K1F$Eju5jon3>v2~5!XuhtvDUQ2%cs62u}}~ zwIC>&-l-sV_pSCRKLpD#=q=t)Iz3x)gr*GVt>y)0`tNr69 z?^vvDrz*=;;$d$Y?4xQ#E#v)$+WT{o~?3IO+A_Md`P%IJrK}YH$h(8p$J1@9Y<$PUOKcDFW5m{2Cr89Swt-^B{(~Mya z@`Y`OXNzr}$3Z*@e!YO15EWdibaS5GW}IiMN{X`8t8w9ABNN4iKcg>gJFK_2ZPCkZ z4hVYC!;SXd78jmRY+~^qT%%eo#AE+cTsRsu&*t=`+18r_oco<%McOH{6K+ws`-U)S6~% z1ShnBeCiRc{%N}poAX5)7uEHXkX55q>mW#KXl9{xh#Z}4tHK=3|8LRXZ0l6gQ~lB3 zpj(uPDF__~`XM-ClM~a37p?IhuWQQXHEaAw&e&)I%@O!*tAbu^b|WgJ)eoe&E$|!H zk9KJJDv-~u<*WFWe9b)QRnVvazDx=<$uRT0J9$YKQ2FapW};=U1h69>dW4ES+wIY7)d?7HQIEZZ2M5djBr0~K*`Z;kAdw)|5?R@ ze;dG_r4y_I7)2xo)23$Ckdm|!v>p=e)-ra?0r;=C%kLSx@lo-n9mBf@qmBh>5k_vA8UV7Wn z2px3q2zg7169*d2N@WY*i@hbjuh*aigkp#S(Jj##g}iEh<+>^3!p4Yxy<|{a@mgLS z(7Ty8L&e<~bBi8x^cpljy@K4&r$DM!AhBO#lERF-rcrg+W{>l<{Hu^Zpg(`)X`lQ7KKZR${wm}jpyqcFNh5203JmZm zkgpZkjRJT2R8ZoR|4yI$nnBgri2Q**`KS8i5A?}jl3MRUX3TS3+yjB2HEi4_=%1PfewTuf7 zhJEDmc9Vw_uo!}={-*ltlEe>wCk@~!*QDSHK9>af`CJm@S4UC>`yG|IV#{hqB$g^c zDsj@F#L3IA!OQv7F24Jk6c;{wKjletBQULo^rG_u@-jS+@vdvqa0h~V4ti2sv1G!r zD>I(-ZZfk!Ucp*Mv*cJJ;k{qRHK&_cEVK#j)rsKJVA3pjm!Mtrc-}#Fqs99pop^#O zb0S8#Bt|>PixZxp4Dujv1hwDH^2%gKe+HA5L2qAvUul1)`GO2VqgiiQfGJ1<01vWf z+>M(73DMJKNH+jES$KUFQKJ%60=;$t4N?Eg7+dDi(hgD?hgK+FL+p=21}(#${z7&* zScuZE;cP((QGhC{*UH?9GD`dn;ImOC);$@qYf8gbXlB!E=|1I3wQ_+d=g3fpR>P-{uRXAO4HURDlg&G5aC`QHeD&)Lx0~Rh;hvHQa())%YqaTNZ z88svWfFxe6d@gQaB_4To4fUkIQI0DbvJ#Yuzm0N(P#%<1%FRR>4cBi4tqf71;dScvZEY&@a8Q~UFw%y$bHYVp!lK#6Gi}!0B>$vHT z`k(SvAuo;q{7ZB0t=W@}xmQec@>YlBWuq3$dX>WDv^7q>rT64DT5-au;~_Ok@4jWR z;%uO!!I6%V2u&!!-}1`f6}=^flp4gLA42*Tg?E$#!WQq)4XW??8L1J#ShEv-u)?uOA=HO@MRXn0l8H3h)7^1 zfsPo54l2oLjViHz>MenYd3iL?`9&J(Uy_e^fy>H!0bH}E`R-q&)5_=CbQ&6yai-y3~ z0bUI6l;Sl)02ux?bB`42C^5HfDJf4%V=*a?k{mi2YV?*QQoIaZ=9zNXcA^8virWsC zn9=4{isyxn4#QJKM~B@}EC%U09-J3%`-q8dxZhjvMS5C^$Rar$;C+}zRGc8gf#KdcSx5_jt(5>9E71pL25cODojmLY zwkY4vD`L1fVv2gvDY$hXysV96I?|3F&%Gf%HemK9Oeq-Ce=g(oDB~zGP($7GN-{9* z66C`riI(06=F$LT9>)T=HrRm}>^Z)JjW*B5S%APAIDLYFPcbN*;CPZBfSpyDBv8it zNdz|a9cCs*!3@g1jFD6HsFDa!F$tB3fGPiK z4}^%&U1z)o@8J>y(%~N~DX{d;+>fX7ZRyR~M0d+) zn%PUU=}c~%qa=nhDVe`00rJF?8YQp`o~s!IcOv*B_pA@wUk1ycS^=|qY_-yem=&my z8bq2=8E$W|dai=4+_P4#9Qa;SEFLtPaIaRV<=A{DhC5dYeFRlNDms+g3$Lisup;y% z6}>M78z9!}y>y?(O;gED;Saf!`WyEFcE@Lt?2jeEV`eL}5Pz;54_6Q6LPw;P*cAMS zONue}$x2JqR?WJmA{|f-Bv*WpLh{|X1f)>8L@xbX|{MAbvq$sS32Q94xvD_^BR9`QI1z_kGs5 zu@3MnsEy9g8qwd*gGNj5lQVrrCIcfAbL+?q`CgrvE3N|;i_y6ae)oJ0eipD;=q?$$ z%RhaSkVgb9L*v$NWd&jQQv~}YUdF~7TB}T`74u38c#+`$q~p`0{jGg+f=UtnIW%rm ze`EJ0BH)v>H`sB-Bqh$l`|3DiskK{JKB$RwZL1NI$;_5tR~xpxje-wVoD{FHybV0w zrqzK-I`e4ioi&Q326j4Fz%zCJ;ktv->mTqB9lsnW#%5{@F+E0ZW=Vg04z9v27sZy| zhEDsNkWvVT1AHd0*ZD`zI4~GnIBpUwblkD;=5@qYHRIsHDJz4kS77cQ)~#L(|2eVv zOaXfN1j@BgIjtVy$TsbmufflMM)(tGJG^vJwpQfxIf{v6z7>A{IOe+;@KJ!b1Ae9t z2aW+dd6xnYu=GB06!1%cxBI~Bd5(zkGim{!5BO!kFZ;kx@dgE+Zt0zI1Mn`uyL{l? zJVHYG>E{980QgnFyZhld<|`}k7XY6Cc=y^eSkNlj=@_tyUsB*9mfq>Oddt=WxZVez z$Ibr0pS>6G#b7c9c#sd=&UY(tD1zw$fQx{K`M|4r&>blM_!UcUb}is~zzsg|Ms8E! zD*-11ED-QmA9x2pqrjsry^o(q`%VF#&=1Ek-&8&DKXwrC7XUv4xX}k5%WD+)Y`{YR zKL@zU2cE&j0F=+VX6b!wFW?=3n|mA z1M5Gg+nY5I@MC?x95UG)h=j!zf8gD{Yk)JiuiVXJx&;ILCx&O%s@BSx7cl>@U{U|& z2!c@R`MCl9V<*u4rb1{Yn@Nkf2zV>IIp7mR8n{TUpV(GJO96i zZ}F}8{=Q$G-Y+cGcK*G8Uq?ItziN+qKOIVwiX23fCc&)(n-or>2Gv1iJK+picjk5n zkuzXr0@6?QIf|$}VpsE8huKl5q{9JP%%*IG1x|Mc_X<;$ z*^RU$cv4`Mx4M7r&fs1h|7##N6=UXNn+N}CFVH_!hZ}5XnC$bL7MKzd_4 zefQl{ffeY@yM0*>-t&zn+~slsfhA=u&k2q3f7^Tiu&AoFeSFOf>=_kDR8&O70Z~yA z0TEG9P*E{aQPG2niiwJaiV8)A&S+S8qQWwll@+FT=%gL$SXc*Z^jJ|*2RoG5p~4Oo zbttW@sFeBM&wkdxsP$g&_j*5{>;31$<#O(QuV?-KvDbc{wb#b-ECtr}yt4CnasIpv z>7gyNCnf${81xdaf*$QkJB&no8h&4oW_n*u{YsApS(g6|J(}rh4_WBZI%GZcXm;UY z5HhJfvTi+EM}XhaqnX^R5T!@!kpCS$nyJ4>hM-4-yq$BeE7GplqZz;S2mn1=M*_d2 zM>D!DT9hH^(K_URM~`OQW%oz`dbExJzoSPpF7}Xz9<4+Ecl2n+;U4nPqjku;^=Nhv zMH=bR3_p7WfF7+Q!0+hM3~zeKLyy)W|2uj#!^0l((4*Nq0_3Vrc#R&-u+Ad@^k^OO zzoSPpjQ5a-9<4+ExAkZ<+6`Si0zi+pr{Ow1+Ld1)!WjN-J=zuQOeH;9+D7j_OV7Iw z@yUgGN1;i#(aMBe=NPpFc8*aCy?Uw6-?n&>1|o41?TUU8sxnggGHf2fvLig)ym+AOwkw1-JVN=Ihi~O;j*A3)9 zmd`rl*ZKGL)2y*YZ?DmN_zJNZr`LL@4N+hJEwv$Z4zpbEliCS);Z5&vpM)uS7cK3* z>Zs1K^d_}oiVWQYw@CvT|jeS&-q*c5o(;I%)#jnovR4zT*gEQT0 z!_z7TQYjwML+I_+$DJ0Asq3#SI4$ums^Tsi(UVNij5SE`BVidV*Po?mnLNw&dLPKTH^|Z1{J$kj8c93>zD8eVY@!7i z-VHv)Tc2}|)7tA_CtVlm> zy5O>eVwIGckfg8dvgjoMxAF@%a_E3WDf^u)y~ZycetG0aabi`Nt^7GI`pk$BX$gb$ zh;iN|BED=BWpf+9-+=^m(&q1NYR^3e8Uz2V$08bFS)0pk_2+dXbd_wJG*>QE}x^7-Jel zN3da9w55o3Tj`x``t&myaOrhy#y9<-<3rDYzv)X|hB0j7>&QakLU^|kJ_($fesbQi zU+JrV4VS{$T_5_{U&OoQhoHtBByKuDk?I%Xribv94x_Zd9tT$)B3LNPg0z5MIp+|$ z$-eBLw8sR!HD{fy4#I*Gg=h@YZj4^{g8i|J0^#uOBUdH-AHq61i=I$uqaQMb?-reC zjDHBpN$gR`!Dvzl%m8{fnu`GZL0 z$RO>8Nx$kZaw9SW+7a)j;8EQ5>p&O!M{B$#G)1ggf8isXqM6tNy!zVpYmH~w4F~D*|eLC>(KvVmDX>Ohbxq-qQqPHCp26p>$oI~gtW>P_!3NzlZ4VrN$zxarLo`$bW>MM!y zC~MIa!w1q)=@m$9SkWv@!uawZP;WgEbob61qi zO30Ayp!6!$fBSc{mH%Y;ciIj}cS%pS?cY77{09b;-GJt|S+18iB`oI$%?F>{8TsIo zYPjwV)h5|v4)X%ezYGdg_p4aSK45KgnB1)=V(3u^!p^WVScVUQQVeUblp$Iy9cStoqJ>N5_Sg^ zTo1h$0(29+4$S@>vh}0%djm3DBHq7!M24H&?E+kQ1EP9s1|Hnz!4tK31nO7HV^%UZ3{TK zB1Novm=3U*)gHZRR{KL=m#x(NB0?Pj1##db z>AEPXmtP#dR9Q5|^g-E7R1EvYbodSH^z^#(mx59lmjyO;df}tv9|Ud{{`f|d7wovt z$%J8;=HYMD4b60ahh{uV*LY8UyblZvQDZ4HYBZsDy%GpnftN-R-hx`#bD(Jb06u=^ zzQL%Sq!&8N-X5tGseaY7+9O}$T3%{>!~%Ag#@S6<<-y1i%tc6WPa!5RG~xSbAkT?d+9#Y286v)V@=h2J`l!hnAz z182{9`Jglc0{22-rYsH9LV{k&z1qa%9bPusTR$L2H}TYlX>;rmKhsuN^o>l+F^&|G z^%|NX0SUyR8A8*AC4s)MiW#*S&f!=`Z?a_`D7sBQk<5Sl?FFS1ny^H52r;3YW^r$5 zsz zdTXL-D`&Nj+DQfELYeAut*gHIy~bBgW4D|??XIT^lZ7Lp{aHR)I!9uXFdvqU_>EpU z&;IB|+6bBt_4_frQ+j;cXE+qbNewo9EOB(&ANJx7L_VOpUwlr6g=?`lTIQ+lh3*`# z9;J=wUE#~9LOK0cX%B^I+n=66_>s6(8uxQutm@yBDRbi8*GaUKb z@mZ(r$ghx~8fuO52=^F=Gh9Tt-5%kpW!fmba`S~U zL1f@nN(0VqA$w59PCAq|B6_;M4P75b?IQ=Oc=8ZWPmg%oFp(caIDdp2A{$3((Gk0>_;;P)V8)b^1SSrVaz+Vl`p-t*g@xHEG5jkwVd*KgB?-MHS3YgrSa zO&nw2Q(pw31iTS|d$?hH$j+GE;7E8kFpZaOD;_L_ONNXY4V&1a^`r5j zRqD#rwed2TfxGyk)mL}%&!$oHrieweF|KIF^TMmNqG*-j1AgCd(KL0I2K1}LRaN3- z;P&BqRZe(aG zLwaPGh>Bh}d@!qh7*@?br7|)SH%dHx=R{&p{X$qzBekKu3c|Rb&hF1`x-eMQM`|G> z+>3_jC@yIF34Sd%{RL`6eUbFII7a!BwkR!PNwYUEc+8r@}LMPcY zw`q44ZasK28nEQ+4jy(IH^1?O0~2V;8Cf?*3(&|m=xmS|$7pi`2ET@UZbyfyM;`K2 zrQ=qKBZ4zxU^^PT68;0>-vIwY5C1$_P5vRM)WI*ozXkpd5C1Z08%zEV!+#b^o!m+C#pD|3&zhdHC1M7V-~11OI#B-v!+$vZFT=mQ(;v3O zO5Go}%V4@w*sof7lLlb^qD$?*jiO_&0g@hsiqf9|+rJ&|&yD!@tGDKUv01Ab;2{gC@iO z68tZE_-D&~x<71}13yCk{Ndl`;a@B-lYby=mjiEuf8c}XHR0iZL}ta4KWvu+`@r7@ ze~X8IojeWy=m9^#&%Naj{W|b4CW|l+IS)JJ04(AJ?sgP46Q$+l?^5P8K zH1QI9Sc-O^w{b=vd3-jMThrf{O|uai8k@*D8csMUkr(G6R=i~CI~Oa@lSgF6Ty26e zW})0OSDO+&;WH{DdRlO?%HcCQ~-1 zX;Ua(+dP;W_@(T>zj?9*lXrPl);w*AVfx7=ig-{MZ4r(d4t1TQ=%X=(MVI3Xzdj&B zQAx@1Nq8H16b|7OV_w)ki7Sw9=dLD8SsbU8ZcUAtGFp$(F&7HLbBFvHUnXymFck!9!IQH?O&|nG(1#t&Qfig@l>2_S*m?# z!Iqa}h) z$R==9KmNJeoUR>bO~zE^<)RXL^;w6`kwpo(oVGG28eNuc(57@f6}P;Qg57Y#pK((z90BJ;qQKSC?-uPzG?YAki?*3MUq>=N&&jx3 zIT`0~B!gr1;y=F7DEHi|y-VS<3$VZYvqcV!L zAF1_a+BPkOQqJGT{jgyh^+VIo$U<6Nv9k?N=3h!Lhc;rq^KxPqc5D2IvvKqqG!IO` zHKiH{U8x5EsZ0;x9XVHRP3#)7shedQ1MF{-YKHvK?Zy;n+yLwnum{en!{ zjw#Fgu*{*~lVP%CyEe(_JyzCiN9MfF$ky$6cs9mK%ML9_qda+?l;OY=kf(Cw32DVQ zQF`9I`Qh3;oj3_4me*&UdGXpMi+7;Qc=eR6JG6ixFK;ww(e^?i{xIA>ZhHofUPIZa zoG4G2480RmtZA3bzZ3Z}4Uzlq)B>xr_i6)7vd4a{hrI7$Em+zg0ebdf%~!trur^t~ zN@&m{noYj?DA3$Tv`A?u?tbDD9|3yx5iL*tgM1So1sYB0FZACh^xp-F`I|=(^Iu4~ z2mLpCzvh&K_G`XXuKn5=gYg&Ns+h;MNMBj@td=YlMsMZ?gj ze^&GDHg)srmHDe}lc4~T@>Ol(i!W+PUbd*Q3s$br%U!)g1>PQt;nT@zDl-t}D4aQf-{T0E>%mb@YQa^?w7(+DL%DF2xGO(YSe<{i?3<^#=qpt zy4SP`-Cjt>Oy!TXN7l%JpKHTp+3T8B-tfBS*X^W5h%U#;>(>sikZy0G;NI0>!+XmU zuWNJthCkVni!@H`jIXr4q0QIMQeCymiyz>|E8oz18_%AWN8Zq4wFczIfQOSew2@sR z0RvrE&K1eP8f{|lu!ZiNtH?eql({w9e4~crqH44eL0TRnjY0bEKdMtS$iFl3TPl;9 zwLWs-n_ACq|E?CIn-2tsH_GQ4wP<x3nO?p|Kss^hZiISG%_tPIb~k{fD%7_$0B9mViPv%gRQ)(%AYI zsrDMBPTmHHKPpy|tG#OjeiMW|(4>WU=i<6W zHodJ48^6!h-i`8++!56Ds!;{@1%KSt-V;Ub=|L#&eDt4Mk6|Ls)jk~6DX41Pe-vYmtKIiFe$&7Yy&|{2qXop4 zfolSn4sMv9JAW$Jlu zGDPaN9^_|rcJu`D&TzHIlJ_wr7Ti-<`+c}DZ=YOHp(kB6KQ z$sqaOzSb;N@5qC()zzMGNw%KR61&7;B93vj&&`%~?`fmEqtBXhUG4KwbW;q)7b2Iu zhxklKTFat0SeeUW*P|gUlMz zRDCC@@}xi}&(*#*NBX|6-C*2sT4uhFrNJhP-2XnFel}a=>G!qe<~w{)B0qfy1$99l zsC~Az%CrxVq@!6nK0uhA7U}!|Q~uozvh@SZP$hndJ6+mpw1INkS*@qB6fe1)#p>wZ zJh|sA5-W?8O=l7CfmCU0K!67>Q8Uq$79h8Mr1{7l4O*yi&t+NBfQN^@$7CZ(?S+)V zK{H~o9Dfec?n{uV=d{Va`*%#(lrRcj8z{@qX??ZFYH*F?EitY2Lr+sBj{}+QYJYqW zN`~XkKGsHev4JXgwIA3gZ69JCa&W&){tzku$wwA`i0Sj07+L!v=KE)31kOA_`vfM- zp8wK{diU!{SvAjFcc^Vd_;ZD<`4}s#_I=X-6K#oRYQnfHm$e_G zgFfV1nCXsnfT429kv)wZZO|KB`g}k7h zQN4p`LcrbF)!T;OEM%|WJnq(_2qea>$RILNC%cLxAe|t~XjBZQK`a_wF27JTu*bOX zi7Xj>T&_L{YM@Ak+}ElNBXL8r%hi{DGpWRbdnN(qyIlP;aDTn1OZt9=-q+`At#41{ z)^ObA8kmk>f8DSAeQiKbbOS@P%N2y6nm#q__u4ML?iouq)l#>Kau=F1i9!#)gx_q+ z_pmN$E>|eg>C%Z}U>bG7j7Li@{YKjTyk_lE;c|r)p~>1PM1MK)Jf<@W(%^E1r{FhE zI?ijutQMDRR05{MP~^|=1v&c^TCwiD*3X*aa!s^Bj*9PB&UI=i1nI6*zx!ya7%J!1 zXkGhR@4Y6s6SELjzZ(sv(TjVLYhs10{8SqjWy7Vz<(gE99ABnt5%gc6wah^G8y+jk zU=F!lQ%i8)Pp64Dz$p945&y<%50UU{#de52GX3A$NWD!^JE?h~Q}tHuN%f8NQcKY$ zeiXO7_ysi94J1x&f~uK^Dlq8P)vu@fMnPWnE?4eFnb3?n7B1KNG6dG|O@k;MW4OyT z-yc+so=&ecP??}Au@Iz!^a`a;JKb98a@~ynpjTbbU%BdxO(0Pky*u{&l4sd&J30nI zB)m|J4QMjMAzFj*p}p z`UT=H#wTG~v^nOxjv=N-L4)339&W+(cXyUN4j=8FQ1swbnf4Wyrz5`9!nNHtv}KZP z`UFeIJHEuy@u4tT_9YUNmu3Bzm}K?`N}sPV|302BQ@_%tYfqqbh9eY1d>3Tc%g+Vn zqHO#MMLJL;{r`jf9c-iiA*);PgjM(-EymA#QAZh*xQu@)mCpZYQ?#e^^w{*u3u?uJ z_}JH4r7XOlrOEVfv{FX*ZY8RW)=PE*X01}u~@%8glm|D=}*6| z1hD9rd|eIf8U8e`J;T@FS`!2G5PAf4fSwUFR<(Sm6&mI2AGPjQ8$7+>!r(C1r~ROf zlh6O4^|x2x+Hf2*exwk6D9=4H21&H%W&HLE#4RIB`Sd9P1D`$=rcX0p;D0RiA*TE6 z!z^hUh6{ft@IU@2T1uQ^78EUA2whYb{D>zvtc~Q4+7Gg#O&dQ{#gK%0VL5;lh~vVX ziC=Rr%2_JQ+qB6ZvR1JApOq>Svewi1wbo;$ewk#G?G|A?iUIudMeu~=aBX}$eqi^^w$grxpO%}e29u`yad;(htcD%^h2EP z3{m_w!eEEZ(=ZJA!Q-i6Fe3P+QW(0Q2HuZKNe~7t2LArSV9plC3GlrguQva<9H9(ESf5xA)gwfUt7bA=sbm54| zs9~q7ipba%q6$Wt_DR~wq;xhS({Hwa_76AluIzQTAg1uh8=**h2pXM+R(y)o@3IX}d3e_rsMwRBaxi9Ypwpg%7owhj!JW?jr*Y?rYs!rW(u26L=6V(Q!Ik?Jowa1Dm@ ztkE}|17V2J=L=f{6buiCDvS>Xn?tO@<>3CxTyVK`EH(%C5FzOxYncp5m-|UDBn#Z< zipx?QI@mNX#pTM&x*R&|w7!ZfQyg+VZG_^E;oH9yUoE&q#nnn%w4QJs$i<4RlhwN5 zWpKHQyDVFY8ypAD&fMTQ8Q6=sHgFFp4yJT)y~0w#9brz#__jeW^9bt*)Wr0j%#Uc0 zx$`OUaMa%P!Ayo{%NB|>!V6p+a}i$Bzc;w(d~oxai_VuRI)_qEU#++@SqRP^;{dmn zIl{saivRF~#D!sw-VB7Nmk%|8F+PDBnSO>b-HE3EFw~FuUwnbv6-FLsbl0)z2EsOl zG0bO#GhSB#oG^4P1vafaf{QfeQ3Nd) znHwimR~hFe#7wgyy<~|l*bHuz;+kcWKLW?0pfeXS7k5my^f51Mn1u zrQOdwAY#_M&Z5pbdVNu+mE!4WBxhq8BMXtD|0D6vYfb?3E*Oxo0%Z%h?`RkPL1O^#e4e`wGY%o zEH-B!Q|QC9pHb8iyb1)dxu}%cs_)G8Qd}muH&||NrgZi<2L#MMH`GGa_jMfnK36ye z_qzkakXv5ObrL%gMpF)yx5X=O(MT(PVSy zDV)P&WA5_KH0C<5Pa~%WkHN_*z8cv|X{P9yC^ zXBzX|bH7KI&P@_x-eVkJZjvmVPVJnV22xFrxoK`P3*_IFWR^^wqf0tKzNJWqn=A); zPLb|=$NF@Tmzi9z?j7q9<$Pbose8xzTyQ~(%jNsYdK7H_6vY)17tnWphU(8v@VilA zsQGBpnZK^H(DUC^75gvIF^<<4!^SmB#aAp#2cly0lECFKmzN}~b*>HE4#l;}R^rGo zw%}3bHs{Mq{r-C~ zS+KlT=9Az7^w&iXGIyX}?h6NpwV7B{!`zdXWW5bj@1kEjGxmpN*EiY0N|Mf+r^#y#pIPm|!$YH;_l;L&P*R*=>Z zv&H&s3Ov-(=h+k)8Uo>$(!sT`@Js13ow$>jRu&Ip4sU!E6L&fl+$!cyr^;i*)n$NF z3y``Dnii1ty5k@Zv0&YCnK={~5@c4C89J@O=Drb2zUqu@>D22ZJCiKLQq@3bl4V&G<@ii4$R-tAuAAHg zQuU29dwA*i9_l4ijo|k(<&jX-K|NY3Q+18{B-u#Z2dI}!)iplIkUm4u4KiQr%-OPj z*XN9$!Ir7Jz}ZllI|T92Gug7&Ib&y!@IsKD(Uz%kcD6;)weMQvWjh8I%K4+R|o#H2d?tKZ+YOew%#4` zU&%BqsUotjWVSZ0V)r_(Z!%?uSNV+jA?zpIb8l4X z{gfsv5VsY&Cb7zg^YGJY{k|8mYKW@58u*PL+7+=GFZux|tC=2cxXOJ$Y~#se)wb-8 zJgqv%l``)#6U{c4$#RyG*vSbu0w2MFd8`-~$KXYBtsB3syFm$bz&T)`~)pLWmB{{ zWW(TQaIK01c9+LJt7UsmbmuIQGgEc+2FRr=jHxVVg~DyX z_cQ*+0{n`?sG6J$3S(ri3sg7`cxLD9u`a6<3qv+NcFSd{=AIGjZp{YfzjbHTJ*W}a zJX#DR(Wh@(tTJ9nj~FO)IC5~)HYUR@vXE*vya?Q%6j#KxJ<12%3Fb!maBYwB1@}+I z;W3bEXOsh+s>D$aC07hi)#9jPy%Y5sRV&2JeN|Y(QF8xS+%h8SfXkSVsFU>+=jcFi ze9tkA4pdwYI3A#e(K)o#hg>1J_c-k6LdBJUQ~4QPBKO4NW}WNZSy8!budk>`q?h|2 zjwdpZSH*@%WNbY@0s_;sIBGAd93(~$Bic&;g_dy3(trfp6bl{2A9hEN1bgv?zj*ei#hFa z$7N0<$w)o;LE_XVCFMxjzp18FvxM&W1e;U6_lrDJ~6MKgFfVx<63K z$A^RDg)}hTheNF6F#+VIu;BO@#U+4StGER2595=-6)G-C2F{}hC!q22_Axo3P=-!G zgz+`t_({YN4_jmg2~KJfVv`>WPHLj{9264h#hb=3muTTs647Hf@k75M(ML8@gp*6b zsUa}ARHl)3&@dGPY}5T5cxs$Xj)&k>wBe?|DlSjv6F2P=IDTd{OvCb@y5@8gWfR{L z4AYZT-OND$+1#B2&j^%W2@p(kfE&VGnnT7Aw_p#rc;*)DkzrH7r6Y%%Rp&`B<;9*M zy$<9?7EG_B)g!XKFazXWOfJljmk?w3h1K8=C{7NWVjgT=bPUwHOf5Pl(Idb(>h44w4^q4NKEW`GZ6TSwFHGRz;GE34ybb#VsGO zV0Jn^ae`c%1^c_k-^%;jE^ zg>=)~fF735i+;m~CK;LpZX;?tpY<1pjrb@mad{2kRL99{V7W~gEcs7!e4El#zUkRJ z|8*wu?A?sO_Wa}Ec%^S3?7k}+P?PSvDB=9etS_r77NTGnV-hb|r*IhXOA4cY3O-i2 zLWo<83ZsH=8K%}*gky(}^g|q`o9IFyX+*|V$SI0g4)*5g-nY*<{W>Bxc!vgLl=I+3ei*vyhA&0j% zFjs^x@{-(E^om=*XKrhx^wryXTdNR->Q;h{Q~pySXh*_@{N!P<<8%Y!9QEMTy24Q} z3yIr_<|@qP2zO%jN?ZwsVBucoN=jt|aff}twK8|uhpYer_QESXH=lyvZ6ON#15Z&H z6?$8a!r{R0DvUzhK33h_Q-G%^oB=#n;T+(_3ReI-RAV@S|HRl-Si>!Idu?aS+%cM4 zChcvsl)CXBMuKt1qm!P;*aN`u0%Khx=MsRAXdAgCOpFgA2Th+?u&)B#~kIjZ>l0ZJp zfuBj@`Ru4KxUQm1-WgBsS%>$Rga(~T}VJYBV zECjcmxfcsN6g1`@hAJ=ksD)J(bo?a!QZ+bL;M5B0^dZ?m z-0P>oUEr{Q#x3N`5=TP4cmGIk*GKaW#%E7S?!SD{Rg?bp?Mg2I` z+T-0kSwn(nkU_`u9O0Q3*+yJ_Gr0Gdt8bV49wyE@ zWeIV#{@I?$fj`0n4so9%>~>aY89qHETfj~EA{m^j1;XwrR~#WcM>k**-u|Q-s0qN0 z3PXNJSJtub2+l?T{@Zbn8gHG?>V_{a;%Ed$O=8f_eCJjv*7ndY94?EUKIbT$a-E+ecvF&&OVB3P%D#5h;pYIjF$qrS6)ID z?wrShmyU4YOO@bmR$QeTj6XO*mNNN+Q#$n#`jZXhi%kB6P56tbC$u4xJHKGEtw`GF zaa`XHa91}b+jYfWh!xg-aaWAu_HdQb7J|D}mA2z%hQM}%3njcu)hS_jU(kFAb6+5Q zSB1?BjQ)4mtEw-gg1?|}nhOzFn(fYwC^>Z9RB!Zd5@J`BUVdO&6bAP&YRMqEL4ak_ zGW02Ii4eOsv7na1x+B^jA$G9_0GLe9!HKj{LhRxNq>kM+WokoCR829~AKz(Hh1kWD z7ci$r>V`k^`WzcBXo-z%^#}!-&spdZs_Wtt^{p6xe1u7TTZREr`17S7l^SDC4cj}! zA75j6TMYH-5UXtuIKI0WZF{&&(_Rp9kGB$RrCu2jbI*{@#=S?~g)jI)?pDYHBf zbFzoN0Y){M|K-lCG3KmcCylu8E0&)Js~9!eJWMY4^K++h9wrxBjnK9maX&w30CRoK zj{(PXrg44@Dc=MAINAkB?S7tOj0*(mbOK`Tf1tC0?|)V`D#h@r!pYbn?cdqJWijps zE=%id;IhAR1K;p56-cF4EW~b}Xp9SrWl=f`v7iaubS~I}Cej83%9?c8Ep{*NjBNL* z>w8Ojr4SFyAdLN6V+L! zJ&&jg`h>!B1>Kk@#6!WH#*KN>u?TrubqU-J%&odab9;z&bs9L;Y^&2`6LD)%_J`Cw zwAP=N`7lz~gX3pEV@|zHBJSouA@+uHd^ZQuqhE-XY_5CNtg^mPmJ^qk3{FiFdCByY z9%9{O1NSY5-DKOF0jeMdseIU_q-`;{drH8mD!8YFv=SlKdy$uY&v1PA z#*hvQ9A?&i=M>jMHuMl{S-KDp2QXKbE}LLiU-s}q)oexZdr&nSTI*q_!o|R?3hx)< zkywR~06P?}27XK7S|J|wQ<%45Ji4^A^&frp`r)w$+1fvuv$Y3%wwEBQdy$>}H!-)j zNY*Ve53?JC^v*{6jKu(jj{`?onMbYSOEx+VE(c!8I0Vs)I~2|WepumL;Aa#r1AbNE zW5D$aqcq|h#`cgpbXbG(xD4#a3Dbrw!!YJ)BbH$@W7>3OSj3n%T^Vv1hod?STN%?H zE5lyK(fPoCRu~yFoMIf~0RAipy8`h?dx;D#_MkmP#{LQ;fN>0C+B0OFtuPWWZc(@y zct2y>8f5$%7l5|>7#kE02mVE26xcL?@g#gdN|>hc1?}lEIXEKPzhkRrhd#w(UFZISV^13R$kq!{=ih4%qdGug@G2rgb?kGUwB*Bc6F z0-poMAMIN4?#n#wR`DLrJnb~`Ue1_yn0S{krrjalQsFewZEUdog#*)u1A*EkOqKf8HDIgM$NfjE?3L z%9!l#J_!n!0Iy(t&IY_u;TT|5i?o;8=YGW_6Fx^3&H}DcI2%~?Gi+tHi|!`&AX9nw zaD@?RcU1zijCbF}JQ>8hmnn=I>aJ!wGJkhheTdB7-CJ3P%-!8D13QHH__PpK)ep#) zY}H2)%1=gQYa$0A+p$$8{7EgaDjC^_t-ClPviDk_P?#b;&S8J51AdP&nP9Cd6J&Yq z;m15#ReMb2W+G#154#$>WH{}?ZLb?hdvH7HcF`VOG6UH_effR?dnfQvJyP0fE_~-P zCR3*`*Oq~vIeaOjm|V%U>HBxaWYYBI%;Bu$X1ov3lRd~b*)vsP=n)Pziyc8^#^z$r(}=o zr4l1MTra+n7|8zC>j=w?@&!Jrumku5g^PhNC|oN<@2-r=rqt4m^i5 zL0a?yD-}kG2jnw;itybEHv?BPCI$I`j~PQTZWn=SjFLt?kXJPZ(u4<2VIk6h2WBdq z3cOw6M&N^-Y0`8DzQQ~yxC1XUKI$vPz_E;7s+~VxCmcLA(wykm@<;JoBdy2{DN81%}s8 z1KX#v2kDpxsfgZ2$p$^Z{5$2qYB;@%j1D@>JgJZe{lu75$2K*Elg8MlW;fCl+p<}P zG{m+N#-tgxQRdLBc2Wb|crB)@ZEc@$m6E#FraD(kk`Tc?6rTee!x52MHaL$lsau0- zb&HWgYS!StC|m^mro!lF!T(mcL5L81CRGnWO4JZly`(%18PAE4(llfV2OwQ(h`K|P ziZp~*vASk7M2&TNKWea%xFuteQjik;Af$(EC|m>lpu!En zk1N~){ItStz~>l$W5Iz-7KQzR$15BLyhh$Hefn7O>MpAHLJTfu zssPErswOU^1MgCNHt>rI7XyE)@O~l2g)4jn_!fn$ft?E1;?3x;3O54J3+f^qNVgUJ zKQ7zau@^UPV~{U-(EH(WB??~zej8=9EOW{<&g!Pp>Q5>fx;EQyA?hTd^D&xW%OrcZoE_BHsF6+QOW#@ z;rK>{v%&vI$NDRV%Z_qdVdd(Fb^E9S_=eaL{mwVtm54_a_mw4a@Jn+LF_<#rgvj=|O z1D^zD`v($6Kj4nEuiPw>Dgop|V!#hn*Z&_Ox^ zZ}GqmnO|rgY(MNlJ?DW>cwmgejwsG~;4eB`af(NaPWj1$cXi^aW)Iw-vEEmw4)X9A z?SaR7-~i^X>M<~;KJF3VDG&S?4~%I+ zMM?*WSfJ&jySV<_mW5Njag9So^j|C!_*dt#R{gnxiSI&%WfBCxi&4MH>KC8*(fMrk zo3DP0)$bnldr18rQ@^LxZ$1D10u#s-#Q%$z`nBK}x+>!@J~|;RL68^(XM+od3xOL9 z7Ya87ZYbO^IOvEiBj85Dg~N@4i+~#q7YT<4RZBG77`Pa?v2d|)F!xy|z{SJiCTxK@ z&u&QsNP?RTmkc)zZaUlyxD>dVa5uosf=h*)4L1jFE?gSiJh=IAcwnWiB9?`4i{SnM zmjSmJZVB8{xJJ1jVEeVKh0B3k2X_)|%Q zZG_8%+XS~6ZVOyKTmjrIaJR~^BJ)VY4w+VDPP9J&=0UjaaJRuxy%oVx3X~GXKr!DA z=T0pP*s}tZ;ncU4t(y>2LLJK!kGlyxemyC_s& zR4-Hns%xq*s-t`1M#53?O5mst?|>_Xqe9&WcPAXR*IjVb9(TiSgA0bE_MMJ3vEGxY zM^P`M9ySK4*uy>njjyzg#8e+XVY4XH5kDr@|$XBR~taO>&=Bog6jo z7QNutMKPYUje7Vk3F-RW+_$ScmZ?#4yTxm`@3m)P%azaKMWSojsBsjvoP5?4C^v33 zneFaqJge%r5~bs{f1_o7JO5GFR&z%iUt3h!>wa@kpKCL*A$#@aY0_C{Dy`af$+XcR z|9IHkN7nsh%B>pZV=)_K`%~rva+%c_6vPi5yjIdGeUK|AOl(%cJ{DyJcF;g4DTbRNy7Q8;{=8AUb|Q`n0qa3uZ2n zA0IF|)@)p}25lJ;6E!YItmwFii|n`i#p-eS$zfA>w`^~1 zEHc^|)^Esvkq13@5o04`#!5$vDMT*2Vm8}33(=8d+_{Mwk0}1jdenQsx@qI`R_5nS z-I)8|la5`zA^SIk=cv=+-CbP89k+#!ivJDy-xiOV8WDpwTCqfayW12Xk6tqMkQ=Gi zzTb^Q=Jm_+K^9-xySt^YT;cyVT}`l737 z`OZt`t#Zz%W?R))e=;>`RqviOM|HPe-Ie6%r;w{Fe>2s~pkK^grFWfqwe{*gB@cXN z%8+$+=AW%scPZVYYV>>Nqn7Sh#VSwsvP_dn)h0g~RAahBkGblNf0=7dG?lNDK~3gA z|BvSLK2H)nN=OsY4n|Gzc0@0HUYH}(0yJ9G?VWn_bCw0yq7bVh#SZRu7O z`?dM&9{yL=I!_CogQyCFXnz+u?KAUs=`dR?gCaIkFZqp0=>Oe${(s(iX8q=!XPrI> z7hE+6_0LQEmvfeW51H~mzlX@yAj<&z|JG!wCO`ZCp~*6R=5N;GH8Y%ExuX|uS-pA7 z==H1DZ`?3i+RvCK%TKymEHd(YQ<41JXXb9y`5&bP!FmHu*2Eg`znX}x^8J_0Jaxh&0)=yT$+aW^AkM@v?cW9PlgVRg71ys=9}zpqoMb Ee?KXmNB{r; diff --git a/RecastDemo/Build/Xcode/Recast.xcodeproj/memon.pbxuser b/RecastDemo/Build/Xcode/Recast.xcodeproj/memon.pbxuser index 71d445fd..642c137d 100644 --- a/RecastDemo/Build/Xcode/Recast.xcodeproj/memon.pbxuser +++ b/RecastDemo/Build/Xcode/Recast.xcodeproj/memon.pbxuser @@ -16,18 +16,7 @@ 8D1107260486CEB800E47090 /* Recast */, ); breakpoints = ( - 6B0249B11003783F00CF7107 /* Sample_TileMesh.cpp:27 */, - 6B0249ED10037C0A00CF7107 /* DetourTileNavMesh.cpp:1 */, - 6B0249EF10037C0C00CF7107 /* DetourTileNavMesh.cpp:1 */, - 6B024AC01004AB3900CF7107 /* DetourTileNavMesh.cpp:1 */, - 6B9D0932102722F0009B1A6C /* RecastTexture.cpp:301 */, - 6B9D09921028542A009B1A6C /* RecastDebugDraw.cpp:29 */, - 6B93FEFF1030443300F0C0DA /* Recast.cpp:281 */, - 6B9301521032F08300F0C0DA /* Recast.cpp:281 */, - 6B4C5232104FC1F600E88FB8 /* Recast.cpp:281 */, - 6B57D313108C609500DDD053 /* RecastMeshDetail.cpp:622 */, - 6B57D37B108C699200DDD053 /* RecastMeshDetail.cpp:252 */, - 6BA1E86A10C7BC9F008007F6 /* Sample_StatMeshSimple.cpp:516 */, + 6BBB88CC10EAA37B008FEA1F /* NavMeshTesterTool.cpp:282 */, ); codeSenseManager = 6B8632AA0F78115100E2684A /* Code sense */; executables = ( @@ -130,72 +119,240 @@ PBXFindDataSource_LocationID, ); }; - PBXPerProjectTemplateStateSaveDate = 283083322; - PBXWorkspaceStateSaveDate = 283083322; + PBXPerProjectTemplateStateSaveDate = 283853200; + PBXWorkspaceStateSaveDate = 283853200; }; perUserProjectItems = { 6B57D358108C66B200DDD053 = 6B57D358108C66B200DDD053 /* PBXTextBookmark */; 6B7FB74D1091EBDE001BA51A = 6B7FB74D1091EBDE001BA51A /* PBXTextBookmark */; 6B8DE70D10B01BBF00DF20FB = 6B8DE70D10B01BBF00DF20FB /* PBXTextBookmark */; 6B8DE76D10B0243500DF20FB = 6B8DE76D10B0243500DF20FB /* PBXTextBookmark */; - 6B8DE7F110B0517A00DF20FB = 6B8DE7F110B0517A00DF20FB /* PBXTextBookmark */; 6B8DE84910B0584400DF20FB = 6B8DE84910B0584400DF20FB /* PBXTextBookmark */; - 6B8DEA3810B6CBC200DF20FB = 6B8DEA3810B6CBC200DF20FB /* PBXTextBookmark */; 6B8DEAA110BC7BCD00DF20FB = 6B8DEAA110BC7BCD00DF20FB /* PBXTextBookmark */; - 6B98692510DF824E007D8D84 /* PBXTextBookmark */ = 6B98692510DF824E007D8D84 /* PBXTextBookmark */; - 6B98692610DF824E007D8D84 /* PBXTextBookmark */ = 6B98692610DF824E007D8D84 /* PBXTextBookmark */; - 6B98692710DF824E007D8D84 /* PBXTextBookmark */ = 6B98692710DF824E007D8D84 /* PBXTextBookmark */; - 6B98692810DF824E007D8D84 /* PBXTextBookmark */ = 6B98692810DF824E007D8D84 /* PBXTextBookmark */; - 6B98693110DF8929007D8D84 /* PBXTextBookmark */ = 6B98693110DF8929007D8D84 /* PBXTextBookmark */; - 6B98693210DF8929007D8D84 /* PBXTextBookmark */ = 6B98693210DF8929007D8D84 /* PBXTextBookmark */; - 6B98693310DF8929007D8D84 /* PBXTextBookmark */ = 6B98693310DF8929007D8D84 /* PBXTextBookmark */; - 6B98693410DF8929007D8D84 /* PBXTextBookmark */ = 6B98693410DF8929007D8D84 /* PBXTextBookmark */; - 6B98693510DF8929007D8D84 /* PBXTextBookmark */ = 6B98693510DF8929007D8D84 /* PBXTextBookmark */; - 6B98693610DF8929007D8D84 /* PBXTextBookmark */ = 6B98693610DF8929007D8D84 /* PBXTextBookmark */; - 6B98693710DF8929007D8D84 /* PBXTextBookmark */ = 6B98693710DF8929007D8D84 /* PBXTextBookmark */; - 6B98693810DF8929007D8D84 /* PBXTextBookmark */ = 6B98693810DF8929007D8D84 /* PBXTextBookmark */; - 6B98693910DF8929007D8D84 /* PBXTextBookmark */ = 6B98693910DF8929007D8D84 /* PBXTextBookmark */; - 6B98693A10DF8929007D8D84 /* PBXTextBookmark */ = 6B98693A10DF8929007D8D84 /* PBXTextBookmark */; - 6B98693B10DF8929007D8D84 /* PBXTextBookmark */ = 6B98693B10DF8929007D8D84 /* PBXTextBookmark */; - 6B98693C10DF8929007D8D84 /* PBXTextBookmark */ = 6B98693C10DF8929007D8D84 /* PBXTextBookmark */; - 6B98693D10DF8929007D8D84 /* PBXTextBookmark */ = 6B98693D10DF8929007D8D84 /* PBXTextBookmark */; - 6B98693E10DF8929007D8D84 /* PBXTextBookmark */ = 6B98693E10DF8929007D8D84 /* PBXTextBookmark */; - 6B98694710DF8982007D8D84 /* PBXTextBookmark */ = 6B98694710DF8982007D8D84 /* PBXTextBookmark */; - 6B98694810DF8982007D8D84 /* PBXTextBookmark */ = 6B98694810DF8982007D8D84 /* PBXTextBookmark */; - 6B98694910DF8982007D8D84 /* PBXTextBookmark */ = 6B98694910DF8982007D8D84 /* PBXTextBookmark */; - 6B98694A10DF8982007D8D84 /* PBXTextBookmark */ = 6B98694A10DF8982007D8D84 /* PBXTextBookmark */; + 6B98693110DF8929007D8D84 = 6B98693110DF8929007D8D84 /* PBXTextBookmark */; + 6B98693310DF8929007D8D84 = 6B98693310DF8929007D8D84 /* PBXTextBookmark */; + 6B98693710DF8929007D8D84 = 6B98693710DF8929007D8D84 /* PBXTextBookmark */; + 6B98693810DF8929007D8D84 = 6B98693810DF8929007D8D84 /* PBXTextBookmark */; + 6B98693910DF8929007D8D84 = 6B98693910DF8929007D8D84 /* PBXTextBookmark */; + 6B9869F710DFFA98007D8D84 = 6B9869F710DFFA98007D8D84 /* PBXTextBookmark */; + 6B9869F810DFFA98007D8D84 = 6B9869F810DFFA98007D8D84 /* PBXTextBookmark */; + 6B9869FC10DFFA98007D8D84 = 6B9869FC10DFFA98007D8D84 /* PBXTextBookmark */; 6BA1E63A10C1DB5B008007F6 = 6BA1E63A10C1DB5B008007F6 /* PBXTextBookmark */; 6BA1E7F210C7B3FF008007F6 = 6BA1E7F210C7B3FF008007F6 /* PBXTextBookmark */; 6BA1E89310C7C227008007F6 = 6BA1E89310C7C227008007F6 /* PBXTextBookmark */; - 6BA1E8B010C7C5D1008007F6 = 6BA1E8B010C7C5D1008007F6 /* PBXTextBookmark */; 6BA1E8DB10C7CB62008007F6 = 6BA1E8DB10C7CB62008007F6 /* PBXTextBookmark */; 6BA1E8E410C7D2FA008007F6 = 6BA1E8E410C7D2FA008007F6 /* PBXTextBookmark */; - 6BA1E8F210C7D4D9008007F6 = 6BA1E8F210C7D4D9008007F6 /* PBXTextBookmark */; - 6BB4964510C8ECF300BC0805 = 6BB4964510C8ECF300BC0805 /* PBXTextBookmark */; - 6BB4965E10C8F2AE00BC0805 = 6BB4965E10C8F2AE00BC0805 /* PBXTextBookmark */; 6BB4965F10C8F2AE00BC0805 = 6BB4965F10C8F2AE00BC0805 /* PBXTextBookmark */; 6BB4966110C8F2AE00BC0805 = 6BB4966110C8F2AE00BC0805 /* PBXTextBookmark */; - 6BB4966510C8F2AE00BC0805 = 6BB4966510C8F2AE00BC0805 /* PBXTextBookmark */; - 6BB4966810C8F2AE00BC0805 = 6BB4966810C8F2AE00BC0805 /* PBXTextBookmark */; - 6BB4966A10C8F2AE00BC0805 = 6BB4966A10C8F2AE00BC0805 /* PBXTextBookmark */; 6BB4967C10C8F8F500BC0805 = 6BB4967C10C8F8F500BC0805 /* PBXTextBookmark */; - 6BB93C8210CFE3B100F74F2B = 6BB93C8210CFE3B100F74F2B /* PBXTextBookmark */; - 6BB93CCF10CFEA7A00F74F2B = 6BB93CCF10CFEA7A00F74F2B /* PBXTextBookmark */; - 6BB93CD010CFEA7A00F74F2B = 6BB93CD010CFEA7A00F74F2B /* PBXTextBookmark */; - 6BB93CD210CFEA7A00F74F2B = 6BB93CD210CFEA7A00F74F2B /* PBXTextBookmark */; - 6BB93CD710CFEA7A00F74F2B = 6BB93CD710CFEA7A00F74F2B /* PBXTextBookmark */; - 6BB93CD810CFEA7A00F74F2B = 6BB93CD810CFEA7A00F74F2B /* PBXTextBookmark */; 6BB93CE710CFEB5D00F74F2B = 6BB93CE710CFEB5D00F74F2B /* PBXTextBookmark */; 6BB93CEB10CFEB5D00F74F2B = 6BB93CEB10CFEB5D00F74F2B /* PBXTextBookmark */; 6BB93D0510CFFC1300F74F2B = 6BB93D0510CFFC1300F74F2B /* PBXTextBookmark */; 6BB93D0710CFFC1300F74F2B = 6BB93D0710CFFC1300F74F2B /* PBXTextBookmark */; - 6BB93D0810CFFC1300F74F2B = 6BB93D0810CFFC1300F74F2B /* PBXTextBookmark */; - 6BB93D0910CFFC1300F74F2B = 6BB93D0910CFFC1300F74F2B /* PBXTextBookmark */; 6BB93D0A10CFFC1300F74F2B = 6BB93D0A10CFFC1300F74F2B /* PBXTextBookmark */; 6BB93D1510CFFC6D00F74F2B = 6BB93D1510CFFC6D00F74F2B /* PBXTextBookmark */; 6BB93D1B10CFFD7600F74F2B = 6BB93D1B10CFFD7600F74F2B /* PBXTextBookmark */; - 6BB93D1C10CFFD7600F74F2B = 6BB93D1C10CFFD7600F74F2B /* PBXTextBookmark */; - 6BB93D1E10D001BA00F74F2B = 6BB93D1E10D001BA00F74F2B /* PBXTextBookmark */; + 6BBB87D710EA97CC008FEA1F = 6BBB87D710EA97CC008FEA1F /* PBXTextBookmark */; + 6BBB87D910EA97CC008FEA1F = 6BBB87D910EA97CC008FEA1F /* PBXTextBookmark */; + 6BBB87DA10EA97CC008FEA1F = 6BBB87DA10EA97CC008FEA1F /* PBXTextBookmark */; + 6BBB87E310EA97CC008FEA1F = 6BBB87E310EA97CC008FEA1F /* PBXTextBookmark */; + 6BBB87E410EA97CC008FEA1F = 6BBB87E410EA97CC008FEA1F /* PBXTextBookmark */; + 6BBB87E510EA97CC008FEA1F = 6BBB87E510EA97CC008FEA1F /* PBXTextBookmark */; + 6BBB87E610EA97CC008FEA1F = 6BBB87E610EA97CC008FEA1F /* PBXTextBookmark */; + 6BBB87E710EA97CC008FEA1F = 6BBB87E710EA97CC008FEA1F /* PBXTextBookmark */; + 6BBB87E810EA97CC008FEA1F = 6BBB87E810EA97CC008FEA1F /* PBXTextBookmark */; + 6BBB87E910EA97CC008FEA1F = 6BBB87E910EA97CC008FEA1F /* PBXTextBookmark */; + 6BBB87EB10EA97CC008FEA1F = 6BBB87EB10EA97CC008FEA1F /* PBXTextBookmark */; + 6BBB87EC10EA97CC008FEA1F = 6BBB87EC10EA97CC008FEA1F /* PBXTextBookmark */; + 6BBB87EF10EA97CC008FEA1F = 6BBB87EF10EA97CC008FEA1F /* PBXTextBookmark */; + 6BBB87F010EA97CC008FEA1F = 6BBB87F010EA97CC008FEA1F /* PBXTextBookmark */; + 6BBB87F110EA97CC008FEA1F = 6BBB87F110EA97CC008FEA1F /* PBXTextBookmark */; + 6BBB87F410EA97CC008FEA1F = 6BBB87F410EA97CC008FEA1F /* PBXTextBookmark */; + 6BBB87F510EA97CC008FEA1F = 6BBB87F510EA97CC008FEA1F /* PBXTextBookmark */; + 6BBB87F610EA97CC008FEA1F = 6BBB87F610EA97CC008FEA1F /* PBXTextBookmark */; + 6BBB87F710EA97CC008FEA1F = 6BBB87F710EA97CC008FEA1F /* PBXTextBookmark */; + 6BBB87F810EA97CC008FEA1F = 6BBB87F810EA97CC008FEA1F /* PBXTextBookmark */; + 6BBB87FA10EA97CC008FEA1F = 6BBB87FA10EA97CC008FEA1F /* PBXTextBookmark */; + 6BBB87FB10EA97CC008FEA1F = 6BBB87FB10EA97CC008FEA1F /* PBXTextBookmark */; + 6BBB87FC10EA97CC008FEA1F = 6BBB87FC10EA97CC008FEA1F /* PBXTextBookmark */; + 6BBB87FD10EA97CC008FEA1F = 6BBB87FD10EA97CC008FEA1F /* PBXTextBookmark */; + 6BBB87FE10EA97CC008FEA1F = 6BBB87FE10EA97CC008FEA1F /* PBXTextBookmark */; + 6BBB87FF10EA97CC008FEA1F = 6BBB87FF10EA97CC008FEA1F /* PBXTextBookmark */; + 6BBB880010EA97CC008FEA1F = 6BBB880010EA97CC008FEA1F /* PBXTextBookmark */; + 6BBB880110EA97CC008FEA1F = 6BBB880110EA97CC008FEA1F /* PBXTextBookmark */; + 6BBB880210EA97CC008FEA1F = 6BBB880210EA97CC008FEA1F /* PBXTextBookmark */; + 6BBB880310EA97CC008FEA1F = 6BBB880310EA97CC008FEA1F /* PBXTextBookmark */; + 6BBB880510EA97CC008FEA1F = 6BBB880510EA97CC008FEA1F /* PBXTextBookmark */; + 6BBB880610EA97CC008FEA1F = 6BBB880610EA97CC008FEA1F /* PBXTextBookmark */; + 6BBB880710EA97CC008FEA1F = 6BBB880710EA97CC008FEA1F /* PBXTextBookmark */; + 6BBB880810EA97CC008FEA1F = 6BBB880810EA97CC008FEA1F /* PBXTextBookmark */; + 6BBB880910EA97CC008FEA1F = 6BBB880910EA97CC008FEA1F /* PBXTextBookmark */; + 6BBB880A10EA97CC008FEA1F = 6BBB880A10EA97CC008FEA1F /* PBXTextBookmark */; + 6BBB880B10EA97CC008FEA1F = 6BBB880B10EA97CC008FEA1F /* PBXTextBookmark */; + 6BBB880C10EA97CC008FEA1F = 6BBB880C10EA97CC008FEA1F /* PBXTextBookmark */; + 6BBB880D10EA97CC008FEA1F = 6BBB880D10EA97CC008FEA1F /* PBXTextBookmark */; + 6BBB880E10EA97CC008FEA1F = 6BBB880E10EA97CC008FEA1F /* PBXTextBookmark */; + 6BBB880F10EA97CC008FEA1F = 6BBB880F10EA97CC008FEA1F /* PBXTextBookmark */; + 6BBB881010EA97CC008FEA1F = 6BBB881010EA97CC008FEA1F /* PBXTextBookmark */; + 6BBB881110EA97CC008FEA1F = 6BBB881110EA97CC008FEA1F /* PBXTextBookmark */; + 6BBB881210EA97CC008FEA1F = 6BBB881210EA97CC008FEA1F /* PBXTextBookmark */; + 6BBB881310EA97CC008FEA1F = 6BBB881310EA97CC008FEA1F /* PBXTextBookmark */; + 6BBB881410EA97CC008FEA1F = 6BBB881410EA97CC008FEA1F /* PBXTextBookmark */; + 6BBB881510EA97CC008FEA1F = 6BBB881510EA97CC008FEA1F /* PBXTextBookmark */; + 6BBB881610EA97CC008FEA1F = 6BBB881610EA97CC008FEA1F /* PBXTextBookmark */; + 6BBB881710EA97CC008FEA1F = 6BBB881710EA97CC008FEA1F /* PBXTextBookmark */; + 6BBB881810EA97CC008FEA1F = 6BBB881810EA97CC008FEA1F /* PBXTextBookmark */; + 6BBB882710EA99CA008FEA1F = 6BBB882710EA99CA008FEA1F /* PBXTextBookmark */; + 6BBB882810EA99CA008FEA1F = 6BBB882810EA99CA008FEA1F /* PBXTextBookmark */; + 6BBB882910EA99CA008FEA1F = 6BBB882910EA99CA008FEA1F /* PBXTextBookmark */; + 6BBB882A10EA99CA008FEA1F = 6BBB882A10EA99CA008FEA1F /* PBXTextBookmark */; + 6BBB883610EA9B3D008FEA1F = 6BBB883610EA9B3D008FEA1F /* PBXTextBookmark */; + 6BBB883710EA9B3D008FEA1F = 6BBB883710EA9B3D008FEA1F /* PBXTextBookmark */; + 6BBB883C10EA9B6F008FEA1F = 6BBB883C10EA9B6F008FEA1F /* PBXTextBookmark */; + 6BBB883E10EA9B6F008FEA1F = 6BBB883E10EA9B6F008FEA1F /* PBXTextBookmark */; + 6BBB883F10EA9B6F008FEA1F = 6BBB883F10EA9B6F008FEA1F /* PBXTextBookmark */; + 6BBB884E10EA9ECC008FEA1F = 6BBB884E10EA9ECC008FEA1F /* PBXTextBookmark */; + 6BBB885510EA9ECC008FEA1F = 6BBB885510EA9ECC008FEA1F /* PBXTextBookmark */; + 6BBB885610EA9ECC008FEA1F = 6BBB885610EA9ECC008FEA1F /* PBXTextBookmark */; + 6BBB885710EA9ECC008FEA1F = 6BBB885710EA9ECC008FEA1F /* PBXTextBookmark */; + 6BBB885810EA9ECC008FEA1F = 6BBB885810EA9ECC008FEA1F /* PBXTextBookmark */; + 6BBB885910EA9ECC008FEA1F = 6BBB885910EA9ECC008FEA1F /* PBXTextBookmark */; + 6BBB885A10EA9ECC008FEA1F = 6BBB885A10EA9ECC008FEA1F /* PBXTextBookmark */; + 6BBB885B10EA9ECC008FEA1F = 6BBB885B10EA9ECC008FEA1F /* PBXTextBookmark */; + 6BBB885C10EA9ECC008FEA1F = 6BBB885C10EA9ECC008FEA1F /* PBXTextBookmark */; + 6BBB885D10EA9ECC008FEA1F = 6BBB885D10EA9ECC008FEA1F /* PBXTextBookmark */; + 6BBB885E10EA9ECC008FEA1F = 6BBB885E10EA9ECC008FEA1F /* PBXTextBookmark */; + 6BBB885F10EA9ECC008FEA1F = 6BBB885F10EA9ECC008FEA1F /* PBXTextBookmark */; + 6BBB886010EA9ECC008FEA1F = 6BBB886010EA9ECC008FEA1F /* PBXTextBookmark */; + 6BBB886110EA9ECC008FEA1F = 6BBB886110EA9ECC008FEA1F /* PBXTextBookmark */; + 6BBB886210EA9ECC008FEA1F = 6BBB886210EA9ECC008FEA1F /* PBXTextBookmark */; + 6BBB886310EA9ECC008FEA1F = 6BBB886310EA9ECC008FEA1F /* PBXTextBookmark */; + 6BBB886410EA9ECC008FEA1F = 6BBB886410EA9ECC008FEA1F /* PBXTextBookmark */; + 6BBB886510EA9ECC008FEA1F = 6BBB886510EA9ECC008FEA1F /* PBXTextBookmark */; + 6BBB886610EA9ECC008FEA1F = 6BBB886610EA9ECC008FEA1F /* PBXTextBookmark */; + 6BBB886710EA9ECC008FEA1F = 6BBB886710EA9ECC008FEA1F /* PBXTextBookmark */; + 6BBB886810EA9ECC008FEA1F = 6BBB886810EA9ECC008FEA1F /* PBXTextBookmark */; + 6BBB886910EA9ECC008FEA1F = 6BBB886910EA9ECC008FEA1F /* PBXTextBookmark */; + 6BBB886A10EA9ECC008FEA1F = 6BBB886A10EA9ECC008FEA1F /* PBXTextBookmark */; + 6BBB886B10EA9ECC008FEA1F = 6BBB886B10EA9ECC008FEA1F /* PBXTextBookmark */; + 6BBB886C10EA9ECC008FEA1F = 6BBB886C10EA9ECC008FEA1F /* PBXTextBookmark */; + 6BBB886D10EA9ECC008FEA1F = 6BBB886D10EA9ECC008FEA1F /* PBXTextBookmark */; + 6BBB886E10EA9ECC008FEA1F = 6BBB886E10EA9ECC008FEA1F /* PBXTextBookmark */; + 6BBB886F10EA9ECC008FEA1F = 6BBB886F10EA9ECC008FEA1F /* PBXTextBookmark */; + 6BBB887010EA9ECC008FEA1F = 6BBB887010EA9ECC008FEA1F /* PBXTextBookmark */; + 6BBB887110EA9ECC008FEA1F = 6BBB887110EA9ECC008FEA1F /* PBXTextBookmark */; + 6BBB887210EA9ECC008FEA1F = 6BBB887210EA9ECC008FEA1F /* PBXTextBookmark */; + 6BBB887310EA9ECC008FEA1F = 6BBB887310EA9ECC008FEA1F /* PBXTextBookmark */; + 6BBB887410EA9ECC008FEA1F = 6BBB887410EA9ECC008FEA1F /* PBXTextBookmark */; + 6BBB887E10EA9FE6008FEA1F = 6BBB887E10EA9FE6008FEA1F /* PBXTextBookmark */; + 6BBB887F10EA9FE6008FEA1F = 6BBB887F10EA9FE6008FEA1F /* PBXTextBookmark */; + 6BBB888010EA9FE6008FEA1F = 6BBB888010EA9FE6008FEA1F /* PBXTextBookmark */; + 6BBB888110EA9FE6008FEA1F = 6BBB888110EA9FE6008FEA1F /* PBXTextBookmark */; + 6BBB888210EA9FE6008FEA1F = 6BBB888210EA9FE6008FEA1F /* PBXTextBookmark */; + 6BBB888310EA9FE6008FEA1F = 6BBB888310EA9FE6008FEA1F /* PBXTextBookmark */; + 6BBB888410EA9FE6008FEA1F = 6BBB888410EA9FE6008FEA1F /* PBXTextBookmark */; + 6BBB889610EAA050008FEA1F = 6BBB889610EAA050008FEA1F /* PBXTextBookmark */; + 6BBB889B10EAA094008FEA1F = 6BBB889B10EAA094008FEA1F /* PBXTextBookmark */; + 6BBB889D10EAA094008FEA1F = 6BBB889D10EAA094008FEA1F /* PBXTextBookmark */; + 6BBB88B410EAA316008FEA1F = 6BBB88B410EAA316008FEA1F /* PBXTextBookmark */; + 6BBB88B510EAA316008FEA1F = 6BBB88B510EAA316008FEA1F /* PBXTextBookmark */; + 6BBB88B610EAA316008FEA1F = 6BBB88B610EAA316008FEA1F /* PBXTextBookmark */; + 6BBB88B710EAA316008FEA1F = 6BBB88B710EAA316008FEA1F /* PBXTextBookmark */; + 6BBB88B810EAA316008FEA1F = 6BBB88B810EAA316008FEA1F /* PBXTextBookmark */; + 6BBB88B910EAA316008FEA1F = 6BBB88B910EAA316008FEA1F /* PBXTextBookmark */; + 6BBB88BA10EAA316008FEA1F = 6BBB88BA10EAA316008FEA1F /* PBXTextBookmark */; + 6BBB88BB10EAA316008FEA1F = 6BBB88BB10EAA316008FEA1F /* PBXTextBookmark */; + 6BBB88BC10EAA316008FEA1F = 6BBB88BC10EAA316008FEA1F /* PBXTextBookmark */; + 6BBB88BD10EAA316008FEA1F = 6BBB88BD10EAA316008FEA1F /* PBXTextBookmark */; + 6BBB88C110EAA316008FEA1F = 6BBB88C110EAA316008FEA1F /* PBXTextBookmark */; + 6BBB88C210EAA316008FEA1F = 6BBB88C210EAA316008FEA1F /* PBXTextBookmark */; + 6BBB88C310EAA316008FEA1F = 6BBB88C310EAA316008FEA1F /* PBXTextBookmark */; + 6BBB88C510EAA316008FEA1F = 6BBB88C510EAA316008FEA1F /* PBXTextBookmark */; + 6BBB88C610EAA316008FEA1F = 6BBB88C610EAA316008FEA1F /* PBXTextBookmark */; + 6BBB88C710EAA316008FEA1F = 6BBB88C710EAA316008FEA1F /* PBXTextBookmark */; + 6BBB88C810EAA316008FEA1F = 6BBB88C810EAA316008FEA1F /* PBXTextBookmark */; + 6BBB88D310EAA384008FEA1F = 6BBB88D310EAA384008FEA1F /* PBXTextBookmark */; + 6BBB88D410EAA384008FEA1F = 6BBB88D410EAA384008FEA1F /* PBXTextBookmark */; + 6BBB88D510EAA384008FEA1F = 6BBB88D510EAA384008FEA1F /* PBXTextBookmark */; + 6BBB88DA10EAA39C008FEA1F = 6BBB88DA10EAA39C008FEA1F /* PBXTextBookmark */; + 6BBB88E410EAA3D9008FEA1F = 6BBB88E410EAA3D9008FEA1F /* PBXTextBookmark */; + 6BBB88E510EAA3D9008FEA1F = 6BBB88E510EAA3D9008FEA1F /* PBXTextBookmark */; + 6BBB88E610EAA3D9008FEA1F = 6BBB88E610EAA3D9008FEA1F /* PBXTextBookmark */; + 6BBB88E710EAA3D9008FEA1F = 6BBB88E710EAA3D9008FEA1F /* PBXTextBookmark */; + 6BBB88E810EAA3D9008FEA1F = 6BBB88E810EAA3D9008FEA1F /* PBXTextBookmark */; + 6BBB88E910EAA3D9008FEA1F = 6BBB88E910EAA3D9008FEA1F /* PBXTextBookmark */; + 6BBB88F010EAA44E008FEA1F = 6BBB88F010EAA44E008FEA1F /* PBXTextBookmark */; + 6BBB88F410EAA4E6008FEA1F = 6BBB88F410EAA4E6008FEA1F /* PBXTextBookmark */; + 6BBB88FC10EAA614008FEA1F = 6BBB88FC10EAA614008FEA1F /* PBXTextBookmark */; + 6BBB88FD10EAA614008FEA1F = 6BBB88FD10EAA614008FEA1F /* PBXTextBookmark */; + 6BBB88FE10EAA614008FEA1F = 6BBB88FE10EAA614008FEA1F /* PBXTextBookmark */; + 6BBB88FF10EAA614008FEA1F = 6BBB88FF10EAA614008FEA1F /* PBXTextBookmark */; + 6BBB890010EAA614008FEA1F = 6BBB890010EAA614008FEA1F /* PBXTextBookmark */; + 6BBB890110EAA614008FEA1F = 6BBB890110EAA614008FEA1F /* PBXTextBookmark */; + 6BBB890210EAA614008FEA1F = 6BBB890210EAA614008FEA1F /* PBXTextBookmark */; + 6BBB890310EAA614008FEA1F = 6BBB890310EAA614008FEA1F /* PBXTextBookmark */; + 6BBB890A10EAA6C2008FEA1F = 6BBB890A10EAA6C2008FEA1F /* PBXTextBookmark */; + 6BBB890D10EAA6C2008FEA1F = 6BBB890D10EAA6C2008FEA1F /* PBXTextBookmark */; + 6BBB890E10EAA6C2008FEA1F = 6BBB890E10EAA6C2008FEA1F /* PBXTextBookmark */; + 6BBB891B10EAA87B008FEA1F = 6BBB891B10EAA87B008FEA1F /* PBXTextBookmark */; + 6BBB891C10EAA87B008FEA1F = 6BBB891C10EAA87B008FEA1F /* PBXTextBookmark */; + 6BBB891D10EAA87B008FEA1F = 6BBB891D10EAA87B008FEA1F /* PBXTextBookmark */; + 6BBB891F10EAA87B008FEA1F = 6BBB891F10EAA87B008FEA1F /* PBXTextBookmark */; + 6BBB892310EAA87B008FEA1F = 6BBB892310EAA87B008FEA1F /* PBXTextBookmark */; + 6BBB892510EAA87B008FEA1F = 6BBB892510EAA87B008FEA1F /* PBXTextBookmark */; + 6BBB892710EAA87B008FEA1F = 6BBB892710EAA87B008FEA1F /* PBXTextBookmark */; + 6BBB892810EAA87B008FEA1F = 6BBB892810EAA87B008FEA1F /* PBXTextBookmark */; + 6BBB892910EAA87B008FEA1F = 6BBB892910EAA87B008FEA1F /* PBXTextBookmark */; + 6BBB892A10EAA87B008FEA1F = 6BBB892A10EAA87B008FEA1F /* PBXTextBookmark */; + 6BBB892B10EAA87B008FEA1F = 6BBB892B10EAA87B008FEA1F /* PBXTextBookmark */; + 6BBB892F10EAA899008FEA1F = 6BBB892F10EAA899008FEA1F /* PBXTextBookmark */; + 6BBB893A10EAAADC008FEA1F = 6BBB893A10EAAADC008FEA1F /* PBXTextBookmark */; + 6BBB893C10EAAADC008FEA1F = 6BBB893C10EAAADC008FEA1F /* PBXTextBookmark */; + 6BBB893D10EAAADC008FEA1F = 6BBB893D10EAAADC008FEA1F /* PBXTextBookmark */; + 6BBB893E10EAAADC008FEA1F = 6BBB893E10EAAADC008FEA1F /* PBXTextBookmark */; + 6BBB894510EAAB73008FEA1F = 6BBB894510EAAB73008FEA1F /* PBXTextBookmark */; + 6BBB894A10EAAB73008FEA1F = 6BBB894A10EAAB73008FEA1F /* PBXTextBookmark */; + 6BBB894C10EAAB73008FEA1F = 6BBB894C10EAAB73008FEA1F /* PBXTextBookmark */; + 6BBB894E10EAAB73008FEA1F = 6BBB894E10EAAB73008FEA1F /* PBXTextBookmark */; + 6BBB895010EAAB73008FEA1F = 6BBB895010EAAB73008FEA1F /* PBXTextBookmark */; + 6BBB895210EAAB73008FEA1F = 6BBB895210EAAB73008FEA1F /* PBXTextBookmark */; + 6BBB895310EAAB73008FEA1F = 6BBB895310EAAB73008FEA1F /* PBXTextBookmark */; + 6BBB895510EAAB73008FEA1F = 6BBB895510EAAB73008FEA1F /* PBXTextBookmark */; + 6BBB896010EAAE6C008FEA1F = 6BBB896010EAAE6C008FEA1F /* PBXTextBookmark */; + 6BBB896110EAAE6C008FEA1F = 6BBB896110EAAE6C008FEA1F /* PBXTextBookmark */; + 6BBB896310EAAE6C008FEA1F = 6BBB896310EAAE6C008FEA1F /* PBXTextBookmark */; + 6BBB896C10EAB179008FEA1F = 6BBB896C10EAB179008FEA1F /* PBXTextBookmark */; + 6BBB896E10EAB179008FEA1F = 6BBB896E10EAB179008FEA1F /* PBXTextBookmark */; + 6BBB897010EAB179008FEA1F = 6BBB897010EAB179008FEA1F /* PBXTextBookmark */; + 6BBB897210EAB179008FEA1F = 6BBB897210EAB179008FEA1F /* PBXTextBookmark */; + 6BBB897410EAB179008FEA1F = 6BBB897410EAB179008FEA1F /* PBXTextBookmark */; + 6BBB897610EAB179008FEA1F = 6BBB897610EAB179008FEA1F /* PBXTextBookmark */; + 6BBB897810EAB179008FEA1F = 6BBB897810EAB179008FEA1F /* PBXTextBookmark */; + 6BBB897A10EAB179008FEA1F = 6BBB897A10EAB179008FEA1F /* PBXTextBookmark */; + 6BBB897C10EAB179008FEA1F = 6BBB897C10EAB179008FEA1F /* PBXTextBookmark */; + 6BBB898310EAB1AA008FEA1F = 6BBB898310EAB1AA008FEA1F /* PBXTextBookmark */; + 6BBB898510EAB1AA008FEA1F = 6BBB898510EAB1AA008FEA1F /* PBXTextBookmark */; + 6BBB898610EAB1AA008FEA1F = 6BBB898610EAB1AA008FEA1F /* PBXTextBookmark */; + 6BBB898810EAB225008FEA1F = 6BBB898810EAB225008FEA1F /* PBXTextBookmark */; + 6BBB898A10EAB225008FEA1F = 6BBB898A10EAB225008FEA1F /* PBXTextBookmark */; + 6BBB898E10EABB10008FEA1F = 6BBB898E10EABB10008FEA1F /* PBXTextBookmark */; + 6BBB898F10EABB10008FEA1F = 6BBB898F10EABB10008FEA1F /* PBXTextBookmark */; + 6BBB899110EABB10008FEA1F = 6BBB899110EABB10008FEA1F /* PBXTextBookmark */; + 6BBB899210EABB10008FEA1F = 6BBB899210EABB10008FEA1F /* PBXTextBookmark */; + 6BBB899410EABB10008FEA1F = 6BBB899410EABB10008FEA1F /* PBXTextBookmark */; + 6BBB899510EABB10008FEA1F = 6BBB899510EABB10008FEA1F /* PBXTextBookmark */; + 6BBB899610EABB10008FEA1F = 6BBB899610EABB10008FEA1F /* PBXTextBookmark */; + 6BBB899710EABB10008FEA1F = 6BBB899710EABB10008FEA1F /* PBXTextBookmark */; + 6BBB899810EABB10008FEA1F = 6BBB899810EABB10008FEA1F /* PBXTextBookmark */; + 6BBB899910EABB10008FEA1F = 6BBB899910EABB10008FEA1F /* PBXTextBookmark */; + 6BBB899D10EABD34008FEA1F = 6BBB899D10EABD34008FEA1F /* PBXTextBookmark */; + 6BBB899E10EABD34008FEA1F = 6BBB899E10EABD34008FEA1F /* PBXTextBookmark */; + 6BBB899F10EABD34008FEA1F = 6BBB899F10EABD34008FEA1F /* PBXTextBookmark */; + 6BBB89A010EABD34008FEA1F = 6BBB89A010EABD34008FEA1F /* PBXTextBookmark */; + 6BBB89A110EABD34008FEA1F = 6BBB89A110EABD34008FEA1F /* PBXTextBookmark */; + 6BBB89A210EABD34008FEA1F = 6BBB89A210EABD34008FEA1F /* PBXTextBookmark */; + 6BBB89A310EABD34008FEA1F = 6BBB89A310EABD34008FEA1F /* PBXTextBookmark */; + 6BBB89A710EAC398008FEA1F = 6BBB89A710EAC398008FEA1F /* PBXTextBookmark */; 6BF2589310BE6F220061DCC9 = 6BF2589310BE6F220061DCC9 /* PBXTextBookmark */; }; sourceControlManager = 6B8632A90F78115100E2684A /* Source Control */; @@ -211,74 +368,6 @@ sepNavWindowFrame = "{{38, 57}, {1011, 695}}"; }; }; - 6B0249B11003783F00CF7107 /* Sample_TileMesh.cpp:27 */ = { - isa = PBXFileBreakpoint; - actions = ( - ); - breakpointStyle = 0; - continueAfterActions = 0; - countType = 0; - delayBeforeContinue = 0; - fileReference = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; - functionName = "BuilderTiledMesh::toolRecalc()"; - hitCount = 0; - ignoreCount = 0; - lineNumber = 27; - location = Recast; - modificationTime = 281534653.905802; - state = 1; - }; - 6B0249ED10037C0A00CF7107 /* DetourTileNavMesh.cpp:1 */ = { - isa = PBXFileBreakpoint; - actions = ( - ); - breakpointStyle = 0; - continueAfterActions = 0; - countType = 0; - delayBeforeContinue = 0; - fileReference = 6B2AEC590FFB8A7A005BE9CC /* DetourTileNavMesh.cpp */; - functionName = "dtTiledNavMesh::queryTilePolygons(dtTile* tile, const float* qmin, const float* qmax, dtTilePolyRef* polys, const int maxPolys)"; - hitCount = 0; - ignoreCount = 0; - lineNumber = 1; - location = Recast; - modificationTime = 281534653.906114; - state = 1; - }; - 6B0249EF10037C0C00CF7107 /* DetourTileNavMesh.cpp:1 */ = { - isa = PBXFileBreakpoint; - actions = ( - ); - breakpointStyle = 0; - continueAfterActions = 0; - countType = 0; - delayBeforeContinue = 0; - fileReference = 6B2AEC590FFB8A7A005BE9CC /* DetourTileNavMesh.cpp */; - functionName = "dtTiledNavMesh::queryTilePolygons(dtTile* tile, const float* qmin, const float* qmax, dtTilePolyRef* polys, const int maxPolys)"; - hitCount = 0; - ignoreCount = 0; - lineNumber = 1; - location = Recast; - modificationTime = 281534653.906272; - state = 1; - }; - 6B024AC01004AB3900CF7107 /* DetourTileNavMesh.cpp:1 */ = { - isa = PBXFileBreakpoint; - actions = ( - ); - breakpointStyle = 0; - continueAfterActions = 0; - countType = 0; - delayBeforeContinue = 0; - fileReference = 6B2AEC590FFB8A7A005BE9CC /* DetourTileNavMesh.cpp */; - functionName = "dtTiledNavMesh::addTile(int x, int y, unsigned char* data, int dataSize)"; - hitCount = 0; - ignoreCount = 0; - lineNumber = 1; - location = Recast; - modificationTime = 281534653.9064361; - state = 1; - }; 6B1185F41006895B0018F96F /* DetourNode.cpp */ = { uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {915, 2192}}"; @@ -288,9 +377,9 @@ }; 6B1185F61006896B0018F96F /* DetourNode.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {915, 2224}}"; + sepNavIntBoundsRect = "{{0, 0}, {915, 2208}}"; sepNavSelRange = "{2089, 0}"; - sepNavVisRange = "{1775, 492}"; + sepNavVisRange = "{1775, 465}"; }; }; 6B1185FC10068B040018F96F /* DetourCommon.h */ = { @@ -331,8 +420,8 @@ 6B137C7A0F7FCBE400459200 /* imgui.h */ = { uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {915, 1568}}"; - sepNavSelRange = "{2439, 0}"; - sepNavVisRange = "{2109, 432}"; + sepNavSelRange = "{1582, 0}"; + sepNavVisRange = "{1480, 806}"; }; }; 6B137C7B0F7FCBE400459200 /* MeshLoaderObj.h */ = { @@ -385,14 +474,6 @@ sepNavVisRange = "{14592, 968}"; }; }; - 6B137C840F7FCC1100459200 /* RecastDebugDraw.cpp */ = { - isa = PBXFileReference; - fileEncoding = 4; - lastKnownFileType = sourcecode.cpp.cpp; - name = RecastDebugDraw.cpp; - path = /Users/memon/Code/recastnavigation/Recast/Source/RecastDebugDraw.cpp; - sourceTree = ""; - }; 6B137C850F7FCC1100459200 /* RecastFilter.cpp */ = { uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {915, 2080}}"; @@ -438,77 +519,44 @@ }; 6B25B6100FFA62AD004F1BC4 /* Sample.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {915, 1072}}"; - sepNavSelRange = "{161, 0}"; - sepNavVisRange = "{0, 508}"; + sepNavIntBoundsRect = "{{0, 0}, {915, 1392}}"; + sepNavSelRange = "{392, 14}"; + sepNavVisRange = "{111, 725}"; }; }; 6B25B6140FFA62BE004F1BC4 /* Sample.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {915, 3088}}"; - sepNavSelRange = "{1183, 0}"; - sepNavVisRange = "{1148, 514}"; + sepNavIntBoundsRect = "{{0, 0}, {915, 3024}}"; + sepNavSelRange = "{1284, 0}"; + sepNavVisRange = "{3048, 819}"; }; }; - 6B25B6160FFA62BE004F1BC4 /* Sample_StatMeshSimple.cpp */ = { - isa = PBXFileReference; - fileEncoding = 4; - lastKnownFileType = sourcecode.cpp.cpp; - name = Sample_StatMeshSimple.cpp; - path = /Users/memon/Code/recastnavigation/RecastDemo/Source/Sample_StatMeshSimple.cpp; - sourceTree = ""; - }; 6B25B6180FFA62BE004F1BC4 /* main.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {915, 11824}}"; - sepNavSelRange = "{390, 0}"; - sepNavVisRange = "{0, 440}"; + sepNavIntBoundsRect = "{{0, 0}, {915, 12000}}"; + sepNavSelRange = "{3928, 0}"; + sepNavVisRange = "{1250, 517}"; }; }; 6B2AEC510FFB8946005BE9CC /* Sample_TileMesh.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {915, 1872}}"; - sepNavSelRange = "{1441, 41}"; - sepNavVisRange = "{1072, 548}"; + sepNavIntBoundsRect = "{{0, 0}, {915, 1344}}"; + sepNavSelRange = "{1772, 0}"; + sepNavVisRange = "{1599, 833}"; sepNavWindowFrame = "{{15, 78}, {1011, 695}}"; }; }; 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1146, 15744}}"; - sepNavSelRange = "{12353, 0}"; - sepNavVisRange = "{11481, 1138}"; + sepNavIntBoundsRect = "{{0, 0}, {1034, 14096}}"; + sepNavSelRange = "{9782, 10}"; + sepNavVisRange = "{9366, 678}"; }; }; - 6B2AEC590FFB8A7A005BE9CC /* DetourTileNavMesh.cpp */ = { - isa = PBXFileReference; - fileEncoding = 4; - lastKnownFileType = sourcecode.cpp.cpp; - name = DetourTileNavMesh.cpp; - path = /Users/memon/Code/recastnavigation/Detour/Source/DetourTileNavMesh.cpp; - sourceTree = ""; - }; - 6B4C5232104FC1F600E88FB8 /* Recast.cpp:281 */ = { - isa = PBXFileBreakpoint; - actions = ( - ); - breakpointStyle = 0; - continueAfterActions = 0; - countType = 0; - delayBeforeContinue = 0; - fileReference = 6B137C820F7FCC1100459200 /* Recast.cpp */; - functionName = "rcFilterNoiseArea(unsigned short flags, rcCompactHeightfield& chf)"; - hitCount = 0; - ignoreCount = 0; - lineNumber = 281; - location = Recast; - modificationTime = 281534653.90745; - state = 1; - }; 6B555DAE100B211D00247EA3 /* imguiRenderGL.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {915, 424}}"; - sepNavSelRange = "{917, 0}"; + sepNavIntBoundsRect = "{{0, 0}, {915, 492}}"; + sepNavSelRange = "{944, 0}"; sepNavVisRange = "{0, 1101}"; }; }; @@ -526,23 +574,6 @@ sepNavVisRange = "{26962, 857}"; }; }; - 6B57D313108C609500DDD053 /* RecastMeshDetail.cpp:622 */ = { - isa = PBXFileBreakpoint; - actions = ( - ); - breakpointStyle = 0; - continueAfterActions = 0; - countType = 0; - delayBeforeContinue = 0; - fileReference = 6B624169103434880002E346 /* RecastMeshDetail.cpp */; - functionName = "buildPolyDetail(const float* in, const int nin, unsigned short reg, const float sampleDist, const float sampleMaxError, const rcCompactHeightfield& chf, const rcHeightPatch& hp, float* verts, int& nverts, rcIntArray& tris, rcIntArray& edges, rcIntArray& idx, rcIntArray& samples)"; - hitCount = 0; - ignoreCount = 0; - lineNumber = 622; - location = Recast; - modificationTime = 281534653.907625; - state = 1; - }; 6B57D358108C66B200DDD053 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 6B137C6C0F7FCBBB00459200 /* imgui.cpp */; @@ -553,28 +584,11 @@ vrLen = 415; vrLoc = 1195; }; - 6B57D37B108C699200DDD053 /* RecastMeshDetail.cpp:252 */ = { - isa = PBXFileBreakpoint; - actions = ( - ); - breakpointStyle = 0; - continueAfterActions = 0; - countType = 0; - delayBeforeContinue = 0; - fileReference = 6B624169103434880002E346 /* RecastMeshDetail.cpp */; - functionName = "addEdge(int* edges, int& nedges, const int maxEdges, int s, int t, int l, int r)"; - hitCount = 0; - ignoreCount = 0; - lineNumber = 252; - location = Recast; - modificationTime = 281534653.9078138; - state = 1; - }; 6B624169103434880002E346 /* RecastMeshDetail.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {915, 19152}}"; - sepNavSelRange = "{4933, 0}"; - sepNavVisRange = "{4089, 975}"; + sepNavIntBoundsRect = "{{0, 0}, {915, 18720}}"; + sepNavSelRange = "{6116, 0}"; + sepNavVisRange = "{6037, 586}"; sepNavWindowFrame = "{{61, 36}, {1011, 695}}"; }; }; @@ -664,16 +678,6 @@ vrLen = 1001; vrLoc = 1843; }; - 6B8DE7F110B0517A00DF20FB /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B555DAE100B211D00247EA3 /* imguiRenderGL.h */; - name = "imguiRenderGL.h: 17"; - rLen = 0; - rLoc = 917; - rType = 0; - vrLen = 1101; - vrLoc = 0; - }; 6B8DE84910B0584400DF20FB /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 6B137C8A0F7FCC1100459200 /* RecastTimer.cpp */; @@ -686,9 +690,9 @@ }; 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {915, 26800}}"; - sepNavSelRange = "{35712, 0}"; - sepNavVisRange = "{35373, 693}"; + sepNavIntBoundsRect = "{{0, 0}, {915, 26752}}"; + sepNavSelRange = "{41325, 0}"; + sepNavVisRange = "{40927, 922}"; }; }; 6B8DE88810B69E3E00DF20FB /* DetourNavMeshBuilder.cpp */ = { @@ -701,8 +705,8 @@ 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */ = { uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {915, 5856}}"; - sepNavSelRange = "{10286, 0}"; - sepNavVisRange = "{9854, 1611}"; + sepNavSelRange = "{9491, 0}"; + sepNavVisRange = "{9294, 1550}"; }; }; 6B8DE88C10B69E4C00DF20FB /* DetourNavMeshBuilder.h */ = { @@ -722,16 +726,6 @@ vrLen = 1182; vrLoc = 9676; }; - 6B8DEA3810B6CBC200DF20FB /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B1185F61006896B0018F96F /* DetourNode.h */; - name = "DetourNode.h: 84"; - rLen = 0; - rLoc = 2089; - rType = 0; - vrLen = 492; - vrLoc = 1775; - }; 6B8DEAA110BC7BCD00DF20FB /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 6B137C830F7FCC1100459200 /* RecastContour.cpp */; @@ -742,80 +736,6 @@ vrLen = 968; vrLoc = 14592; }; - 6B9301521032F08300F0C0DA /* Recast.cpp:281 */ = { - isa = PBXFileBreakpoint; - actions = ( - ); - breakpointStyle = 0; - continueAfterActions = 0; - countType = 0; - delayBeforeContinue = 0; - fileReference = 6B137C820F7FCC1100459200 /* Recast.cpp */; - functionName = "buildPolySurface(const float* in, const int nin, const float tol, const rcCompactHeightfield& chf, rcPolySubdiv& psub)"; - hitCount = 0; - ignoreCount = 0; - lineNumber = 281; - location = Recast; - modificationTime = 281534653.907283; - state = 1; - }; - 6B93FEFF1030443300F0C0DA /* Recast.cpp:281 */ = { - isa = PBXFileBreakpoint; - actions = ( - ); - breakpointStyle = 0; - continueAfterActions = 0; - countType = 0; - delayBeforeContinue = 0; - fileReference = 6B137C820F7FCC1100459200 /* Recast.cpp */; - functionName = "removeVertex(unsigned short v, float* verts, int& nv, unsigned short* tris, int& nt)"; - hitCount = 0; - ignoreCount = 0; - lineNumber = 281; - location = Recast; - modificationTime = 281534653.90712; - state = 2; - }; - 6B98692510DF824E007D8D84 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BA1E88810C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp */; - name = "Sample_SoloMeshSimple.cpp: 269"; - rLen = 0; - rLoc = 8023; - rType = 0; - vrLen = 716; - vrLoc = 7679; - }; - 6B98692610DF824E007D8D84 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BB93C7C10CFE1D500F74F2B /* RecastDebugDraw.cpp */; - name = "RecastDebugDraw.cpp: 19"; - rLen = 0; - rLoc = 919; - rType = 0; - vrLen = 1269; - vrLoc = 0; - }; - 6B98692710DF824E007D8D84 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BA1E88810C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp */; - name = "Sample_SoloMeshSimple.cpp: 269"; - rLen = 0; - rLoc = 8023; - rType = 0; - vrLen = 716; - vrLoc = 7679; - }; - 6B98692810DF824E007D8D84 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BB93C7C10CFE1D500F74F2B /* RecastDebugDraw.cpp */; - name = "RecastDebugDraw.cpp: 15"; - rLen = 0; - rLoc = 836; - rType = 0; - vrLen = 965; - vrLoc = 5002; - }; 6B98693110DF8929007D8D84 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 6BB93C7C10CFE1D500F74F2B /* RecastDebugDraw.cpp */; @@ -826,16 +746,6 @@ vrLen = 965; vrLoc = 5002; }; - 6B98693210DF8929007D8D84 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */; - name = "DetourNavMesh.h: 237"; - rLen = 0; - rLoc = 10286; - rType = 0; - vrLen = 1611; - vrLoc = 9854; - }; 6B98693310DF8929007D8D84 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 6B137C7E0F7FCBFE00459200 /* Recast.h */; @@ -846,36 +756,6 @@ vrLen = 598; vrLoc = 10817; }; - 6B98693410DF8929007D8D84 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; - name = "DetourNavMesh.cpp: 1387"; - rLen = 0; - rLoc = 35712; - rType = 0; - vrLen = 693; - vrLoc = 35373; - }; - 6B98693510DF8929007D8D84 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BA1E88710C7BFC9008007F6 /* Sample_SoloMesh.cpp */; - name = "Sample_SoloMesh.cpp: 358"; - rLen = 286; - rLoc = 8889; - rType = 0; - vrLen = 1217; - vrLoc = 8666; - }; - 6B98693610DF8929007D8D84 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; - name = "Sample_TileMesh.cpp: 185"; - rLen = 379; - rLoc = 4518; - rType = 0; - vrLen = 939; - vrLoc = 4236; - }; 6B98693710DF8929007D8D84 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 6BB93C7C10CFE1D500F74F2B /* RecastDebugDraw.cpp */; @@ -906,136 +786,35 @@ vrLen = 693; vrLoc = 35373; }; - 6B98693A10DF8929007D8D84 /* PBXTextBookmark */ = { + 6B9869F710DFFA98007D8D84 /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; - name = "Sample_TileMesh.cpp: 191"; + fRef = 6B1185F61006896B0018F96F /* DetourNode.h */; + name = "DetourNode.h: 84"; rLen = 0; - rLoc = 4807; + rLoc = 2089; rType = 0; - vrLen = 932; - vrLoc = 4243; + vrLen = 465; + vrLoc = 1775; }; - 6B98693B10DF8929007D8D84 /* PBXTextBookmark */ = { + 6B9869F810DFFA98007D8D84 /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 6BA1E88710C7BFC9008007F6 /* Sample_SoloMesh.cpp */; - name = "Sample_SoloMesh.cpp: 226"; + fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; + name = "DetourNavMesh.cpp: 1604"; rLen = 0; - rLoc = 5520; + rLoc = 41325; rType = 0; - vrLen = 730; - vrLoc = 4798; + vrLen = 922; + vrLoc = 40927; }; - 6B98693C10DF8929007D8D84 /* PBXTextBookmark */ = { + 6B9869FC10DFFA98007D8D84 /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; - name = "Sample_TileMesh.cpp: 185"; - rLen = 379; - rLoc = 4518; - rType = 0; - vrLen = 932; - vrLoc = 4240; - }; - 6B98693D10DF8929007D8D84 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BA1E88710C7BFC9008007F6 /* Sample_SoloMesh.cpp */; - name = "Sample_SoloMesh.cpp: 358"; - rLen = 286; - rLoc = 8889; - rType = 0; - vrLen = 1217; - vrLoc = 8666; - }; - 6B98693E10DF8929007D8D84 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; - name = "Sample_TileMesh.cpp: 478"; + fRef = 6B1185F61006896B0018F96F /* DetourNode.h */; + name = "DetourNode.h: 84"; rLen = 0; - rLoc = 12353; + rLoc = 2089; rType = 0; - vrLen = 1034; - vrLoc = 11369; - }; - 6B98694710DF8982007D8D84 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; - name = "Sample_TileMesh.cpp: 476"; - rLen = 0; - rLoc = 12353; - rType = 0; - vrLen = 1138; - vrLoc = 11481; - }; - 6B98694810DF8982007D8D84 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BA1E88710C7BFC9008007F6 /* Sample_SoloMesh.cpp */; - name = "Sample_SoloMesh.cpp: 358"; - rLen = 286; - rLoc = 8889; - rType = 0; - vrLen = 1213; - vrLoc = 8666; - }; - 6B98694910DF8982007D8D84 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; - name = "Sample_TileMesh.cpp: 476"; - rLen = 0; - rLoc = 12353; - rType = 0; - vrLen = 1138; - vrLoc = 11481; - }; - 6B98694A10DF8982007D8D84 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BA1E88710C7BFC9008007F6 /* Sample_SoloMesh.cpp */; - name = "Sample_SoloMesh.cpp: 360"; - rLen = 0; - rLoc = 9006; - rType = 0; - vrLen = 1169; - vrLoc = 8666; - }; - 6B9D0891102715D5009B1A6C /* RecastTexture.cpp */ = { - isa = PBXFileReference; - fileEncoding = 4; - lastKnownFileType = sourcecode.cpp.cpp; - name = RecastTexture.cpp; - path = /Users/memon/Code/recastnavigation/Recast/Source/RecastTexture.cpp; - sourceTree = ""; - }; - 6B9D0932102722F0009B1A6C /* RecastTexture.cpp:301 */ = { - isa = PBXFileBreakpoint; - actions = ( - ); - breakpointStyle = 0; - continueAfterActions = 0; - countType = 0; - delayBeforeContinue = 0; - fileReference = 6B9D0891102715D5009B1A6C /* RecastTexture.cpp */; - functionName = "floodfillTexture(int x, int y, int i, const int dstw, const int dsth, unsigned short* dst0, unsigned short* dst1, const rcTextureRegion& treg, const rcCompactHeightfield& chf, rcIntArray& stack)"; - hitCount = 0; - ignoreCount = 0; - lineNumber = 301; - modificationTime = 281534654.306096; - state = 0; - }; - 6B9D09921028542A009B1A6C /* RecastDebugDraw.cpp:29 */ = { - isa = PBXFileBreakpoint; - actions = ( - ); - breakpointStyle = 0; - continueAfterActions = 0; - countType = 0; - delayBeforeContinue = 0; - fileReference = 6B137C840F7FCC1100459200 /* RecastDebugDraw.cpp */; - functionName = "rcDebugDrawTextureSet(const rcTextureSet& tset)"; - hitCount = 0; - ignoreCount = 0; - lineNumber = 29; - location = Recast; - modificationTime = 281534653.906959; - state = 2; + vrLen = 465; + vrLoc = 1775; }; 6BA1E63A10C1DB5B008007F6 /* PBXTextBookmark */ = { isa = PBXTextBookmark; @@ -1057,63 +836,32 @@ vrLen = 1382; vrLoc = 27642; }; - 6BA1E86A10C7BC9F008007F6 /* Sample_StatMeshSimple.cpp:516 */ = { - isa = PBXFileBreakpoint; - actions = ( - ); - breakpointStyle = 0; - continueAfterActions = 0; - countType = 0; - delayBeforeContinue = 0; - fileReference = 6B25B6160FFA62BE004F1BC4 /* Sample_StatMeshSimple.cpp */; - functionName = "Sample_StatMeshSimple::handleBuild()"; - hitCount = 0; - ignoreCount = 0; - lineNumber = 516; - location = Recast; - modificationTime = 281534653.90798; - state = 1; - }; - 6BA1E88710C7BFC9008007F6 /* Sample_SoloMesh.cpp */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1174, 6976}}"; - sepNavSelRange = "{9006, 0}"; - sepNavVisRange = "{8666, 1169}"; - }; - }; 6BA1E88810C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {915, 9840}}"; - sepNavSelRange = "{8023, 0}"; - sepNavVisRange = "{7679, 716}"; + sepNavIntBoundsRect = "{{0, 0}, {915, 9728}}"; + sepNavSelRange = "{386, 31}"; + sepNavVisRange = "{0, 625}"; }; }; 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {915, 15568}}"; - sepNavSelRange = "{5916, 0}"; - sepNavVisRange = "{5719, 573}"; - }; - }; - 6BA1E88D10C7BFD3008007F6 /* Sample_SoloMesh.h */ = { - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {915, 1248}}"; - sepNavSelRange = "{499, 9}"; - sepNavVisRange = "{250, 680}"; + sepNavIntBoundsRect = "{{0, 0}, {915, 16112}}"; + sepNavSelRange = "{142, 0}"; + sepNavVisRange = "{217, 616}"; }; }; 6BA1E88E10C7BFD3008007F6 /* Sample_SoloMeshSimple.h */ = { uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {915, 1120}}"; - sepNavSelRange = "{129, 0}"; - sepNavVisRange = "{0, 539}"; + sepNavSelRange = "{91, 0}"; + sepNavVisRange = "{0, 631}"; }; }; 6BA1E88F10C7BFD3008007F6 /* Sample_SoloMeshTiled.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {915, 1504}}"; - sepNavSelRange = "{198, 0}"; - sepNavVisRange = "{0, 711}"; + sepNavIntBoundsRect = "{{0, 0}, {915, 1600}}"; + sepNavSelRange = "{189, 0}"; + sepNavVisRange = "{0, 737}"; }; }; 6BA1E89310C7C227008007F6 /* PBXTextBookmark */ = { @@ -1126,16 +874,6 @@ vrLen = 598; vrLoc = 5791; }; - 6BA1E8B010C7C5D1008007F6 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B624169103434880002E346 /* RecastMeshDetail.cpp */; - name = "RecastMeshDetail.cpp: 193"; - rLen = 0; - rLoc = 4933; - rType = 0; - vrLen = 975; - vrLoc = 4089; - }; 6BA1E8DB10C7CB62008007F6 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 6B1185FD10068B150018F96F /* DetourCommon.cpp */; @@ -1156,36 +894,6 @@ vrLen = 564; vrLoc = 2323; }; - 6BA1E8F210C7D4D9008007F6 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BA1E88D10C7BFD3008007F6 /* Sample_SoloMesh.h */; - name = "Sample_SoloMesh.h: 30"; - rLen = 9; - rLoc = 499; - rType = 0; - vrLen = 680; - vrLoc = 250; - }; - 6BB4964510C8ECF300BC0805 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC510FFB8946005BE9CC /* Sample_TileMesh.h */; - name = "Sample_TileMesh.h: 45"; - rLen = 41; - rLoc = 1441; - rType = 0; - vrLen = 548; - vrLoc = 1072; - }; - 6BB4965E10C8F2AE00BC0805 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */; - name = "main.cpp: 21"; - rLen = 0; - rLoc = 390; - rType = 0; - vrLen = 440; - vrLoc = 0; - }; 6BB4965F10C8F2AE00BC0805 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 6B555DF6100B273500247EA3 /* stb_truetype.h */; @@ -1206,36 +914,6 @@ vrLen = 420; vrLoc = 2658; }; - 6BB4966510C8F2AE00BC0805 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BA1E88F10C7BFD3008007F6 /* Sample_SoloMeshTiled.h */; - name = "Sample_SoloMeshTiled.h: 8"; - rLen = 0; - rLoc = 198; - rType = 0; - vrLen = 711; - vrLoc = 0; - }; - 6BB4966810C8F2AE00BC0805 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BA1E88E10C7BFD3008007F6 /* Sample_SoloMeshSimple.h */; - name = "Sample_SoloMeshSimple.h: 5"; - rLen = 0; - rLoc = 129; - rType = 0; - vrLen = 539; - vrLoc = 0; - }; - 6BB4966A10C8F2AE00BC0805 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; - name = "DetourNavMesh.cpp: 747"; - rLen = 0; - rLoc = 19570; - rType = 0; - vrLen = 1282; - vrLoc = 18975; - }; 6BB4967C10C8F8F500BC0805 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 6B8DE88C10B69E4C00DF20FB /* DetourNavMeshBuilder.h */; @@ -1248,16 +926,16 @@ }; 6BB788160FC0472B003C24DB /* ChunkyTriMesh.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {915, 3680}}"; - sepNavSelRange = "{1045, 0}"; - sepNavVisRange = "{4414, 771}"; + sepNavIntBoundsRect = "{{0, 0}, {915, 3920}}"; + sepNavSelRange = "{3997, 0}"; + sepNavVisRange = "{3627, 705}"; }; }; 6BB788180FC04753003C24DB /* ChunkyTriMesh.h */ = { uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {915, 800}}"; - sepNavSelRange = "{919, 0}"; - sepNavVisRange = "{0, 1206}"; + sepNavSelRange = "{1242, 0}"; + sepNavVisRange = "{919, 781}"; }; }; 6BB93C7710CFE1D500F74F2B /* DebugDraw.h */ = { @@ -1302,66 +980,6 @@ sepNavVisRange = "{5002, 965}"; }; }; - 6BB93C8210CFE3B100F74F2B /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */; - name = "DetourNavMesh.h: 28"; - rLen = 0; - rLoc = 1178; - rType = 0; - vrLen = 1064; - vrLoc = 915; - }; - 6BB93CCF10CFEA7A00F74F2B /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B25B6100FFA62AD004F1BC4 /* Sample.h */; - name = "Sample.h: 8"; - rLen = 0; - rLoc = 161; - rType = 0; - vrLen = 508; - vrLoc = 0; - }; - 6BB93CD010CFEA7A00F74F2B /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B25B6140FFA62BE004F1BC4 /* Sample.cpp */; - name = "Sample.cpp: 77"; - rLen = 0; - rLoc = 1183; - rType = 0; - vrLen = 514; - vrLoc = 1148; - }; - 6BB93CD210CFEA7A00F74F2B /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */; - name = "Sample_SoloMeshTiled.cpp: 190"; - rLen = 0; - rLoc = 5916; - rType = 0; - vrLen = 573; - vrLoc = 5719; - }; - 6BB93CD710CFEA7A00F74F2B /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BA1E88710C7BFC9008007F6 /* Sample_SoloMesh.cpp */; - name = "Sample_SoloMesh.cpp: 388"; - rLen = 0; - rLoc = 10148; - rType = 0; - vrLen = 728; - vrLoc = 9343; - }; - 6BB93CD810CFEA7A00F74F2B /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; - name = "Sample_TileMesh.cpp: 497"; - rLen = 0; - rLoc = 13161; - rType = 0; - vrLen = 672; - vrLoc = 12811; - }; 6BB93CE710CFEB5D00F74F2B /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 6BB93C7710CFE1D500F74F2B /* DebugDraw.h */; @@ -1417,26 +1035,6 @@ vrLen = 2086; vrLoc = 837; }; - 6BB93D0810CFFC1300F74F2B /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6B137C7E0F7FCBFE00459200 /* Recast.h */; - name = "Recast.h: 328"; - rLen = 0; - rLoc = 11131; - rType = 0; - vrLen = 552; - vrLoc = 10860; - }; - 6BB93D0910CFFC1300F74F2B /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BB93C7C10CFE1D500F74F2B /* RecastDebugDraw.cpp */; - name = "RecastDebugDraw.cpp: 19"; - rLen = 0; - rLoc = 919; - rType = 0; - vrLen = 1139; - vrLoc = 0; - }; 6BB93D0A10CFFC1300F74F2B /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 6BB93C7A10CFE1D500F74F2B /* DebugDraw.cpp */; @@ -1467,25 +1065,2046 @@ vrLen = 637; vrLoc = 1343; }; - 6BB93D1C10CFFD7600F74F2B /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 6BA1E88810C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp */; - name = "Sample_SoloMeshSimple.cpp: 567"; - rLen = 0; - rLoc = 18793; - rType = 0; - vrLen = 1562; - vrLoc = 17248; + 6BBB87CE10EA8EF2008FEA1F /* NavMeshTesterTool.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {915, 1008}}"; + sepNavSelRange = "{362, 0}"; + sepNavVisRange = "{329, 590}"; + }; }; - 6BB93D1E10D001BA00F74F2B /* PBXTextBookmark */ = { + 6BBB87CF10EA8EFA008FEA1F /* NavMeshTesterTool.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1174, 7280}}"; + sepNavSelRange = "{1511, 0}"; + sepNavVisRange = "{1221, 650}"; + }; + }; + 6BBB87D710EA97CC008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */; + name = "DetourNavMesh.h: 222"; + rLen = 0; + rLoc = 9491; + rType = 0; + vrLen = 1550; + vrLoc = 9294; + }; + 6BBB87D910EA97CC008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB788160FC0472B003C24DB /* ChunkyTriMesh.cpp */; + name = "ChunkyTriMesh.cpp: 155"; + rLen = 0; + rLoc = 3997; + rType = 0; + vrLen = 705; + vrLoc = 3627; + }; + 6BBB87DA10EA97CC008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB788180FC04753003C24DB /* ChunkyTriMesh.h */; + name = "ChunkyTriMesh.h: 36"; + rLen = 0; + rLoc = 1242; + rType = 0; + vrLen = 781; + vrLoc = 919; + }; + 6BBB87E310EA97CC008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */; + name = "DetourNavMesh.h: 222"; + rLen = 0; + rLoc = 9491; + rType = 0; + vrLen = 1550; + vrLoc = 9294; + }; + 6BBB87E410EA97CC008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */; + name = "main.cpp: 20"; + rLen = 0; + rLoc = 381; + rType = 0; + vrLen = 548; + vrLoc = 0; + }; + 6BBB87E510EA97CC008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB788160FC0472B003C24DB /* ChunkyTriMesh.cpp */; + name = "ChunkyTriMesh.cpp: 27"; + rLen = 0; + rLoc = 1045; + rType = 0; + vrLen = 697; + vrLoc = 4414; + }; + 6BBB87E610EA97CC008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB788180FC04753003C24DB /* ChunkyTriMesh.h */; + name = "ChunkyTriMesh.h: 40"; + rLen = 0; + rLoc = 1318; + rType = 0; + vrLen = 757; + vrLoc = 943; + }; + 6BBB87E710EA97CC008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB788160FC0472B003C24DB /* ChunkyTriMesh.cpp */; + name = "ChunkyTriMesh.cpp: 155"; + rLen = 0; + rLoc = 3997; + rType = 0; + vrLen = 705; + vrLoc = 3627; + }; + 6BBB87E810EA97CC008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB788180FC04753003C24DB /* ChunkyTriMesh.h */; + name = "ChunkyTriMesh.h: 36"; + rLen = 0; + rLoc = 1242; + rType = 0; + vrLen = 781; + vrLoc = 919; + }; + 6BBB87E910EA97CC008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6100FFA62AD004F1BC4 /* Sample.h */; + name = "Sample.h: 13"; + rLen = 0; + rLoc = 352; + rType = 0; + vrLen = 783; + vrLoc = 664; + }; + 6BBB87EB10EA97CC008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BBB87CE10EA8EF2008FEA1F /* NavMeshTesterTool.h */; + name = "NavMeshTesterTool.h: 1"; + rLen = 0; + rLoc = 1348; + rType = 0; + vrLen = 0; + vrLoc = 0; + }; + 6BBB87EC10EA97CC008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BBB87CE10EA8EF2008FEA1F /* NavMeshTesterTool.h */; + name = "NavMeshTesterTool.h: 9"; + rLen = 0; + rLoc = 1315; + rType = 0; + vrLen = 169; + vrLoc = 0; + }; + 6BBB87EF10EA97CC008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BBB87CE10EA8EF2008FEA1F /* NavMeshTesterTool.h */; + name = "NavMeshTesterTool.h: 41"; + rLen = 45; + rLoc = 873; + rType = 0; + vrLen = 629; + vrLoc = 405; + }; + 6BBB87F010EA97CC008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BBB87CE10EA8EF2008FEA1F /* NavMeshTesterTool.h */; + name = "NavMeshTesterTool.h: 45"; + rLen = 142; + rLoc = 971; + rType = 0; + vrLen = 662; + vrLoc = 374; + }; + 6BBB87F110EA97CC008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BBB87CE10EA8EF2008FEA1F /* NavMeshTesterTool.h */; + name = "NavMeshTesterTool.h: 6"; + rLen = 690; + rLoc = 172; + rType = 0; + vrLen = 700; + vrLoc = 330; + }; + 6BBB87F410EA97CC008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BBB87CE10EA8EF2008FEA1F /* NavMeshTesterTool.h */; + name = "NavMeshTesterTool.h: 45"; + rLen = 0; + rLoc = 1113; + rType = 0; + vrLen = 701; + vrLoc = 330; + }; + 6BBB87F510EA97CC008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BBB87CE10EA8EF2008FEA1F /* NavMeshTesterTool.h */; + name = "NavMeshTesterTool.h: 46"; + rLen = 0; + rLoc = 1072; + rType = 0; + vrLen = 654; + vrLoc = 330; + }; + 6BBB87F610EA97CC008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BBB87CE10EA8EF2008FEA1F /* NavMeshTesterTool.h */; + name = "NavMeshTesterTool.h: 47"; + rLen = 0; + rLoc = 1113; + rType = 0; + vrLen = 685; + vrLoc = 330; + }; + 6BBB87F710EA97CC008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BBB87CE10EA8EF2008FEA1F /* NavMeshTesterTool.h */; + name = "NavMeshTesterTool.h: 48"; + rLen = 0; + rLoc = 1113; + rType = 0; + vrLen = 635; + vrLoc = 330; + }; + 6BBB87F810EA97CC008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BBB87CE10EA8EF2008FEA1F /* NavMeshTesterTool.h */; + name = "NavMeshTesterTool.h: 49"; + rLen = 0; + rLoc = 1113; + rType = 0; + vrLen = 626; + vrLoc = 330; + }; + 6BBB87FA10EA97CC008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BBB87CE10EA8EF2008FEA1F /* NavMeshTesterTool.h */; + name = "NavMeshTesterTool.h: 41"; + rLen = 17; + rLoc = 874; + rType = 0; + vrLen = 628; + vrLoc = 328; + }; + 6BBB87FB10EA97CC008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BBB87CE10EA8EF2008FEA1F /* NavMeshTesterTool.h */; + name = "NavMeshTesterTool.h: 51"; + rLen = 0; + rLoc = 1157; + rType = 0; + vrLen = 597; + vrLoc = 437; + }; + 6BBB87FC10EA97CC008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BBB87CE10EA8EF2008FEA1F /* NavMeshTesterTool.h */; + name = "NavMeshTesterTool.h: 52"; + rLen = 0; + rLoc = 1314; + rType = 0; + vrLen = 647; + vrLoc = 437; + }; + 6BBB87FD10EA97CC008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BBB87CE10EA8EF2008FEA1F /* NavMeshTesterTool.h */; + name = "NavMeshTesterTool.h: 51"; + rLen = 0; + rLoc = 1113; + rType = 0; + vrLen = 707; + vrLoc = 405; + }; + 6BBB87FE10EA97CC008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BBB87CE10EA8EF2008FEA1F /* NavMeshTesterTool.h */; + name = "NavMeshTesterTool.h: 6"; + rLen = 0; + rLoc = 216; + rType = 0; + vrLen = 592; + vrLoc = 0; + }; + 6BBB87FF10EA97CC008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BBB87CE10EA8EF2008FEA1F /* NavMeshTesterTool.h */; + name = "NavMeshTesterTool.h: 5"; + rLen = 0; + rLoc = 150; + rType = 0; + vrLen = 592; + vrLoc = 0; + }; + 6BBB880010EA97CC008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BBB87CE10EA8EF2008FEA1F /* NavMeshTesterTool.h */; + name = "NavMeshTesterTool.h: 5"; + rLen = 0; + rLoc = 105; + rType = 0; + vrLen = 598; + vrLoc = 0; + }; + 6BBB880110EA97CC008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BBB87CE10EA8EF2008FEA1F /* NavMeshTesterTool.h */; + name = "NavMeshTesterTool.h: 47"; + rLen = 0; + rLoc = 971; + rType = 0; + vrLen = 679; + vrLoc = 538; + }; + 6BBB880210EA97CC008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BBB87CE10EA8EF2008FEA1F /* NavMeshTesterTool.h */; + name = "NavMeshTesterTool.h: 47"; + rLen = 0; + rLoc = 971; + rType = 0; + vrLen = 679; + vrLoc = 538; + }; + 6BBB880310EA97CC008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BBB87CE10EA8EF2008FEA1F /* NavMeshTesterTool.h */; + name = "NavMeshTesterTool.h: 10"; + rLen = 13; + rLoc = 224; + rType = 0; + vrLen = 582; + vrLoc = 0; + }; + 6BBB880510EA97CC008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BBB87CE10EA8EF2008FEA1F /* NavMeshTesterTool.h */; + name = "NavMeshTesterTool.h: 55"; + rLen = 0; + rLoc = 1113; + rType = 0; + vrLen = 700; + vrLoc = 560; + }; + 6BBB880610EA97CC008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BBB87CE10EA8EF2008FEA1F /* NavMeshTesterTool.h */; + name = "NavMeshTesterTool.h: 11"; + rLen = 0; + rLoc = 239; + rType = 0; + vrLen = 607; + vrLoc = 0; + }; + 6BBB880710EA97CC008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BBB87CE10EA8EF2008FEA1F /* NavMeshTesterTool.h */; + name = "NavMeshTesterTool.h: 6"; + rLen = 17; + rLoc = 111; + rType = 0; + vrLen = 582; + vrLoc = 0; + }; + 6BBB880810EA97CC008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC510FFB8946005BE9CC /* Sample_TileMesh.h */; + name = "Sample_TileMesh.h: 74"; + rLen = 0; + rLoc = 1668; + rType = 0; + vrLen = 557; + vrLoc = 1701; + }; + 6BBB880910EA97CC008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BBB87CE10EA8EF2008FEA1F /* NavMeshTesterTool.h */; + name = "NavMeshTesterTool.h: 46"; + rLen = 0; + rLoc = 917; + rType = 0; + vrLen = 700; + vrLoc = 560; + }; + 6BBB880A10EA97CC008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC510FFB8946005BE9CC /* Sample_TileMesh.h */; + name = "Sample_TileMesh.h: 63"; + rLen = 0; + rLoc = 1667; + rType = 0; + vrLen = 566; + vrLoc = 1556; + }; + 6BBB880B10EA97CC008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC510FFB8946005BE9CC /* Sample_TileMesh.h */; + name = "Sample_TileMesh.h: 65"; + rLen = 0; + rLoc = 1668; + rType = 0; + vrLen = 537; + vrLoc = 1556; + }; + 6BBB880C10EA97CC008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BBB87CE10EA8EF2008FEA1F /* NavMeshTesterTool.h */; + name = "NavMeshTesterTool.h: 49"; + rLen = 10; + rLoc = 1044; + rType = 0; + vrLen = 700; + vrLoc = 560; + }; + 6BBB880D10EA97CC008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BBB87CE10EA8EF2008FEA1F /* NavMeshTesterTool.h */; + name = "NavMeshTesterTool.h: 49"; + rLen = 0; + rLoc = 1055; + rType = 0; + vrLen = 713; + vrLoc = 560; + }; + 6BBB880E10EA97CC008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BBB87CE10EA8EF2008FEA1F /* NavMeshTesterTool.h */; + name = "NavMeshTesterTool.h: 14"; + rLen = 0; + rLoc = 259; + rType = 0; + vrLen = 626; + vrLoc = 111; + }; + 6BBB880F10EA97CC008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BBB87CE10EA8EF2008FEA1F /* NavMeshTesterTool.h */; + name = "NavMeshTesterTool.h: 14"; + rLen = 0; + rLoc = 259; + rType = 0; + vrLen = 606; + vrLoc = 111; + }; + 6BBB881010EA97CC008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BBB87CE10EA8EF2008FEA1F /* NavMeshTesterTool.h */; + name = "NavMeshTesterTool.h: 6"; + rLen = 0; + rLoc = 105; + rType = 0; + vrLen = 693; + vrLoc = 0; + }; + 6BBB881110EA97CC008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC510FFB8946005BE9CC /* Sample_TileMesh.h */; + name = "Sample_TileMesh.h: 63"; + rLen = 0; + rLoc = 1667; + rType = 0; + vrLen = 524; + vrLoc = 1556; + }; + 6BBB881210EA97CC008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; + name = "Sample_TileMesh.cpp: 68"; + rLen = 0; + rLoc = 2076; + rType = 0; + vrLen = 717; + vrLoc = 1467; + }; + 6BBB881310EA97CC008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BBB87CE10EA8EF2008FEA1F /* NavMeshTesterTool.h */; + name = "NavMeshTesterTool.h: 8"; + rLen = 0; + rLoc = 105; + rType = 0; + vrLen = 718; + vrLoc = 0; + }; + 6BBB881410EA97CC008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC510FFB8946005BE9CC /* Sample_TileMesh.h */; + name = "Sample_TileMesh.h: 64"; + rLen = 0; + rLoc = 1667; + rType = 0; + vrLen = 524; + vrLoc = 1556; + }; + 6BBB881510EA97CC008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; + name = "Sample_TileMesh.cpp: 68"; + rLen = 0; + rLoc = 2076; + rType = 0; + vrLen = 717; + vrLoc = 1467; + }; + 6BBB881610EA97CC008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC510FFB8946005BE9CC /* Sample_TileMesh.h */; + name = "Sample_TileMesh.h: 26"; + rLen = 0; + rLoc = 1098; + rType = 0; + vrLen = 1052; + vrLoc = 244; + }; + 6BBB881710EA97CC008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; + name = "Sample_TileMesh.cpp: 69"; + rLen = 0; + rLoc = 1986; + rType = 0; + vrLen = 411; + vrLoc = 1766; + }; + 6BBB881810EA97CC008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC510FFB8946005BE9CC /* Sample_TileMesh.h */; + name = "Sample_TileMesh.h: 29"; + rLen = 15; + rLoc = 1137; + rType = 0; + vrLen = 1052; + vrLoc = 244; + }; + 6BBB882710EA99CA008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; + name = "Sample_TileMesh.cpp: 303"; + rLen = 0; + rLoc = 5340; + rType = 0; + vrLen = 716; + vrLoc = 6712; + }; + 6BBB882810EA99CA008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC510FFB8946005BE9CC /* Sample_TileMesh.h */; + name = "Sample_TileMesh.h: 30"; + rLen = 0; + rLoc = 1170; + rType = 0; + vrLen = 1052; + vrLoc = 244; + }; + 6BBB882910EA99CA008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; + name = "Sample_TileMesh.cpp: 72"; + rLen = 1; + rLoc = 1900; + rType = 0; + vrLen = 740; + vrLoc = 2310; + }; + 6BBB882A10EA99CA008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC510FFB8946005BE9CC /* Sample_TileMesh.h */; + name = "Sample_TileMesh.h: 119"; + rLen = 0; + rLoc = 2394; + rType = 0; + vrLen = 179; + vrLoc = 2253; + }; + 6BBB883610EA9B3D008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; + name = "Sample_TileMesh.cpp: 308"; + rLen = 0; + rLoc = 5340; + rType = 0; + vrLen = 719; + vrLoc = 6799; + }; + 6BBB883710EA9B3D008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC510FFB8946005BE9CC /* Sample_TileMesh.h */; + name = "Sample_TileMesh.h: 119"; + rLen = 23; + rLoc = 2371; + rType = 0; + vrLen = 131; + vrLoc = 2301; + }; + 6BBB883C10EA9B6F008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B555DAE100B211D00247EA3 /* imguiRenderGL.h */; + name = "imguiRenderGL.h: 19"; + rLen = 0; + rLoc = 944; + rType = 0; + vrLen = 1101; + vrLoc = 0; + }; + 6BBB883E10EA9B6F008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; + name = "Sample_TileMesh.cpp: 424"; + rLen = 0; + rLoc = 7331; + rType = 0; + vrLen = 597; + vrLoc = 9490; + }; + 6BBB883F10EA9B6F008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B555DAE100B211D00247EA3 /* imguiRenderGL.h */; + name = "imguiRenderGL.h: 19"; + rLen = 0; + rLoc = 944; + rType = 0; + vrLen = 1101; + vrLoc = 0; + }; + 6BBB884E10EA9ECC008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C7A0F7FCBE400459200 /* imgui.h */; + name = "imgui.h: 50"; + rLen = 0; + rLoc = 1582; + rType = 0; + vrLen = 806; + vrLoc = 1480; + }; + 6BBB885510EA9ECC008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C7A0F7FCBE400459200 /* imgui.h */; + name = "imgui.h: 50"; + rLen = 0; + rLoc = 1582; + rType = 0; + vrLen = 806; + vrLoc = 1480; + }; + 6BBB885610EA9ECC008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6140FFA62BE004F1BC4 /* Sample.cpp */; + name = "Sample.cpp: 77"; + rLen = 0; + rLoc = 1324; + rType = 0; + vrLen = 671; + vrLoc = 1116; + }; + 6BBB885710EA9ECC008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; + name = "Sample_TileMesh.cpp: 306"; + rLen = 0; + rLoc = 5143; + rType = 0; + vrLen = 701; + vrLoc = 7092; + }; + 6BBB885810EA9ECC008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC510FFB8946005BE9CC /* Sample_TileMesh.h */; + name = "Sample_TileMesh.h: 119"; + rLen = 23; + rLoc = 2371; + rType = 0; + vrLen = 151; + vrLoc = 2281; + }; + 6BBB885910EA9ECC008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; + name = "Sample_TileMesh.cpp: 64"; + rLen = 0; + rLoc = 1766; + rType = 0; + vrLen = 550; + vrLoc = 1636; + }; + 6BBB885A10EA9ECC008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BBB87CE10EA8EF2008FEA1F /* NavMeshTesterTool.h */; + name = "NavMeshTesterTool.h: 15"; + rLen = 0; + rLoc = 105; + rType = 0; + vrLen = 686; + vrLoc = 0; + }; + 6BBB885B10EA9ECC008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; + name = "Sample_TileMesh.cpp: 84"; + rLen = 0; + rLoc = 2072; + rType = 0; + vrLen = 550; + vrLoc = 1911; + }; + 6BBB885C10EA9ECC008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BBB87CE10EA8EF2008FEA1F /* NavMeshTesterTool.h */; + name = "NavMeshTesterTool.h: 9"; + rLen = 0; + rLoc = 105; + rType = 0; + vrLen = 686; + vrLoc = 0; + }; + 6BBB885D10EA9ECC008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; + name = "Sample_TileMesh.cpp: 64"; + rLen = 10; + rLoc = 1797; + rType = 0; + vrLen = 475; + vrLoc = 1686; + }; + 6BBB885E10EA9ECC008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BBB87CE10EA8EF2008FEA1F /* NavMeshTesterTool.h */; + name = "NavMeshTesterTool.h: 17"; + rLen = 0; + rLoc = 105; + rType = 0; + vrLen = 699; + vrLoc = 0; + }; + 6BBB885F10EA9ECC008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6100FFA62AD004F1BC4 /* Sample.h */; + name = "Sample.h: 58"; + rLen = 0; + rLoc = 1862; + rType = 0; + vrLen = 874; + vrLoc = 711; + }; + 6BBB886010EA9ECC008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BBB87CE10EA8EF2008FEA1F /* NavMeshTesterTool.h */; + name = "NavMeshTesterTool.h: 7"; + rLen = 0; + rLoc = 105; + rType = 0; + vrLen = 600; + vrLoc = 0; + }; + 6BBB886110EA9ECC008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6100FFA62AD004F1BC4 /* Sample.h */; + name = "Sample.h: 32"; + rLen = 0; + rLoc = 786; + rType = 0; + vrLen = 877; + vrLoc = 1181; + }; + 6BBB886210EA9ECC008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BBB87CF10EA8EFA008FEA1F /* NavMeshTesterTool.cpp */; + name = "NavMeshTesterTool.cpp: 70"; + rLen = 0; + rLoc = 1500; + rType = 0; + vrLen = 652; + vrLoc = 1191; + }; + 6BBB886310EA9ECC008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BBB87CE10EA8EF2008FEA1F /* NavMeshTesterTool.h */; + name = "NavMeshTesterTool.h: 45"; + rLen = 0; + rLoc = 863; + rType = 0; + vrLen = 731; + vrLoc = 549; + }; + 6BBB886410EA9ECC008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BBB87CF10EA8EFA008FEA1F /* NavMeshTesterTool.cpp */; + name = "NavMeshTesterTool.cpp: 50"; + rLen = 1; + rLoc = 1018; + rType = 0; + vrLen = 534; + vrLoc = 690; + }; + 6BBB886510EA9ECC008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6100FFA62AD004F1BC4 /* Sample.h */; + name = "Sample.h: 75"; + rLen = 0; + rLoc = 1824; + rType = 0; + vrLen = 833; + vrLoc = 1184; + }; + 6BBB886610EA9ECC008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC510FFB8946005BE9CC /* Sample_TileMesh.h */; + name = "Sample_TileMesh.h: 63"; + rLen = 0; + rLoc = 1667; + rType = 0; + vrLen = 496; + vrLoc = 1513; + }; + 6BBB886710EA9ECC008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; + name = "Sample_TileMesh.cpp: 306"; + rLen = 0; + rLoc = 5183; + rType = 0; + vrLen = 514; + vrLoc = 6951; + }; + 6BBB886810EA9ECC008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6100FFA62AD004F1BC4 /* Sample.h */; + name = "Sample.h: 75"; + rLen = 0; + rLoc = 1824; + rType = 0; + vrLen = 733; + vrLoc = 70; + }; + 6BBB886910EA9ECC008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; + name = "Sample_TileMesh.cpp: 312"; + rLen = 19; + rLoc = 5278; + rType = 0; + vrLen = 543; + vrLoc = 7057; + }; + 6BBB886A10EA9ECC008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6100FFA62AD004F1BC4 /* Sample.h */; + name = "Sample.h: 24"; + rLen = 25; + rLoc = 480; + rType = 0; + vrLen = 561; + vrLoc = 241; + }; + 6BBB886B10EA9ECC008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BBB87CE10EA8EF2008FEA1F /* NavMeshTesterTool.h */; + name = "NavMeshTesterTool.h: 51"; + rLen = 0; + rLoc = 967; + rType = 0; + vrLen = 612; + vrLoc = 702; + }; + 6BBB886C10EA9ECC008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6100FFA62AD004F1BC4 /* Sample.h */; + name = "Sample.h: 18"; + rLen = 19; + rLoc = 409; + rType = 0; + vrLen = 561; + vrLoc = 241; + }; + 6BBB886D10EA9ECC008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BBB87CE10EA8EF2008FEA1F /* NavMeshTesterTool.h */; + name = "NavMeshTesterTool.h: 51"; + rLen = 0; + rLoc = 919; + rType = 0; + vrLen = 643; + vrLoc = 722; + }; + 6BBB886E10EA9ECC008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; + name = "Sample_TileMesh.cpp: 310"; + rLen = 0; + rLoc = 5235; + rType = 0; + vrLen = 509; + vrLoc = 7055; + }; + 6BBB886F10EA9ECC008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BBB87CE10EA8EF2008FEA1F /* NavMeshTesterTool.h */; + name = "NavMeshTesterTool.h: 56"; + rLen = 0; + rLoc = 1140; + rType = 0; + vrLen = 634; + vrLoc = 722; + }; + 6BBB887010EA9ECC008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BBB87CF10EA8EFA008FEA1F /* NavMeshTesterTool.cpp */; + name = "NavMeshTesterTool.cpp: 279"; + rLen = 0; + rLoc = 6689; + rType = 0; + vrLen = 588; + vrLoc = 6339; + }; + 6BBB887110EA9ECC008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BBB87CE10EA8EF2008FEA1F /* NavMeshTesterTool.h */; + name = "NavMeshTesterTool.h: 45"; + rLen = 0; + rLoc = 863; + rType = 0; + vrLen = 623; + vrLoc = 704; + }; + 6BBB887210EA9ECC008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BBB87CF10EA8EFA008FEA1F /* NavMeshTesterTool.cpp */; + name = "NavMeshTesterTool.cpp: 29"; + rLen = 0; + rLoc = 651; + rType = 0; + vrLen = 505; + vrLoc = 469; + }; + 6BBB887310EA9ECC008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BBB87CE10EA8EF2008FEA1F /* NavMeshTesterTool.h */; + name = "NavMeshTesterTool.h: 45"; + rLen = 0; + rLoc = 863; + rType = 0; + vrLen = 625; + vrLoc = 702; + }; + 6BBB887410EA9ECC008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BBB87CF10EA8EFA008FEA1F /* NavMeshTesterTool.cpp */; + name = "NavMeshTesterTool.cpp: 30"; + rLen = 0; + rLoc = 674; + rType = 0; + vrLen = 505; + vrLoc = 469; + }; + 6BBB887E10EA9FE6008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BBB87CE10EA8EF2008FEA1F /* NavMeshTesterTool.h */; + name = "NavMeshTesterTool.h: 10"; + rLen = 0; + rLoc = 171; + rType = 0; + vrLen = 458; + vrLoc = 28; + }; + 6BBB887F10EA9FE6008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6140FFA62BE004F1BC4 /* Sample.cpp */; + name = "Sample.cpp: 93"; + rLen = 6; + rLoc = 1681; + rType = 0; + vrLen = 483; + vrLoc = 1116; + }; + 6BBB888010EA9FE6008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; + name = "Sample_TileMesh.cpp: 123"; + rLen = 0; + rLoc = 2841; + rType = 0; + vrLen = 693; + vrLoc = 2535; + }; + 6BBB888110EA9FE6008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6100FFA62AD004F1BC4 /* Sample.h */; + name = "Sample.h: 27"; + rLen = 0; + rLoc = 624; + rType = 0; + vrLen = 566; + vrLoc = 375; + }; + 6BBB888210EA9FE6008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BBB87CF10EA8EFA008FEA1F /* NavMeshTesterTool.cpp */; + name = "NavMeshTesterTool.cpp: 33"; + rLen = 0; + rLoc = 727; + rType = 0; + vrLen = 505; + vrLoc = 469; + }; + 6BBB888310EA9FE6008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BBB87CE10EA8EF2008FEA1F /* NavMeshTesterTool.h */; + name = "NavMeshTesterTool.h: 57"; + rLen = 0; + rLoc = 1164; + rType = 0; + vrLen = 646; + vrLoc = 723; + }; + 6BBB888410EA9FE6008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BBB87CF10EA8EFA008FEA1F /* NavMeshTesterTool.cpp */; + name = "NavMeshTesterTool.cpp: 414"; + rLen = 0; + rLoc = 10875; + rType = 0; + vrLen = 886; + vrLoc = 10858; + }; + 6BBB889610EAA050008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; + name = "Sample_TileMesh.cpp: 54"; + rLen = 0; + rLoc = 1530; + rType = 0; + vrLen = 520; + vrLoc = 1467; + }; + 6BBB889B10EAA094008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B624169103434880002E346 /* RecastMeshDetail.cpp */; + name = "RecastMeshDetail.cpp: 240"; + rLen = 0; + rLoc = 6116; + rType = 0; + vrLen = 586; + vrLoc = 6037; + }; + 6BBB889D10EAA094008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B624169103434880002E346 /* RecastMeshDetail.cpp */; + name = "RecastMeshDetail.cpp: 240"; + rLen = 0; + rLoc = 6116; + rType = 0; + vrLen = 586; + vrLoc = 6037; + }; + 6BBB88B410EAA316008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; + name = "Sample_TileMesh.cpp: 98"; + rLen = 0; + rLoc = 2425; + rType = 0; + vrLen = 504; + vrLoc = 2028; + }; + 6BBB88B510EAA316008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6100FFA62AD004F1BC4 /* Sample.h */; + name = "Sample.h: 58"; + rLen = 21; + rLoc = 1250; + rType = 0; + vrLen = 498; + vrLoc = 852; + }; + 6BBB88B610EAA316008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6140FFA62BE004F1BC4 /* Sample.cpp */; + name = "Sample.cpp: 70"; + rLen = 0; + rLoc = 1110; + rType = 0; + vrLen = 303; + vrLoc = 810; + }; + 6BBB88B710EAA316008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6100FFA62AD004F1BC4 /* Sample.h */; + name = "Sample.h: 69"; + rLen = 0; + rLoc = 1443; + rType = 0; + vrLen = 705; + vrLoc = 1145; + }; + 6BBB88B810EAA316008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6140FFA62BE004F1BC4 /* Sample.cpp */; + name = "Sample.cpp: 180"; + rLen = 0; + rLoc = 3821; + rType = 0; + vrLen = 512; + vrLoc = 3316; + }; + 6BBB88B910EAA316008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6100FFA62AD004F1BC4 /* Sample.h */; + name = "Sample.h: 69"; + rLen = 0; + rLoc = 1527; + rType = 0; + vrLen = 821; + vrLoc = 1181; + }; + 6BBB88BA10EAA316008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6140FFA62BE004F1BC4 /* Sample.cpp */; + name = "Sample.cpp: 176"; + rLen = 0; + rLoc = 3821; + rType = 0; + vrLen = 705; + vrLoc = 3054; + }; + 6BBB88BB10EAA316008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC510FFB8946005BE9CC /* Sample_TileMesh.h */; + name = "Sample_TileMesh.h: 109"; + rLen = 0; + rLoc = 2207; + rType = 0; + vrLen = 154; + vrLoc = 2278; + }; + 6BBB88BC10EAA316008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; + name = "Sample_TileMesh.cpp: 159"; + rLen = 0; + rLoc = 3649; + rType = 0; + vrLen = 500; + vrLoc = 3320; + }; + 6BBB88BD10EAA316008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */; + name = "main.cpp: 349"; + rLen = 0; + rLoc = 7429; + rType = 0; + vrLen = 802; + vrLoc = 7025; + }; + 6BBB88C110EAA316008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6140FFA62BE004F1BC4 /* Sample.cpp */; + name = "Sample.cpp: 165"; + rLen = 0; + rLoc = 3576; + rType = 0; + vrLen = 775; + vrLoc = 2983; + }; + 6BBB88C210EAA316008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6100FFA62AD004F1BC4 /* Sample.h */; + name = "Sample.h: 69"; + rLen = 0; + rLoc = 1527; + rType = 0; + vrLen = 821; + vrLoc = 1181; + }; + 6BBB88C310EAA316008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6140FFA62BE004F1BC4 /* Sample.cpp */; + name = "Sample.cpp: 165"; + rLen = 0; + rLoc = 3576; + rType = 0; + vrLen = 775; + vrLoc = 2983; + }; + 6BBB88C510EAA316008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6100FFA62AD004F1BC4 /* Sample.h */; + name = "Sample.h: 27"; + rLen = 0; + rLoc = 667; + rType = 0; + vrLen = 491; + vrLoc = 328; + }; + 6BBB88C610EAA316008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; + name = "Sample_TileMesh.cpp: 115"; + rLen = 0; + rLoc = 2739; + rType = 0; + vrLen = 714; + vrLoc = 2447; + }; + 6BBB88C710EAA316008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BBB87CE10EA8EF2008FEA1F /* NavMeshTesterTool.h */; + name = "NavMeshTesterTool.h: 55"; + rLen = 0; + rLoc = 1113; + rType = 0; + vrLen = 637; + vrLoc = 703; + }; + 6BBB88C810EAA316008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BBB87CF10EA8EFA008FEA1F /* NavMeshTesterTool.cpp */; + name = "NavMeshTesterTool.cpp: 86"; + rLen = 0; + rLoc = 1770; + rType = 0; + vrLen = 331; + vrLoc = 1752; + }; + 6BBB88CC10EAA37B008FEA1F /* NavMeshTesterTool.cpp:282 */ = { + isa = PBXFileBreakpoint; + actions = ( + ); + breakpointStyle = 0; + continueAfterActions = 0; + countType = 0; + delayBeforeContinue = 0; + fileReference = 6BBB87CF10EA8EFA008FEA1F /* NavMeshTesterTool.cpp */; + functionName = "NavMeshTesterTool::handleRender()"; + hitCount = 0; + ignoreCount = 0; + lineNumber = 282; + location = Recast; + modificationTime = 283812903.91562; + state = 1; + }; + 6BBB88D310EAA384008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BBB87CE10EA8EF2008FEA1F /* NavMeshTesterTool.h */; + name = "NavMeshTesterTool.h: 54"; + rLen = 0; + rLoc = 1083; + rType = 0; + vrLen = 637; + vrLoc = 703; + }; + 6BBB88D410EAA384008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; + name = "Sample_TileMesh.cpp: 98"; + rLen = 0; + rLoc = 2425; + rType = 0; + vrLen = 480; + vrLoc = 1994; + }; + 6BBB88D510EAA384008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */; + name = "main.cpp: 700"; + rLen = 0; + rLoc = 15879; + rType = 0; + vrLen = 631; + vrLoc = 15519; + }; + 6BBB88DA10EAA39C008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BBB87CF10EA8EFA008FEA1F /* NavMeshTesterTool.cpp */; + name = "NavMeshTesterTool.cpp: 282"; + rLen = 0; + rLoc = 6696; + rType = 0; + vrLen = 533; + vrLoc = 6406; + }; + 6BBB88E410EAA3D9008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; + name = "Sample_TileMesh.cpp: 573"; + rLen = 0; + rLoc = 8662; + rType = 0; + vrLen = 407; + vrLoc = 14553; + }; + 6BBB88E510EAA3D9008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BBB87CF10EA8EFA008FEA1F /* NavMeshTesterTool.cpp */; + name = "NavMeshTesterTool.cpp: 411"; + rLen = 0; + rLoc = 10816; + rType = 0; + vrLen = 736; + vrLoc = 6652; + }; + 6BBB88E610EAA3D9008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6100FFA62AD004F1BC4 /* Sample.h */; + name = "Sample.h: 76"; + rLen = 53; + rLoc = 1809; + rType = 0; + vrLen = 787; + vrLoc = 1249; + }; + 6BBB88E710EAA3D9008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; + name = "Sample_TileMesh.cpp: 632"; + rLen = 0; + rLoc = 10073; + rType = 0; + vrLen = 565; + vrLoc = 15643; + }; + 6BBB88E810EAA3D9008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC510FFB8946005BE9CC /* Sample_TileMesh.h */; + name = "Sample_TileMesh.h: 111"; + rLen = 0; + rLoc = 2237; + rType = 0; + vrLen = 174; + vrLoc = 2258; + }; + 6BBB88E910EAA3D9008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; + name = "Sample_TileMesh.cpp: 622"; + rLen = 0; + rLoc = 9864; + rType = 0; + vrLen = 723; + vrLoc = 2508; + }; + 6BBB88F010EAA44E008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */; + name = "main.cpp: 696"; + rLen = 0; + rLoc = 15816; + rType = 0; + vrLen = 546; + vrLoc = 15519; + }; + 6BBB88F410EAA4E6008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; + name = "Sample_TileMesh.cpp: 122"; + rLen = 0; + rLoc = 2885; + rType = 0; + vrLen = 657; + vrLoc = 2594; + }; + 6BBB88FC10EAA614008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BBB87CF10EA8EFA008FEA1F /* NavMeshTesterTool.cpp */; + name = "NavMeshTesterTool.cpp: 337"; + rLen = 0; + rLoc = 8286; + rType = 0; + vrLen = 750; + vrLoc = 7964; + }; + 6BBB88FD10EAA614008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; + name = "Sample_TileMesh.cpp: 289"; + rLen = 0; + rLoc = 5235; + rType = 0; + vrLen = 641; + vrLoc = 6480; + }; + 6BBB88FE10EAA614008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6140FFA62BE004F1BC4 /* Sample.cpp */; + name = "Sample.cpp: 165"; + rLen = 0; + rLoc = 3574; + rType = 0; + vrLen = 819; + vrLoc = 2939; + }; + 6BBB88FF10EAA614008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6100FFA62AD004F1BC4 /* Sample.h */; + name = "Sample.h: 76"; + rLen = 53; + rLoc = 1809; + rType = 0; + vrLen = 820; + vrLoc = 1216; + }; + 6BBB890010EAA614008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6140FFA62BE004F1BC4 /* Sample.cpp */; + name = "Sample.cpp: 84"; + rLen = 0; + rLoc = 1325; + rType = 0; + vrLen = 381; + vrLoc = 1046; + }; + 6BBB890110EAA614008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6100FFA62AD004F1BC4 /* Sample.h */; + name = "Sample.h: 76"; + rLen = 53; + rLoc = 1809; + rType = 0; + vrLen = 851; + vrLoc = 1185; + }; + 6BBB890210EAA614008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6140FFA62BE004F1BC4 /* Sample.cpp */; + name = "Sample.cpp: 76"; + rLen = 0; + rLoc = 1181; + rType = 0; + vrLen = 340; + vrLoc = 1046; + }; + 6BBB890310EAA614008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6100FFA62AD004F1BC4 /* Sample.h */; + name = "Sample.h: 63"; + rLen = 0; + rLoc = 1314; + rType = 0; + vrLen = 851; + vrLoc = 1185; + }; + 6BBB890A10EAA6C2008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6140FFA62BE004F1BC4 /* Sample.cpp */; + name = "Sample.cpp: 80"; + rLen = 0; + rLoc = 1222; + rType = 0; + vrLen = 336; + vrLoc = 1093; + }; + 6BBB890D10EAA6C2008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; + name = "Sample_TileMesh.cpp: 216"; + rLen = 0; + rLoc = 5053; + rType = 0; + vrLen = 809; + vrLoc = 4384; + }; + 6BBB890E10EAA6C2008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC510FFB8946005BE9CC /* Sample_TileMesh.h */; + name = "Sample_TileMesh.h: 35"; + rLen = 0; + rLoc = 1240; + rType = 0; + vrLen = 785; + vrLoc = 1452; + }; + 6BBB891B10EAA87B008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; + name = "Sample_TileMesh.cpp: 165"; + rLen = 0; + rLoc = 3836; + rType = 0; + vrLen = 875; + vrLoc = 3936; + }; + 6BBB891C10EAA87B008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC510FFB8946005BE9CC /* Sample_TileMesh.h */; + name = "Sample_TileMesh.h: 27"; + rLen = 31; + rLoc = 1099; + rType = 0; + vrLen = 615; + vrLoc = 919; + }; + 6BBB891D10EAA87B008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA1E88E10C7BFD3008007F6 /* Sample_SoloMeshSimple.h */; + name = "Sample_SoloMeshSimple.h: 8"; + rLen = 0; + rLoc = 165; + rType = 0; + vrLen = 627; + vrLoc = 0; + }; + 6BBB891F10EAA87B008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; + name = "Sample_TileMesh.cpp: 229"; + rLen = 34; + rLoc = 5303; + rType = 0; + vrLen = 749; + vrLoc = 4504; + }; + 6BBB892310EAA87B008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA1E88E10C7BFD3008007F6 /* Sample_SoloMeshSimple.h */; + name = "Sample_SoloMeshSimple.h: 5"; + rLen = 0; + rLoc = 119; + rType = 0; + vrLen = 630; + vrLoc = 0; + }; + 6BBB892510EAA87B008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA1E88E10C7BFD3008007F6 /* Sample_SoloMeshSimple.h */; + name = "Sample_SoloMeshSimple.h: 12"; + rLen = 9; + rLoc = 253; + rType = 0; + vrLen = 634; + vrLoc = 0; + }; + 6BBB892710EAA87B008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BBB87CF10EA8EFA008FEA1F /* NavMeshTesterTool.cpp */; + name = "NavMeshTesterTool.cpp: 59"; + rLen = 0; + rLoc = 1210; + rType = 0; + vrLen = 597; + vrLoc = 728; + }; + 6BBB892810EAA87B008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */; + name = "Sample_SoloMeshTiled.cpp: 186"; + rLen = 0; + rLoc = 5946; + rType = 0; + vrLen = 746; + vrLoc = 5683; + }; + 6BBB892910EAA87B008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BBB87CE10EA8EF2008FEA1F /* NavMeshTesterTool.h */; + name = "NavMeshTesterTool.h: 53"; + rLen = 23; + rLoc = 1007; + rType = 0; + vrLen = 749; + vrLoc = 585; + }; + 6BBB892A10EAA87B008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6140FFA62BE004F1BC4 /* Sample.cpp */; + name = "Sample.cpp: 80"; + rLen = 0; + rLoc = 1222; + rType = 0; + vrLen = 336; + vrLoc = 1093; + }; + 6BBB892B10EAA87B008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6100FFA62AD004F1BC4 /* Sample.h */; + name = "Sample.h: 26"; + rLen = 0; + rLoc = 577; + rType = 0; + vrLen = 735; + vrLoc = 111; + }; + 6BBB892F10EAA899008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; + name = "Sample_TileMesh.cpp: 377"; + rLen = 60; + rLoc = 8628; + rType = 0; + vrLen = 516; + vrLoc = 8290; + }; + 6BBB893A10EAAADC008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA1E88E10C7BFD3008007F6 /* Sample_SoloMeshSimple.h */; + name = "Sample_SoloMeshSimple.h: 5"; + rLen = 0; + rLoc = 121; + rType = 0; + vrLen = 671; + vrLoc = 175; + }; + 6BBB893C10EAAADC008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BBB87CE10EA8EF2008FEA1F /* NavMeshTesterTool.h */; + name = "NavMeshTesterTool.h: 59"; + rLen = 0; + rLoc = 1218; + rType = 0; + vrLen = 764; + vrLoc = 570; + }; + 6BBB893D10EAAADC008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BBB87CF10EA8EFA008FEA1F /* NavMeshTesterTool.cpp */; + name = "NavMeshTesterTool.cpp: 101"; + rLen = 0; + rLoc = 1960; + rType = 0; + vrLen = 463; + vrLoc = 1767; + }; + 6BBB893E10EAAADC008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BBB87CE10EA8EF2008FEA1F /* NavMeshTesterTool.h */; + name = "NavMeshTesterTool.h: 59"; + rLen = 0; + rLoc = 1219; + rType = 0; + vrLen = 749; + vrLoc = 570; + }; + 6BBB894510EAAB73008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6140FFA62BE004F1BC4 /* Sample.cpp */; + name = "Sample.cpp: 85"; + rLen = 0; + rLoc = 1284; + rType = 0; + vrLen = 819; + vrLoc = 3048; + }; + 6BBB894A10EAAB73008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BBB87CF10EA8EFA008FEA1F /* NavMeshTesterTool.cpp */; + name = "NavMeshTesterTool.cpp: 89"; + rLen = 0; + rLoc = 1850; + rType = 0; + vrLen = 463; + vrLoc = 1767; + }; + 6BBB894C10EAAB73008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */; + name = "Sample_SoloMeshTiled.cpp: 186"; + rLen = 0; + rLoc = 5946; + rType = 0; + vrLen = 746; + vrLoc = 5683; + }; + 6BBB894E10EAAB73008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA1E88E10C7BFD3008007F6 /* Sample_SoloMeshSimple.h */; + name = "Sample_SoloMeshSimple.h: 5"; + rLen = 0; + rLoc = 121; + rType = 0; + vrLen = 709; + vrLoc = 764; + }; + 6BBB895010EAAB73008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6140FFA62BE004F1BC4 /* Sample.cpp */; + name = "Sample.cpp: 85"; + rLen = 0; + rLoc = 1284; + rType = 0; + vrLen = 819; + vrLoc = 3048; + }; + 6BBB895210EAAB73008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA1E88E10C7BFD3008007F6 /* Sample_SoloMeshSimple.h */; + name = "Sample_SoloMeshSimple.h: 55"; + rLen = 0; + rLoc = 1136; + rType = 0; + vrLen = 737; + vrLoc = 736; + }; + 6BBB895310EAAB73008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6100FFA62AD004F1BC4 /* Sample.h */; + name = "Sample.h: 67"; + rLen = 29; + rLoc = 1381; + rType = 0; + vrLen = 828; + vrLoc = 976; + }; + 6BBB895510EAAB73008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA1E88E10C7BFD3008007F6 /* Sample_SoloMeshSimple.h */; + name = "Sample_SoloMeshSimple.h: 55"; + rLen = 29; + rLoc = 1075; + rType = 0; + vrLen = 727; + vrLoc = 736; + }; + 6BBB896010EAAE6C008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC510FFB8946005BE9CC /* Sample_TileMesh.h */; + name = "Sample_TileMesh.h: 75"; + rLen = 61; + rLoc = 2237; + rType = 0; + vrLen = 809; + vrLoc = 1623; + }; + 6BBB896110EAAE6C008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA1E88E10C7BFD3008007F6 /* Sample_SoloMeshSimple.h */; + name = "Sample_SoloMeshSimple.h: 66"; + rLen = 0; + rLoc = 1511; + rType = 0; + vrLen = 730; + vrLoc = 795; + }; + 6BBB896310EAAE6C008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */; + name = "Sample_SoloMeshTiled.cpp: 186"; + rLen = 0; + rLoc = 5946; + rType = 0; + vrLen = 746; + vrLoc = 5683; + }; + 6BBB896C10EAB179008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */; + name = "Sample_SoloMeshTiled.cpp: 37"; + rLen = 0; + rLoc = 817; + rType = 0; + vrLen = 510; + vrLoc = 641; + }; + 6BBB896E10EAB179008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */; + name = "Sample_SoloMeshTiled.cpp: 45"; + rLen = 0; + rLoc = 931; + rType = 0; + vrLen = 847; + vrLoc = 1373; + }; + 6BBB897010EAB179008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */; + name = "Sample_SoloMeshTiled.cpp: 86"; + rLen = 0; + rLoc = 1896; + rType = 0; + vrLen = 777; + vrLoc = 7108; + }; + 6BBB897210EAB179008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */; + name = "Sample_SoloMeshTiled.cpp: 260"; + rLen = 0; + rLoc = 7574; + rType = 0; + vrLen = 721; + vrLoc = 10888; + }; + 6BBB897410EAB179008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */; + name = "Sample_SoloMeshTiled.cpp: 408"; + rLen = 0; + rLoc = 11343; + rType = 0; + vrLen = 999; + vrLoc = 13764; + }; + 6BBB897610EAB179008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */; + name = "Sample_SoloMeshTiled.cpp: 544"; + rLen = 0; + rLoc = 14656; + rType = 0; + vrLen = 806; + vrLoc = 14288; + }; + 6BBB897810EAB179008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */; + name = "Sample_SoloMeshTiled.cpp: 580"; + rLen = 0; + rLoc = 15486; + rType = 0; + vrLen = 1001; + vrLoc = 15104; + }; + 6BBB897A10EAB179008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */; + name = "Sample_SoloMeshTiled.cpp: 1003"; + rLen = 0; + rLoc = 30628; + rType = 0; + vrLen = 2490; + vrLoc = 28144; + }; + 6BBB897C10EAB179008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */; + name = "Sample_SoloMeshTiled.cpp: 82"; + rLen = 41; + rLoc = 1815; + rType = 0; + vrLen = 718; + vrLoc = 1306; + }; + 6BBB898310EAB1AA008FEA1F /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 6BA1E88810C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp */; - name = "Sample_SoloMeshSimple.cpp: 276"; - rLen = 63; - rLoc = 8152; + name = "Sample_SoloMeshSimple.cpp: 17"; + rLen = 31; + rLoc = 386; rType = 0; - vrLen = 690; - vrLoc = 7681; + vrLen = 625; + vrLoc = 0; + }; + 6BBB898510EAB1AA008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA1E88F10C7BFD3008007F6 /* Sample_SoloMeshTiled.h */; + name = "Sample_SoloMeshTiled.h: 78"; + rLen = 0; + rLoc = 1695; + rType = 0; + vrLen = 740; + vrLoc = 1547; + }; + 6BBB898610EAB1AA008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA1E88810C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp */; + name = "Sample_SoloMeshSimple.cpp: 17"; + rLen = 31; + rLoc = 386; + rType = 0; + vrLen = 625; + vrLoc = 0; + }; + 6BBB898810EAB225008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */; + name = "Sample_SoloMeshTiled.cpp: 7"; + rLen = 0; + rLoc = 142; + rType = 0; + vrLen = 616; + vrLoc = 217; + }; + 6BBB898A10EAB225008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */; + name = "Sample_SoloMeshTiled.cpp: 7"; + rLen = 0; + rLoc = 142; + rType = 0; + vrLen = 616; + vrLoc = 217; + }; + 6BBB898E10EABB10008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6100FFA62AD004F1BC4 /* Sample.h */; + name = "Sample.h: 17"; + rLen = 14; + rLoc = 392; + rType = 0; + vrLen = 725; + vrLoc = 111; + }; + 6BBB898F10EABB10008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC510FFB8946005BE9CC /* Sample_TileMesh.h */; + name = "Sample_TileMesh.h: 60"; + rLen = 0; + rLoc = 1772; + rType = 0; + vrLen = 833; + vrLoc = 1599; + }; + 6BBB899110EABB10008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA1E88E10C7BFD3008007F6 /* Sample_SoloMeshSimple.h */; + name = "Sample_SoloMeshSimple.h: 4"; + rLen = 0; + rLoc = 91; + rType = 0; + vrLen = 631; + vrLoc = 0; + }; + 6BBB899210EABB10008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */; + name = "main.cpp: 196"; + rLen = 0; + rLoc = 3928; + rType = 0; + vrLen = 548; + vrLoc = 1207; + }; + 6BBB899410EABB10008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6100FFA62AD004F1BC4 /* Sample.h */; + name = "Sample.h: 17"; + rLen = 14; + rLoc = 392; + rType = 0; + vrLen = 725; + vrLoc = 111; + }; + 6BBB899510EABB10008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC510FFB8946005BE9CC /* Sample_TileMesh.h */; + name = "Sample_TileMesh.h: 60"; + rLen = 0; + rLoc = 1772; + rType = 0; + vrLen = 833; + vrLoc = 1599; + }; + 6BBB899610EABB10008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; + name = "Sample_TileMesh.cpp: 83"; + rLen = 0; + rLoc = 2028; + rType = 0; + vrLen = 454; + vrLoc = 1877; + }; + 6BBB899710EABB10008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA1E88F10C7BFD3008007F6 /* Sample_SoloMeshTiled.h */; + name = "Sample_SoloMeshTiled.h: 4"; + rLen = 0; + rLoc = 89; + rType = 0; + vrLen = 737; + vrLoc = 0; + }; + 6BBB899810EABB10008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA1E88E10C7BFD3008007F6 /* Sample_SoloMeshSimple.h */; + name = "Sample_SoloMeshSimple.h: 4"; + rLen = 0; + rLoc = 91; + rType = 0; + vrLen = 631; + vrLoc = 0; + }; + 6BBB899910EABB10008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */; + name = "main.cpp: 196"; + rLen = 0; + rLoc = 3928; + rType = 0; + vrLen = 548; + vrLoc = 1207; + }; + 6BBB899D10EABD34008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA1E88F10C7BFD3008007F6 /* Sample_SoloMeshTiled.h */; + name = "Sample_SoloMeshTiled.h: 8"; + rLen = 0; + rLoc = 189; + rType = 0; + vrLen = 737; + vrLoc = 0; + }; + 6BBB899E10EABD34008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BBB87CE10EA8EF2008FEA1F /* NavMeshTesterTool.h */; + name = "NavMeshTesterTool.h: 21"; + rLen = 0; + rLoc = 362; + rType = 0; + vrLen = 590; + vrLoc = 329; + }; + 6BBB899F10EABD34008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BBB87CF10EA8EFA008FEA1F /* NavMeshTesterTool.cpp */; + name = "NavMeshTesterTool.cpp: 72"; + rLen = 0; + rLoc = 1511; + rType = 0; + vrLen = 650; + vrLoc = 1221; + }; + 6BBB89A010EABD34008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; + name = "Sample_TileMesh.cpp: 83"; + rLen = 0; + rLoc = 2028; + rType = 0; + vrLen = 454; + vrLoc = 1877; + }; + 6BBB89A110EABD34008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA1E88F10C7BFD3008007F6 /* Sample_SoloMeshTiled.h */; + name = "Sample_SoloMeshTiled.h: 8"; + rLen = 0; + rLoc = 189; + rType = 0; + vrLen = 737; + vrLoc = 0; + }; + 6BBB89A210EABD34008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BBB87CE10EA8EF2008FEA1F /* NavMeshTesterTool.h */; + name = "NavMeshTesterTool.h: 21"; + rLen = 0; + rLoc = 362; + rType = 0; + vrLen = 590; + vrLoc = 329; + }; + 6BBB89A310EABD34008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BBB87CF10EA8EFA008FEA1F /* NavMeshTesterTool.cpp */; + name = "NavMeshTesterTool.cpp: 72"; + rLen = 0; + rLoc = 1511; + rType = 0; + vrLen = 650; + vrLoc = 1221; + }; + 6BBB89A710EAC398008FEA1F /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; + name = "Sample_TileMesh.cpp: 97"; + rLen = 0; + rLoc = 2282; + rType = 0; + vrLen = 573; + vrLoc = 2076; }; 6BF2589310BE6F220061DCC9 /* PBXTextBookmark */ = { isa = PBXTextBookmark; diff --git a/RecastDemo/Build/Xcode/Recast.xcodeproj/memon.perspectivev3 b/RecastDemo/Build/Xcode/Recast.xcodeproj/memon.perspectivev3 index 9e0de859..5b34b76c 100644 --- a/RecastDemo/Build/Xcode/Recast.xcodeproj/memon.perspectivev3 +++ b/RecastDemo/Build/Xcode/Recast.xcodeproj/memon.perspectivev3 @@ -280,14 +280,14 @@ PBXSmartGroupTreeModuleOutlineStateSelectionKey - 38 + 42 34 1 0 PBXSmartGroupTreeModuleOutlineStateVisibleRectKey - {{0, 192}, {282, 660}} + {{0, 460}, {282, 660}} PBXTopSmartGroupGIDs @@ -322,7 +322,7 @@ PBXProjectModuleGUID 6B8632A30F78115100E2684A PBXProjectModuleLabel - Sample_SoloMesh.cpp + Sample_TileMesh.cpp PBXSplitModuleInNavigatorKey Split0 @@ -330,39 +330,28 @@ PBXProjectModuleGUID 6B8632A40F78115100E2684A PBXProjectModuleLabel - Sample_SoloMesh.cpp + Sample_TileMesh.cpp _historyCapacity 0 bookmark - 6B98694A10DF8982007D8D84 + 6BBB89A710EAC398008FEA1F history 6B57D358108C66B200DDD053 6B7FB74D1091EBDE001BA51A 6B8DE70D10B01BBF00DF20FB 6B8DE76D10B0243500DF20FB - 6B8DE7F110B0517A00DF20FB 6B8DE84910B0584400DF20FB - 6B8DEA3810B6CBC200DF20FB 6B8DEAA110BC7BCD00DF20FB 6BF2589310BE6F220061DCC9 6BA1E63A10C1DB5B008007F6 6BA1E7F210C7B3FF008007F6 6BA1E89310C7C227008007F6 - 6BA1E8B010C7C5D1008007F6 6BA1E8DB10C7CB62008007F6 6BA1E8E410C7D2FA008007F6 - 6BA1E8F210C7D4D9008007F6 - 6BB4964510C8ECF300BC0805 - 6BB4965E10C8F2AE00BC0805 6BB4965F10C8F2AE00BC0805 6BB4966110C8F2AE00BC0805 - 6BB4966510C8F2AE00BC0805 - 6BB4966810C8F2AE00BC0805 6BB4967C10C8F8F500BC0805 - 6BB93CCF10CFEA7A00F74F2B - 6BB93CD010CFEA7A00F74F2B - 6BB93CD210CFEA7A00F74F2B 6BB93CE710CFEB5D00F74F2B 6BB93CEB10CFEB5D00F74F2B 6BB93D0510CFFC1300F74F2B @@ -370,25 +359,217 @@ 6BB93D0A10CFFC1300F74F2B 6BB93D1510CFFC6D00F74F2B 6BB93D1B10CFFD7600F74F2B - 6B98692510DF824E007D8D84 6B98693110DF8929007D8D84 - 6B98693210DF8929007D8D84 6B98693310DF8929007D8D84 - 6B98693410DF8929007D8D84 - 6B98694710DF8982007D8D84 - 6B98694810DF8982007D8D84 + 6B9869F710DFFA98007D8D84 + 6B9869F810DFFA98007D8D84 + 6BBB87D710EA97CC008FEA1F + 6BBB87D910EA97CC008FEA1F + 6BBB87DA10EA97CC008FEA1F + 6BBB883C10EA9B6F008FEA1F + 6BBB884E10EA9ECC008FEA1F + 6BBB889B10EAA094008FEA1F + 6BBB894510EAAB73008FEA1F + 6BBB898310EAB1AA008FEA1F + 6BBB898810EAB225008FEA1F + 6BBB898E10EABB10008FEA1F + 6BBB898F10EABB10008FEA1F + 6BBB899110EABB10008FEA1F + 6BBB899210EABB10008FEA1F + 6BBB899D10EABD34008FEA1F + 6BBB899E10EABD34008FEA1F + 6BBB899F10EABD34008FEA1F + 6BBB89A010EABD34008FEA1F prevStack - 6B98692710DF824E007D8D84 6B98693710DF8929007D8D84 6B98693810DF8929007D8D84 6B98693910DF8929007D8D84 - 6B98693A10DF8929007D8D84 - 6B98693B10DF8929007D8D84 - 6B98693C10DF8929007D8D84 - 6B98693D10DF8929007D8D84 - 6B98694910DF8982007D8D84 + 6B9869FC10DFFA98007D8D84 + 6BBB87E310EA97CC008FEA1F + 6BBB87E410EA97CC008FEA1F + 6BBB87E510EA97CC008FEA1F + 6BBB87E610EA97CC008FEA1F + 6BBB87E710EA97CC008FEA1F + 6BBB87E810EA97CC008FEA1F + 6BBB87E910EA97CC008FEA1F + 6BBB87EB10EA97CC008FEA1F + 6BBB87EC10EA97CC008FEA1F + 6BBB87EF10EA97CC008FEA1F + 6BBB87F010EA97CC008FEA1F + 6BBB87F110EA97CC008FEA1F + 6BBB87F410EA97CC008FEA1F + 6BBB87F510EA97CC008FEA1F + 6BBB87F610EA97CC008FEA1F + 6BBB87F710EA97CC008FEA1F + 6BBB87F810EA97CC008FEA1F + 6BBB87FA10EA97CC008FEA1F + 6BBB87FB10EA97CC008FEA1F + 6BBB87FC10EA97CC008FEA1F + 6BBB87FD10EA97CC008FEA1F + 6BBB87FE10EA97CC008FEA1F + 6BBB87FF10EA97CC008FEA1F + 6BBB880010EA97CC008FEA1F + 6BBB880110EA97CC008FEA1F + 6BBB880210EA97CC008FEA1F + 6BBB880310EA97CC008FEA1F + 6BBB880510EA97CC008FEA1F + 6BBB880610EA97CC008FEA1F + 6BBB880710EA97CC008FEA1F + 6BBB880810EA97CC008FEA1F + 6BBB880910EA97CC008FEA1F + 6BBB880A10EA97CC008FEA1F + 6BBB880B10EA97CC008FEA1F + 6BBB880C10EA97CC008FEA1F + 6BBB880D10EA97CC008FEA1F + 6BBB880E10EA97CC008FEA1F + 6BBB880F10EA97CC008FEA1F + 6BBB881010EA97CC008FEA1F + 6BBB881110EA97CC008FEA1F + 6BBB881210EA97CC008FEA1F + 6BBB881310EA97CC008FEA1F + 6BBB881410EA97CC008FEA1F + 6BBB881510EA97CC008FEA1F + 6BBB881610EA97CC008FEA1F + 6BBB881710EA97CC008FEA1F + 6BBB881810EA97CC008FEA1F + 6BBB882710EA99CA008FEA1F + 6BBB882810EA99CA008FEA1F + 6BBB882910EA99CA008FEA1F + 6BBB882A10EA99CA008FEA1F + 6BBB883610EA9B3D008FEA1F + 6BBB883710EA9B3D008FEA1F + 6BBB883E10EA9B6F008FEA1F + 6BBB883F10EA9B6F008FEA1F + 6BBB885510EA9ECC008FEA1F + 6BBB885610EA9ECC008FEA1F + 6BBB885710EA9ECC008FEA1F + 6BBB885810EA9ECC008FEA1F + 6BBB885910EA9ECC008FEA1F + 6BBB885A10EA9ECC008FEA1F + 6BBB885B10EA9ECC008FEA1F + 6BBB885C10EA9ECC008FEA1F + 6BBB885D10EA9ECC008FEA1F + 6BBB885E10EA9ECC008FEA1F + 6BBB885F10EA9ECC008FEA1F + 6BBB886010EA9ECC008FEA1F + 6BBB886110EA9ECC008FEA1F + 6BBB886210EA9ECC008FEA1F + 6BBB886310EA9ECC008FEA1F + 6BBB886410EA9ECC008FEA1F + 6BBB886510EA9ECC008FEA1F + 6BBB886610EA9ECC008FEA1F + 6BBB886710EA9ECC008FEA1F + 6BBB886810EA9ECC008FEA1F + 6BBB886910EA9ECC008FEA1F + 6BBB886A10EA9ECC008FEA1F + 6BBB886B10EA9ECC008FEA1F + 6BBB886C10EA9ECC008FEA1F + 6BBB886D10EA9ECC008FEA1F + 6BBB886E10EA9ECC008FEA1F + 6BBB886F10EA9ECC008FEA1F + 6BBB887010EA9ECC008FEA1F + 6BBB887110EA9ECC008FEA1F + 6BBB887210EA9ECC008FEA1F + 6BBB887310EA9ECC008FEA1F + 6BBB887410EA9ECC008FEA1F + 6BBB887E10EA9FE6008FEA1F + 6BBB887F10EA9FE6008FEA1F + 6BBB888010EA9FE6008FEA1F + 6BBB888110EA9FE6008FEA1F + 6BBB888210EA9FE6008FEA1F + 6BBB888310EA9FE6008FEA1F + 6BBB888410EA9FE6008FEA1F + 6BBB889610EAA050008FEA1F + 6BBB889D10EAA094008FEA1F + 6BBB88B410EAA316008FEA1F + 6BBB88B510EAA316008FEA1F + 6BBB88B610EAA316008FEA1F + 6BBB88B710EAA316008FEA1F + 6BBB88B810EAA316008FEA1F + 6BBB88B910EAA316008FEA1F + 6BBB88BA10EAA316008FEA1F + 6BBB88BB10EAA316008FEA1F + 6BBB88BC10EAA316008FEA1F + 6BBB88BD10EAA316008FEA1F + 6BBB88C110EAA316008FEA1F + 6BBB88C210EAA316008FEA1F + 6BBB88C310EAA316008FEA1F + 6BBB88C510EAA316008FEA1F + 6BBB88C610EAA316008FEA1F + 6BBB88C710EAA316008FEA1F + 6BBB88C810EAA316008FEA1F + 6BBB88D310EAA384008FEA1F + 6BBB88D410EAA384008FEA1F + 6BBB88D510EAA384008FEA1F + 6BBB88DA10EAA39C008FEA1F + 6BBB88E410EAA3D9008FEA1F + 6BBB88E510EAA3D9008FEA1F + 6BBB88E610EAA3D9008FEA1F + 6BBB88E710EAA3D9008FEA1F + 6BBB88E810EAA3D9008FEA1F + 6BBB88E910EAA3D9008FEA1F + 6BBB88F010EAA44E008FEA1F + 6BBB88F410EAA4E6008FEA1F + 6BBB88FC10EAA614008FEA1F + 6BBB88FD10EAA614008FEA1F + 6BBB88FE10EAA614008FEA1F + 6BBB88FF10EAA614008FEA1F + 6BBB890010EAA614008FEA1F + 6BBB890110EAA614008FEA1F + 6BBB890210EAA614008FEA1F + 6BBB890310EAA614008FEA1F + 6BBB890A10EAA6C2008FEA1F + 6BBB890D10EAA6C2008FEA1F + 6BBB890E10EAA6C2008FEA1F + 6BBB891B10EAA87B008FEA1F + 6BBB891C10EAA87B008FEA1F + 6BBB891D10EAA87B008FEA1F + 6BBB891F10EAA87B008FEA1F + 6BBB892310EAA87B008FEA1F + 6BBB892510EAA87B008FEA1F + 6BBB892710EAA87B008FEA1F + 6BBB892810EAA87B008FEA1F + 6BBB892910EAA87B008FEA1F + 6BBB892A10EAA87B008FEA1F + 6BBB892B10EAA87B008FEA1F + 6BBB892F10EAA899008FEA1F + 6BBB893A10EAAADC008FEA1F + 6BBB893C10EAAADC008FEA1F + 6BBB893D10EAAADC008FEA1F + 6BBB893E10EAAADC008FEA1F + 6BBB894A10EAAB73008FEA1F + 6BBB894C10EAAB73008FEA1F + 6BBB894E10EAAB73008FEA1F + 6BBB895010EAAB73008FEA1F + 6BBB895210EAAB73008FEA1F + 6BBB895310EAAB73008FEA1F + 6BBB895510EAAB73008FEA1F + 6BBB896010EAAE6C008FEA1F + 6BBB896110EAAE6C008FEA1F + 6BBB896310EAAE6C008FEA1F + 6BBB896C10EAB179008FEA1F + 6BBB896E10EAB179008FEA1F + 6BBB897010EAB179008FEA1F + 6BBB897210EAB179008FEA1F + 6BBB897410EAB179008FEA1F + 6BBB897610EAB179008FEA1F + 6BBB897810EAB179008FEA1F + 6BBB897A10EAB179008FEA1F + 6BBB897C10EAB179008FEA1F + 6BBB898510EAB1AA008FEA1F + 6BBB898610EAB1AA008FEA1F + 6BBB898A10EAB225008FEA1F + 6BBB899410EABB10008FEA1F + 6BBB899510EABB10008FEA1F + 6BBB899610EABB10008FEA1F + 6BBB899710EABB10008FEA1F + 6BBB899810EABB10008FEA1F + 6BBB899910EABB10008FEA1F + 6BBB89A110EABD34008FEA1F + 6BBB89A210EABD34008FEA1F + 6BBB89A310EABD34008FEA1F SplitCount @@ -402,18 +583,18 @@ GeometryConfiguration Frame - {{0, 0}, {976, 524}} + {{0, 0}, {976, 515}} RubberWindowFrame 0 59 1280 719 0 0 1280 778 Module PBXNavigatorGroup Proportion - 524pt + 515pt Proportion - 149pt + 158pt Tabs @@ -427,7 +608,7 @@ GeometryConfiguration Frame - {{10, 27}, {976, 122}} + {{10, 27}, {976, 194}} Module XCDetailModule @@ -481,7 +662,7 @@ GeometryConfiguration Frame - {{10, 27}, {976, 122}} + {{10, 27}, {976, 131}} RubberWindowFrame 0 59 1280 719 0 0 1280 778 @@ -511,11 +692,11 @@ TableOfContents - 6B98692910DF824E007D8D84 + 6BBB881A10EA97CC008FEA1F 1CA23ED40692098700951B8B - 6B98692A10DF824E007D8D84 + 6BBB881B10EA97CC008FEA1F 6B8632A30F78115100E2684A - 6B98692B10DF824E007D8D84 + 6BBB881C10EA97CC008FEA1F 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -664,14 +845,14 @@ TableOfContents - 6B98693F10DF8929007D8D84 + 6BBB882C10EA99CA008FEA1F 1CCC7628064C1048000F2A68 1CCC7629064C1048000F2A68 - 6B98694010DF8929007D8D84 - 6B98694110DF8929007D8D84 - 6B98694210DF8929007D8D84 - 6B98694310DF8929007D8D84 - 6B98694410DF8929007D8D84 + 6BBB882D10EA99CA008FEA1F + 6BBB882E10EA99CA008FEA1F + 6BBB882F10EA99CA008FEA1F + 6BBB883010EA99CA008FEA1F + 6BBB883110EA99CA008FEA1F ToolbarConfigUserDefaultsMinorVersion 2 @@ -703,6 +884,8 @@ 5 WindowOrderList + 6BBB888F10EAA01C008FEA1F + 6BBB889010EAA01C008FEA1F /Users/memon/Code/recastnavigation/RecastDemo/Build/Xcode/Recast.xcodeproj WindowString diff --git a/RecastDemo/Build/Xcode/Recast.xcodeproj/project.pbxproj b/RecastDemo/Build/Xcode/Recast.xcodeproj/project.pbxproj index 0cc3bfc0..d829e0a7 100644 --- a/RecastDemo/Build/Xcode/Recast.xcodeproj/project.pbxproj +++ b/RecastDemo/Build/Xcode/Recast.xcodeproj/project.pbxproj @@ -31,7 +31,6 @@ 6B8632DC0F78123E00E2684A /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6B8632DB0F78123E00E2684A /* OpenGL.framework */; }; 6B8DE88910B69E3E00DF20FB /* DetourNavMesh.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; }; 6B8DE88A10B69E3E00DF20FB /* DetourNavMeshBuilder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6B8DE88810B69E3E00DF20FB /* DetourNavMeshBuilder.cpp */; }; - 6BA1E88A10C7BFC9008007F6 /* Sample_SoloMesh.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6BA1E88710C7BFC9008007F6 /* Sample_SoloMesh.cpp */; }; 6BA1E88B10C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6BA1E88810C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp */; }; 6BA1E88C10C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */; }; 6BB788170FC0472B003C24DB /* ChunkyTriMesh.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6BB788160FC0472B003C24DB /* ChunkyTriMesh.cpp */; }; @@ -39,6 +38,7 @@ 6BB93C7E10CFE1D500F74F2B /* DetourDebugDraw.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6BB93C7B10CFE1D500F74F2B /* DetourDebugDraw.cpp */; }; 6BB93C7F10CFE1D500F74F2B /* RecastDebugDraw.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6BB93C7C10CFE1D500F74F2B /* RecastDebugDraw.cpp */; }; 6BB93CF610CFEC4500F74F2B /* RecastDump.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6BB93CF510CFEC4500F74F2B /* RecastDump.cpp */; }; + 6BBB87D010EA8EFA008FEA1F /* NavMeshTesterTool.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6BBB87CF10EA8EFA008FEA1F /* NavMeshTesterTool.cpp */; }; 8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */; }; 8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; }; /* End PBXBuildFile section */ @@ -88,10 +88,8 @@ 6B8DE88810B69E3E00DF20FB /* DetourNavMeshBuilder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DetourNavMeshBuilder.cpp; path = ../../../Detour/Source/DetourNavMeshBuilder.cpp; sourceTree = SOURCE_ROOT; }; 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DetourNavMesh.h; path = ../../../Detour/Include/DetourNavMesh.h; sourceTree = SOURCE_ROOT; }; 6B8DE88C10B69E4C00DF20FB /* DetourNavMeshBuilder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DetourNavMeshBuilder.h; path = ../../../Detour/Include/DetourNavMeshBuilder.h; sourceTree = SOURCE_ROOT; }; - 6BA1E88710C7BFC9008007F6 /* Sample_SoloMesh.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Sample_SoloMesh.cpp; path = ../../Source/Sample_SoloMesh.cpp; sourceTree = SOURCE_ROOT; }; 6BA1E88810C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Sample_SoloMeshSimple.cpp; path = ../../Source/Sample_SoloMeshSimple.cpp; sourceTree = SOURCE_ROOT; }; 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Sample_SoloMeshTiled.cpp; path = ../../Source/Sample_SoloMeshTiled.cpp; sourceTree = SOURCE_ROOT; }; - 6BA1E88D10C7BFD3008007F6 /* Sample_SoloMesh.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Sample_SoloMesh.h; path = ../../Include/Sample_SoloMesh.h; sourceTree = SOURCE_ROOT; }; 6BA1E88E10C7BFD3008007F6 /* Sample_SoloMeshSimple.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Sample_SoloMeshSimple.h; path = ../../Include/Sample_SoloMeshSimple.h; sourceTree = SOURCE_ROOT; }; 6BA1E88F10C7BFD3008007F6 /* Sample_SoloMeshTiled.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Sample_SoloMeshTiled.h; path = ../../Include/Sample_SoloMeshTiled.h; sourceTree = SOURCE_ROOT; }; 6BB788160FC0472B003C24DB /* ChunkyTriMesh.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ChunkyTriMesh.cpp; path = ../../Source/ChunkyTriMesh.cpp; sourceTree = SOURCE_ROOT; }; @@ -104,6 +102,8 @@ 6BB93C7C10CFE1D500F74F2B /* RecastDebugDraw.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RecastDebugDraw.cpp; path = ../../../DebugUtils/Source/RecastDebugDraw.cpp; sourceTree = SOURCE_ROOT; }; 6BB93CF410CFEC4500F74F2B /* RecastDump.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RecastDump.h; path = ../../../DebugUtils/Include/RecastDump.h; sourceTree = SOURCE_ROOT; }; 6BB93CF510CFEC4500F74F2B /* RecastDump.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RecastDump.cpp; path = ../../../DebugUtils/Source/RecastDump.cpp; sourceTree = SOURCE_ROOT; }; + 6BBB87CE10EA8EF2008FEA1F /* NavMeshTesterTool.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NavMeshTesterTool.h; sourceTree = ""; }; + 6BBB87CF10EA8EFA008FEA1F /* NavMeshTesterTool.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NavMeshTesterTool.cpp; sourceTree = ""; }; 8D1107310486CEB800E47090 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 8D1107320486CEB800E47090 /* Recast.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Recast.app; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ @@ -235,16 +235,16 @@ 6B555DF5100B25FC00247EA3 /* Samples */ = { isa = PBXGroup; children = ( - 6BA1E88D10C7BFD3008007F6 /* Sample_SoloMesh.h */, - 6BA1E88E10C7BFD3008007F6 /* Sample_SoloMeshSimple.h */, - 6BA1E88F10C7BFD3008007F6 /* Sample_SoloMeshTiled.h */, - 6BA1E88710C7BFC9008007F6 /* Sample_SoloMesh.cpp */, - 6BA1E88810C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp */, - 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */, 6B25B6100FFA62AD004F1BC4 /* Sample.h */, 6B25B6140FFA62BE004F1BC4 /* Sample.cpp */, + 6BA1E88E10C7BFD3008007F6 /* Sample_SoloMeshSimple.h */, + 6BA1E88810C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp */, + 6BA1E88F10C7BFD3008007F6 /* Sample_SoloMeshTiled.h */, + 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */, 6B2AEC510FFB8946005BE9CC /* Sample_TileMesh.h */, 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */, + 6BBB87CE10EA8EF2008FEA1F /* NavMeshTesterTool.h */, + 6BBB87CF10EA8EFA008FEA1F /* NavMeshTesterTool.cpp */, ); name = Samples; sourceTree = ""; @@ -356,13 +356,13 @@ 6B62416A103434880002E346 /* RecastMeshDetail.cpp in Sources */, 6B8DE88910B69E3E00DF20FB /* DetourNavMesh.cpp in Sources */, 6B8DE88A10B69E3E00DF20FB /* DetourNavMeshBuilder.cpp in Sources */, - 6BA1E88A10C7BFC9008007F6 /* Sample_SoloMesh.cpp in Sources */, 6BA1E88B10C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp in Sources */, 6BA1E88C10C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp in Sources */, 6BB93C7D10CFE1D500F74F2B /* DebugDraw.cpp in Sources */, 6BB93C7E10CFE1D500F74F2B /* DetourDebugDraw.cpp in Sources */, 6BB93C7F10CFE1D500F74F2B /* RecastDebugDraw.cpp in Sources */, 6BB93CF610CFEC4500F74F2B /* RecastDump.cpp in Sources */, + 6BBB87D010EA8EFA008FEA1F /* NavMeshTesterTool.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/RecastDemo/Include/Sample.h b/RecastDemo/Include/Sample.h index e2dceff8..160048da 100644 --- a/RecastDemo/Include/Sample.h +++ b/RecastDemo/Include/Sample.h @@ -11,6 +11,25 @@ struct DebugDrawGL : public duDebugDraw virtual void end(); }; +enum SampleToolType +{ + TOOL_NONE = 0, + TOOL_TILE_EDIT, + TOOL_NAVMESH_TESTER, +}; + +struct SampleTool +{ + virtual ~SampleTool() {} + virtual int type() = 0; + virtual void init(class Sample* sample) = 0; + virtual void reset() = 0; + virtual void handleMenu() = 0; + virtual void handleClick(const float* p, bool shift) = 0; + virtual void handleRender() = 0; + virtual void handleRenderOverlay(double* proj, double* model, int* view) = 0; +}; + class Sample { @@ -36,17 +55,18 @@ protected: float m_detailSampleDist; float m_detailSampleMaxError; + SampleTool* m_tool; + public: Sample(); virtual ~Sample(); + void setTool(SampleTool* tool); + virtual void handleSettings(); virtual void handleTools(); virtual void handleDebugMode(); - - virtual void setToolStartPos(const float* p); - virtual void setToolEndPos(const float* p); - + virtual void handleClick(const float* p, bool shift); virtual void handleRender(); virtual void handleRenderOverlay(double* proj, double* model, int* view); virtual void handleMeshChanged(const float* verts, int nverts, @@ -54,6 +74,10 @@ public: const float* bmin, const float* bmax); virtual bool handleBuild(); + virtual class dtNavMesh* getNavMesh() { return 0; } + virtual float getAgentRadius() { return m_agentRadius; } + virtual float getAgentHeight() { return m_agentHeight; } + void resetCommonSettings(); void handleCommonSettings(); }; diff --git a/RecastDemo/Include/Sample_SoloMesh.h b/RecastDemo/Include/Sample_SoloMesh.h deleted file mode 100644 index 1920dbf1..00000000 --- a/RecastDemo/Include/Sample_SoloMesh.h +++ /dev/null @@ -1,73 +0,0 @@ -#ifndef RECASTSAMPLESOLOMESH_H -#define RECASTSAMPLESOLOMESH_H - -#include "Sample.h" -#include "DetourNavMesh.h" -#include "Recast.h" -#include "RecastLog.h" - -class Sample_SoloMesh : public Sample -{ -protected: - - dtNavMesh* m_navMesh; - - enum ToolMode - { - TOOLMODE_PATHFIND, - TOOLMODE_RAYCAST, - TOOLMODE_DISTANCE_TO_WALL, - TOOLMODE_FIND_POLYS_AROUND, - }; - - ToolMode m_toolMode; - - static const int MAX_POLYS = 256; - static const int MAX_SMOOTH = 2048; - - dtPolyRef m_startRef; - dtPolyRef m_endRef; - dtPolyRef m_polys[MAX_POLYS]; - dtPolyRef m_parent[MAX_POLYS]; - int m_npolys; - float m_straightPath[MAX_POLYS*3]; - int m_nstraightPath; - float m_polyPickExt[3]; - float m_smoothPath[MAX_SMOOTH*3]; - int m_nsmoothPath; - - float m_spos[3]; - float m_epos[3]; - float m_hitPos[3]; - float m_hitNormal[3]; - float m_distanceToWall; - bool m_sposSet; - bool m_eposSet; - - enum ToolRenderFlags - { - NAVMESH_POLYS = 0x01, - NAVMESH_BVTREE = 0x02, - NAVMESH_TOOLS = 0x04, - }; - - void toolCleanup(); - void toolReset(); - void toolRecalc(); - void toolRender(int flags); - void toolRenderOverlay(double* proj, double* model, int* view); - - void drawAgent(const float* pos, float r, float h, float c, const float* col); - - -public: - Sample_SoloMesh(); - virtual ~Sample_SoloMesh(); - - virtual void handleTools(); - virtual void setToolStartPos(const float* p); - virtual void setToolEndPos(const float* p); -}; - - -#endif // RECASTSAMPLESOLOMESH_H diff --git a/RecastDemo/Include/Sample_SoloMeshSimple.h b/RecastDemo/Include/Sample_SoloMeshSimple.h index 4dbf7bc4..81cbb80f 100644 --- a/RecastDemo/Include/Sample_SoloMeshSimple.h +++ b/RecastDemo/Include/Sample_SoloMeshSimple.h @@ -1,15 +1,15 @@ #ifndef RECASTSAMPLESOLOMESHSIMPLE_H #define RECASTSAMPLESOLOMESHSIMPLE_H -#include "Sample_SoloMesh.h" +#include "Sample.h" #include "DetourNavMesh.h" #include "Recast.h" #include "RecastLog.h" - -class Sample_SoloMeshSimple : public Sample_SoloMesh +class Sample_SoloMeshSimple : public Sample //Sample_SoloMesh { protected: + dtNavMesh* m_navMesh; bool m_keepInterResults; rcBuildTimes m_buildTimes; @@ -52,6 +52,7 @@ public: virtual ~Sample_SoloMeshSimple(); virtual void handleSettings(); + virtual void handleTools(); virtual void handleDebugMode(); virtual void handleRender(); @@ -60,6 +61,8 @@ public: const int* tris, const float* trinorms, int ntris, const float* bmin, const float* bmax); virtual bool handleBuild(); + + virtual class dtNavMesh* getNavMesh() { return m_navMesh; } }; diff --git a/RecastDemo/Include/Sample_SoloMeshTiled.h b/RecastDemo/Include/Sample_SoloMeshTiled.h index 331a1b9d..75fc1a98 100644 --- a/RecastDemo/Include/Sample_SoloMeshTiled.h +++ b/RecastDemo/Include/Sample_SoloMeshTiled.h @@ -1,15 +1,16 @@ #ifndef RECASTSAMPLESOLOMESHTILED_H #define RECASTSAMPLESOLOMESHTILED_H -#include "Sample_SoloMesh.h" +#include "Sample.h" #include "DetourNavMesh.h" #include "Recast.h" #include "RecastLog.h" #include "ChunkyTriMesh.h" -class Sample_SoloMeshTiled : public Sample_SoloMesh +class Sample_SoloMeshTiled : public Sample { protected: + dtNavMesh* m_navMesh; struct Tile { @@ -81,6 +82,7 @@ public: virtual ~Sample_SoloMeshTiled(); virtual void handleSettings(); + virtual void handleTools(); virtual void handleDebugMode(); virtual void handleRender(); @@ -89,6 +91,8 @@ public: const int* tris, const float* trinorms, int ntris, const float* bmin, const float* bmax); virtual bool handleBuild(); + + virtual class dtNavMesh* getNavMesh() { return m_navMesh; } }; diff --git a/RecastDemo/Include/Sample_TileMesh.h b/RecastDemo/Include/Sample_TileMesh.h index 9c462959..7adcc4cb 100644 --- a/RecastDemo/Include/Sample_TileMesh.h +++ b/RecastDemo/Include/Sample_TileMesh.h @@ -24,12 +24,14 @@ #include "Recast.h" #include "RecastLog.h" #include "ChunkyTriMesh.h" +#include "NavMeshTesterTool.h" class Sample_TileMesh : public Sample { protected: bool m_keepInterResults; + bool m_buildAll; rcBuildTimes m_buildTimes; dtNavMesh* m_navMesh; @@ -44,52 +46,15 @@ protected: int m_maxTiles; int m_maxPolysPerTile; - float m_tileSize; - float m_spos[3]; - float m_epos[3]; - bool m_sposSet; - bool m_eposSet; - float m_tileCol[4]; float m_tileBmin[3]; float m_tileBmax[3]; float m_tileBuildTime; float m_tileMemUsage; int m_tileTriCount; - - enum ToolMode - { - TOOLMODE_CREATE_TILES, - TOOLMODE_PATHFIND, - TOOLMODE_RAYCAST, - TOOLMODE_DISTANCE_TO_WALL, - TOOLMODE_FIND_POLYS_AROUND, - }; - - dtPolyRef m_startRef; - dtPolyRef m_endRef; - float m_polyPickExt[3]; - - static const int MAX_POLYS = 256; - - dtPolyRef m_polys[MAX_POLYS]; - dtPolyRef m_parent[MAX_POLYS]; - int m_npolys; - float m_straightPath[MAX_POLYS*3]; - int m_nstraightPath; - float m_hitPos[3]; - float m_hitNormal[3]; - float m_distanceToWall; - - ToolMode m_toolMode; - - void toolRecalc(); - - void buildTile(const float* pos); - void removeTile(const float* pos); - + unsigned char* buildTileMesh(const float* bmin, const float* bmax, int& dataSize); void cleanup(); @@ -101,16 +66,19 @@ public: virtual void handleSettings(); virtual void handleTools(); virtual void handleDebugMode(); - - virtual void setToolStartPos(const float* p); - virtual void setToolEndPos(const float* p); - virtual void handleRender(); virtual void handleRenderOverlay(double* proj, double* model, int* view); virtual void handleMeshChanged(const float* verts, int nverts, const int* tris, const float* trinorms, int ntris, const float* bmin, const float* bmax); virtual bool handleBuild(); + + virtual class dtNavMesh* getNavMesh() { return m_navMesh; } + + void buildTile(const float* pos); + void removeTile(const float* pos); + void buildAllTiles(); + void removeAllTiles(); }; diff --git a/RecastDemo/Source/Sample.cpp b/RecastDemo/Source/Sample.cpp index fd547498..50154c8c 100644 --- a/RecastDemo/Source/Sample.cpp +++ b/RecastDemo/Source/Sample.cpp @@ -55,13 +55,27 @@ void DebugDrawGL::end() Sample::Sample() : - m_verts(0), m_nverts(0), m_tris(0), m_trinorms(0), m_ntris(0) + m_verts(0), + m_nverts(0), + m_tris(0), + m_trinorms(0), + m_ntris(0), + m_tool(0) { resetCommonSettings(); } Sample::~Sample() { + delete m_tool; +} + +void Sample::setTool(SampleTool* tool) +{ + delete m_tool; + m_tool = tool; + if (tool) + m_tool->init(this); } void Sample::handleSettings() @@ -162,12 +176,10 @@ void Sample::handleCommonSettings() imguiSeparator(); } -void Sample::setToolStartPos(const float* p) -{ -} - -void Sample::setToolEndPos(const float* p) +void Sample::handleClick(const float* p, bool shift) { + if (m_tool) + m_tool->handleClick(p, shift); } bool Sample::handleBuild() diff --git a/RecastDemo/Source/Sample_SoloMesh.cpp b/RecastDemo/Source/Sample_SoloMesh.cpp deleted file mode 100644 index 3f829dff..00000000 --- a/RecastDemo/Source/Sample_SoloMesh.cpp +++ /dev/null @@ -1,445 +0,0 @@ -#define _USE_MATH_DEFINES -#include -#include -#include -#include "SDL.h" -#include "SDL_opengl.h" -#include "imgui.h" -#include "Sample.h" -#include "Sample_SoloMesh.h" -#include "Recast.h" -#include "RecastTimer.h" -#include "RecastDebugDraw.h" -#include "DetourNavMesh.h" -#include "DetourNavMeshBuilder.h" -#include "DetourDebugDraw.h" - -#ifdef WIN32 -# define snprintf _snprintf -#endif - -inline bool inRange(const float* v1, const float* v2, const float r, const float h) -{ - const float dx = v2[0] - v1[0]; - const float dy = v2[1] - v1[1]; - const float dz = v2[2] - v1[2]; - return (dx*dx + dz*dz) < r*r && fabsf(dy) < h; -} - - -Sample_SoloMesh::Sample_SoloMesh() : - m_navMesh(0), - m_toolMode(TOOLMODE_PATHFIND), - m_startRef(0), - m_endRef(0), - m_npolys(0), - m_nstraightPath(0), - m_nsmoothPath(0), - m_distanceToWall(0), - m_sposSet(false), - m_eposSet(false) -{ - toolReset(); - m_polyPickExt[0] = 2; - m_polyPickExt[1] = 4; - m_polyPickExt[2] = 2; -} - -Sample_SoloMesh::~Sample_SoloMesh() -{ - toolCleanup(); -} - -void Sample_SoloMesh::handleTools() -{ - if (imguiCheck("Pathfind", m_toolMode == TOOLMODE_PATHFIND)) - { - m_toolMode = TOOLMODE_PATHFIND; - toolRecalc(); - } - if (imguiCheck("Distance to Wall", m_toolMode == TOOLMODE_DISTANCE_TO_WALL)) - { - m_toolMode = TOOLMODE_DISTANCE_TO_WALL; - toolRecalc(); - } - if (imguiCheck("Raycast", m_toolMode == TOOLMODE_RAYCAST)) - { - m_toolMode = TOOLMODE_RAYCAST; - toolRecalc(); - } - if (imguiCheck("Find Polys Around", m_toolMode == TOOLMODE_FIND_POLYS_AROUND)) - { - m_toolMode = TOOLMODE_FIND_POLYS_AROUND; - toolRecalc(); - } -} - -void Sample_SoloMesh::setToolStartPos(const float* p) -{ - m_sposSet = true; - vcopy(m_spos, p); - toolRecalc(); -} - -void Sample_SoloMesh::setToolEndPos(const float* p) -{ - m_eposSet = true; - vcopy(m_epos, p); - toolRecalc(); -} - -void Sample_SoloMesh::toolCleanup() -{ - delete m_navMesh; - m_navMesh = 0; -} - -void Sample_SoloMesh::toolReset() -{ - m_startRef = 0; - m_endRef = 0; - m_npolys = 0; - m_nstraightPath = 0; - m_nsmoothPath = 0; - memset(m_hitPos, 0, sizeof(m_hitPos)); - memset(m_hitNormal, 0, sizeof(m_hitNormal)); - m_distanceToWall = 0; -} - -void Sample_SoloMesh::toolRecalc() -{ - if (!m_navMesh) - return; - - if (m_sposSet) - m_startRef = m_navMesh->findNearestPoly(m_spos, m_polyPickExt); - else - m_startRef = 0; - - if (m_eposSet) - m_endRef = m_navMesh->findNearestPoly(m_epos, m_polyPickExt); - else - m_endRef = 0; - - if (m_toolMode == TOOLMODE_PATHFIND) - { - if (m_sposSet && m_eposSet && m_startRef && m_endRef) - { - m_npolys = m_navMesh->findPath(m_startRef, m_endRef, m_spos, m_epos, m_polys, MAX_POLYS); - if (m_npolys) - { - m_nstraightPath = m_navMesh->findStraightPath(m_spos, m_epos, m_polys, m_npolys, m_straightPath, MAX_POLYS); - - // Iterate over the path to find smooth path on the detail mesh surface. - const dtPolyRef* polys = m_polys; - int npolys = m_npolys; - - float iterPos[3], targetPos[3]; - m_navMesh->closestPointOnPolyBoundary(m_startRef, m_spos, iterPos); - m_navMesh->closestPointOnPolyBoundary(polys[npolys-1], m_epos, targetPos); - - static const float STEP_SIZE = 0.5f; - static const float SLOP = 0.01f; - - m_nsmoothPath = 0; - - vcopy(&m_smoothPath[m_nsmoothPath*3], iterPos); - m_nsmoothPath++; - - while (npolys && m_nsmoothPath < MAX_SMOOTH) - { - // Find steer target. - static const int MAX_STEER = 3; - float steerPath[MAX_STEER*3]; - int nsteerPath = m_navMesh->findStraightPath(iterPos, m_epos, polys, npolys, steerPath, MAX_STEER); - if (!nsteerPath) - break; - // Find vertex far enough to steer to. - int ns = 0; - while (ns < nsteerPath) - { - if (!inRange(&steerPath[ns*3], iterPos, SLOP, 1000.0f)) - break; - ns++; - } - if (ns >= nsteerPath) - break; - bool endOfPath = inRange(&steerPath[ns*3], targetPos, SLOP*SLOP, 1.0f); - - // Find movement delta. - float delta[3], len; - vsub(delta, &steerPath[ns*3], iterPos); - len = sqrtf(vdot(delta,delta)); - if (endOfPath && len < STEP_SIZE) - len = 1; - else - len = STEP_SIZE / len; - float moveTgt[3]; - vmad(moveTgt, iterPos, delta, len); - - // Move - float result[3]; - int n = m_navMesh->moveAlongPathCorridor(iterPos, moveTgt, result, polys, npolys); - float h = 0; - m_navMesh->getPolyHeight(polys[n], result, &h); - result[1] = h; - // Shrink path corridor of possible. - polys += n; - npolys -= n; - - vcopy(iterPos, result); - - // Close enough to the target. - if (inRange(iterPos, targetPos, SLOP, 1.0f)) - { - vcopy(iterPos, targetPos); - npolys = 0; - } - - // Store results. - if (m_nsmoothPath < MAX_SMOOTH) - { - vcopy(&m_smoothPath[m_nsmoothPath*3], iterPos); - m_nsmoothPath++; - } - } - - } - } - else - { - m_npolys = 0; - m_nstraightPath = 0; - } - } - else if (m_toolMode == TOOLMODE_RAYCAST) - { - m_nstraightPath = 0; - if (m_sposSet && m_eposSet && m_startRef) - { - float t = 0; - m_npolys = 0; - m_nstraightPath = 2; - m_straightPath[0] = m_spos[0]; - m_straightPath[1] = m_spos[1]; - m_straightPath[2] = m_spos[2]; - vcopy(m_hitPos, m_epos); - m_npolys = m_navMesh->raycast(m_startRef, m_spos, m_epos, t, m_hitNormal, m_polys, MAX_POLYS); - if (m_npolys && t < 1) - { - m_hitPos[0] = m_spos[0] + (m_epos[0] - m_spos[0]) * t; - m_hitPos[1] = m_spos[1] + (m_epos[1] - m_spos[1]) * t; - m_hitPos[2] = m_spos[2] + (m_epos[2] - m_spos[2]) * t; - } - vcopy(&m_straightPath[3], m_hitPos); - } - } - else if (m_toolMode == TOOLMODE_DISTANCE_TO_WALL) - { - m_distanceToWall = 0; - if (m_sposSet && m_startRef) - m_distanceToWall = m_navMesh->findDistanceToWall(m_startRef, m_spos, 100.0f, m_hitPos, m_hitNormal); - } - else if (m_toolMode == TOOLMODE_FIND_POLYS_AROUND) - { - if (m_sposSet && m_startRef && m_eposSet) - { - const float dx = m_epos[0] - m_spos[0]; - const float dz = m_epos[2] - m_spos[2]; - float dist = sqrtf(dx*dx + dz*dz); - m_npolys = m_navMesh->findPolysAround(m_startRef, m_spos, dist, m_polys, m_parent, 0, MAX_POLYS); - } - } -} - -static void getPolyCenter(dtNavMesh* navMesh, dtPolyRef ref, float* center) -{ - const dtPoly* p = navMesh->getPolyByRef(ref); - if (!p) return; - const float* verts = navMesh->getPolyVertsByRef(ref); - center[0] = 0; - center[1] = 0; - center[2] = 0; - for (int i = 0; i < (int)p->nv; ++i) - { - const float* v = &verts[p->v[i]*3]; - center[0] += v[0]; - center[1] += v[1]; - center[2] += v[2]; - } - const float s = 1.0f / p->nv; - center[0] *= s; - center[1] *= s; - center[2] *= s; -} - -void Sample_SoloMesh::toolRender(int flags) -{ - if (!m_navMesh) - return; - - DebugDrawGL dd; - - static const float startCol[4] = { 0.5f, 0.1f, 0.0f, 0.75f }; - static const float endCol[4] = { 0.2f, 0.4f, 0.0f, 0.75f }; - static const float pathCol[4] = {0,0,0,0.25f}; - - glDepthMask(GL_FALSE); - - if (flags & NAVMESH_POLYS) - duDebugDrawNavMesh(&dd, m_navMesh, m_toolMode == TOOLMODE_PATHFIND); - - if (flags & NAVMESH_BVTREE) - duDebugDrawNavMeshBVTree(&dd, m_navMesh); - - if (flags & NAVMESH_TOOLS) - { - if (m_toolMode == TOOLMODE_PATHFIND) - { - duDebugDrawNavMeshPoly(&dd, m_navMesh, m_startRef, startCol); - duDebugDrawNavMeshPoly(&dd, m_navMesh, m_endRef, endCol); - - if (m_npolys) - { - for (int i = 1; i < m_npolys-1; ++i) - duDebugDrawNavMeshPoly(&dd, m_navMesh, m_polys[i], pathCol); - } - if (m_nstraightPath) - { - glColor4ub(64,16,0,64); - glLineWidth(2.0f); - glBegin(GL_LINE_STRIP); - for (int i = 0; i < m_nstraightPath; ++i) - glVertex3f(m_straightPath[i*3], m_straightPath[i*3+1]+0.4f, m_straightPath[i*3+2]); - glEnd(); - glLineWidth(1.0f); - glColor4ub(64,16,0,128); - glPointSize(3.0f); - glBegin(GL_POINTS); - for (int i = 0; i < m_nstraightPath; ++i) - glVertex3f(m_straightPath[i*3], m_straightPath[i*3+1]+0.4f, m_straightPath[i*3+2]); - glEnd(); - glPointSize(1.0f); - } - if (m_nsmoothPath) - { - glColor4ub(0,0,0,220); - glLineWidth(3.0f); - glBegin(GL_LINES); - for (int i = 0; i < m_nsmoothPath; ++i) - glVertex3f(m_smoothPath[i*3], m_smoothPath[i*3+1], m_smoothPath[i*3+2]); - glEnd(); - glLineWidth(1.0f); - } - } - else if (m_toolMode == TOOLMODE_RAYCAST) - { - duDebugDrawNavMeshPoly(&dd, m_navMesh, m_startRef, startCol); - - if (m_nstraightPath) - { - for (int i = 1; i < m_npolys; ++i) - duDebugDrawNavMeshPoly(&dd, m_navMesh, m_polys[i], pathCol); - - glColor4ub(64,16,0,220); - glLineWidth(3.0f); - glBegin(GL_LINE_STRIP); - for (int i = 0; i < m_nstraightPath; ++i) - glVertex3f(m_straightPath[i*3], m_straightPath[i*3+1]+0.4f, m_straightPath[i*3+2]); - glEnd(); - glLineWidth(1.0f); - glPointSize(4.0f); - glBegin(GL_POINTS); - for (int i = 0; i < m_nstraightPath; ++i) - glVertex3f(m_straightPath[i*3], m_straightPath[i*3+1]+0.4f, m_straightPath[i*3+2]); - glEnd(); - glPointSize(1.0f); - - glColor4ub(255,255,255,128); - glBegin(GL_LINES); - glVertex3f(m_hitPos[0], m_hitPos[1] + 0.4f, m_hitPos[2]); - glVertex3f(m_hitPos[0] + m_hitNormal[0]*m_agentRadius, m_hitPos[1] + 0.4f + m_hitNormal[1]*m_agentRadius, m_hitPos[2] + m_hitNormal[2]*m_agentRadius); - glEnd(); - } - } - else if (m_toolMode == TOOLMODE_DISTANCE_TO_WALL) - { - duDebugDrawNavMeshPoly(&dd, m_navMesh, m_startRef, startCol); - const float col[4] = {1,1,1,0.5f}; - duDebugDrawCylinderWire(&dd, m_spos[0]-m_distanceToWall, m_spos[1]+0.02f, m_spos[2]-m_distanceToWall, - m_spos[0]+m_distanceToWall, m_spos[1]+m_agentHeight, m_spos[2]+m_distanceToWall, col); - glLineWidth(3.0f); - glColor4fv(col); - glBegin(GL_LINES); - glVertex3f(m_hitPos[0], m_hitPos[1] + 0.02f, m_hitPos[2]); - glVertex3f(m_hitPos[0], m_hitPos[1] + m_agentHeight, m_hitPos[2]); - glEnd(); - glLineWidth(1.0f); - } - else if (m_toolMode == TOOLMODE_FIND_POLYS_AROUND) - { - const float cola[4] = {0,0,0,0.5f}; - for (int i = 0; i < m_npolys; ++i) - { - duDebugDrawNavMeshPoly(&dd, m_navMesh, m_polys[i], pathCol); - if (m_parent[i]) - { - float p0[3], p1[3]; - getPolyCenter(m_navMesh, m_polys[i], p0); - getPolyCenter(m_navMesh, m_parent[i], p1); - duDebugDrawArc(&dd, p0, p1, cola, 2.0f); - } - } - - const float dx = m_epos[0] - m_spos[0]; - const float dz = m_epos[2] - m_spos[2]; - float dist = sqrtf(dx*dx + dz*dz); - const float col[4] = {1,1,1,0.5f}; - duDebugDrawCylinderWire(&dd, m_spos[0]-dist, m_spos[1]+0.02f, m_spos[2]-dist, - m_spos[0]+dist, m_spos[1]+m_agentHeight, m_spos[2]+dist, col); - } - } - - glDepthMask(GL_TRUE); -} - -void Sample_SoloMesh::toolRenderOverlay(double* proj, double* model, int* view) -{ - GLdouble x, y, z; - - // Draw start and end point labels - if (m_sposSet && gluProject((GLdouble)m_spos[0], (GLdouble)m_spos[1], (GLdouble)m_spos[2], - model, proj, view, &x, &y, &z)) - { - imguiDrawText((int)x, (int)(y-25), IMGUI_ALIGN_CENTER, "Start", imguiRGBA(0,0,0,220)); - } - if (m_eposSet && gluProject((GLdouble)m_epos[0], (GLdouble)m_epos[1], (GLdouble)m_epos[2], - model, proj, view, &x, &y, &z)) - { - imguiDrawText((int)x, (int)(y-25), IMGUI_ALIGN_CENTER, "End", imguiRGBA(0,0,0,220)); - } -} - -void Sample_SoloMesh::drawAgent(const float* pos, float r, float h, float c, const float* col) -{ - DebugDrawGL dd; - - glDepthMask(GL_FALSE); - - // Agent dimensions. - glLineWidth(2.0f); - duDebugDrawCylinderWire(&dd, pos[0]-r, pos[1]+0.02f, pos[2]-r, pos[0]+r, pos[1]+h, pos[2]+r, col); - glLineWidth(1.0f); - - glColor4ub(0,0,0,196); - glBegin(GL_LINES); - glVertex3f(pos[0], pos[1]-c, pos[2]); - glVertex3f(pos[0], pos[1]+c, pos[2]); - glVertex3f(pos[0]-r/2, pos[1]+0.02f, pos[2]); - glVertex3f(pos[0]+r/2, pos[1]+0.02f, pos[2]); - glVertex3f(pos[0], pos[1]+0.02f, pos[2]-r/2); - glVertex3f(pos[0], pos[1]+0.02f, pos[2]+r/2); - glEnd(); - - glDepthMask(GL_TRUE); -} diff --git a/RecastDemo/Source/Sample_SoloMeshSimple.cpp b/RecastDemo/Source/Sample_SoloMeshSimple.cpp index 7cb7909f..b5dc99e8 100644 --- a/RecastDemo/Source/Sample_SoloMeshSimple.cpp +++ b/RecastDemo/Source/Sample_SoloMeshSimple.cpp @@ -14,6 +14,7 @@ #include "DetourNavMesh.h" #include "DetourNavMeshBuilder.h" #include "DetourDebugDraw.h" +#include "NavMeshTesterTool.h" #ifdef WIN32 # define snprintf _snprintf @@ -21,6 +22,7 @@ Sample_SoloMeshSimple::Sample_SoloMeshSimple() : + m_navMesh(0), m_keepInterResults(false), m_triflags(0), m_solid(0), @@ -30,6 +32,7 @@ Sample_SoloMeshSimple::Sample_SoloMeshSimple() : m_dmesh(0), m_drawMode(DRAWMODE_NAVMESH) { + setTool(new NavMeshTesterTool); } Sample_SoloMeshSimple::~Sample_SoloMeshSimple() @@ -51,7 +54,8 @@ void Sample_SoloMeshSimple::cleanup() m_pmesh = 0; delete m_dmesh; m_dmesh = 0; - toolCleanup(); + delete m_navMesh; + m_navMesh = 0; } void Sample_SoloMeshSimple::handleSettings() @@ -64,6 +68,12 @@ void Sample_SoloMeshSimple::handleSettings() imguiSeparator(); } +void Sample_SoloMeshSimple::handleTools() +{ + if (m_tool) + m_tool->handleMenu(); +} + void Sample_SoloMeshSimple::handleDebugMode() { // Check which modes are valid. @@ -175,12 +185,10 @@ void Sample_SoloMeshSimple::handleRender() m_drawMode == DRAWMODE_NAVMESH_BVTREE || m_drawMode == DRAWMODE_NAVMESH_INVIS)) { - int flags = NAVMESH_TOOLS; if (m_drawMode != DRAWMODE_NAVMESH_INVIS) - flags |= NAVMESH_POLYS; + duDebugDrawNavMesh(&dd, m_navMesh); //, m_toolMode == TOOLMODE_PATHFIND); if (m_drawMode == DRAWMODE_NAVMESH_BVTREE) - flags |= NAVMESH_BVTREE; - toolRender(flags); + duDebugDrawNavMeshBVTree(&dd, m_navMesh); } glDepthMask(GL_TRUE); @@ -244,19 +252,23 @@ void Sample_SoloMeshSimple::handleRender() glDepthMask(GL_TRUE); } - static const float startCol[4] = { 0.5f, 0.1f, 0.0f, 0.75f }; +/* static const float startCol[4] = { 0.5f, 0.1f, 0.0f, 0.75f }; static const float endCol[4] = { 0.2f, 0.4f, 0.0f, 0.75f }; if (m_sposSet) drawAgent(m_spos, m_agentRadius, m_agentHeight, m_agentMaxClimb, startCol); if (m_eposSet) - drawAgent(m_epos, m_agentRadius, m_agentHeight, m_agentMaxClimb, endCol); + drawAgent(m_epos, m_agentRadius, m_agentHeight, m_agentMaxClimb, endCol);*/ + + if (m_tool) + m_tool->handleRender(); glDepthMask(GL_TRUE); } void Sample_SoloMeshSimple::handleRenderOverlay(double* proj, double* model, int* view) { - toolRenderOverlay(proj, model, view); + if (m_tool) + m_tool->handleRenderOverlay(proj, model, view); } void Sample_SoloMeshSimple::handleMeshChanged(const float* verts, int nverts, @@ -264,8 +276,13 @@ void Sample_SoloMeshSimple::handleMeshChanged(const float* verts, int nverts, const float* bmin, const float* bmax) { Sample::handleMeshChanged(verts, nverts, tris, trinorms, ntris, bmin, bmax); - toolCleanup(); - toolReset(); + delete m_navMesh; + m_navMesh = 0; + if (m_tool) + { + m_tool->reset(); + m_tool->init(this); + } } bool Sample_SoloMeshSimple::handleBuild() @@ -278,7 +295,6 @@ bool Sample_SoloMeshSimple::handleBuild() } cleanup(); - toolCleanup(); // // Step 1. Initialize build config. @@ -560,7 +576,8 @@ bool Sample_SoloMeshSimple::handleBuild() rcGetLog()->log(RC_LOG_PROGRESS, "TOTAL: %.1fms", rcGetDeltaTimeUsec(totStartTime, totEndTime)/1000.0f); } - toolRecalc(); + if (m_tool) + m_tool->init(this); return true; } diff --git a/RecastDemo/Source/Sample_SoloMeshTiled.cpp b/RecastDemo/Source/Sample_SoloMeshTiled.cpp index 196d3116..9757204f 100644 --- a/RecastDemo/Source/Sample_SoloMeshTiled.cpp +++ b/RecastDemo/Source/Sample_SoloMeshTiled.cpp @@ -13,12 +13,14 @@ #include "DetourNavMesh.h" #include "DetourNavMeshBuilder.h" #include "DetourDebugDraw.h" +#include "NavMeshTesterTool.h" #ifdef WIN32 # define snprintf _snprintf #endif Sample_SoloMeshTiled::Sample_SoloMeshTiled() : + m_navMesh(0), m_measurePerTileTimings(false), m_keepInterResults(false), m_tileSize(64), @@ -30,6 +32,7 @@ Sample_SoloMeshTiled::Sample_SoloMeshTiled() : m_statTimePerTileSamples(0), m_drawMode(DRAWMODE_NAVMESH) { + setTool(new NavMeshTesterTool); } Sample_SoloMeshTiled::~Sample_SoloMeshTiled() @@ -47,7 +50,8 @@ void Sample_SoloMeshTiled::cleanup() m_pmesh = 0; delete m_dmesh; m_dmesh = 0; - toolCleanup(); + delete m_navMesh; + m_navMesh = 0; m_statTimePerTileSamples = 0; m_statPolysPerTileSamples = 0; } @@ -77,6 +81,12 @@ void Sample_SoloMeshTiled::handleSettings() imguiSeparator(); } +void Sample_SoloMeshTiled::handleTools() +{ + if (m_tool) + m_tool->handleMenu(); +} + void Sample_SoloMeshTiled::handleDebugMode() { // Check which modes are valid. @@ -245,12 +255,10 @@ void Sample_SoloMeshTiled::handleRender() m_drawMode == DRAWMODE_NAVMESH_BVTREE || m_drawMode == DRAWMODE_NAVMESH_INVIS)) { - int flags = NAVMESH_TOOLS; if (m_drawMode != DRAWMODE_NAVMESH_INVIS) - flags |= NAVMESH_POLYS; + duDebugDrawNavMesh(&dd, m_navMesh); //, m_toolMode == TOOLMODE_PATHFIND); if (m_drawMode == DRAWMODE_NAVMESH_BVTREE) - flags |= NAVMESH_BVTREE; - toolRender(flags); + duDebugDrawNavMeshBVTree(&dd, m_navMesh); } glDepthMask(GL_TRUE); @@ -389,13 +397,16 @@ void Sample_SoloMeshTiled::handleRender() } } - static const float startCol[4] = { 0.5f, 0.1f, 0.0f, 0.75f }; +/* static const float startCol[4] = { 0.5f, 0.1f, 0.0f, 0.75f }; static const float endCol[4] = { 0.2f, 0.4f, 0.0f, 0.75f }; if (m_sposSet) drawAgent(m_spos, m_agentRadius, m_agentHeight, m_agentMaxClimb, startCol); if (m_eposSet) drawAgent(m_epos, m_agentRadius, m_agentHeight, m_agentMaxClimb, endCol); - + */ + + if (m_tool) + m_tool->handleRender(); } static float nicenum(float x, int round) @@ -506,8 +517,6 @@ static void drawGraph(const char* name, int x, int y, int w, int h, float sd, void Sample_SoloMeshTiled::handleRenderOverlay(double* proj, double* model, int* view) { - toolRenderOverlay(proj, model, view); - if (m_measurePerTileTimings) { if (m_statTimePerTileSamples) @@ -529,6 +538,9 @@ void Sample_SoloMeshTiled::handleRenderOverlay(double* proj, double* model, int* snprintf(text,64,"Tiles %d\n", validTiles); imguiDrawText(10, 240, IMGUI_ALIGN_LEFT, text, imguiRGBA(255,255,255)); } + + if (m_tool) + m_tool->handleRenderOverlay(proj, model, view); } void Sample_SoloMeshTiled::handleMeshChanged(const float* verts, int nverts, @@ -536,10 +548,13 @@ void Sample_SoloMeshTiled::handleMeshChanged(const float* verts, int nverts, const float* bmin, const float* bmax) { Sample::handleMeshChanged(verts, nverts, tris, trinorms, ntris, bmin, bmax); - toolCleanup(); - toolReset(); m_statTimePerTileSamples = 0; m_statPolysPerTileSamples = 0; + if (m_tool) + { + m_tool->reset(); + m_tool->init(this); + } } bool Sample_SoloMeshTiled::handleBuild() @@ -560,8 +575,6 @@ bool Sample_SoloMeshTiled::handleBuild() } cleanup(); - toolCleanup(); - toolReset(); // Init build configuration from GUI memset(&m_cfg, 0, sizeof(m_cfg)); @@ -980,7 +993,8 @@ bool Sample_SoloMeshTiled::handleBuild() rcGetLog()->log(RC_LOG_PROGRESS, "TOTAL: %.1fms", rcGetDeltaTimeUsec(totStartTime, totEndTime)/1000.0f); } - toolRecalc(); + if (m_tool) + m_tool->init(this); return true; } diff --git a/RecastDemo/Source/Sample_TileMesh.cpp b/RecastDemo/Source/Sample_TileMesh.cpp index c5c779e5..08854d65 100644 --- a/RecastDemo/Source/Sample_TileMesh.cpp +++ b/RecastDemo/Source/Sample_TileMesh.cpp @@ -61,9 +61,95 @@ inline unsigned int ilog2(unsigned int v) return r; } +class NavMeshTileTool : public SampleTool +{ + Sample_TileMesh* m_sample; + float m_hitPos[3]; + bool m_hitPosSet; + float m_agentRadius; + +public: + + NavMeshTileTool() : + m_sample(0), + m_hitPosSet(false), + m_agentRadius(0) + { + } + + virtual ~NavMeshTileTool() + { + } + + virtual int type() { return TOOL_TILE_EDIT; } + + virtual void init(Sample* sample) + { + m_sample = (Sample_TileMesh*)sample; + } + + virtual void reset() {} + + virtual void handleMenu() + { + imguiLabel("Create Tiles"); + if (imguiButton("Create All")) + { + if (m_sample) + m_sample->buildAllTiles(); + } + if (imguiButton("Remove All")) + { + if (m_sample) + m_sample->removeAllTiles(); + } + imguiValue("Click LMB to create a tile."); + imguiValue("Shift+LMB to remove a tile."); + } + + virtual void handleClick(const float* p, bool shift) + { + m_hitPosSet = true; + vcopy(m_hitPos,p); + if (m_sample) + { + if (shift) + m_sample->removeTile(m_hitPos); + else + m_sample->buildTile(m_hitPos); + } + } + + virtual void handleRender() + { + if (m_hitPosSet) + { + const float s = m_sample->getAgentRadius(); + glColor4ub(0,0,0,128); + glLineWidth(2.0f); + glBegin(GL_LINES); + glVertex3f(m_hitPos[0]-s,m_hitPos[1]+0.1f,m_hitPos[2]); + glVertex3f(m_hitPos[0]+s,m_hitPos[1]+0.1f,m_hitPos[2]); + glVertex3f(m_hitPos[0],m_hitPos[1]-s+0.1f,m_hitPos[2]); + glVertex3f(m_hitPos[0],m_hitPos[1]+s+0.1f,m_hitPos[2]); + glVertex3f(m_hitPos[0],m_hitPos[1]+0.1f,m_hitPos[2]-s); + glVertex3f(m_hitPos[0],m_hitPos[1]+0.1f,m_hitPos[2]+s); + glEnd(); + glLineWidth(1.0f); + } + } + + virtual void handleRenderOverlay(double* proj, double* model, int* view) + { + } +}; + + + Sample_TileMesh::Sample_TileMesh() : m_keepInterResults(false), + m_buildAll(true), m_navMesh(0), m_chunkyMesh(0), m_triflags(0), @@ -75,24 +161,15 @@ Sample_TileMesh::Sample_TileMesh() : m_maxTiles(0), m_maxPolysPerTile(0), m_tileSize(32), - m_sposSet(false), - m_eposSet(false), m_tileBuildTime(0), m_tileMemUsage(0), - m_tileTriCount(0), - m_startRef(0), - m_endRef(0), - m_npolys(0), - m_nstraightPath(0), - m_distanceToWall(0), - m_toolMode(TOOLMODE_CREATE_TILES) + m_tileTriCount(0) { resetCommonSettings(); memset(m_tileBmin, 0, sizeof(m_tileBmin)); memset(m_tileBmax, 0, sizeof(m_tileBmax)); - m_polyPickExt[0] = 2; - m_polyPickExt[1] = 4; - m_polyPickExt[2] = 2; + + setTool(new NavMeshTileTool); } Sample_TileMesh::~Sample_TileMesh() @@ -121,6 +198,12 @@ void Sample_TileMesh::cleanup() void Sample_TileMesh::handleSettings() { Sample::handleCommonSettings(); + + if (imguiCheck("Keep Itermediate Results", m_keepInterResults)) + m_keepInterResults = !m_keepInterResults; + + if (imguiCheck("Build All Tiles", m_buildAll)) + m_buildAll = !m_buildAll; imguiLabel("Tiling"); imguiSlider("TileSize", &m_tileSize, 16.0f, 1024.0f, 16.0f); @@ -147,141 +230,23 @@ void Sample_TileMesh::handleSettings() imguiValue(text); } -void Sample_TileMesh::toolRecalc() -{ - m_startRef = 0; - if (m_sposSet) - m_startRef = m_navMesh->findNearestPoly(m_spos, m_polyPickExt); - - m_endRef = 0; - if (m_eposSet) - m_endRef = m_navMesh->findNearestPoly(m_epos, m_polyPickExt); - - if (m_toolMode == TOOLMODE_PATHFIND) - { - if (m_sposSet && m_eposSet && m_startRef && m_endRef) - { - m_npolys = m_navMesh->findPath(m_startRef, m_endRef, m_spos, m_epos, m_polys, MAX_POLYS); - if (m_npolys) - m_nstraightPath = m_navMesh->findStraightPath(m_spos, m_epos, m_polys, m_npolys, m_straightPath, MAX_POLYS); - } - else - { - m_npolys = 0; - m_nstraightPath = 0; - } - } - else if (m_toolMode == TOOLMODE_RAYCAST) - { - m_nstraightPath = 0; - if (m_sposSet && m_eposSet && m_startRef) - { - float t = 0; - m_npolys = 0; - m_nstraightPath = 2; - m_straightPath[0] = m_spos[0]; - m_straightPath[1] = m_spos[1]; - m_straightPath[2] = m_spos[2]; - vcopy(m_hitPos, m_epos); - m_npolys = m_navMesh->raycast(m_startRef, m_spos, m_epos, t, m_hitNormal, m_polys, MAX_POLYS); - if (m_npolys && t < 1) - { - m_hitPos[0] = m_spos[0] + (m_epos[0] - m_spos[0]) * t; - m_hitPos[1] = m_spos[1] + (m_epos[1] - m_spos[1]) * t; - m_hitPos[2] = m_spos[2] + (m_epos[2] - m_spos[2]) * t; - } - vcopy(&m_straightPath[3], m_hitPos); - } - } - else if (m_toolMode == TOOLMODE_DISTANCE_TO_WALL) - { - m_distanceToWall = 0; - if (m_sposSet && m_startRef) - m_distanceToWall = m_navMesh->findDistanceToWall(m_startRef, m_spos, 100.0f, m_hitPos, m_hitNormal); - } - else if (m_toolMode == TOOLMODE_FIND_POLYS_AROUND) - { - if (m_sposSet && m_startRef && m_eposSet) - { - const float dx = m_epos[0] - m_spos[0]; - const float dz = m_epos[2] - m_spos[2]; - float dist = sqrtf(dx*dx + dz*dz); - m_npolys = m_navMesh->findPolysAround(m_startRef, m_spos, dist, m_polys, m_parent, 0, MAX_POLYS); - } - } - -} - void Sample_TileMesh::handleTools() { - if (imguiCheck("Create Tiles", m_toolMode == TOOLMODE_CREATE_TILES)) - { - m_toolMode = TOOLMODE_CREATE_TILES; - toolRecalc(); - } + int type = !m_tool ? TOOL_NONE : m_tool->type(); - imguiIndent(); - - if (imguiButton("Create All")) + if (imguiCheck("Create Tiles", type == TOOL_TILE_EDIT)) { - int gw = 0, gh = 0; - rcCalcGridSize(m_bmin, m_bmax, m_cellSize, &gw, &gh); - const int ts = (int)m_tileSize; - const int tw = (gw + ts-1) / ts; - const int th = (gh + ts-1) / ts; - const float tcs = m_tileSize*m_cellSize; - - for (int y = 0; y < th; ++y) - { - for (int x = 0; x < tw; ++x) - { - m_tileBmin[0] = m_bmin[0] + x*tcs; - m_tileBmin[1] = m_bmin[1]; - m_tileBmin[2] = m_bmin[2] + y*tcs; - - m_tileBmax[0] = m_bmin[0] + (x+1)*tcs; - m_tileBmax[1] = m_bmax[1]; - m_tileBmax[2] = m_bmin[2] + (y+1)*tcs; - - int dataSize = 0; - unsigned char* data = buildTileMesh(m_tileBmin, m_tileBmax, dataSize); - if (data) - { - // Remove any previous data (navmesh owns and deletes the data). - m_navMesh->removeTileAt(x,y,0,0); - // Let the navmesh own the data. - if (!m_navMesh->addTileAt(x,y,data,dataSize,true)) - delete [] data; - } - } - } - - toolRecalc(); + setTool(new NavMeshTileTool); + } + if (imguiCheck("Test Navmesh", type == TOOL_NAVMESH_TESTER)) + { + setTool(new NavMeshTesterTool); } - imguiUnindent(); imguiSeparator(); - if (imguiCheck("Pathfind", m_toolMode == TOOLMODE_PATHFIND)) - { - m_toolMode = TOOLMODE_PATHFIND; - toolRecalc(); - } - if (imguiCheck("Distance to Wall", m_toolMode == TOOLMODE_DISTANCE_TO_WALL)) - { - m_toolMode = TOOLMODE_DISTANCE_TO_WALL; - toolRecalc(); - } - if (imguiCheck("Raycast", m_toolMode == TOOLMODE_RAYCAST)) - { - m_toolMode = TOOLMODE_RAYCAST; - toolRecalc(); - } - if (imguiCheck("Find Polys Around", m_toolMode == TOOLMODE_FIND_POLYS_AROUND)) - { - m_toolMode = TOOLMODE_FIND_POLYS_AROUND; - toolRecalc(); - } + if (m_tool) + m_tool->handleMenu(); } void Sample_TileMesh::handleDebugMode() @@ -329,10 +294,7 @@ void Sample_TileMesh::handleRender() DebugDrawGL dd; // Draw mesh - if (m_navMesh) - duDebugDrawTriMesh(&dd, m_verts, m_nverts, m_tris, m_trinorms, m_ntris, 0); - else - duDebugDrawTriMeshSlope(&dd, m_verts, m_nverts, m_tris, m_trinorms, m_ntris, m_agentMaxSlope); + duDebugDrawTriMesh(&dd, m_verts, m_nverts, m_tris, m_trinorms, m_ntris, 0); glDepthMask(GL_FALSE); @@ -383,138 +345,10 @@ void Sample_TileMesh::handleRender() if (m_navMesh) duDebugDrawNavMesh(&dd, m_navMesh); - if (m_sposSet) - { - const float s = 0.5f; - glColor4ub(64,16,0,255); - glLineWidth(3.0f); - glBegin(GL_LINES); - glVertex3f(m_spos[0]-s,m_spos[1]+m_cellHeight,m_spos[2]); - glVertex3f(m_spos[0]+s,m_spos[1]+m_cellHeight,m_spos[2]); - glVertex3f(m_spos[0],m_spos[1]-s+m_cellHeight,m_spos[2]); - glVertex3f(m_spos[0],m_spos[1]+s+m_cellHeight,m_spos[2]); - glVertex3f(m_spos[0],m_spos[1]+m_cellHeight,m_spos[2]-s); - glVertex3f(m_spos[0],m_spos[1]+m_cellHeight,m_spos[2]+s); - glEnd(); - glLineWidth(1.0f); - } - if (m_eposSet) - { - const float s = 0.5f; - glColor4ub(16,64,0,255); - glLineWidth(3.0f); - glBegin(GL_LINES); - glVertex3f(m_epos[0]-s,m_epos[1]+m_cellHeight,m_epos[2]); - glVertex3f(m_epos[0]+s,m_epos[1]+m_cellHeight,m_epos[2]); - glVertex3f(m_epos[0],m_epos[1]-s+m_cellHeight,m_epos[2]); - glVertex3f(m_epos[0],m_epos[1]+s+m_cellHeight,m_epos[2]); - glVertex3f(m_epos[0],m_epos[1]+m_cellHeight,m_epos[2]-s); - glVertex3f(m_epos[0],m_epos[1]+m_cellHeight,m_epos[2]+s); - glEnd(); - glLineWidth(1.0f); - } - - static const float startCol[4] = { 0.5f, 0.1f, 0.0f, 0.75f }; - static const float endCol[4] = { 0.2f, 0.4f, 0.0f, 0.75f }; - static const float pathCol[4] = {0,0,0,0.25f}; - - if (m_toolMode == TOOLMODE_PATHFIND) - { - duDebugDrawNavMeshPoly(&dd, m_navMesh, m_startRef, startCol); - duDebugDrawNavMeshPoly(&dd, m_navMesh, m_endRef, endCol); - - if (m_npolys) - { - for (int i = 1; i < m_npolys-1; ++i) - duDebugDrawNavMeshPoly(&dd, m_navMesh, m_polys[i], pathCol); - } - if (m_nstraightPath) - { - glColor4ub(64,16,0,220); - glLineWidth(3.0f); - glBegin(GL_LINE_STRIP); - for (int i = 0; i < m_nstraightPath; ++i) - glVertex3f(m_straightPath[i*3], m_straightPath[i*3+1]+0.4f, m_straightPath[i*3+2]); - glEnd(); - glLineWidth(1.0f); - glPointSize(4.0f); - glBegin(GL_POINTS); - for (int i = 0; i < m_nstraightPath; ++i) - glVertex3f(m_straightPath[i*3], m_straightPath[i*3+1]+0.4f, m_straightPath[i*3+2]); - glEnd(); - glPointSize(1.0f); - } - } - else if (m_toolMode == TOOLMODE_RAYCAST) - { - duDebugDrawNavMeshPoly(&dd, m_navMesh, m_startRef, startCol); - - if (m_nstraightPath) - { - for (int i = 1; i < m_npolys; ++i) - duDebugDrawNavMeshPoly(&dd, m_navMesh, m_polys[i], pathCol); - - glColor4ub(64,16,0,220); - glLineWidth(3.0f); - glBegin(GL_LINE_STRIP); - for (int i = 0; i < m_nstraightPath; ++i) - glVertex3f(m_straightPath[i*3], m_straightPath[i*3+1]+0.4f, m_straightPath[i*3+2]); - glEnd(); - glLineWidth(1.0f); - glPointSize(4.0f); - glBegin(GL_POINTS); - for (int i = 0; i < m_nstraightPath; ++i) - glVertex3f(m_straightPath[i*3], m_straightPath[i*3+1]+0.4f, m_straightPath[i*3+2]); - glEnd(); - glPointSize(1.0f); - - glColor4ub(255,255,255,128); - glBegin(GL_LINES); - glVertex3f(m_hitPos[0], m_hitPos[1] + 0.4f, m_hitPos[2]); - glVertex3f(m_hitPos[0] + m_hitNormal[0]*m_agentRadius, m_hitPos[1] + 0.4f + m_hitNormal[1]*m_agentRadius, m_hitPos[2] + m_hitNormal[2]*m_agentRadius); - glEnd(); - } - } - else if (m_toolMode == TOOLMODE_DISTANCE_TO_WALL) - { - duDebugDrawNavMeshPoly(&dd, m_navMesh, m_startRef, startCol); - const float col[4] = {1,1,1,0.5f}; - duDebugDrawCylinderWire(&dd, m_spos[0]-m_distanceToWall, m_spos[1]+0.02f, m_spos[2]-m_distanceToWall, - m_spos[0]+m_distanceToWall, m_spos[1]+m_agentHeight, m_spos[2]+m_distanceToWall, col); - glLineWidth(3.0f); - glColor4fv(col); - glBegin(GL_LINES); - glVertex3f(m_hitPos[0], m_hitPos[1] + 0.02f, m_hitPos[2]); - glVertex3f(m_hitPos[0], m_hitPos[1] + m_agentHeight, m_hitPos[2]); - glEnd(); - glLineWidth(1.0f); - } - else if (m_toolMode == TOOLMODE_FIND_POLYS_AROUND) - { - const float cola[4] = {0,0,0,0.5f}; - for (int i = 0; i < m_npolys; ++i) - { - duDebugDrawNavMeshPoly(&dd, m_navMesh, m_polys[i], pathCol); - if (m_parent[i]) - { - float p0[3], p1[3]; - getPolyCenter(m_navMesh, m_polys[i], p0); - getPolyCenter(m_navMesh, m_parent[i], p1); - glColor4ub(0,0,0,128); - duDebugDrawArc(&dd, p0, p1, cola, 2.0f); - } - } - - const float dx = m_epos[0] - m_spos[0]; - const float dz = m_epos[2] - m_spos[2]; - float dist = sqrtf(dx*dx + dz*dz); - const float col[4] = {1,1,1,0.5f}; - duDebugDrawCylinderWire(&dd, m_spos[0]-dist, m_spos[1]+0.02f, m_spos[2]-dist, - m_spos[0]+dist, m_spos[1]+m_agentHeight, m_spos[2]+dist, col); - } - - glDepthMask(GL_TRUE); + if (m_tool) + m_tool->handleRender(); + glDepthMask(GL_TRUE); } void Sample_TileMesh::handleRenderOverlay(double* proj, double* model, int* view) @@ -529,6 +363,9 @@ void Sample_TileMesh::handleRenderOverlay(double* proj, double* model, int* view snprintf(text,32,"%.3fms / %dTris / %.1fkB", m_tileBuildTime, m_tileTriCount, m_tileMemUsage); imguiDrawText((int)x, (int)y-25, IMGUI_ALIGN_CENTER, text, imguiRGBA(0,0,0,220)); } + + if (m_tool) + m_tool->handleRenderOverlay(proj, model, view); } void Sample_TileMesh::handleMeshChanged(const float* verts, int nverts, @@ -548,31 +385,12 @@ void Sample_TileMesh::handleMeshChanged(const float* verts, int nverts, delete m_navMesh; m_navMesh = 0; cleanup(); -} - -void Sample_TileMesh::setToolStartPos(const float* p) -{ - m_sposSet = true; - vcopy(m_spos, p); - if (m_toolMode == TOOLMODE_CREATE_TILES) - removeTile(m_spos); - else - toolRecalc(); -} - -void Sample_TileMesh::setToolEndPos(const float* p) -{ - if (!m_navMesh) - return; - - m_eposSet = true; - vcopy(m_epos, p); - - if (m_toolMode == TOOLMODE_CREATE_TILES) - buildTile(m_epos); - else - toolRecalc(); + if (m_tool) + { + m_tool->reset(); + m_tool->init(this); + } } bool Sample_TileMesh::handleBuild() @@ -614,7 +432,13 @@ bool Sample_TileMesh::handleBuild() rcGetLog()->log(RC_LOG_ERROR, "buildTiledNavigation: Could not build chunky mesh."); return false; } + + if (m_buildAll) + buildAllTiles(); + if (m_tool) + m_tool->init(this); + return true; } @@ -678,6 +502,54 @@ void Sample_TileMesh::removeTile(const float* pos) delete [] rdata; } +void Sample_TileMesh::buildAllTiles() +{ + int gw = 0, gh = 0; + rcCalcGridSize(m_bmin, m_bmax, m_cellSize, &gw, &gh); + const int ts = (int)m_tileSize; + const int tw = (gw + ts-1) / ts; + const int th = (gh + ts-1) / ts; + const float tcs = m_tileSize*m_cellSize; + + for (int y = 0; y < th; ++y) + { + for (int x = 0; x < tw; ++x) + { + m_tileBmin[0] = m_bmin[0] + x*tcs; + m_tileBmin[1] = m_bmin[1]; + m_tileBmin[2] = m_bmin[2] + y*tcs; + + m_tileBmax[0] = m_bmin[0] + (x+1)*tcs; + m_tileBmax[1] = m_bmax[1]; + m_tileBmax[2] = m_bmin[2] + (y+1)*tcs; + + int dataSize = 0; + unsigned char* data = buildTileMesh(m_tileBmin, m_tileBmax, dataSize); + if (data) + { + // Remove any previous data (navmesh owns and deletes the data). + m_navMesh->removeTileAt(x,y,0,0); + // Let the navmesh own the data. + if (!m_navMesh->addTileAt(x,y,data,dataSize,true)) + delete [] data; + } + } + } +} + +void Sample_TileMesh::removeAllTiles() +{ + int gw = 0, gh = 0; + rcCalcGridSize(m_bmin, m_bmax, m_cellSize, &gw, &gh); + const int ts = (int)m_tileSize; + const int tw = (gw + ts-1) / ts; + const int th = (gh + ts-1) / ts; + + for (int y = 0; y < th; ++y) + for (int x = 0; x < tw; ++x) + m_navMesh->removeTileAt(x,y,0,0); +} + unsigned char* Sample_TileMesh::buildTileMesh(const float* bmin, const float* bmax, int& dataSize) { if (!m_verts || ! m_tris) diff --git a/RecastDemo/Source/main.cpp b/RecastDemo/Source/main.cpp index 9dffa28b..7008a75d 100644 --- a/RecastDemo/Source/main.cpp +++ b/RecastDemo/Source/main.cpp @@ -350,11 +350,8 @@ int main(int argc, char *argv[]) pos[0] = rays[0] + (raye[0] - rays[0])*t; pos[1] = rays[1] + (raye[1] - rays[1])*t; pos[2] = rays[2] + (raye[2] - rays[2])*t; - - if (SDL_GetModState() & KMOD_SHIFT) - sample->setToolStartPos(pos); - else - sample->setToolEndPos(pos); + bool shift = (SDL_GetModState() & KMOD_SHIFT) ? true : false; + sample->handleClick(pos, shift); } } else @@ -700,7 +697,7 @@ int main(int argc, char *argv[]) // Tools if (showTools && showMenu && mesh && sample) { - if (imguiBeginScrollArea("Tools", 10, height - 10 - 200, 150, 200, &toolsScroll)) + if (imguiBeginScrollArea("Tools", 10, height - 10 - 250, 200, 250, &toolsScroll)) mouseOverMenu = true; sample->handleTools();