From e67f92d413e644e06b0419eb4b77bdb78b9d60c4 Mon Sep 17 00:00:00 2001 From: Otto Naderer Date: Wed, 14 Nov 2018 18:17:25 +0100 Subject: [PATCH] added sounds and dispatcher wip working --- prj/flasim.pro | 10 +- res/guns-scene.blend | Bin 446224 -> 547012 bytes res/guns.mtl | 16 +- res/guns.obj | 1521 +++++++++++++++++++++++++++++++++++------- src/Aircraft.cpp | 57 ++ src/Aircraft.hpp | 18 + src/Dispatcher.cpp | 70 ++ src/Dispatcher.hpp | 24 + src/FireUnit.cpp | 84 ++- src/FireUnit.hpp | 12 + src/FlaSimApp.cpp | 20 + src/Globals.cpp | 21 + src/Globals.hpp | 9 + src/main.cpp | 7 +- 14 files changed, 1606 insertions(+), 263 deletions(-) create mode 100644 src/Aircraft.cpp create mode 100644 src/Aircraft.hpp create mode 100644 src/Dispatcher.cpp create mode 100644 src/Dispatcher.hpp diff --git a/prj/flasim.pro b/prj/flasim.pro index 551b127..4791ada 100644 --- a/prj/flasim.pro +++ b/prj/flasim.pro @@ -8,7 +8,7 @@ TEMPLATE = app unix:INCLUDEPATH += /usr/include/irrlicht win32:INCLUDEPATH += ../pharus/external/irrlicht -unix:LIBS += -lIrrlicht +unix:LIBS += -lIrrlicht -lcAudio DESTDIR = ../bin @@ -16,11 +16,15 @@ HEADERS += \ ../src/FlaSimApp.hpp \ ../src/FireUnit.hpp \ ../src/Globals.hpp \ - ../src/TurretCamAnimator.hpp + ../src/TurretCamAnimator.hpp \ + ../src/Aircraft.hpp \ + ../src/Dispatcher.hpp SOURCES += \ ../src/FlaSimApp.cpp \ ../src/main.cpp \ ../src/FireUnit.cpp \ ../src/Globals.cpp \ - ../src/TurretCamAnimator.cpp + ../src/TurretCamAnimator.cpp \ + ../src/Aircraft.cpp \ + ../src/Dispatcher.cpp diff --git a/res/guns-scene.blend b/res/guns-scene.blend index f23ed0c979b689ad0061502936506f08fe7a5a17..950fd7e2beef65b8bbeaa347b2ce29af485685e9 100644 GIT binary patch delta 91852 zcmdRX34B!5_5ZwC!V3}zB!Pq^8U!Rl*aU1)vI*2tK|xSa5sZiiWnUEA+JstvPU})r z)Q3CN)}~f1u7g!pwT@LQ)Gbx(Zkx8YMO)iwwfxWaee-5W?B376!za9V?>*;x&OOUr z-h1=r>RU=5yJyhVMUf5T%Ug@*#^MKlb!JEFMW?iGbZ6w|=5FuREARE--vI~Yz0Q9< zd-jq)l=aw~+Ikbc{^jNMdA(1cg4g@@D|$T^%V}9Z#+h5#uV25{gMU4G-s`=4_xAs|%zwRl^|HTAZJ?P-PivH$+j9qjZk(o!nM^@q?nb%`nd);l`t<4d zdVb%+*K>RJVlC$uvUd6TedUk)7mdcaU$dv>&wcAxf{D(6h&%And@{(IGi7OW9#OMq?D{;{Cx+Tt8A zX7M>)sXd#G(`B&yqk)o>(}VrGIo`e68dcerMvU{3EuEiV@OobFzT4TTU8*b+{#8r6 zuEh2I795-u>DWdb2i>A|nO4@cP=iP$%7L*Z-c>xS zdVkx(y?ax}rPHuWb!Wu0Q}FMJ<)8+9u5nzrV@h`c5$s#{)-4e0vJtzo?2IWrd-mL( z9Sr}7Wo3Y?7?|2mO;ss9LZBQRmocz$nniV7p3$Y6_5Wx9u(Y6o)>jOCddlB&d{D)p znn){hKBrZeDo&f+mD4}Vk}54dRgiY;4;r|qo^gWN#OK-FQQq_f2SeHrJ0l+;JjAm4 zr1rFb$%ryORSaye&ko06H`wA(Z9fC1vu0XX>c#8H02xE+-x~dcMv?KT;=ng1sl~I$ zqO_Hv9)?XU4a{;u)g*#;kmcgylYb;jpc)@#+#%JtfBVg&AneX^Jl^!}>#thk0n6pR zZgWO_QZPIIUaP5UG*{*i>6nCYLELd8hfZ28E~n#-t;Q2gZtej*YjvsClq3I{_Gh;AqE&N*gO3F+m%k|74^;PRjP*-!_uY#WG>b$xaBF5BNga0Pee zw*2AF-{r4#-sSs&O@jBc4b_eRM@_?nz`dhfXM8Yl{+5>z#$78hshW2KU8jDgMKb*p zZ4pJf@(;|WiluXkQ=Ox?8%4$kU6YR6%#|0%F7R3Qy`%D-@%t;$bz&o_c_t<$Xe8B% zCnv|<*n0J(F5)>3#6*R9Z zpXpn4g46B3y%Q^)s^F-NR#q#!i=6S9(yB*v9Zi{Co2eU&S2_kJrficm+tG|zl7jR=vcas;fssQ_f=F3^VVJNl(g2DxuvCL ze`P7&x>3%UA(TVS<>lr3N=r+LvY5mTq(44aq<;O1b};2_>o1#f7s=^Ca?-7g0~y?f zeg*x#74xD6t@Q`Gg@r}ieK{3`|5xhLzJUW-%aRNk`T2z+UhZZo6v9~%t4U<|f}7;DpM-(7!M{DF#WL!ko) z9ynwlIk>)cY*i12r#!XJ3_Pf?uy7ljsVntqz7)Fkn@_u$dT>vLdPA+mj)o^#U;5kL zg#c2#OzacXo;?ZM{9yfM(;g~gwO||W7gRs!prLAsEXDhmQB;a$f{LqEGy;|cEhTJK%uit#t zU8LWW0}xIuheL_Os9(VV)30|Ab}^U;ltQ&|8>cgDj}Ur-lzXy}?WeBN)Kza(kS0B7 zJ<$iK`S1jX8`AiR^_R`vlh47T)-R=Dqe8nDb=_RboU%gJ2GW_zEc4X*%jfOs)30CQ zc36d+Ai~yfo;E7KsHkWg+mxlzP%hqiiln{3yD8FFeO+EYSfowLkHunj><8|nc(dWD z@N*>M1->@XjJR-fdy-Do`5XfS2Wmo^KF_Yd?ChUYR|>Zq@pc;jiFiyOI@XaY0*yc- zUp&74^0R)H&y52Hlu+Y=)OU{KDycj8;K39VZ1b{x9_jKD!xylv2Ms!SUwQdKOud7q z5VLRpd`KC{DnGUgmt6TkldF5s%v4SGb`wKD1xN5oe$UB=Oynd21ZnjU|2*1tKq ze_qQg#|fd!UGQ3Soa5ZeP_NLIoDC80og8OS^ufz65Oqquii;h0ddHs8GZ`31cg)#m za@jxraI33aFF*2l-Hty!SnstQ;*_=4NAuj9)NP4gBry4= z>s%hrs~mTy2$5s*q63`CdA$=`)ot-@eDv~rge$z`uW<6cQKvet7cOxQj;+lnos!O> zPL<=GG|;JwRd9!;@3Gyh%nYTmrZ)0~M`Sh0-lfhV;b!#hyVMzukj`VZujm`s;crE# zDdbizJ{fkb4A6r=W&FTp-mqb;2%Qyj56<9k4uJsx8w>!7FaW}Lb!cJ8Ez1B1fgb!# z#t&TPkD3BYnZJLKpS%nP08|?QfEgfW0Lw!QLhgw{fKUkZ;CGE5xXhnp{3}D}gxqNX zevUFQ0HFOC3pWE|fF1^LB?Eju06_Ji2Y;LK1DE+Z z*8nbO6XvG@m>=}uFE)PQGJj9wznb}bmLV6L8yEl#0Eim^fEnNb1GtidDCz?UKj^`a z1O+bh_wxBEi2tgIKBb{~wg7+u0EyZ!ND=~=0rCu>C3JMiJtETrpa*~PPcugf=I?F% z-wquaa>pBgGYv;#0b>9_o0S2~0DTPLGzJ)zsQ~D~kD&^RFn>PtQ!2bMisE68@;CE% z$O?b~08}L(05d>et^t6JmCWBl`H7+I2_j+I&Z}>hG1R?LkBOB!dohH5TI!bdyTm*H zKsHUspiOKeTJQZq&a9Z8ZmM)nkF`BZ zgCCEE;~YKr-W=?V7z$;&1B>rqu(3l3Oiu;O-NRsSmc+(8Q9kts9YR>>&{il`o7o9> z7h|nB#90v2Q^D%komNcFy%m+th?w-)6N*%TLe5$BVcwa;ooFuRhP%A6t~0><>TqXc zdHmBpGCAQW4k4YS>@|#VzB=Ta8jReskyKT>z?;i_UFY z-8%M2@4YH#j!rY)F(aL7*HF*%R*ZHAwASY*H;;5SI_1T;sKaq&sZAtF%HERE&X)=; zbgnn~l8ro5l_rbFIJr(VLbJIyy~eq|<_u5XG0qv~#N6#P z6Y@NEoVWLIXSuieMJG2Zb>Erb++Sw-?Mtxn!ez-iC!TQBsS*AVUHNA^&~!)_`q1p?|sVgSytS#l3pIblZ{q z_srANYQ2hDXStM!Fyq4%85LAu4z3FzdcPkKEBD4sbefu-P<-+gUmW;Q{-s|V4^FPb zdHT4qp3iST@wW|EeDQ`ye{k-AouN=m9Yw;Uk;^YWI25W#f_C4&qlv%ea4tXn{ck2C zmw!4U6xz6h%ikvcn_f8fsC`Q=X8z=}bvbFeg!cioHW>SpazISXo@Z+E$N4&Gp>pdY>>pgwA z^X=H$P~$xK=4{_LZRVS%->8pR692I!|MJys|7PD9qVJpYn&E|wVoB~JS(`mGK~DYu z)HB~9%f9o{H5s0H_Jcov?vueWpFil?XUH=Op`KySKKsFiM}?P)XX>2fo;v4Dr&opf zrjm}CzKKQIKv}MVu^4(k*O)7O*Vs%iE|bLRsje9{X3SwcC{W^jJGyt{EcoU;-#4jW zs814hgl~9Jd|U5bUHj&ZvCcuUmgU!_wtJfoa}M;j9p+ScUoUfdA9?qp8$Y+>#oHc+ zP3c_fP{t9-6cFP(tf~3MM{4TYIQTa%eULf6yYJ{nTOO>TB+34$%YOfTZ}PBL+@p|8 z3m&N1&OD*e7lr@!EdIp@U4Gx?;x={J$0s!IY9HPEC`Vmp$rK`caWc7Vx2$9mvt@Y< zCS)D=^O$+a_n0kjWsQ~Pv2kgSz2SRox9_nnmQ8M!$C~T*ZvC|XXL{_X?vwj@th3kE z6KJ^eJ;p;H*JWE89t(&Gcf)un;frtxZ!Ra z{(iS-G|kZQM?)QDl1!9fkA~i0{uc3I=$)2(G||*!18;8J)%4?s8?rn`_7ab=-LgC; zX3O#zOvpO!=P~n;?=joZ$f`QaW8=+Zx5X-_EVvL!_M-2y_*`)`g6<|X#~u2nV2ohWiVlvE;ASTF0)On>?N~YHoE}a@0~=zI~~4vw%FpYBWny~TmE|&=mEqm@6ZB$;^u&N z%(_`~oqFd$vMw*sHwPBzH@)!VWN7K9S>DZ9pno639ebA-=%I`?MasOhy9@7#g|fT@ zYjx=z^M>yoyILXF{=_?8{UoQS_hMr%YjeUCzZKP?NcP}m5S;djwn-iUqft&B+0xAz$TefZW zz2B%^`}sSzC!el!7COB`Z=7ZmH7S%egor*_W`J%Cx?hl5w|z6%MIX8L;+vr(=H{=P zjoyFk_rBVCy~V76LF10!4A_>{`#ZcHwT_!3vo#S?GhXadz6MXMC18TEP&@x+1 zK*wwoh*DW5fP!6`z`E?4z%Cui^()^5c@FIbKBs$u{6W4ga+dgeXq)RcWJN+~;KL8y z(eI(U?+qCyd+1O0HP`arqdh*hJv5hCvEZkxI_40XG-4n{!=aY?AOfFvRd+`3h|om_ zK77Po{T|x!`Gdbt(brN(v^(fH?C$D%?7=rXLChTw%Swm%iH@*||AKqJQ8)hnFEJmM z{T1dII%Yejm@Sm$7+8xD_lr$)gzp%;CM*{w1CF63zc_|2?F6oF^z%K_W*&)Wd8X~0 z0o!s$?W$Y8=4axWt9N}kiT`*JuU9v?#F_;^UDe@=M*uP4nUhY69Th~_edm(*Qa z_U4!^lhZ5v1AWJI+HBTjn=%X^Fyo~AKl(R2h7do)F=VXq+0HTp^97I4_2ih(lVf%l zKI%J0+x`C!&*aZ^3_ErVIp*}^2L&9Hu=|F4X)&Mam}pEal;s&%i)HTT8S{ki8M}`o zw^IV1p#?m~vUUD0d5rIv4qF7eS>t-gxuvz7G5g zxoJFS3>m)5jG^`&LB|mPuF;e+ryjp)BAe-ny)zDH%u|maB;`=3J|knUBL30j7-|nV zCe&gZVmf9!Ml6)&7+9-I$Cx90$Jo6IxltBy3@y_wWjX>^0}uB-({8g&TQ{Eh_l;%n z3?X*mnLod|S3J>bp6PBZqjvEO#xnNI81l?>4_srO2#IIdX8PfjX&H~@{ME$IDf3*$ zST@G423GHPH82_z3uSo*)?x|!rHpw3o-sA_7N~e8+1cQ@PAqXtvwz7x+KcaX^L=l= z*UbyOpG>9&p4|AB1>VLfPE*l@_paIY`Z-g#AF?l>7I~r2fd5-vccfQ7)hRt`!pfd? z5C8t%t+!5pYX^_<)$d(X`|3GU>niu<%UZC6NGIMsZQI^W^JUK8n|D@C#jb(dzrE}@ zX`hu>RDW&$t=pFk|C8{`(3!k)sx!igrS`vX;9BLSM?3cyUaEJg_K`-+=Kdc)u)zC4 zuPN@#8M&di-uds0>9II^kUTsw$L<#f{`ErOQM$wfiM_RI^wN6pM)3%IJQKz*Fb_=%CVCb&-DrXNtcpIlV73FTr zOt~wHWBdua`AGEfpYTn{#+8u~MX2gwqTDB`DOo<c_^;Fv+dQJ709l zQ3smD(@LW_C(U3Q)PY9C6Rz+ke>;THk2CFdHy6)7BISty1k z@rVGVkXX?p>mBOVp6~Q5Z@*K8;+R^e)=XSNN3|ZR&@*dV8o4-m$LUTEjetUX&*|iO z=1x8{mpdzn-ntc$^PH1MrYu+D zb^0j6T03rdQSauuyKJa=qKlyh%t-UZksOUO)W|8xM^owu#TOPGYET7|&Kf0A6d7tz z1(He|0EJbD8dQO#(*y~t3^nDb0!hjQ2`djgr6-{ZB=JeAi_c0u;m_n8J#yew&?)G^ zH-{}i-4;A=dLzvAe#Gc>9|(qT^ZSq(ZA`f7$j zKnK2J3su4M@)kIyHK+m!qS|LQ=*c<9QP!tzEp$8?6~qL>yO_{MA{Q`#x0yibhXB@q zb(YWoZWQ2Xw=$5B6&iUBU2wR&?U5eigbWEpk0yzNksyJPYGZ*g#H54rE-s23{bB1 z#aFDb$|%4w$I3v05aIM1cp}c?NLU%N+ASN@UhBHx*kT-zg}l+e@9csjj%Trq6C7e_ zPu4j`fqtyDGGu{6wDWfI$|#GY-O7-KELRSR$1D!l9!B+L*-#;}EFO&nYIRx}!q%Fx z0`UkEuxxqWW*cM0*eI-?Sj#BD(P3pEp(o1WaNn~yieFF}kkxK#HF3On4a{K_kP){s zWI=|EChCzajbf9!(37y5#WMxPbeKJ`<0x4KzKpM=Ij+B^?=mHnqh$nLc zFL1F+!2&mBs}_vZ0!X@G{LLIy(@V6Ajoy_Rb>a09@))Hr)6B9&UqRpy>a!@w$s4lV4iIfds2nE<)7en5GE1mw{;$=>G z*&KbWJ8s8RLX}N?-B%V>P*$66e%Pr<#+Ew^Xgw*kvYuq_L^!gqd{=JvK zGThVq>ndk>EwqHz@yAqa^ag7|q*XD7Na>BY?E=#JORGui%WNTP$M_YhwR@GXHL9Ss zHr@O|xFT7!hPBoTu`_dfn`*-a-Xq&1Ly}Kl;7oO*4DAi75C5SST0(30an%~VfsHeQ zl>$X=?)Cl>X+8HM()v334g}ZRG4&1AI??KDjVfrZO^2QqsYrf!k=R;j#n#N7T=PY? zH3NFi)bQK%Y-23(5kE%IFfVexo!&DqQn2J|t|j5Te0zgJ8s%ZMJnD@QrzMYkWrOGn zsLlzL3$w~a(n_7-uOtvXe}w)fzPvJaeq@9<=8;H_x3R*>p$7x$LQs49X;>k&3pQYs z>oP$gd-M|REpgy@GrsIp`>Kc?Q#V_uZew|} z!$%eRl(?0fPJJpeD0#tE^blvcR0OOT-=rAA=za8bq&(U0Y8n&E(Eucug%G16iXFy$ z(`k=My(j6;P~M@tBcqeE*E`c4*VKH0zXLVQ+kK7mQ1lC&{H;HYj4Mj;Dd9Czp72gW z;+^e#x;N%Jr?>{@fw|(m$0d505oW^df#}nT=hExQT%HaK2|K2~tvzt>U_I4bR)tO` zZl|VXk;fNAfvBW@o2fDHJ1YzQw7CNvA!zo?+4AkA*gZXD%1=Zlz?4|3DSRG4*{dC+=dU zwBJ?*y`?F6^R3kHn3Bmz$W$8gZ)~EFugnU0E+@Bsi$h*y1w#Ir+ns4nnO)Y{NA49D znAc-4^&q|%;PjioDa>O+S(1CBQ@d=*yDMO;jDfJ&#)%vY?gqgZGVD9BZu%Sk>tr`;lM&V>DJx?bK|En>sI<(I$mAOi zy{-7y1q6k&cP@0lkALJE;k@2FL8D$5U zT)xFwqARX)PW|oLurK9qaDv}-riljJ$j6{N7e{p z(SrmCNb=&xdF!LP$vTj!bsb0$QSXr_oW~2RvKE6}PF|am#US@Kuo$HM&opO}Sq)Z9 zSsB)q6l1GezQFHdO>g8+co+GMcF8~f$h!Cx%cF&DRiV|OU#TakCAsw{Y(zN^7%}mr zp)n8l?)#p*hirp-V8j`n_!R5IJ+duSi5%gKlDzUct`)t!yce8zbRGZU3(li4>8H16 zexzV10tdq`x{Sclq3gpJDYR$U(`a@~{ls*Ao^{nFyj4NX#BOfdw32pux4$GiJ+27! zH~v#C3zoO_WeSMY&z$yh)C0(68SDt=PZAyXOytV`g;Bf}7e)$_O|NoBvxdp{*G48B z>izD9@Tl}XPFw8nqk&Nt|5w*2QpN|tV0%86$p<>{b-sSvaG5@QKyZeR z$OtwfqifkSPlUh@hRb^`vIc>N5aZL0*3^QK4O!_vBk=B z?1)g7NYVX37DtDbAxndiULC--R)#ESB>|}S>9RQ5tPEMAKSh*s$bKM;qut7oCE5^&D=wD(Ko*Dlmi8R71l#A3 zZ6ip~^=f1Bg<03DMToF~1T0O)0;uBsSwI4o4aNc}=>jPhkOC60q>Ken3G-r8S}~A- zrPEjd1%pY>=tc!3V5zkE0#JfZiuo*sRYn1hIaUS|Jg<7uhM+LY6t*KUVmLx!c}LKU z844?#_%k|VA^U)foXW@)(lGc*(nX64X&B)7qeqV|IfHoE2)Xo?*Ko)kxm+GJOxgA! z@%n{4kn|3vUa%SaC7zr4RY!I4+jV(XT`^qV48fyV3qgStlYN3&vUCX5|In)|3?J(` zeZxb&y9>jI#aN|Q@BJIY17dSXqp;@`g$ES5ADt@-xts2i5lxO>>#*>YURUVblPbSK zM{n%p@c5|eM$bl#Gi|lod#C8JO}_%L<9RCIMCWZs-A<<1V%KoIu~WkIUc#7nMZd5s z1@DC6bOCj9zi@smCv{*ca(vuR zOw#3EeqlJbjH$@v;7Yx!WkK_Pc2jt;x3?&Ke+ES2Q-)yA=Ea|%EFMiQzKE37s^j%_ zQEh+S!~^M}&fvV%JNhOPIr5_CAaC~}POQviL3ZLbm93gD91wmfLu~x7zSz_X5=UCg zk!76kjhW%(mKgv5<8LUSbjtg*I14b9HpQ7M=xrTL?KSc;nsK~Mo3iK=AN!`0cTMd0 zX(Sp`Hw?NhTrdG1f+rx}Rwp5MimC%w#Fx?wJj6ofO?BV47kurL4`)arz2Qh$k~f!y zw?tzLM=d++JbDw`ACl7#4qq5)MrI?^-JjUn)YhmNrZNUaG8)EJsPO{n$HB^7+Z?n1B`7=5X)C_O4BQhPN@QkozXL{(#$*M(r z1AVpds8GxGlf4;*;i}xXv^q4<`_&=gLwmd(Dh<(J>)640&^<+ZzvVUFA80EZWv!; z;K#zN#%tQf&s{C4)pVRjWZM)yruOJ2uH!xMbl{>g2Ez zh@Rg?WBz1jsF)sL7#}+!ozEl9rzQ~^BtB3LL^IJK4;nPCIeXEv*0G26_Qj$m*1%0{ z+}Po138U0^1_%MEKd1odstD)<0n3{%TD52a*=9maH zNDU5?qs@mV1VY^p&4;Xv2rYzAdez&av*(|+?Cgu?U+De*75dVMFMGeH15RY(ild0Q z!u#DTk%=Wg4CoPXZ)lA9*W^Nv_@7h{F@ork4?R{bTC#lcqH`{yT(EXDxp2Yx}9bd3!)#_zS<}Y8lY&n@c(Cw@Scd`&x z%w^q2RiSYCpd*HIrnH2PV(hXg$H<*6T*c@x+V?M;xbWCMY02rz zoGIL1;Z2$ru8rle5;6yS_t!_o+U_wB1<~#*Gq-g-^?G-rSFdbby6T)|E0@e)yllbw z`F*fhp$4L%N_@4d0u>W)cBjh9g^RsWjp0LD>4&7! zIs|GXC;AknCCgbd8UO4oXABlKj)hpLkyvBSfMwqP3^f{8FIu*A)qD!Wm5pSQLk4E3 zliiw6YH3}?RO1*QJ0)$HA*@kZohbl?QWuzu%s%eB-6?eL%4KUfC&%Qc)$r?bj+R!+ zh1!x5GfDP*Jyc9`1SCQOcddEGG)w)WI}N;gb}m zQX*lh3561=FIps+ZQS>|QzCOH4l0q=vi~6cp+87Fhe|jc1+h@Wz1YIR)JuK5IAa-k z$_Xbk_!@NCoZp~K6(jZkRxu51G~l>JdHbnJ7WHOMjSZ0D<@2T(6is~9;>RqSSk;Z9ii#@@#mLxz3_lssT#4PPt>E<8)c(UVLaU%jtcY?<2eHQlIpE)5>u)rULd z@_eQIs_4-3S^7+%M8Y+<~IRF%SwR5?5Jxm>E*L zGjn_P)H$s~lXfXNEC-n`B z2N>t4-Rk2HZln4I)JWF`hrHZFENgapAD$8!EIHi(S&$w7ra8oPia+12Y}roItT(!E zK(t?(BRfmpOV`FEU3GEl{!q69?h%j#$%*ym1?zp{jqW60cV@V%wZ3Q1v{=B+JEurHN1aX`hIN( zupSF5W`UT-tlqH){R!Wzd_1fx^r=t)3c1&r`At#xoxh>blE&rBS)UO_`|0C1^;C7H zgS552PwZx28>gRSMIA&#mAGgAFdHR4>{bjbODFK$bx_}84d0+0Wx~ed0y^38@RsV-4nLtI2vN1 zM*K<(7c-6fQMYPj4oim)2q==(wEu`TH9cY#i9L>kU?}3=XklV@No>ws8%}SSJ@v$6 z8m0x;WlI`YFI>5((d#=gI<)j}5Y)ETkI0>4E2K-jJtM*+CPOB4h~H$!fKl%4UI%|b z8d(sOoURUzQ$6poaq6m&_i zpN1l#Pp<6IXrONJ-an1{4QY^`y2bi!{ZAyjm%eKG!Uby2OE0KN>feh z7wWLoI2m(=H*<7&a5cn24YxwCZbH5ILtU%k(Ixt77qX?~mCXxJDgKhlnFTrWQ!I9m z$2(zcq-VW}fXMhD6$w?`hr1TZQ76|3ymbR&qx(X3W_7RGe2HOs<4Vd^x|~(rH!sj{ zSu=T?#)b#iLnxF;9IQ&9|EWj1S7OPcl`B1GHg8g6`9U>;4YYRgsfr5zxZnCE$Lq5- zQX;cu9fU)f)L>NxN+z~-ugt1dG*^!86I4U1`psH%)~Yot&uLshQwD8qDNSWWZ>{f< z_exM5@3-T^!;XSX=->{uKrq9^pZE+N*ez$bj?K)4RjAFGC1*Tm_uUnc%n=gxN+yH{ z*FqYk#}BcXFiW^kb}xO|a&L5Fcqomwy@OUrSBFmkMS0)df6)s$KSOwW4TpyZ9|d`k zpWyq3d=u5Ikos}=@>exAp1q7VhgrQxZO$w?bo_dYwg%r}mnDwk6-51LXF zsEN%bBwwozKY9qNK+<-&l7O}8*Po~RzuwA;;X6hqlG?`ij#x5i!Havgg6SP|M0k5H zlS#EV_K0x75OBE58|C}Km={l)HlNnis}?U?y=p#<2HuW|;i%J(d~wPVZb0Z9Lc1b%kA-GJ@yVI-nAPu zzvO!)GY<(D9&b-rY$?xtrV5mJ(jv|rq)Nu8{##SD%uia-r{#y<35DU2Ud!^ZOP3u^ zt)ZtZo{yE%1G4m##W1P%W>1Y3PTVR3jt(u@?~$5`M|J&3&FQ4|8n5wKda#KfshLm8YoPK| zCYfGO^)#<XNa3=ydwcGV4DiOxjl{g)P7degydAnQw1=)zz32?_9~WY;oQA$# z7&?;y?elVIB~In&qHi}^-}vY`we(owt@^Z3<*)rN?N?fiD{ zV7vX~mfz05poMmR=pVoOAcgH56>OH)8wk{E};H zmv?30XA^w_e%Z1QKrR`gW&F}1=<&;iDEs{O8wP%vf0Dq*qYl|GP*6MfpDOqlC4vO@ zt0F!C|42x%-F_&>Z|C2A3AWpNbNzOH6>hNIUUF zOqh-0zf%w>qQ~aU+30UCJEAexo*rx|kflc>Ijy^;hr3*V8`wSPH0=%_ZRv5ljnsUU z=Q@`_Kj`b$YiH39)whtI@|^Hkx({5=mGU)IdAl_XF_mtyGNz>UXwQ1ev&ZeBq2X)j zK}dS|b6D;ymzp+ zckq$TFt|KrtDnRpIwx1YqK{>Fw$o7`%dQw1jujdb_ImEegqYlP96e`PF6WdyXp8^F zq%u!(&$RFX^!-q)15M%+r4e3_Xa;*_$A>$Hq8@Z9(;WPXA1o)$H=P{r@70|UeqcZm z^?w9it>D~!#J9;XZ|t}1IzdbjJl-J21YCtJo)PXSN|-q~{y7EIEQ@A_XT|h%=gctu z#H3NpUbbv8T{bvU9+6*cp@C3IHE5_Hgv2c&3XRa-NA;Zl=W?TzgQ4<<5p)+SZ+Ppb zM+bVpU*YtjD0wq(0CsUhr28saNK7`=Oep+ zT%P+CUHo=zu`G}$c%wqFb5^)K!jI~{IV*f^kH*Ec2;yht#`UbAi-O#NCmg%~Rf&9__4WAsUxF(P{RBkzr$`!lrAc9AfC=`o$2cGEk&;1_Cydpca$0MPf$Q_{^ zul3mQ;JjiQz<3bj-fMNctVZ77Fnb z+47OAmqWn;gm_QuzG>m!;!A&FUiiL(R)b*(b^~2^N?(2)3T~h!4lrw&Uha1o?ale& zXY}d|h~wQ-;T$Y?fZ`P~+`f7#{MutJCWQd40B( ze?q(rar)Ce>kP*~+|h4ZowxkOaAor~PkFT~pZaj?{3}-q)s+{ou5)iJuKBum-8Lq# zKXKFjU+BEJ?#a7DwOpQ?x^4Tl_y2bLIls>%`j)!ui2pL;$r(BGer}&lSYwEPHSuuy zRKoo-VeK*gr(SwwTdzZYSXcPVx0t`V?)mG7)b`x_=+>L(cm9wWes)!~?xg8|nDoT> zf%4Swk-r;t|D~&stvm1WOCI9(=Ih69Kl0+O+gF{^O7tytXMS=(UDet*>z3}$yN}z) zjTpEse|cR^-)Xms0zF@Q@6iwX6ii-p(ieAe`%g%L-lRZ(QNTOu+;G3UZQwA^Q0c#QCqt1h`M-7Kf%27TMOz!lTWGt`71Znvko5} z`)+Oirs?-nHk2w->obYsz54O2w(1oOolHU&6rW z&FL?{C63jy@FeNWZ~O*%s{?<0n$jrFid&clb)a#NR~q3>()Z5jT^?MeFQ#LFBz?K; zOU@)#o#el2UBL<*U4-tyqr8-ld%R8RHFCk$yWzI*0a30?e($#MLAl=3hd8-~C#Vk4 zDKV23Sag24A{<EMtBgEJE2>cz#D07JIhZ&ZdarqQI_L%b8&#&Be;f1%=z4r4nwmtIjjTCG{a`93D zS%?gy=Sjxsb;tBdgshVjQ3(BiLo9Qxo?7MWAzv8WydoTn@-EAxS5y>?lE@`%iFN3R zp2>Id^6TjW#AdzrDDS{be!L=l@S*89TG$&b_K|2#1NTb1WXx~6;D^bJyzpK8Mhkqe z_+8!IRsKSc9lz3Je79ZTe4dVhH(E>|7nxLOyexoaY>{su%S-#^lypW@hmndneVZMs zKvMjUN>mhin;oh^5;qcI)wkK93M6ZdL|FB0cBleLn~?~szO)}zAZa%epOt!|pKo(V z({GY6I`Fw>MZxnf{z16(BvgT<+DIV6a6^^$6-(aPS5PJBz}IAag6I8~p-}~r4MyU# z8g@LEsWs@pmoh%V^Ul~DF0DZoNIH$gXEo@lPA0U_>Fe(W!h43$Mk1*EFSA>a8HffB zMT`2Czsz1`6yQi$8AymP_2IfMIJOwa96KW1#HISmhb$Q#R)#FWCasi1Uipy4QT$5_ zS*r(!y1#*6;9wN!N8HMgC6pvXqCsB-p2e}&%8*rTA?LD3^py`;9Bo#HEWsuj$|0|O z$l_?XGGrwzTdg1b;{sV6Zin_9vcO?70z&YFcPp-+JFiu=>vI1q%lij zl~I6Wj+G${v62#lNtR@BB&-Zs=!tSjmSk~ku`*=Ets|WpU0rB}i2<^t%hV6$;4FzU zroM;*@S=cE#4n<#!Nh_)Y3?4KXfP%~6J&a3{>rQAitpCV1CFVaZR(%H6S}^5%BrwB zNN|(An@-MkgTqwzZaM+e*Q-M%sF*Spp}K2q6mB;(2V*c?o zExU8+sEWp|3W{nIz5Q)a^5loZXVF`&gjU{a#iYp>9-*aWOb|2Q0XJfjsR^|cKeZ{` z>XEC6C#Wyo@gCS79#`IEmc=o3hIOFPR~S`LI5D5Kn!1A*&T>xfMq8ZOs4P5Q!|F&` z(%BWBPwFckzf(cjFMgCeB~ral9}Aye1KrV=_;cD9xS}bTt0V!5D6a6XeLOtAtmezQ zO2To0>XJCex>8kWHPAM7Hn&`VCcSQb>W{(;Xdl28f$j(^m0e~`KK=yjtZ=ehX6ob_ zPx7jsWqLCgMovgpJr!OYu7UdKj?1emLP9q)@`UP8>Gs;VISnh|ulzx;*plZDr0T?629a{7y5emgn$Ht=@7GhPlK$8UHe zv+-Sz!XXw9h-Hi#G8(Z0GLF6b3dO+<_JVCYrdDb<602E)4i;90UT71&cYjdwx>q>| zwL+ZCq{*V!*vSm&zjxo2d${!8{l!r^qu1^iE)LwJeS^lgd@B#5wdDWwTlf8+2(!(_ zKI$B=kKJ$BX5)%=VRDqdJo_!$Z501nmksgX>T#_dD?iY3%JL!pGj?#+&k=$dYtlG_ z>C3a_l-!M`wI)Ycbi08nkhDP+L6PkSszB0iB*LoO4OD@|{f#OvtX}y$yx_MgkW^dQ zXC*cH)7+z6E>Zgn{w%&GD+``?B}1bM&>M^dA{00jT9Gp#0~&PTOBtWwd7m;gszB0d zBtENQH}{w!XV4mS;H!MkJjwjtl6MIjRUnyTBtEMT9hdDgpg{+|gz*WU_j86u6-c%i ziO*`#XGbz^4Lb037@y#I(|(wF7= z)P^=CCymB0%R_=-P1t5y7Keng3j|ox-TFB zOQ*2_3KA#3|A zjxAR9Wm!r~a_9~?i=)HJzN}z6=}Ql@IEwdb&mjvvPiQ}Q2W%ARdECm7g`O+Nx-K}@ z8V6({xs_vQ7aVQI0aX~7XiD>6oILX!sSVJdX&^0uMM1&v)y0sa@7i}De zj?h;Wf??Prnv(QuSNuaMLMBUBX4GeC z-`E~0PG0fH@JJ`hs2=~&RSoomzV1t^FYF9GGdxZn(qQ@RpJNuQGOq(cRgM9+CF)l+^`G)tHR2%Z(~f0W{eTAwnQ(r zcgQ3uW80XD2>l#*XqH@I!7+84_3>`jLQQQ|P(SeF$tRzlVd`fK5ai>57B78bn{fGUu57>T0D zl>k(Mr1%f2m9WZ{fRj)KlDLuhtXN)zUd`Cmf)0FZjZg5rt>ft@#8Cy3HY4#_4SGt> ztMa@qHq4*{U%T-Mo;Pv=L8A&Ju9@9u^|fxvxX}qZ@Kqb1;CVMQG^#+-WF$VTL4Oj? zga#e>HW;7ad3lFNN^4LBl9ZA7tOniOqd3FXLdP5J!YFfi7ZcdXPGk0$r5~zq(Q^p{ zN+b0(tz-+Ui~<~UtPCV@6tlf`^OnVtuyUmx5rX1TePewV#}+F?mSB@s%CWNxtvZYY zvV@X2){0hqVHco`D1cSb@-YC%XxRoJmj-`%SVHj z1T0O);!Cr9l(5yE7)Zdf!B_x=&IedP0+y7q01AGWq){m#0ZXT`01A!|uz&nZs^h0^Y)06N5IP^gGcuKVjvQvNA>y^cG`7X2$Evr!Erp7Eg+lmAgOC z^)8O_m@S8T_|r71FipGKv^4UZx1}bsIi_XVg)(#U(psLX1<-ygI!ociE4CoEdL&Jg z4UghjGNs0bH*a#JzjtRnDVyqRiy0hURW{MnS2kr;P*$60O))pQt|2mvmJmWK3kxPq zK7JHyE6AA(i{UlU6NZkzY6}C?JHzFqFM>uL`kkq~kS|gVag6uUa=gIT7*){N?afVe z%ZzTnem+7!MJp8q4}w%5!(c4EWtM+z#PwR@5xQk&jUZ0+Rbl~2E;)ueTaG%=h%y|y z%$tlI#|AM4c{$Dqx=X5`9(l6xrmPJTmy_kkNBEW*_cn0LY~+cNcxC?)Ufcj{h97%KRt`wA0McF!7fd${9HbhnhuWexG+RSw_P2-eFQh3dF1K?PCD+j&al^g=-5 zSX*0LL2t+Z#H%_rGNuOIhdEMa4wwm9fN07bRIfiZGQR94`(`eVWon01x!Iwr&}v`? zX-U%UME*fHp_0o5OqG1{^a$NaWGMemVtf>T8&rP5TTkT|yk~GNS%rK22K5}}VbuHo z^u5GIe4pb#^~F!_&_?Qzc*1^y%$$NT8e?k8hA2sWFZWDx#(2BQZ^y(z>I`?VIfH(( z&Z^*z_#n1B-Q}mPx}1|y(I#wE7M|q9vp5$ON(NZr+_Qi^#`2PMga46mnQe6TQ6D%g zUB@;)ydlz!Pi+%zeBu`B8$Q;MPua2U6D=oRvvGMjeR(o_;{#?agx4~d-U5|V(iu%{ zCP!FwS<{$i@d%AaS9c2-2+RDPJPh6r3Buz#ltor-Gr~(Ph zA*|lI^CG1&snTZ&h1z?FYDcCF3(Jg7s6$=nk93CYAf46a4@kgL`Ik)7gGJS&)n8$i zQGjEPm4O6HR-)tPEL#O=>BJtYxw|wpbamz|kZ!WG$1$(P3rC5?7Oq4Z5%3>MOa zN6LguW;bTEN6G|Df9@12K}DCdoQwn2GaLe=`R4Asl7_mg@6hL&>=>^!4M+MKq6!+i z!&#S2D|x7sa{@$LYJ{>2Pm&(Z;!9js2bu&!6OZEjYz+^GQl}5kF?EuDWRZqL)`@># z@%%$$(ldQV$J`+94D<t#C^4pOEoV@s8{W_!^y*IxTSrF4x{+j3d-%obEvu}^Y%TvY*S&8uqB{Gvw z-p0+(qA)WgMFzu#BVMC7tYe z`EB%#2b)>;QCwpI#3AnT48$|d`6JtrwSU!-u6Umw>KvM?xrxfcqLU1&K+ANQ70Nvq2R|Qbr=II?134B%MYgtUAe{ z3M7?g4q^3|$+N()ovSl0!|7UO^{I7MXXVKyX@rA_fp~ z;&Y}>9=e-qbD`7=YJuI?I9p=wtNcaW)}Kbk7xEe5G}7utw#xhkMqU)1?v1(5DT&IW zM1O?b>?C@nAZ284q(`iJTd8`Nc-w&Q~G@F?rFJ z{90muF5*8Ba} zBA55jb8pkfk-1U6?38SHEIPr7@MWozj>wcU<|Ls$(qb)(1nGfyMF$}!PGLmnSBxm< zUh7^$tYpOZ_eRD$a_SxW0YMss4|#z>LdgQ}rVj`*ekw!u{R2bFxwq~YfPC{8KBQ=A z5I$u7Y|+|fQL5#gpAe*bIztZnlp*DuwLF76%Su|eMMneh0S6i&3sS&Ga-w9&xePeA zN0bf8=ibboF*BrgTQ2Ykq(S(QLkyBdDdf}n1eut}kPUqqQqI{os-yE4=qQ~w03UFa z0kR+ke03lJ#?NHHnWYRU=iZwKM^BHr;+wv)D139#km!^$!|*Yy4U=Ul=6gd3(>;qZ z8;3HcoO@1tRF!OO&xjub@Bxo9Ko+EcpNwKdE?~eFqs5SXu7(^bu4x6L*wGMt#A$}e zk`%GmM7HBXMqD>h?8xU{--hVi=&*D|@~K9oLHLj-8zhTT$g;_7$#WU9b+TBJ&%K8E zfYgXgLmGq+d8R?KD21$=&W2pXkejB9A^F_9CrXfqvX<%_K2F_QpmaIvn7`@RA-~kjcD#on-)|N>@;L_(<&BJzeQ(du(ja`un+%dg zDdZJjV@ux0kj~e|l6uY^_R<{6!OlS*_26!9CVAAlFz+C#}VXkRO2r+kC3sHV7Z`M1y2e3i-*iY{~5mxnj3ilFv1O1oF+xprizlA^3=M4Ur`& zVy~CkkUJT1-OFM~K3Cry!roTj@Tn?k5I*EN2Faonvg{qUV^coPkehxdrsQ)?Z~l&5a_6dyej9?1_yt2`Ns2hBlP&opM!cs} zEXn6=NgaV`C=afH48RBcssXYf1)LU+ks(tIxHBB%d7IDK+X^`IC(w|yCdvTb*j};1 zC_^j6++G9`|1m@C>BSIo&OxmZ6fdUJM@6wI(Fkp|k`4W12hc^@Tj-^&-pm29w`1

Hi9-boAt6IHnDu`t%a6@LgTF~iJcy6dX{d!CTU4Nj=qk|=Uz!^Y(y?NWt~~- zHI>FD6xw@JClZ=0=J_?Ltaxc``qas5&axkVDdgQxajfY>bZcnmyUp^hacHq2ORL1^ z_<#sT96Iu=HuyE(^ivx9yf?-=L%eB6#QJ+*81M8P$;M#%pnB3Tdle|R zH&MGP&^Rb|elyg=EliZ_h>W4=1xMTQH}FCJ$AEra9oPKg7{89#TDEgdfR5{k?ia@x zozO5HQ5_FJRMs(TfKck0)c^&I0lALp&?m8^H?}^uxS1{8thbr3CS}F)ROT0{u_gWY zD~1MB3D=YtEJ5ys7%`A%L@*i~IbFOFiu^4{G zF1K+VAGyr+{PXLqf~pY;^`vv|CvZT|_4sfd^RgX?_CR4~Ag*MA=!*vPo5xXzAvw4y zP9!Kd(7D=7Wilem=084XIGnTJaGoDHFASVdpGtNjJzRU)v1K*Acii4y>~gw$?~jl5 zkE}Usp=?cC>!X_7oqv?kD;_Q!@{7#e?#RmRrfNU8<7+gx+tRt+cAcNwscX}@UF`X} z-L&Cf%I(U4dh9tjE4Nhv$!(~|hTlk}C{qsoZ{@aFl5_j~W-)ajxl#TvC3mf45eGXb zE*~{2btJ(#*K1a#lUv;`$t@8SNN$w>XOdf^S&|#sf#gQ{KbG8<%jx9aZS$+l-JIM# zD7iH~k~Zht2;yQ}ZXTu;O&a&~W;5Uc8SfdOyk>%W`IVnd?0__>|n ze71QzA=NT(Z@K4E8Zdq}3^e{R|qL+Z56 zb`E5=Yvun^W{3XiXbxzc4rDjV|E28y=jUy8yJWXSP$0We{-4Qijb_Pi zWCyYv<^NcATQaA!+kSw<<+KlG_xN;nH~r3^x7)Jj?e?tfc8~P4J8_{-+?Ct>?A{=0 zEIaNvPti7WccgdRsef(99aOKY>{bPI$8G8%yP@v?Ty~2kHM_;sf$T>4|NHD#w^Md6 zF5>_SB)0?M)^OM+?LDf@IVYZW<_PVSEH@f(@+)(#_ zF1f{$n%rXQKyst}|9^6e+hyvO2nu93%KtOjtJsZcFBLcH56{xt#XF z>^?l5-5d6%vpefz`P!`PPEGQ++!twbcRb?H+-;J@lHA32rjxsq&vjj%kkfzqT6sr6 zyRMR36_7o*X@}f)t^8lg?SJ2%TMVhWEtU@CHp>6s=eBxXa$DjjklQH#&*ZiSv*b2% z1G$aze=N5xmD9OxKUFBdpBK#S&!uy_<9*KUv3#vOYvN92rFL75zba2zwj{Rtx!rUZ zC$ZiK<5OFeZ@Jsg?YNx&)45$4P_L`pRt0p=ot4~B_rH|f|GqtUyBJljm5ZqZ$&K>= z_sOkpm*kcR3M4nm|1-(0(JaZ0>_Bp({2xnh%jI-(+wY9Job{aC<=%^>v6Ew4{^U>A zal1?vUwOA|hf>eby?3%dKJIJB602Mv|D#UU?jr-~7Q0+TtNekV&>Q#^H@0^$yj(!LG>=**eR**!q|}8ov}q9HMU9-W19-TvAJx;<-Vg>zWz*dz2NP`f<7LBBff-{IY0 z-_noo$uj$UzS(=3+3)qu-X`|d1?i({vv=~jEl8!h3$qu0#wB2manVQ3u2RJ8rh;#F zE}PklMX1C$D;P98m(A=6p%Sxm$AV_(vYA~wKxSWDXy$;`#XLc)o0Wa5+i&|ytgF?> z`Bq;mYXy3wreJ92+nKw3_qi;y|G_tVv6=lY-|S6~v3+%|z^7O%Jnox4E~jMnm-qpJ z(82V#gZ@7AIhlY)*@I3K@v2bvLbGY)d%?Uqj7e>b#~-Pq`r&6h zc8c@=+B+BMs;V=OpWNhPK#UNc@(j5MhyfD<2r9YZA@7%pR31X)5mC|dve+V?SgHkU zRmQ2;SX(L5I<$^jMxk0H3RZ26t!wO9XNFOn)iv4~(axIbES>3^GymUyBs*zr?dr6h zHN9Euf6sTm^PRoF*WPzO&OM2aes4z2k)GR(+^EvJWyl4*EIj0TzkjS|#g6qx?x9SN z#W8{bGYb>JznfT+t@`^#M(}9$)_KSUyevHA{;gjuC<;4wIm|VY zjw9zRZlb)c^J!yxVC0Tg?>c~7z*9(e z9Y9XX)zs}+Z{!}zoZOFGz*C4%?nmx`ycf$tBRHyb&prfUI-Zhd&prg_zW<2+6`+4M z>$Sbe1-xt&y|x#*e~|Z{cICZ#(v}zSvha`_D(@|`3dT)Kj#~`_W)>cT|2VOvslr)Y z(`+pccv*PJ{a4YrrgsIDEIVR781S<2kei^gUQwCI?K(h6^iRbDW)>!bYoy&T-?K43 zx!=Y(;AP<<_pGel>2hYzKASTEFAEPjDm>hH^Ei&L?QKcIro*viW?>@uT@`rB^ERvZ z?6X-N@Km79>Q6|)39gl#+;3Y+z>|Wul?;=`|Kgh6t^>B&1-xtwlZt;T_odRd9hV(> z%e3QwCl|hD+VKl=UybV*YMO1o5bzWd+b_H$@2ztk&649i7LzjpPa!t_%=qYXx$l_k zxn4bKd#-?|q_I60JtTeS>!!mt-%a%5v3)eGf$^8=)iwU=RglTuIXvCxjJD6)rF6G@ zk|x)r%T;Y3uk(+f@c<6AeT2+DrpLFa__^$4a~r4j>9ve`+KngQxQz$aJfEX|zA}?r zFv8r%seK;eACv(X>ZGl z`sir?S8m48p3jkoKDlk>6r&`k{VXfu9~qtz(4Nn6faT{td6v12(?L#ju#N)*+VeS< zS$^()TN|h4mL=<=Xh=YNKF6V!pG$0QoDOrM!*x6}pgo`C2+PmKQ;m|Gj&!1D>v&c` zdp^es%g^08(%i=BXeWA(j^;nnOI>Ks=U8cFa;Hx-w{begvLb!`L{$Op`5ebues1vD z<~B~pJJEA>RHvc8Oa$%u94Ek5+#ayCaeAI*Md$0tD2m&lJ)a|!bZ&dp*2Za#Wkp#X zCk3?U+anh;xpOW|_e$F#ks0|hwsLLIOm8@MBfsyMfs+|<`yrVh`kC{brZ>If-|g8< zvemZfl*vd>mj!&1#q-GkPZQQ6>8`(&iJiYd1U!vfJ&mtCT^rET0(xdZ&kg8>0lg@o zTG_+KhAFQ_w;Qu5C>x1)y^`?(ISReey8?67>Oz{4{ z4%Y3YI~bTNB){`uJ^t8(_3oQXvnQT7c0@g{=2XluG^!Qv4e>rmVoko7ibTmW}r>`20{qWW!w?A2K zW;-ZiCkZ@1DI;^fwCI$(L_672ElBE06L{?vI&>N73O;oon84uCcR2 z%X?cq3beCGt~gY3zhujYTf}XT`abXJnVDKA!8gaqE>&tH5HL*NmTIr7XTr=S-6Vy*Z^(QGj_T1?-65GoKLp;~!`wGy<;RZ;YUlJH8!nHbx3 zEz4WyIwZUP)%v?NGnzF!86z3(#`a33Ru0VQSLe(w{Af01Mw9tfjEq^-=xx1`U&Y9; zVz8poeib9mn6~3rE3(R#->`~dc7l-O)32B40vDmxSx3tpy;w(<7vL|^=k<*O}1t70NBHRjnr9Q89biIx!<@w&2b>dv@ z_}5V4Rqlj1auYWoPzx!V0*MtgF5Kwo>vY8R@QE)*K;wQq3B5_5$U$?T4;f+E3_I2Z z-1%uvM6>#WTcJ^GtD`@qBbvjT}+BB)ycEDAyw(7_^3#1L>C-PW)QG@ z9DSFLlueoV@IC<@zarp!beJljD}loXGNeI3XKX`fWQoVU0=9iskWO8qJ4N8wW4YaP z(ou~@j|k|vLm==^3M9ejg<9d;0trX?967HQ>I6EaZwh4jP60psrGUM} zfLJ^vpn_D1jT6436FJKW&IFCY+*)QOHf`H>56mTNWoGLsj zOc8JlK|Ltoyj8gAA`wps3k9^gSoka95@CaYm4^j9-6-JUCj`8TcacM$`^bzH!ncH# z0!mR46;knPf$VxjAZlv}6Pltinv+hK2~P`41b7>TuL~%1yRb;uBU~!%61oe|3V4VR z63SZzLQyBw3WSajeomlUzFWYX7v=PU#%PWOcmPjODHTy66;s%Jf%ZFFxKfxYkRNk} z+XQ0!Ozvxy=^dt*#s+M`K8imiY!~hmD5gn37j#0mCk2YTMZi&iA*>Q`be*tQAc6z{ z9zlSF#!?X#Qt_V&3xtOSY{E8d#L3uwhcHX{u7Hi$ip`G; za|FsFaE}Q$2@eQU1k!A(a1&R_-vh#O0cA*q{Q~)VkAR~e5^x&M!--!L<_Xt2d{al1 zBbr2YpMWwq3q*g9K#)+HpgkpABwUAfGlWNk>B1KTT!~9@ZG%842nnJ2vVbL6#Jyh; zRtnz|$c~(VC-Er8d`Uo26h?8vhNtito{Q0zSP`>2fy&khhlRBQl~fAH1U!Mo6v%xP zfQxZ8c|oWM30CeBupF;p=?38v0q>$Pib=sSCdOCkgk(ZHDxECs6sQar;>sPuGT~^h z`<(QSQPfG82{*UT7akVS0bTsp&<$o|hV8!CZ~1VkvQS?`ZVQOorV0ENna|(L?q3|0 z1r-bp=n(;35zzSED>OEsCj|5b0bLu=807CI;6)~qQOab2zpyY6B0W8y&cM?&3s2Vt z^qPPs3A_x=z|#cX(_6?Se?k_N3+(LC%Xq$egch2N^fJ!{{1*edIiOz&=pP64>yB3a zspxoc;Y2|HG@#!J=ywD9=K=li0sTQh|5CJ9dQd^DG35pFzqfK&aA9OXj}GWD0X;sT z&kN|9fSwZ2(*t^T3#~ov`7I}@=;DB09MDSxdPP95674PfT)=PHn60!Mu@mJ1U5<*! zyNy}5K^x_MF*ZG*V0_Ew?7FwvJvGlt&V0A+vywYMXtz20RLkbT7Im|5hTSlG&Vf`qJm{5Kgf>&&op$g8j>H&gM5~ z+dMVtR`=WR@=sDWsm(OyH)rJqw~tZ~1y4=7?aMa2-{wim{N`-z9zxD<&hkjV=7jmp z*-zv*XL*b}zd6g3^?%^aSu>ioo3o5|HGeTP*UlP6x^pIfOpW+Una}*@Y<_cgm@;96 z%ZB_T=5j=SbC#()i#;qHL+3YV&7vW$V7-dPOlTGkYavCm_Bh$mEM&5%37-YcxsIN$ z<0?n9*2NkcGAwc<2hDvfNPar&$s+o3pH~xv_=W zoOS0@l&1O3Svi3XiF<`@0_)Ri!1>MDX>!Ct;X)z5Ih)^{RT}U`%9r5R1-|s|5M~K% zHO>^+#ACPaae>{tb%Oex{O0VR?&hrBqcNMae#^&i&iZqPV01S86`9Zc=4`7c@|&|h zC-R%K<*s#fxH;=KWBul=5!FYr+q89?v*)&K&c1FoXP;eH*mLOH?e=D0Yxf?Tf|kA6 z3*3(HgRSqed8uV@_H{`A9-HQtz1f+D{H@+&Qygg2(eCRyQ>oc~bsCx7*R;%a=UJIv z>wTcz6!w+uFOn#aKl{^M`^%*^@2qjZaB9PIKZR=Z${O>_rTlwr^6#-xV)-8e=HFwJ ze~%5nCi}nq9vjnln)leyi^q1)p+VoW#im!!zsDy39vgi8dMo-6s~+Vm>@c`gFZ$~8lLyZSR-VryJwjhw2pBY56zSz+W=59H zy)r*te)pqu=jP^*DJa%cu6p1){8PmZwPIvnZf>6BkI=cF4=O0nm1GP0-u>9pdpb?{ z5&s+`_uj~Y0lD|8WMNIef-c=;z$Aq0>%T!k+1#GB=|zX0`C{R;RPL@P3X0R_w%qp@ zqz9f_pcSTXN5$(G>v7P3U68IQGSrZT>GR7{sZ@1AK|ys1jjo`6oBI<)~e>&9u*xKS4yPd)Y2p&sn;<#QwuyQ>DQqYm_>oc{g$8w?mQAPM35 z)a&c+s6Ol>Hr^&*pY>JWSpIJ2e##y=a9}cM(4b!deBkS+?vCmtc0N|b2_I4)NAe|X zBG9rwuBR{xA3S()QdU;hA-D!mE>wnlLuZGMCYW9cr$}>q1^V}o`r}MbmR>(i)go3LRnn`MZV%pCX;}nLx;A3=X>QoN)aCtQjhcr zmGDhQo@nuc(xo}3Fkk7JXP%jS6ueT%q6qhSMSNJiH+)FE666H=P8jG92!rT)c``PY zQ|Yi_!wiNGAD*;_zlK~#iukbjB=vbggCHkJOhVxs0b#)X<>hg?v6u>|bi{}e9|^A% zvR;wU8(s;#5qbh82!;0o9-!xxN9u>hinXu!th3Haz{rs!+raa^a>#onydpj%UJ36B za>D0BJ1;a#sm7QBDA-qg_St7A9|aT(l?fFgEFCEkhQfQnHA@tT8!3cBskEY^q76ok z8kKmA9z8k%oFmIUDE{k|@S*TtAQxzsbcnPB)!(y`La>a=+gC<~m6erAb#-+ze*E}k z!h{LQxN+l>s;Vj@%YE&Y2y=qIf>3xb&?0;o$bpi$q@za^=co?b@~GIDh_pqXaTxIDBG;`4D=6WF!nIpk`=(q8H(TPyt{0m@#9F z%dvRHiWSM0EnAWsZ@keQIfsvTK8_cB7(xY7sn~uiiP?w(Snn&xGU7gQ;>2Y3?Aghh zHEWV>+qNaQ+;U5@ef##LzP{dsgPg!~p%+NXuxZjPNk*RsctBlpqy62Q?GCHkD}ePV zKm}NO`Q?`<8#it=N?d>a^+{b_oym!F&po$AfsS&4X6Y3m59pq0iVA&WOkeE(lrYUc z>8RW*K*rb9)Fkuf%}bUqU!JU9z1rjeIZ<0%Ym~$T7=Qx4X_5;*54-|+fDot&@zR9=BF3?HQc%}~jw0m<&_(sk;X>qE2g zIiOZd$NwY&M|fz4d|0FRd;1#6I{d9JkD=WfncwKG^YwIe#3JN;J$MDnI;w}}MO@|5 zMuu6ttIC%Dx_Z24+t)$(y!U*s>iZGwP{-Ab*LGKpSmev63}2oO)Y&yk`DTI?!YdORiZU{&nQvr` zi_YSPNO_sPsgdrMy{eR-MP4%{eRbk&3yOJn!5C5`hO&E z+-HBqw;@-xHoc(auF>!6C%!4WzgcwmTT}bGiQwGvy^8O&>yiHW;(|{vd*_gT0ob|V z?#J%<&)kMt1x2}T>(Xg2FyPSSmr@f`%nApk?BxyTrHj($#@x;8(*x3vJze>kOFzGN NefrSe^_{L;^*_rJc3%Jh delta 44458 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΀sMCNP!bRx%r6@4Y_~+>xtoO5>oK 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 TKYGFX1>dE33%={Ja_RpEF6DoB diff --git a/res/guns.mtl b/res/guns.mtl index 70d3ba1..42423b7 100644 --- a/res/guns.mtl +++ b/res/guns.mtl @@ -1,10 +1,12 @@ -# Blender MTL File: 'None' +# Blender MTL File: 'guns-scene.blend' # Material Count: 1 -newmtl None -Ns 0 -Ka 0.000000 0.000000 0.000000 -Kd 0.8 0.8 0.8 -Ks 0.8 0.8 0.8 -d 1 +newmtl Material +Ns 150.980392 +Ka 1.000000 1.000000 1.000000 +Kd 0.032314 0.032314 0.032314 +Ks 0.211098 0.211098 0.211098 +Ke 0.000000 0.000000 0.000000 +Ni 1.000000 +d 1.000000 illum 2 diff --git a/res/guns.obj b/res/guns.obj index 15a8385..0ba7452 100644 --- a/res/guns.obj +++ b/res/guns.obj @@ -1,206 +1,1126 @@ -# Blender v2.79 (sub 0) OBJ File: '' +# Blender v2.79 (sub 0) OBJ File: 'guns-scene.blend' # www.blender.org mtllib guns.mtl -o Cylinder.001 -v -0.148360 1.567710 -0.766577 -v -0.148360 1.533830 2.907069 -v -0.138605 1.566750 -0.766577 -v -0.145215 1.533520 2.907069 -v -0.129226 1.563904 -0.766577 -v -0.142191 1.532603 2.907069 -v -0.120581 1.559284 -0.766577 -v -0.139404 1.531114 2.907069 -v -0.113005 1.553066 -0.766577 -v -0.136962 1.529109 2.907069 -v -0.106786 1.545489 -0.766577 -v -0.134957 1.526666 2.907069 -v -0.102166 1.536845 -0.766577 -v -0.133467 1.523879 2.907069 -v -0.099321 1.527465 -0.766577 -v -0.132550 1.520855 2.907069 -v -0.098360 1.517710 -0.766577 -v -0.132240 1.517710 2.907069 -v -0.099321 1.507956 -0.766577 -v -0.132550 1.514566 2.907069 -v -0.102166 1.498576 -0.766577 -v -0.133467 1.511542 2.907069 -v -0.106786 1.489932 -0.766577 -v -0.134957 1.508755 2.907069 -v -0.113005 1.482355 -0.766577 -v -0.136962 1.506312 2.907069 -v -0.120581 1.476137 -0.766577 -v -0.139404 1.504307 2.907069 -v -0.129226 1.471516 -0.766577 -v -0.142191 1.502818 2.907069 -v -0.138605 1.468671 -0.766577 -v -0.145215 1.501900 2.907069 -v -0.148360 1.467710 -0.766577 -v -0.148360 1.501591 2.907069 -v -0.158114 1.468671 -0.766577 -v -0.151505 1.501900 2.907069 -v -0.167494 1.471516 -0.766577 -v -0.154529 1.502818 2.907069 -v -0.176138 1.476137 -0.766577 -v -0.157316 1.504307 2.907069 -v -0.183715 1.482355 -0.766577 -v -0.159758 1.506312 2.907069 -v -0.189933 1.489932 -0.766577 -v -0.161763 1.508755 2.907069 -v -0.194554 1.498576 -0.766577 -v -0.163253 1.511542 2.907069 -v -0.197399 1.507956 -0.766577 -v -0.164170 1.514566 2.907069 -v -0.198360 1.517710 -0.766577 -v -0.164480 1.517710 2.907069 -v -0.197399 1.527465 -0.766577 -v -0.164170 1.520855 2.907069 -v -0.194554 1.536845 -0.766577 -v -0.163253 1.523879 2.907069 -v -0.189933 1.545489 -0.766577 -v -0.161763 1.526666 2.907069 -v -0.183715 1.553066 -0.766577 -v -0.159758 1.529109 2.907069 -v -0.176138 1.559284 -0.766577 -v -0.157316 1.531114 2.907069 -v -0.167494 1.563905 -0.766577 -v -0.154529 1.532603 2.907069 -v -0.158114 1.566750 -0.766577 -v -0.151505 1.533520 2.907069 -vn 0.0980 0.9951 0.0092 -vn 0.2903 0.9569 0.0092 -vn 0.4714 0.8819 0.0092 -vn 0.6344 0.7730 0.0092 -vn 0.7730 0.6344 0.0092 -vn 0.8819 0.4714 0.0092 -vn 0.9569 0.2903 0.0092 -vn 0.9951 0.0980 0.0092 -vn 0.9951 -0.0980 0.0092 -vn 0.9569 -0.2903 0.0092 -vn 0.8819 -0.4714 0.0092 -vn 0.7730 -0.6344 0.0092 -vn 0.6344 -0.7730 0.0092 -vn 0.4714 -0.8819 0.0092 -vn 0.2903 -0.9569 0.0092 -vn 0.0980 -0.9951 0.0092 -vn -0.0980 -0.9951 0.0092 -vn -0.2903 -0.9569 0.0092 -vn -0.4714 -0.8819 0.0092 -vn -0.6344 -0.7730 0.0092 -vn -0.7730 -0.6344 0.0092 -vn -0.8819 -0.4714 0.0092 -vn -0.9569 -0.2903 0.0092 -vn -0.9951 -0.0980 0.0092 -vn -0.9951 0.0980 0.0092 -vn -0.9569 0.2903 0.0092 -vn -0.8819 0.4714 0.0092 -vn -0.7730 0.6344 0.0092 -vn -0.6344 0.7730 0.0092 -vn -0.4714 0.8819 0.0092 +o Cube.007 +v 0.146289 1.539826 1.692563 +v 0.146289 1.539826 2.092563 +v 0.146289 1.549826 1.692563 +v 0.146289 1.549826 2.092563 +v 0.156289 1.539826 1.692563 +v 0.156289 1.539826 2.092563 +v 0.156289 1.549826 1.692563 +v 0.156289 1.549826 2.092563 +vn -1.0000 0.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 0.0000 -1.0000 vn 0.0000 0.0000 1.0000 -vn -0.2903 0.9569 0.0092 -vn -0.0980 0.9951 0.0092 -vn -0.0000 0.0000 -1.0000 -usemtl None +usemtl Material s off f 1//1 2//1 4//1 3//1 -f 3//2 4//2 6//2 5//2 -f 5//3 6//3 8//3 7//3 -f 7//4 8//4 10//4 9//4 -f 9//5 10//5 12//5 11//5 -f 11//6 12//6 14//6 13//6 -f 13//7 14//7 16//7 15//7 -f 15//8 16//8 18//8 17//8 -f 17//9 18//9 20//9 19//9 -f 19//10 20//10 22//10 21//10 -f 21//11 22//11 24//11 23//11 -f 23//12 24//12 26//12 25//12 -f 25//13 26//13 28//13 27//13 -f 27//14 28//14 30//14 29//14 -f 29//15 30//15 32//15 31//15 -f 31//16 32//16 34//16 33//16 -f 33//17 34//17 36//17 35//17 -f 35//18 36//18 38//18 37//18 -f 37//19 38//19 40//19 39//19 -f 39//20 40//20 42//20 41//20 -f 41//21 42//21 44//21 43//21 -f 43//22 44//22 46//22 45//22 -f 45//23 46//23 48//23 47//23 -f 47//24 48//24 50//24 49//24 -f 49//25 50//25 52//25 51//25 -f 51//26 52//26 54//26 53//26 -f 53//27 54//27 56//27 55//27 -f 55//28 56//28 58//28 57//28 -f 57//29 58//29 60//29 59//29 -f 59//30 60//30 62//30 61//30 -f 4//31 2//31 64//31 62//31 60//31 58//31 56//31 54//31 52//31 50//31 48//31 46//31 44//31 42//31 40//31 38//31 36//31 34//31 32//31 30//31 28//31 26//31 24//31 22//31 20//31 18//31 16//31 14//31 12//31 10//31 8//31 6//31 -f 61//32 62//32 64//32 63//32 -f 63//33 64//33 2//33 1//33 -f 1//34 3//34 5//34 7//34 9//34 11//34 13//34 15//34 17//34 19//34 21//34 23//34 25//34 27//34 29//34 31//34 33//34 35//34 37//34 39//34 41//34 43//34 45//34 47//34 49//34 51//34 53//34 55//34 57//34 59//34 61//34 63//34 -o Cylinder -v 0.152802 1.567710 -0.766577 -v 0.152802 1.533830 2.907069 -v 0.162556 1.566750 -0.766577 -v 0.155947 1.533520 2.907069 -v 0.171936 1.563904 -0.766577 -v 0.158971 1.532603 2.907069 -v 0.180580 1.559284 -0.766577 -v 0.161758 1.531114 2.907069 -v 0.188157 1.553066 -0.766577 -v 0.164200 1.529109 2.907069 -v 0.194375 1.545489 -0.766577 -v 0.166205 1.526666 2.907069 -v 0.198996 1.536845 -0.766577 -v 0.167695 1.523879 2.907069 -v 0.201841 1.527465 -0.766577 -v 0.168612 1.520855 2.907069 -v 0.202802 1.517710 -0.766577 -v 0.168922 1.517710 2.907069 -v 0.201841 1.507956 -0.766577 -v 0.168612 1.514566 2.907069 -v 0.198996 1.498576 -0.766577 -v 0.167695 1.511542 2.907069 -v 0.194375 1.489932 -0.766577 -v 0.166205 1.508755 2.907069 -v 0.188157 1.482355 -0.766577 -v 0.164200 1.506312 2.907069 -v 0.180580 1.476137 -0.766577 -v 0.161758 1.504307 2.907069 -v 0.171936 1.471516 -0.766577 -v 0.158971 1.502818 2.907069 -v 0.162556 1.468671 -0.766577 -v 0.155947 1.501900 2.907069 -v 0.152802 1.467710 -0.766577 -v 0.152802 1.501591 2.907069 -v 0.143047 1.468671 -0.766577 -v 0.149657 1.501900 2.907069 -v 0.133668 1.471516 -0.766577 -v 0.146633 1.502818 2.907069 -v 0.125023 1.476137 -0.766577 -v 0.143846 1.504307 2.907069 -v 0.117447 1.482355 -0.766577 -v 0.141404 1.506312 2.907069 -v 0.111228 1.489932 -0.766577 -v 0.139399 1.508755 2.907069 -v 0.106608 1.498576 -0.766577 -v 0.137909 1.511542 2.907069 -v 0.103763 1.507956 -0.766577 -v 0.136992 1.514566 2.907069 -v 0.102802 1.517710 -0.766577 -v 0.136682 1.517710 2.907069 -v 0.103763 1.527465 -0.766577 -v 0.136992 1.520855 2.907069 -v 0.106608 1.536845 -0.766577 -v 0.137909 1.523879 2.907069 -v 0.111229 1.545489 -0.766577 -v 0.139399 1.526666 2.907069 -v 0.117447 1.553066 -0.766577 -v 0.141404 1.529109 2.907069 -v 0.125023 1.559284 -0.766577 -v 0.143846 1.531114 2.907069 -v 0.133668 1.563905 -0.766577 -v 0.146633 1.532603 2.907069 -v 0.143048 1.566750 -0.766577 -v 0.149657 1.533520 2.907069 +f 3//2 4//2 8//2 7//2 +f 7//3 8//3 6//3 5//3 +f 5//4 6//4 2//4 1//4 +f 3//5 7//5 5//5 1//5 +f 8//6 4//6 2//6 6//6 +o Cube.006 +v 0.146289 1.483433 1.692563 +v 0.146289 1.483433 2.092563 +v 0.146289 1.493433 1.692563 +v 0.146289 1.493433 2.092563 +v 0.156289 1.483433 1.692563 +v 0.156289 1.483433 2.092563 +v 0.156289 1.493433 1.692563 +v 0.156289 1.493433 2.092563 +vn -1.0000 0.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +usemtl Material +s off +f 9//7 10//7 12//7 11//7 +f 11//8 12//8 16//8 15//8 +f 15//9 16//9 14//9 13//9 +f 13//10 14//10 10//10 9//10 +f 11//11 15//11 13//11 9//11 +f 16//12 12//12 10//12 14//12 +o Cube.005 +v 0.117909 1.521053 1.692563 +v 0.117909 1.521053 2.092563 +v 0.127909 1.521090 1.692563 +v 0.127909 1.521090 2.092563 +v 0.117946 1.511053 1.692563 +v 0.117946 1.511053 2.092563 +v 0.127946 1.511090 1.692563 +v 0.127946 1.511090 2.092563 +vn -0.0037 1.0000 0.0000 +vn 1.0000 0.0037 0.0000 +vn 0.0037 -1.0000 0.0000 +vn -1.0000 -0.0037 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +usemtl Material +s off +f 17//13 18//13 20//13 19//13 +f 19//14 20//14 24//14 23//14 +f 23//15 24//15 22//15 21//15 +f 21//16 22//16 18//16 17//16 +f 19//17 23//17 21//17 17//17 +f 24//18 20//18 18//18 22//18 +o Cube.004 +v 0.177306 1.521325 1.692563 +v 0.177306 1.521325 2.092563 +v 0.187306 1.521328 1.692563 +v 0.187306 1.521328 2.092563 +v 0.177309 1.511325 1.692563 +v 0.177309 1.511325 2.092563 +v 0.187309 1.511328 1.692563 +v 0.187309 1.511328 2.092563 +vn -0.0002 1.0000 0.0000 +vn 1.0000 0.0002 0.0000 +vn 0.0002 -1.0000 0.0000 +vn -1.0000 -0.0002 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +usemtl Material +s off +f 25//19 26//19 28//19 27//19 +f 27//20 28//20 32//20 31//20 +f 31//21 32//21 30//21 29//21 +f 29//22 30//22 26//22 25//22 +f 27//23 31//23 29//23 25//23 +f 32//24 28//24 26//24 30//24 +o Cylinder.006_Cylinder.007 +v 0.151764 1.547029 1.693896 +v 0.151764 1.547029 1.703896 +v 0.157616 1.546453 1.693896 +v 0.157616 1.546453 1.703896 +v 0.163244 1.544746 1.693896 +v 0.163244 1.544746 1.703896 +v 0.168431 1.541974 1.693896 +v 0.168431 1.541974 1.703896 +v 0.172977 1.538243 1.693896 +v 0.172977 1.538243 1.703896 +v 0.176708 1.533697 1.693896 +v 0.176708 1.533697 1.703896 +v 0.179480 1.528510 1.693896 +v 0.179480 1.528510 1.703896 +v 0.181187 1.522882 1.693896 +v 0.181187 1.522882 1.703896 +v 0.181764 1.517030 1.693896 +v 0.181764 1.517030 1.703896 +v 0.181187 1.511177 1.693896 +v 0.181187 1.511177 1.703896 +v 0.179480 1.505549 1.693896 +v 0.179480 1.505549 1.703896 +v 0.176708 1.500362 1.693896 +v 0.176708 1.500362 1.703896 +v 0.172977 1.495816 1.693896 +v 0.172977 1.495816 1.703896 +v 0.168431 1.492085 1.693896 +v 0.168431 1.492085 1.703896 +v 0.163244 1.489313 1.693896 +v 0.163244 1.489313 1.703896 +v 0.157616 1.487606 1.693896 +v 0.157616 1.487606 1.703896 +v 0.151764 1.487030 1.693896 +v 0.151764 1.487030 1.703896 +v 0.145911 1.487606 1.693896 +v 0.145911 1.487606 1.703896 +v 0.140283 1.489313 1.693896 +v 0.140283 1.489313 1.703896 +v 0.135096 1.492085 1.693896 +v 0.135096 1.492085 1.703896 +v 0.130550 1.495816 1.693896 +v 0.130550 1.495816 1.703896 +v 0.126819 1.500362 1.693896 +v 0.126819 1.500362 1.703896 +v 0.124047 1.505549 1.693896 +v 0.124047 1.505549 1.703896 +v 0.122340 1.511177 1.693896 +v 0.122340 1.511177 1.703896 +v 0.121764 1.517030 1.693896 +v 0.121764 1.517030 1.703896 +v 0.122340 1.522882 1.693896 +v 0.122340 1.522882 1.703896 +v 0.124047 1.528510 1.693896 +v 0.124047 1.528510 1.703896 +v 0.126819 1.533697 1.693896 +v 0.126819 1.533697 1.703896 +v 0.130550 1.538243 1.693896 +v 0.130550 1.538243 1.703896 +v 0.135096 1.541974 1.693896 +v 0.135096 1.541974 1.703896 +v 0.140283 1.544746 1.693896 +v 0.140283 1.544746 1.703896 +v 0.145911 1.546453 1.693896 +v 0.145911 1.546453 1.703896 +vn 0.0980 0.9952 0.0000 +vn 0.2903 0.9569 0.0000 +vn 0.4714 0.8819 0.0000 +vn 0.6344 0.7730 0.0000 +vn 0.7730 0.6344 0.0000 +vn 0.8819 0.4714 0.0000 +vn 0.9569 0.2903 0.0000 +vn 0.9952 0.0980 0.0000 +vn 0.9952 -0.0980 0.0000 +vn 0.9569 -0.2903 0.0000 +vn 0.8819 -0.4714 0.0000 +vn 0.7730 -0.6344 0.0000 +vn 0.6344 -0.7730 0.0000 +vn 0.4714 -0.8819 0.0000 +vn 0.2903 -0.9569 0.0000 +vn 0.0980 -0.9952 0.0000 +vn -0.0980 -0.9952 0.0000 +vn -0.2903 -0.9569 0.0000 +vn -0.4714 -0.8819 0.0000 +vn -0.6344 -0.7730 0.0000 +vn -0.7730 -0.6344 0.0000 +vn -0.8819 -0.4714 0.0000 +vn -0.9569 -0.2903 0.0000 +vn -0.9952 -0.0980 0.0000 +vn -0.9952 0.0980 0.0000 +vn -0.9569 0.2903 0.0000 +vn -0.8819 0.4714 0.0000 +vn -0.7730 0.6344 0.0000 +vn -0.6344 0.7730 0.0000 +vn -0.4714 0.8819 0.0000 +vn -0.0000 0.0000 1.0000 +vn -0.2903 0.9569 0.0000 +vn -0.0980 0.9952 0.0000 +vn -0.0000 0.0000 -1.0000 +usemtl Material +s off +f 33//25 34//25 36//25 35//25 +f 35//26 36//26 38//26 37//26 +f 37//27 38//27 40//27 39//27 +f 39//28 40//28 42//28 41//28 +f 41//29 42//29 44//29 43//29 +f 43//30 44//30 46//30 45//30 +f 45//31 46//31 48//31 47//31 +f 47//32 48//32 50//32 49//32 +f 49//33 50//33 52//33 51//33 +f 51//34 52//34 54//34 53//34 +f 53//35 54//35 56//35 55//35 +f 55//36 56//36 58//36 57//36 +f 57//37 58//37 60//37 59//37 +f 59//38 60//38 62//38 61//38 +f 61//39 62//39 64//39 63//39 +f 63//40 64//40 66//40 65//40 +f 65//41 66//41 68//41 67//41 +f 67//42 68//42 70//42 69//42 +f 69//43 70//43 72//43 71//43 +f 71//44 72//44 74//44 73//44 +f 73//45 74//45 76//45 75//45 +f 75//46 76//46 78//46 77//46 +f 77//47 78//47 80//47 79//47 +f 79//48 80//48 82//48 81//48 +f 81//49 82//49 84//49 83//49 +f 83//50 84//50 86//50 85//50 +f 85//51 86//51 88//51 87//51 +f 87//52 88//52 90//52 89//52 +f 89//53 90//53 92//53 91//53 +f 91//54 92//54 94//54 93//54 +f 36//55 34//55 96//55 94//55 92//55 90//55 88//55 86//55 84//55 82//55 80//55 78//55 76//55 74//55 72//55 70//55 68//55 66//55 64//55 62//55 60//55 58//55 56//55 54//55 52//55 50//55 48//55 46//55 44//55 42//55 40//55 38//55 +f 93//56 94//56 96//56 95//56 +f 95//57 96//57 34//57 33//57 +f 33//58 35//58 37//58 39//58 41//58 43//58 45//58 47//58 49//58 51//58 53//58 55//58 57//58 59//58 61//58 63//58 65//58 67//58 69//58 71//58 73//58 75//58 77//58 79//58 81//58 83//58 85//58 87//58 89//58 91//58 93//58 95//58 +o Cylinder.005_Cylinder.006 +v 0.151764 1.547029 1.945813 +v 0.151764 1.547029 1.955813 +v 0.157616 1.546453 1.945813 +v 0.157616 1.546453 1.955813 +v 0.163244 1.544746 1.945813 +v 0.163244 1.544746 1.955813 +v 0.168431 1.541974 1.945813 +v 0.168431 1.541974 1.955813 +v 0.172977 1.538243 1.945813 +v 0.172977 1.538243 1.955813 +v 0.176708 1.533697 1.945813 +v 0.176708 1.533697 1.955813 +v 0.179480 1.528510 1.945813 +v 0.179480 1.528510 1.955813 +v 0.181187 1.522882 1.945813 +v 0.181187 1.522882 1.955813 +v 0.181764 1.517030 1.945813 +v 0.181764 1.517030 1.955813 +v 0.181187 1.511177 1.945813 +v 0.181187 1.511177 1.955813 +v 0.179480 1.505549 1.945813 +v 0.179480 1.505549 1.955813 +v 0.176708 1.500362 1.945813 +v 0.176708 1.500362 1.955813 +v 0.172977 1.495816 1.945813 +v 0.172977 1.495816 1.955813 +v 0.168431 1.492085 1.945813 +v 0.168431 1.492085 1.955813 +v 0.163244 1.489313 1.945813 +v 0.163244 1.489313 1.955813 +v 0.157616 1.487606 1.945813 +v 0.157616 1.487606 1.955813 +v 0.151764 1.487030 1.945813 +v 0.151764 1.487030 1.955813 +v 0.145911 1.487606 1.945813 +v 0.145911 1.487606 1.955813 +v 0.140283 1.489313 1.945813 +v 0.140283 1.489313 1.955813 +v 0.135096 1.492085 1.945813 +v 0.135096 1.492085 1.955813 +v 0.130550 1.495816 1.945813 +v 0.130550 1.495816 1.955813 +v 0.126819 1.500362 1.945813 +v 0.126819 1.500362 1.955813 +v 0.124047 1.505549 1.945813 +v 0.124047 1.505549 1.955813 +v 0.122340 1.511177 1.945813 +v 0.122340 1.511177 1.955813 +v 0.121764 1.517030 1.945813 +v 0.121764 1.517030 1.955813 +v 0.122340 1.522882 1.945813 +v 0.122340 1.522882 1.955813 +v 0.124047 1.528510 1.945813 +v 0.124047 1.528510 1.955813 +v 0.126819 1.533697 1.945813 +v 0.126819 1.533697 1.955813 +v 0.130550 1.538243 1.945813 +v 0.130550 1.538243 1.955813 +v 0.135096 1.541974 1.945813 +v 0.135096 1.541974 1.955813 +v 0.140283 1.544746 1.945813 +v 0.140283 1.544746 1.955813 +v 0.145911 1.546453 1.945813 +v 0.145911 1.546453 1.955813 +v 0.168926 1.505562 1.955813 +v 0.168926 1.505562 1.945813 +v 0.151764 1.537670 1.955813 +v 0.151764 1.537670 1.945813 +v 0.147737 1.537273 1.955813 +v 0.147737 1.537273 1.945813 +v 0.143865 1.536099 1.955813 +v 0.143865 1.536099 1.945813 +v 0.132694 1.509131 1.955813 +v 0.132694 1.509131 1.945813 +v 0.134602 1.505562 1.955813 +v 0.134602 1.505562 1.945813 +v 0.131520 1.513003 1.955813 +v 0.131520 1.513003 1.945813 +v 0.137168 1.502434 1.955813 +v 0.137168 1.502434 1.945813 +v 0.147737 1.496785 1.955813 +v 0.147737 1.496785 1.945813 +v 0.151764 1.496389 1.955813 +v 0.151764 1.496389 1.945813 +v 0.143865 1.497960 1.955813 +v 0.143865 1.497960 1.945813 +v 0.172008 1.521056 1.955813 +v 0.172008 1.521056 1.945813 +v 0.163231 1.534191 1.955813 +v 0.163231 1.534191 1.945813 +v 0.172404 1.517029 1.955813 +v 0.172404 1.517029 1.945813 +v 0.170833 1.524928 1.955813 +v 0.170833 1.524928 1.945813 +v 0.155790 1.496785 1.955813 +v 0.155790 1.496785 1.945813 +v 0.137169 1.531625 1.955813 +v 0.137169 1.531625 1.945813 +v 0.140296 1.534191 1.955813 +v 0.140296 1.534191 1.945813 +v 0.134602 1.528497 1.955813 +v 0.134602 1.528497 1.945813 +v 0.172008 1.513003 1.955813 +v 0.172008 1.513003 1.945813 +v 0.163231 1.499867 1.955813 +v 0.163231 1.499867 1.945813 +v 0.166359 1.502434 1.955813 +v 0.166359 1.502434 1.945813 +v 0.170833 1.509131 1.955813 +v 0.170833 1.509131 1.945813 +v 0.131123 1.517029 1.955813 +v 0.131123 1.517029 1.945813 +v 0.140296 1.499867 1.955813 +v 0.140296 1.499867 1.945813 +v 0.131520 1.521056 1.955813 +v 0.131520 1.521056 1.945813 +v 0.166359 1.531625 1.955813 +v 0.166359 1.531625 1.945813 +v 0.159662 1.497960 1.955813 +v 0.159662 1.497960 1.945813 +v 0.168926 1.528497 1.955813 +v 0.168926 1.528497 1.945813 +v 0.132694 1.524928 1.955813 +v 0.132694 1.524928 1.945813 +v 0.159662 1.536099 1.955813 +v 0.159662 1.536099 1.945813 +v 0.155790 1.537273 1.955813 +v 0.155790 1.537273 1.945813 +vn 0.0980 0.9952 0.0000 +vn 0.2903 0.9569 0.0000 +vn 0.4714 0.8819 0.0000 +vn 0.6344 0.7730 0.0000 +vn 0.7730 0.6344 0.0000 +vn 0.8819 0.4714 0.0000 +vn 0.9569 0.2903 0.0000 +vn 0.9952 0.0980 0.0000 +vn 0.9952 -0.0980 0.0000 +vn 0.9569 -0.2903 0.0000 +vn 0.8819 -0.4714 0.0000 +vn 0.7730 -0.6344 0.0000 +vn 0.6344 -0.7730 0.0000 +vn 0.4714 -0.8819 0.0000 +vn 0.2903 -0.9569 0.0000 +vn 0.0980 -0.9952 0.0000 +vn -0.0980 -0.9952 0.0000 +vn -0.2903 -0.9569 0.0000 +vn -0.4714 -0.8819 0.0000 +vn -0.6344 -0.7730 0.0000 +vn -0.7730 -0.6344 0.0000 +vn -0.8819 -0.4714 0.0000 +vn -0.9569 -0.2903 0.0000 +vn -0.9952 -0.0980 0.0000 +vn -0.9952 0.0980 0.0000 +vn -0.9569 0.2903 0.0000 +vn -0.8819 0.4714 0.0000 +vn -0.7730 0.6344 0.0000 +vn -0.6344 0.7730 0.0000 +vn -0.4714 0.8819 0.0000 +vn -0.0000 0.0000 1.0000 +vn -0.2903 0.9569 0.0000 +vn -0.0980 0.9952 0.0000 +vn 0.0000 0.0000 -1.0000 +usemtl Material +s off +f 97//59 98//59 100//59 99//59 +f 99//60 100//60 102//60 101//60 +f 101//61 102//61 104//61 103//61 +f 103//62 104//62 106//62 105//62 +f 105//63 106//63 108//63 107//63 +f 107//64 108//64 110//64 109//64 +f 109//65 110//65 112//65 111//65 +f 111//66 112//66 114//66 113//66 +f 113//67 114//67 116//67 115//67 +f 115//68 116//68 118//68 117//68 +f 117//69 118//69 120//69 119//69 +f 119//70 120//70 122//70 121//70 +f 121//71 122//71 124//71 123//71 +f 123//72 124//72 126//72 125//72 +f 125//73 126//73 128//73 127//73 +f 127//74 128//74 130//74 129//74 +f 129//75 130//75 132//75 131//75 +f 131//76 132//76 134//76 133//76 +f 133//77 134//77 136//77 135//77 +f 135//78 136//78 138//78 137//78 +f 137//79 138//79 140//79 139//79 +f 139//80 140//80 142//80 141//80 +f 141//81 142//81 144//81 143//81 +f 143//82 144//82 146//82 145//82 +f 145//83 146//83 148//83 147//83 +f 147//84 148//84 150//84 149//84 +f 149//85 150//85 152//85 151//85 +f 151//86 152//86 154//86 153//86 +f 153//87 154//87 156//87 155//87 +f 155//88 156//88 158//88 157//88 +f 100//89 98//89 160//89 158//89 156//89 154//89 152//89 150//89 148//89 146//89 207//89 211//89 219//89 197//89 193//89 195//89 167//89 165//89 163//89 223//89 221//89 185//89 213//89 217//89 189//89 183//89 187//89 114//89 112//89 110//89 108//89 106//89 104//89 102//89 +f 157//90 158//90 160//90 159//90 +f 159//91 160//91 98//91 97//91 +f 97//92 99//92 101//92 103//92 105//92 107//92 109//92 111//92 113//92 188//92 184//92 190//92 218//92 214//92 186//92 222//92 224//92 164//92 166//92 168//92 196//92 194//92 198//92 220//92 212//92 208//92 145//92 147//92 149//92 151//92 153//92 155//92 157//92 159//92 +f 200//83 199//83 187//83 188//83 +f 204//86 203//86 161//86 162//86 +f 162//85 161//85 205//85 206//85 +f 212//67 211//67 207//67 208//67 +f 184//81 183//81 189//81 190//81 +f 188//82 187//82 183//82 184//82 +f 218//79 217//79 213//79 214//79 +f 164//74 163//74 165//74 166//74 +f 178//59 177//59 179//59 180//59 +f 198//69 197//69 219//69 220//69 +f 180//91 179//91 191//91 192//91 +f 166//73 165//73 167//73 168//73 +f 214//78 213//78 185//78 186//78 +f 210//61 209//61 181//61 182//61 +f 114//89 187//89 199//89 205//89 161//89 203//89 201//89 215//89 191//89 179//89 177//89 181//89 209//89 175//89 171//89 169//89 173//89 207//89 146//89 144//89 142//89 140//89 138//89 136//89 134//89 132//89 130//89 128//89 126//89 124//89 122//89 120//89 118//89 116//89 +f 186//77 185//77 221//77 222//77 +f 202//87 201//87 203//87 204//87 +f 196//71 195//71 193//71 194//71 +f 220//68 219//68 211//68 212//68 +f 216//88 215//88 201//88 202//88 +f 176//62 175//62 209//62 210//62 +f 170//64 169//64 171//64 172//64 +f 224//75 223//75 163//75 164//75 +f 190//80 189//80 217//80 218//80 +f 208//66 207//66 173//66 174//66 +f 206//84 205//84 199//84 200//84 +f 182//60 181//60 177//60 178//60 +f 168//72 167//72 195//72 196//72 +f 222//76 221//76 223//76 224//76 +f 192//90 191//90 215//90 216//90 +f 174//65 173//65 169//65 170//65 +f 194//70 193//70 197//70 198//70 +f 145//92 208//92 174//92 170//92 172//92 176//92 210//92 182//92 178//92 180//92 192//92 216//92 202//92 204//92 162//92 206//92 200//92 188//92 113//92 115//92 117//92 119//92 121//92 123//92 125//92 127//92 129//92 131//92 133//92 135//92 137//92 139//92 141//92 143//92 +f 172//63 171//63 175//63 176//63 +o Cylinder.004 +v -0.147853 1.547029 1.945813 +v -0.147853 1.547029 1.955813 +v -0.142000 1.546453 1.945813 +v -0.142000 1.546453 1.955813 +v -0.136372 1.544746 1.945813 +v -0.136372 1.544746 1.955813 +v -0.131185 1.541974 1.945813 +v -0.131185 1.541974 1.955813 +v -0.126639 1.538243 1.945813 +v -0.126639 1.538243 1.955813 +v -0.122908 1.533697 1.945813 +v -0.122908 1.533697 1.955813 +v -0.120136 1.528510 1.945813 +v -0.120136 1.528510 1.955813 +v -0.118429 1.522882 1.945813 +v -0.118429 1.522882 1.955813 +v -0.117853 1.517030 1.945813 +v -0.117853 1.517030 1.955813 +v -0.118429 1.511177 1.945813 +v -0.118429 1.511177 1.955813 +v -0.120136 1.505549 1.945813 +v -0.120136 1.505549 1.955813 +v -0.122908 1.500362 1.945813 +v -0.122908 1.500362 1.955813 +v -0.126639 1.495816 1.945813 +v -0.126639 1.495816 1.955813 +v -0.131185 1.492085 1.945813 +v -0.131185 1.492085 1.955813 +v -0.136372 1.489313 1.945813 +v -0.136372 1.489313 1.955813 +v -0.142000 1.487606 1.945813 +v -0.142000 1.487606 1.955813 +v -0.147853 1.487030 1.945813 +v -0.147853 1.487030 1.955813 +v -0.153705 1.487606 1.945813 +v -0.153705 1.487606 1.955813 +v -0.159333 1.489313 1.945813 +v -0.159333 1.489313 1.955813 +v -0.164520 1.492085 1.945813 +v -0.164520 1.492085 1.955813 +v -0.169066 1.495816 1.945813 +v -0.169066 1.495816 1.955813 +v -0.172797 1.500362 1.945813 +v -0.172797 1.500362 1.955813 +v -0.175569 1.505549 1.945813 +v -0.175569 1.505549 1.955813 +v -0.177276 1.511177 1.945813 +v -0.177276 1.511177 1.955813 +v -0.177853 1.517030 1.945813 +v -0.177853 1.517030 1.955813 +v -0.177276 1.522882 1.945813 +v -0.177276 1.522882 1.955813 +v -0.175569 1.528510 1.945813 +v -0.175569 1.528510 1.955813 +v -0.172797 1.533697 1.945813 +v -0.172797 1.533697 1.955813 +v -0.169066 1.538243 1.945813 +v -0.169066 1.538243 1.955813 +v -0.164520 1.541974 1.945813 +v -0.164520 1.541974 1.955813 +v -0.159333 1.544746 1.945813 +v -0.159333 1.544746 1.955813 +v -0.153705 1.546453 1.945813 +v -0.153705 1.546453 1.955813 +v -0.130690 1.505562 1.955813 +v -0.130690 1.505562 1.945813 +v -0.147853 1.537670 1.955813 +v -0.147853 1.537670 1.945813 +v -0.151879 1.537273 1.955813 +v -0.151879 1.537273 1.945813 +v -0.155751 1.536099 1.955813 +v -0.155751 1.536099 1.945813 +v -0.166922 1.509131 1.955813 +v -0.166922 1.509131 1.945813 +v -0.165015 1.505562 1.955813 +v -0.165015 1.505562 1.945813 +v -0.168096 1.513003 1.955813 +v -0.168096 1.513003 1.945813 +v -0.162448 1.502434 1.955813 +v -0.162448 1.502434 1.945813 +v -0.151879 1.496785 1.955813 +v -0.151879 1.496785 1.945813 +v -0.147853 1.496389 1.955813 +v -0.147853 1.496389 1.945813 +v -0.155751 1.497960 1.955813 +v -0.155751 1.497960 1.945813 +v -0.127609 1.521056 1.955813 +v -0.127609 1.521056 1.945813 +v -0.136385 1.534191 1.955813 +v -0.136385 1.534191 1.945813 +v -0.127212 1.517029 1.955813 +v -0.127212 1.517029 1.945813 +v -0.128783 1.524928 1.955813 +v -0.128783 1.524928 1.945813 +v -0.143826 1.496785 1.955813 +v -0.143826 1.496785 1.945813 +v -0.162448 1.531625 1.955813 +v -0.162448 1.531625 1.945813 +v -0.159320 1.534191 1.955813 +v -0.159320 1.534191 1.945813 +v -0.165015 1.528497 1.955813 +v -0.165015 1.528497 1.945813 +v -0.127609 1.513003 1.955813 +v -0.127609 1.513003 1.945813 +v -0.136385 1.499867 1.955813 +v -0.136385 1.499867 1.945813 +v -0.133257 1.502434 1.955813 +v -0.133257 1.502434 1.945813 +v -0.128783 1.509131 1.955813 +v -0.128783 1.509131 1.945813 +v -0.168493 1.517029 1.955813 +v -0.168493 1.517029 1.945813 +v -0.159320 1.499867 1.955813 +v -0.159320 1.499867 1.945813 +v -0.168096 1.521056 1.955813 +v -0.168096 1.521056 1.945813 +v -0.133257 1.531625 1.955813 +v -0.133257 1.531625 1.945813 +v -0.139954 1.497960 1.955813 +v -0.139954 1.497960 1.945813 +v -0.130690 1.528497 1.955813 +v -0.130690 1.528497 1.945813 +v -0.166922 1.524928 1.955813 +v -0.166922 1.524928 1.945813 +v -0.139954 1.536099 1.955813 +v -0.139954 1.536099 1.945813 +v -0.143826 1.537273 1.955813 +v -0.143826 1.537273 1.945813 +vn 0.0980 0.9952 0.0000 +vn 0.2903 0.9569 0.0000 +vn 0.4714 0.8819 0.0000 +vn 0.6344 0.7730 0.0000 +vn 0.7730 0.6344 0.0000 +vn 0.8819 0.4714 0.0000 +vn 0.9569 0.2903 0.0000 +vn 0.9952 0.0980 0.0000 +vn 0.9952 -0.0980 0.0000 +vn 0.9569 -0.2903 0.0000 +vn 0.8819 -0.4714 0.0000 +vn 0.7730 -0.6344 0.0000 +vn 0.6344 -0.7730 0.0000 +vn 0.4714 -0.8819 0.0000 +vn 0.2903 -0.9569 0.0000 +vn 0.0980 -0.9952 0.0000 +vn -0.0980 -0.9952 0.0000 +vn -0.2903 -0.9569 0.0000 +vn -0.4714 -0.8819 0.0000 +vn -0.6344 -0.7730 0.0000 +vn -0.7730 -0.6344 0.0000 +vn -0.8819 -0.4714 0.0000 +vn -0.9569 -0.2903 0.0000 +vn -0.9952 -0.0980 0.0000 +vn -0.9952 0.0980 0.0000 +vn -0.9569 0.2903 0.0000 +vn -0.8819 0.4714 0.0000 +vn -0.7730 0.6344 0.0000 +vn -0.6344 0.7730 0.0000 +vn -0.4714 0.8819 0.0000 +vn -0.0000 0.0000 1.0000 +vn -0.2903 0.9569 0.0000 +vn -0.0980 0.9952 0.0000 +vn 0.0000 0.0000 -1.0000 +usemtl Material +s off +f 225//93 226//93 228//93 227//93 +f 227//94 228//94 230//94 229//94 +f 229//95 230//95 232//95 231//95 +f 231//96 232//96 234//96 233//96 +f 233//97 234//97 236//97 235//97 +f 235//98 236//98 238//98 237//98 +f 237//99 238//99 240//99 239//99 +f 239//100 240//100 242//100 241//100 +f 241//101 242//101 244//101 243//101 +f 243//102 244//102 246//102 245//102 +f 245//103 246//103 248//103 247//103 +f 247//104 248//104 250//104 249//104 +f 249//105 250//105 252//105 251//105 +f 251//106 252//106 254//106 253//106 +f 253//107 254//107 256//107 255//107 +f 255//108 256//108 258//108 257//108 +f 257//109 258//109 260//109 259//109 +f 259//110 260//110 262//110 261//110 +f 261//111 262//111 264//111 263//111 +f 263//112 264//112 266//112 265//112 +f 265//113 266//113 268//113 267//113 +f 267//114 268//114 270//114 269//114 +f 269//115 270//115 272//115 271//115 +f 271//116 272//116 274//116 273//116 +f 273//117 274//117 276//117 275//117 +f 275//118 276//118 278//118 277//118 +f 277//119 278//119 280//119 279//119 +f 279//120 280//120 282//120 281//120 +f 281//121 282//121 284//121 283//121 +f 283//122 284//122 286//122 285//122 +f 228//123 226//123 288//123 286//123 284//123 282//123 280//123 278//123 276//123 274//123 335//123 339//123 347//123 325//123 321//123 323//123 295//123 293//123 291//123 351//123 349//123 313//123 341//123 345//123 317//123 311//123 315//123 242//123 240//123 238//123 236//123 234//123 232//123 230//123 +f 285//124 286//124 288//124 287//124 +f 287//125 288//125 226//125 225//125 +f 225//126 227//126 229//126 231//126 233//126 235//126 237//126 239//126 241//126 316//126 312//126 318//126 346//126 342//126 314//126 350//126 352//126 292//126 294//126 296//126 324//126 322//126 326//126 348//126 340//126 336//126 273//126 275//126 277//126 279//126 281//126 283//126 285//126 287//126 +f 328//117 327//117 315//117 316//117 +f 332//120 331//120 289//120 290//120 +f 290//119 289//119 333//119 334//119 +f 340//101 339//101 335//101 336//101 +f 312//115 311//115 317//115 318//115 +f 316//116 315//116 311//116 312//116 +f 346//113 345//113 341//113 342//113 +f 292//108 291//108 293//108 294//108 +f 306//93 305//93 307//93 308//93 +f 326//103 325//103 347//103 348//103 +f 308//125 307//125 319//125 320//125 +f 294//107 293//107 295//107 296//107 +f 342//112 341//112 313//112 314//112 +f 338//95 337//95 309//95 310//95 +f 242//123 315//123 327//123 333//123 289//123 331//123 329//123 343//123 319//123 307//123 305//123 309//123 337//123 303//123 299//123 297//123 301//123 335//123 274//123 272//123 270//123 268//123 266//123 264//123 262//123 260//123 258//123 256//123 254//123 252//123 250//123 248//123 246//123 244//123 +f 314//111 313//111 349//111 350//111 +f 330//121 329//121 331//121 332//121 +f 324//105 323//105 321//105 322//105 +f 348//102 347//102 339//102 340//102 +f 344//122 343//122 329//122 330//122 +f 304//96 303//96 337//96 338//96 +f 298//98 297//98 299//98 300//98 +f 352//109 351//109 291//109 292//109 +f 318//114 317//114 345//114 346//114 +f 336//100 335//100 301//100 302//100 +f 334//118 333//118 327//118 328//118 +f 310//94 309//94 305//94 306//94 +f 296//106 295//106 323//106 324//106 +f 350//110 349//110 351//110 352//110 +f 320//124 319//124 343//124 344//124 +f 302//99 301//99 297//99 298//99 +f 322//104 321//104 325//104 326//104 +f 273//126 336//126 302//126 298//126 300//126 304//126 338//126 310//126 306//126 308//126 320//126 344//126 330//126 332//126 290//126 334//126 328//126 316//126 241//126 243//126 245//126 247//126 249//126 251//126 253//126 255//126 257//126 259//126 261//126 263//126 265//126 267//126 269//126 271//126 +f 300//97 299//97 303//97 304//97 +o Cylinder.003 +v -0.147853 1.547029 1.693896 +v -0.147853 1.547029 1.703896 +v -0.142000 1.546453 1.693896 +v -0.142000 1.546453 1.703896 +v -0.136372 1.544746 1.693896 +v -0.136372 1.544746 1.703896 +v -0.131185 1.541974 1.693896 +v -0.131185 1.541974 1.703896 +v -0.126639 1.538243 1.693896 +v -0.126639 1.538243 1.703896 +v -0.122908 1.533697 1.693896 +v -0.122908 1.533697 1.703896 +v -0.120136 1.528510 1.693896 +v -0.120136 1.528510 1.703896 +v -0.118429 1.522882 1.693896 +v -0.118429 1.522882 1.703896 +v -0.117853 1.517030 1.693896 +v -0.117853 1.517030 1.703896 +v -0.118429 1.511177 1.693896 +v -0.118429 1.511177 1.703896 +v -0.120136 1.505549 1.693896 +v -0.120136 1.505549 1.703896 +v -0.122908 1.500362 1.693896 +v -0.122908 1.500362 1.703896 +v -0.126639 1.495816 1.693896 +v -0.126639 1.495816 1.703896 +v -0.131185 1.492085 1.693896 +v -0.131185 1.492085 1.703896 +v -0.136372 1.489313 1.693896 +v -0.136372 1.489313 1.703896 +v -0.142000 1.487606 1.693896 +v -0.142000 1.487606 1.703896 +v -0.147853 1.487030 1.693896 +v -0.147853 1.487030 1.703896 +v -0.153705 1.487606 1.693896 +v -0.153705 1.487606 1.703896 +v -0.159333 1.489313 1.693896 +v -0.159333 1.489313 1.703896 +v -0.164520 1.492085 1.693896 +v -0.164520 1.492085 1.703896 +v -0.169066 1.495816 1.693896 +v -0.169066 1.495816 1.703896 +v -0.172797 1.500362 1.693896 +v -0.172797 1.500362 1.703896 +v -0.175569 1.505549 1.693896 +v -0.175569 1.505549 1.703896 +v -0.177276 1.511177 1.693896 +v -0.177276 1.511177 1.703896 +v -0.177853 1.517030 1.693896 +v -0.177853 1.517030 1.703896 +v -0.177276 1.522882 1.693896 +v -0.177276 1.522882 1.703896 +v -0.175569 1.528510 1.693896 +v -0.175569 1.528510 1.703896 +v -0.172797 1.533697 1.693896 +v -0.172797 1.533697 1.703896 +v -0.169066 1.538243 1.693896 +v -0.169066 1.538243 1.703896 +v -0.164520 1.541974 1.693896 +v -0.164520 1.541974 1.703896 +v -0.159333 1.544746 1.693896 +v -0.159333 1.544746 1.703896 +v -0.153705 1.546453 1.693896 +v -0.153705 1.546453 1.703896 +vn 0.0980 0.9952 0.0000 +vn 0.2903 0.9569 0.0000 +vn 0.4714 0.8819 0.0000 +vn 0.6344 0.7730 0.0000 +vn 0.7730 0.6344 0.0000 +vn 0.8819 0.4714 0.0000 +vn 0.9569 0.2903 0.0000 +vn 0.9952 0.0980 0.0000 +vn 0.9952 -0.0980 0.0000 +vn 0.9569 -0.2903 0.0000 +vn 0.8819 -0.4714 0.0000 +vn 0.7730 -0.6344 0.0000 +vn 0.6344 -0.7730 0.0000 +vn 0.4714 -0.8819 0.0000 +vn 0.2903 -0.9569 0.0000 +vn 0.0980 -0.9952 0.0000 +vn -0.0980 -0.9952 0.0000 +vn -0.2903 -0.9569 0.0000 +vn -0.4714 -0.8819 0.0000 +vn -0.6344 -0.7730 0.0000 +vn -0.7730 -0.6344 0.0000 +vn -0.8819 -0.4714 0.0000 +vn -0.9569 -0.2903 0.0000 +vn -0.9952 -0.0980 0.0000 +vn -0.9952 0.0980 0.0000 +vn -0.9569 0.2903 0.0000 +vn -0.8819 0.4714 0.0000 +vn -0.7730 0.6344 0.0000 +vn -0.6344 0.7730 0.0000 +vn -0.4714 0.8819 0.0000 +vn -0.0000 0.0000 1.0000 +vn -0.2903 0.9569 0.0000 +vn -0.0980 0.9952 0.0000 +vn -0.0000 0.0000 -1.0000 +usemtl Material +s off +f 353//127 354//127 356//127 355//127 +f 355//128 356//128 358//128 357//128 +f 357//129 358//129 360//129 359//129 +f 359//130 360//130 362//130 361//130 +f 361//131 362//131 364//131 363//131 +f 363//132 364//132 366//132 365//132 +f 365//133 366//133 368//133 367//133 +f 367//134 368//134 370//134 369//134 +f 369//135 370//135 372//135 371//135 +f 371//136 372//136 374//136 373//136 +f 373//137 374//137 376//137 375//137 +f 375//138 376//138 378//138 377//138 +f 377//139 378//139 380//139 379//139 +f 379//140 380//140 382//140 381//140 +f 381//141 382//141 384//141 383//141 +f 383//142 384//142 386//142 385//142 +f 385//143 386//143 388//143 387//143 +f 387//144 388//144 390//144 389//144 +f 389//145 390//145 392//145 391//145 +f 391//146 392//146 394//146 393//146 +f 393//147 394//147 396//147 395//147 +f 395//148 396//148 398//148 397//148 +f 397//149 398//149 400//149 399//149 +f 399//150 400//150 402//150 401//150 +f 401//151 402//151 404//151 403//151 +f 403//152 404//152 406//152 405//152 +f 405//153 406//153 408//153 407//153 +f 407//154 408//154 410//154 409//154 +f 409//155 410//155 412//155 411//155 +f 411//156 412//156 414//156 413//156 +f 356//157 354//157 416//157 414//157 412//157 410//157 408//157 406//157 404//157 402//157 400//157 398//157 396//157 394//157 392//157 390//157 388//157 386//157 384//157 382//157 380//157 378//157 376//157 374//157 372//157 370//157 368//157 366//157 364//157 362//157 360//157 358//157 +f 413//158 414//158 416//158 415//158 +f 415//159 416//159 354//159 353//159 +f 353//160 355//160 357//160 359//160 361//160 363//160 365//160 367//160 369//160 371//160 373//160 375//160 377//160 379//160 381//160 383//160 385//160 387//160 389//160 391//160 393//160 395//160 397//160 399//160 401//160 403//160 405//160 407//160 409//160 411//160 413//160 415//160 +o Cube.003 +v -0.122310 1.521325 1.692563 +v -0.122310 1.521325 2.092563 +v -0.112310 1.521328 1.692563 +v -0.112310 1.521328 2.092563 +v -0.122308 1.511325 1.692563 +v -0.122308 1.511325 2.092563 +v -0.112308 1.511328 1.692563 +v -0.112308 1.511328 2.092563 +vn -0.0002 1.0000 0.0000 +vn 1.0000 0.0002 0.0000 +vn 0.0002 -1.0000 0.0000 +vn -1.0000 -0.0002 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +usemtl Material +s off +f 417//161 418//161 420//161 419//161 +f 419//162 420//162 424//162 423//162 +f 423//163 424//163 422//163 421//163 +f 421//164 422//164 418//164 417//164 +f 419//165 423//165 421//165 417//165 +f 424//166 420//166 418//166 422//166 +o Cube.002 +v -0.181707 1.521053 1.692563 +v -0.181707 1.521053 2.092563 +v -0.171707 1.521090 1.692563 +v -0.171707 1.521090 2.092563 +v -0.181670 1.511053 1.692563 +v -0.181670 1.511053 2.092563 +v -0.171670 1.511090 1.692563 +v -0.171670 1.511090 2.092563 +vn -0.0037 1.0000 0.0000 +vn 1.0000 0.0037 0.0000 +vn 0.0037 -1.0000 0.0000 +vn -1.0000 -0.0037 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +usemtl Material +s off +f 425//167 426//167 428//167 427//167 +f 427//168 428//168 432//168 431//168 +f 431//169 432//169 430//169 429//169 +f 429//170 430//170 426//170 425//170 +f 427//171 431//171 429//171 425//171 +f 432//172 428//172 426//172 430//172 +o Cube.001 +v -0.153327 1.483433 1.692563 +v -0.153327 1.483433 2.092563 +v -0.153327 1.493433 1.692563 +v -0.153327 1.493433 2.092563 +v -0.143327 1.483433 1.692563 +v -0.143327 1.483433 2.092563 +v -0.143327 1.493433 1.692563 +v -0.143327 1.493433 2.092563 +vn -1.0000 0.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +usemtl Material +s off +f 433//173 434//173 436//173 435//173 +f 435//174 436//174 440//174 439//174 +f 439//175 440//175 438//175 437//175 +f 437//176 438//176 434//176 433//176 +f 435//177 439//177 437//177 433//177 +f 440//178 436//178 434//178 438//178 +o Cube +v -0.153327 1.539826 1.692563 +v -0.153327 1.539826 2.092563 +v -0.153327 1.549826 1.692563 +v -0.153327 1.549826 2.092563 +v -0.143327 1.539826 1.692563 +v -0.143327 1.539826 2.092563 +v -0.143327 1.549826 1.692563 +v -0.143327 1.549826 2.092563 +vn -1.0000 0.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +usemtl Material +s off +f 441//179 442//179 444//179 443//179 +f 443//180 444//180 448//180 447//180 +f 447//181 448//181 446//181 445//181 +f 445//182 446//182 442//182 441//182 +f 443//183 447//183 445//183 441//183 +f 448//184 444//184 442//184 446//184 +o Cylinder.002 +v -0.000357 1.458382 -0.323778 +v -0.000357 1.449912 1.470212 +v 0.002082 1.458142 -0.323778 +v 0.000429 1.449835 1.470212 +v 0.004427 1.457431 -0.323778 +v 0.001185 1.449605 1.470212 +v 0.006588 1.456275 -0.323778 +v 0.001882 1.449233 1.470212 +v 0.008482 1.454721 -0.323778 +v 0.002493 1.448732 1.470212 +v 0.010037 1.452827 -0.323778 +v 0.002994 1.448121 1.470212 +v 0.011192 1.450666 -0.323778 +v 0.003366 1.447424 1.470212 +v 0.011903 1.448321 -0.323778 +v 0.003596 1.446668 1.470212 +v 0.012143 1.445882 -0.323778 +v 0.003673 1.445882 1.470212 +v 0.011903 1.443443 -0.323778 +v 0.003596 1.445096 1.470212 +v 0.011192 1.441099 -0.323778 +v 0.003366 1.444340 1.470212 +v 0.010037 1.438937 -0.323778 +v 0.002994 1.443643 1.470212 +v 0.008482 1.437043 -0.323778 +v 0.002493 1.443033 1.470212 +v 0.006588 1.435489 -0.323778 +v 0.001882 1.442531 1.470212 +v 0.004427 1.434334 -0.323778 +v 0.001185 1.442159 1.470212 +v 0.002082 1.433622 -0.323778 +v 0.000429 1.441930 1.470212 +v -0.000357 1.433382 -0.323778 +v -0.000357 1.441852 1.470212 +v -0.002796 1.433622 -0.323778 +v -0.001143 1.441930 1.470212 +v -0.005140 1.434334 -0.323778 +v -0.001899 1.442159 1.470212 +v -0.007302 1.435489 -0.323778 +v -0.002596 1.442531 1.470212 +v -0.009196 1.437043 -0.323778 +v -0.003206 1.443033 1.470212 +v -0.010750 1.438937 -0.323778 +v -0.003708 1.443643 1.470212 +v -0.011905 1.441099 -0.323778 +v -0.004080 1.444340 1.470212 +v -0.012617 1.443443 -0.323778 +v -0.004309 1.445096 1.470212 +v -0.012857 1.445882 -0.323778 +v -0.004387 1.445882 1.470212 +v -0.012617 1.448321 -0.323778 +v -0.004309 1.446668 1.470212 +v -0.011905 1.450666 -0.323778 +v -0.004080 1.447424 1.470212 +v -0.010750 1.452827 -0.323778 +v -0.003708 1.448121 1.470212 +v -0.009196 1.454721 -0.323778 +v -0.003206 1.448732 1.470212 +v -0.007301 1.456275 -0.323778 +v -0.002596 1.449233 1.470212 +v -0.005140 1.457431 -0.323778 +v -0.001899 1.449605 1.470212 +v -0.002795 1.458142 -0.323778 +v -0.001143 1.449835 1.470212 +vn 0.0980 0.9952 0.0047 +vn 0.2903 0.9569 0.0047 +vn 0.4714 0.8819 0.0047 +vn 0.6344 0.7730 0.0047 +vn 0.7730 0.6344 0.0047 +vn 0.8819 0.4714 0.0047 +vn 0.9569 0.2903 0.0047 +vn 0.9952 0.0980 0.0047 +vn 0.9952 -0.0980 0.0047 +vn 0.9569 -0.2903 0.0047 +vn 0.8819 -0.4714 0.0047 +vn 0.7730 -0.6344 0.0047 +vn 0.6344 -0.7730 0.0047 +vn 0.4714 -0.8819 0.0047 +vn 0.2903 -0.9569 0.0047 +vn 0.0980 -0.9952 0.0047 +vn -0.0980 -0.9952 0.0047 +vn -0.2903 -0.9569 0.0047 +vn -0.4714 -0.8819 0.0047 +vn -0.6344 -0.7730 0.0047 +vn -0.7730 -0.6344 0.0047 +vn -0.8819 -0.4714 0.0047 +vn -0.9569 -0.2903 0.0047 +vn -0.9952 -0.0980 0.0047 +vn -0.9952 0.0980 0.0047 +vn -0.9569 0.2903 0.0047 +vn -0.8819 0.4714 0.0047 +vn -0.7730 0.6344 0.0047 +vn -0.6344 0.7730 0.0047 +vn -0.4714 0.8819 0.0047 +vn 0.0000 0.0000 1.0000 +vn -0.2903 0.9569 0.0047 +vn -0.0980 0.9952 0.0047 +vn 0.0000 0.0000 -1.0000 +usemtl Material +s off +f 449//185 450//185 452//185 451//185 +f 451//186 452//186 454//186 453//186 +f 453//187 454//187 456//187 455//187 +f 455//188 456//188 458//188 457//188 +f 457//189 458//189 460//189 459//189 +f 459//190 460//190 462//190 461//190 +f 461//191 462//191 464//191 463//191 +f 463//192 464//192 466//192 465//192 +f 465//193 466//193 468//193 467//193 +f 467//194 468//194 470//194 469//194 +f 469//195 470//195 472//195 471//195 +f 471//196 472//196 474//196 473//196 +f 473//197 474//197 476//197 475//197 +f 475//198 476//198 478//198 477//198 +f 477//199 478//199 480//199 479//199 +f 479//200 480//200 482//200 481//200 +f 481//201 482//201 484//201 483//201 +f 483//202 484//202 486//202 485//202 +f 485//203 486//203 488//203 487//203 +f 487//204 488//204 490//204 489//204 +f 489//205 490//205 492//205 491//205 +f 491//206 492//206 494//206 493//206 +f 493//207 494//207 496//207 495//207 +f 495//208 496//208 498//208 497//208 +f 497//209 498//209 500//209 499//209 +f 499//210 500//210 502//210 501//210 +f 501//211 502//211 504//211 503//211 +f 503//212 504//212 506//212 505//212 +f 505//213 506//213 508//213 507//213 +f 507//214 508//214 510//214 509//214 +f 452//215 450//215 512//215 510//215 508//215 506//215 504//215 502//215 500//215 498//215 496//215 494//215 492//215 490//215 488//215 486//215 484//215 482//215 480//215 478//215 476//215 474//215 472//215 470//215 468//215 466//215 464//215 462//215 460//215 458//215 456//215 454//215 +f 509//216 510//216 512//216 511//216 +f 511//217 512//217 450//217 449//217 +f 449//218 451//218 453//218 455//218 457//218 459//218 461//218 463//218 465//218 467//218 469//218 471//218 473//218 475//218 477//218 479//218 481//218 483//218 485//218 487//218 489//218 491//218 493//218 495//218 497//218 499//218 501//218 503//218 505//218 507//218 509//218 511//218 +o Cylinder.001 +v -0.148360 1.567710 -1.945033 +v -0.148360 1.533830 1.728613 +v -0.138605 1.566750 -1.945033 +v -0.145215 1.533520 1.728613 +v -0.129226 1.563904 -1.945033 +v -0.142191 1.532603 1.728613 +v -0.120581 1.559284 -1.945033 +v -0.139404 1.531114 1.728613 +v -0.113005 1.553066 -1.945033 +v -0.136962 1.529109 1.728613 +v -0.106786 1.545489 -1.945033 +v -0.134957 1.526666 1.728613 +v -0.102166 1.536845 -1.945033 +v -0.133467 1.523879 1.728613 +v -0.099321 1.527465 -1.945033 +v -0.132550 1.520855 1.728613 +v -0.098360 1.517710 -1.945033 +v -0.132240 1.517710 1.728613 +v -0.099321 1.507956 -1.945033 +v -0.132550 1.514566 1.728613 +v -0.102166 1.498576 -1.945033 +v -0.133467 1.511542 1.728613 +v -0.106786 1.489932 -1.945033 +v -0.134957 1.508755 1.728613 +v -0.113005 1.482355 -1.945033 +v -0.136962 1.506312 1.728613 +v -0.120581 1.476137 -1.945033 +v -0.139404 1.504307 1.728613 +v -0.129226 1.471516 -1.945033 +v -0.142191 1.502818 1.728613 +v -0.138605 1.468671 -1.945033 +v -0.145215 1.501900 1.728613 +v -0.148360 1.467710 -1.945033 +v -0.148360 1.501591 1.728613 +v -0.158114 1.468671 -1.945033 +v -0.151505 1.501900 1.728613 +v -0.167494 1.471516 -1.945033 +v -0.154529 1.502818 1.728613 +v -0.176138 1.476137 -1.945033 +v -0.157316 1.504307 1.728613 +v -0.183715 1.482355 -1.945033 +v -0.159758 1.506312 1.728613 +v -0.189933 1.489932 -1.945033 +v -0.161763 1.508755 1.728613 +v -0.194554 1.498576 -1.945033 +v -0.163253 1.511542 1.728613 +v -0.197399 1.507956 -1.945033 +v -0.164170 1.514566 1.728613 +v -0.198360 1.517710 -1.945033 +v -0.164480 1.517710 1.728613 +v -0.197399 1.527465 -1.945033 +v -0.164170 1.520855 1.728613 +v -0.194554 1.536845 -1.945033 +v -0.163253 1.523879 1.728613 +v -0.189933 1.545489 -1.945033 +v -0.161763 1.526666 1.728613 +v -0.183715 1.553066 -1.945033 +v -0.159758 1.529109 1.728613 +v -0.176138 1.559284 -1.945033 +v -0.157316 1.531114 1.728613 +v -0.167494 1.563905 -1.945033 +v -0.154529 1.532603 1.728613 +v -0.158114 1.566750 -1.945033 +v -0.151505 1.533520 1.728613 vn 0.0980 0.9951 0.0092 vn 0.2903 0.9569 0.0092 vn 0.4714 0.8819 0.0092 @@ -235,39 +1155,174 @@ vn 0.0000 0.0000 1.0000 vn -0.2903 0.9569 0.0092 vn -0.0980 0.9951 0.0092 vn -0.0000 0.0000 -1.0000 -usemtl None +usemtl Material s off -f 65//35 66//35 68//35 67//35 -f 67//36 68//36 70//36 69//36 -f 69//37 70//37 72//37 71//37 -f 71//38 72//38 74//38 73//38 -f 73//39 74//39 76//39 75//39 -f 75//40 76//40 78//40 77//40 -f 77//41 78//41 80//41 79//41 -f 79//42 80//42 82//42 81//42 -f 81//43 82//43 84//43 83//43 -f 83//44 84//44 86//44 85//44 -f 85//45 86//45 88//45 87//45 -f 87//46 88//46 90//46 89//46 -f 89//47 90//47 92//47 91//47 -f 91//48 92//48 94//48 93//48 -f 93//49 94//49 96//49 95//49 -f 95//50 96//50 98//50 97//50 -f 97//51 98//51 100//51 99//51 -f 99//52 100//52 102//52 101//52 -f 101//53 102//53 104//53 103//53 -f 103//54 104//54 106//54 105//54 -f 105//55 106//55 108//55 107//55 -f 107//56 108//56 110//56 109//56 -f 109//57 110//57 112//57 111//57 -f 111//58 112//58 114//58 113//58 -f 113//59 114//59 116//59 115//59 -f 115//60 116//60 118//60 117//60 -f 117//61 118//61 120//61 119//61 -f 119//62 120//62 122//62 121//62 -f 121//63 122//63 124//63 123//63 -f 123//64 124//64 126//64 125//64 -f 68//65 66//65 128//65 126//65 124//65 122//65 120//65 118//65 116//65 114//65 112//65 110//65 108//65 106//65 104//65 102//65 100//65 98//65 96//65 94//65 92//65 90//65 88//65 86//65 84//65 82//65 80//65 78//65 76//65 74//65 72//65 70//65 -f 125//66 126//66 128//66 127//66 -f 127//67 128//67 66//67 65//67 -f 65//68 67//68 69//68 71//68 73//68 75//68 77//68 79//68 81//68 83//68 85//68 87//68 89//68 91//68 93//68 95//68 97//68 99//68 101//68 103//68 105//68 107//68 109//68 111//68 113//68 115//68 117//68 119//68 121//68 123//68 125//68 127//68 +f 513//219 514//219 516//219 515//219 +f 515//220 516//220 518//220 517//220 +f 517//221 518//221 520//221 519//221 +f 519//222 520//222 522//222 521//222 +f 521//223 522//223 524//223 523//223 +f 523//224 524//224 526//224 525//224 +f 525//225 526//225 528//225 527//225 +f 527//226 528//226 530//226 529//226 +f 529//227 530//227 532//227 531//227 +f 531//228 532//228 534//228 533//228 +f 533//229 534//229 536//229 535//229 +f 535//230 536//230 538//230 537//230 +f 537//231 538//231 540//231 539//231 +f 539//232 540//232 542//232 541//232 +f 541//233 542//233 544//233 543//233 +f 543//234 544//234 546//234 545//234 +f 545//235 546//235 548//235 547//235 +f 547//236 548//236 550//236 549//236 +f 549//237 550//237 552//237 551//237 +f 551//238 552//238 554//238 553//238 +f 553//239 554//239 556//239 555//239 +f 555//240 556//240 558//240 557//240 +f 557//241 558//241 560//241 559//241 +f 559//242 560//242 562//242 561//242 +f 561//243 562//243 564//243 563//243 +f 563//244 564//244 566//244 565//244 +f 565//245 566//245 568//245 567//245 +f 567//246 568//246 570//246 569//246 +f 569//247 570//247 572//247 571//247 +f 571//248 572//248 574//248 573//248 +f 516//249 514//249 576//249 574//249 572//249 570//249 568//249 566//249 564//249 562//249 560//249 558//249 556//249 554//249 552//249 550//249 548//249 546//249 544//249 542//249 540//249 538//249 536//249 534//249 532//249 530//249 528//249 526//249 524//249 522//249 520//249 518//249 +f 573//250 574//250 576//250 575//250 +f 575//251 576//251 514//251 513//251 +f 513//252 515//252 517//252 519//252 521//252 523//252 525//252 527//252 529//252 531//252 533//252 535//252 537//252 539//252 541//252 543//252 545//252 547//252 549//252 551//252 553//252 555//252 557//252 559//252 561//252 563//252 565//252 567//252 569//252 571//252 573//252 575//252 +o Cylinder +v 0.152802 1.567710 -1.945033 +v 0.152802 1.533830 1.728613 +v 0.162556 1.566750 -1.945033 +v 0.155947 1.533520 1.728613 +v 0.171936 1.563904 -1.945033 +v 0.158971 1.532603 1.728613 +v 0.180580 1.559284 -1.945033 +v 0.161758 1.531114 1.728613 +v 0.188157 1.553066 -1.945033 +v 0.164200 1.529109 1.728613 +v 0.194375 1.545489 -1.945033 +v 0.166205 1.526666 1.728613 +v 0.198996 1.536845 -1.945033 +v 0.167695 1.523879 1.728613 +v 0.201841 1.527465 -1.945033 +v 0.168612 1.520855 1.728613 +v 0.202802 1.517710 -1.945033 +v 0.168922 1.517710 1.728613 +v 0.201841 1.507956 -1.945033 +v 0.168612 1.514566 1.728613 +v 0.198996 1.498576 -1.945033 +v 0.167695 1.511542 1.728613 +v 0.194375 1.489932 -1.945033 +v 0.166205 1.508755 1.728613 +v 0.188157 1.482355 -1.945033 +v 0.164200 1.506312 1.728613 +v 0.180580 1.476137 -1.945033 +v 0.161758 1.504307 1.728613 +v 0.171936 1.471516 -1.945033 +v 0.158971 1.502818 1.728613 +v 0.162556 1.468671 -1.945033 +v 0.155947 1.501900 1.728613 +v 0.152802 1.467710 -1.945033 +v 0.152802 1.501591 1.728613 +v 0.143047 1.468671 -1.945033 +v 0.149657 1.501900 1.728613 +v 0.133668 1.471516 -1.945033 +v 0.146633 1.502818 1.728613 +v 0.125023 1.476137 -1.945033 +v 0.143846 1.504307 1.728613 +v 0.117447 1.482355 -1.945033 +v 0.141404 1.506312 1.728613 +v 0.111228 1.489932 -1.945033 +v 0.139399 1.508755 1.728613 +v 0.106608 1.498576 -1.945033 +v 0.137909 1.511542 1.728613 +v 0.103763 1.507956 -1.945033 +v 0.136992 1.514566 1.728613 +v 0.102802 1.517710 -1.945033 +v 0.136682 1.517710 1.728613 +v 0.103763 1.527465 -1.945033 +v 0.136992 1.520855 1.728613 +v 0.106608 1.536845 -1.945033 +v 0.137909 1.523879 1.728613 +v 0.111229 1.545489 -1.945033 +v 0.139399 1.526666 1.728613 +v 0.117447 1.553066 -1.945033 +v 0.141404 1.529109 1.728613 +v 0.125023 1.559284 -1.945033 +v 0.143846 1.531114 1.728613 +v 0.133668 1.563905 -1.945033 +v 0.146633 1.532603 1.728613 +v 0.143048 1.566750 -1.945033 +v 0.149657 1.533520 1.728613 +vn 0.0980 0.9951 0.0092 +vn 0.2903 0.9569 0.0092 +vn 0.4714 0.8819 0.0092 +vn 0.6344 0.7730 0.0092 +vn 0.7730 0.6344 0.0092 +vn 0.8819 0.4714 0.0092 +vn 0.9569 0.2903 0.0092 +vn 0.9951 0.0980 0.0092 +vn 0.9951 -0.0980 0.0092 +vn 0.9569 -0.2903 0.0092 +vn 0.8819 -0.4714 0.0092 +vn 0.7730 -0.6344 0.0092 +vn 0.6344 -0.7730 0.0092 +vn 0.4714 -0.8819 0.0092 +vn 0.2903 -0.9569 0.0092 +vn 0.0980 -0.9951 0.0092 +vn -0.0980 -0.9951 0.0092 +vn -0.2903 -0.9569 0.0092 +vn -0.4714 -0.8819 0.0092 +vn -0.6344 -0.7730 0.0092 +vn -0.7730 -0.6344 0.0092 +vn -0.8819 -0.4714 0.0092 +vn -0.9569 -0.2903 0.0092 +vn -0.9951 -0.0980 0.0092 +vn -0.9951 0.0980 0.0092 +vn -0.9569 0.2903 0.0092 +vn -0.8819 0.4714 0.0092 +vn -0.7730 0.6344 0.0092 +vn -0.6344 0.7730 0.0092 +vn -0.4714 0.8819 0.0092 +vn 0.0000 0.0000 1.0000 +vn -0.2903 0.9569 0.0092 +vn -0.0980 0.9951 0.0092 +vn -0.0000 0.0000 -1.0000 +usemtl Material +s off +f 577//253 578//253 580//253 579//253 +f 579//254 580//254 582//254 581//254 +f 581//255 582//255 584//255 583//255 +f 583//256 584//256 586//256 585//256 +f 585//257 586//257 588//257 587//257 +f 587//258 588//258 590//258 589//258 +f 589//259 590//259 592//259 591//259 +f 591//260 592//260 594//260 593//260 +f 593//261 594//261 596//261 595//261 +f 595//262 596//262 598//262 597//262 +f 597//263 598//263 600//263 599//263 +f 599//264 600//264 602//264 601//264 +f 601//265 602//265 604//265 603//265 +f 603//266 604//266 606//266 605//266 +f 605//267 606//267 608//267 607//267 +f 607//268 608//268 610//268 609//268 +f 609//269 610//269 612//269 611//269 +f 611//270 612//270 614//270 613//270 +f 613//271 614//271 616//271 615//271 +f 615//272 616//272 618//272 617//272 +f 617//273 618//273 620//273 619//273 +f 619//274 620//274 622//274 621//274 +f 621//275 622//275 624//275 623//275 +f 623//276 624//276 626//276 625//276 +f 625//277 626//277 628//277 627//277 +f 627//278 628//278 630//278 629//278 +f 629//279 630//279 632//279 631//279 +f 631//280 632//280 634//280 633//280 +f 633//281 634//281 636//281 635//281 +f 635//282 636//282 638//282 637//282 +f 580//283 578//283 640//283 638//283 636//283 634//283 632//283 630//283 628//283 626//283 624//283 622//283 620//283 618//283 616//283 614//283 612//283 610//283 608//283 606//283 604//283 602//283 600//283 598//283 596//283 594//283 592//283 590//283 588//283 586//283 584//283 582//283 +f 637//284 638//284 640//284 639//284 +f 639//285 640//285 578//285 577//285 +f 577//286 579//286 581//286 583//286 585//286 587//286 589//286 591//286 593//286 595//286 597//286 599//286 601//286 603//286 605//286 607//286 609//286 611//286 613//286 615//286 617//286 619//286 621//286 623//286 625//286 627//286 629//286 631//286 633//286 635//286 637//286 639//286 diff --git a/src/Aircraft.cpp b/src/Aircraft.cpp new file mode 100644 index 0000000..9afe664 --- /dev/null +++ b/src/Aircraft.cpp @@ -0,0 +1,57 @@ +#include "Aircraft.hpp" + +#include + +#include "Globals.hpp" + + + +using namespace irr; +using namespace irr::core; + +Aircraft::Aircraft() +{ + model = Globals::getSceneManager()->addMeshSceneNode(Globals::getSceneManager()->getMesh("../res/SU35S.obj")); + model->setPosition(vector3df(25.f, 0.f, 0.f)); + a = Globals::getSceneManager()->createFlyStraightAnimator(vector3df(100.f, 100.f, -1000.f), + vector3df(100.f, 100.f, 1000.f), + 32000, + false, + false); + + model->addAnimator(a); + std::cout << "Aircraft" << std::endl; +} + +Aircraft::~Aircraft() +{ + Globals::getSceneManager()->addToDeletionQueue(model); + std::cout << "~Aircraft" << std::endl; +} + +bool Aircraft::isGood() const +{ + return healthy; +} + +bool Aircraft::isTerminated() const +{ + return a->hasFinished(); +} + +bool Aircraft::evalShot(const irr::core::line3df &shotline) +{ + bool hit = model->getTransformedBoundingBox().intersectsWithLine(shotline); + if (hit) + { + if (healthy) + { + // got hit for the first time: do smokey? + auto pman = Globals::getSceneManager()->addParticleSystemSceneNode(true, model); + pman->getEmitter()->setDirection(vector3df(0.f, 0.f, 0.f)); + } + + healthy = false; + } + return hit; +} diff --git a/src/Aircraft.hpp b/src/Aircraft.hpp new file mode 100644 index 0000000..8ab2cd2 --- /dev/null +++ b/src/Aircraft.hpp @@ -0,0 +1,18 @@ +#include + +class Aircraft +{ +public: + Aircraft(); + ~Aircraft(); + + bool evalShot(const irr::core::line3df&); + bool isGood() const; + bool isTerminated() const; + +private: + irr::scene::IMeshSceneNode *model; + irr::scene::ISceneNodeAnimator *a; + bool healthy; + +}; diff --git a/src/Dispatcher.cpp b/src/Dispatcher.cpp new file mode 100644 index 0000000..8b2ee14 --- /dev/null +++ b/src/Dispatcher.cpp @@ -0,0 +1,70 @@ +#include "Dispatcher.hpp" +#include "Globals.hpp" +#include "Aircraft.hpp" + +using namespace irr; + +Dispatcher::Dispatcher() + : active(false) +{ + +} + +Dispatcher::~Dispatcher() +{ + aircrafts.clear(); +} + +void Dispatcher::start() +{ + lastDispatchMS = Globals::getDevice()->getTimer()->getRealTime(); + active = true; +} + +void Dispatcher::execute() +{ + u32 curTime = Globals::getDevice()->getTimer()->getRealTime(); + + if (active && (curTime - lastDispatchMS) > 10000) + { + auto a = std::make_shared(); + aircrafts.push_back(a); + lastDispatchMS = curTime; + } + + //cleanup + auto a = aircrafts.begin(); + while (a < aircrafts.end()) + { + if ((*a)->isTerminated()) + { + a = aircrafts.erase(a); + } + else + ++a; + } +} + +void Dispatcher::stop() +{ + active = false; +} + +const Dispatcher::Aircrafts &Dispatcher::getAircrafts() const +{ + return aircrafts; +} + +bool Dispatcher::evalShot(const core::line3df& l) +{ + bool ret = false; + for (auto a : aircrafts) + { + if (a->evalShot(l)) + { + ret = true; + } + } + + return ret; +} diff --git a/src/Dispatcher.hpp b/src/Dispatcher.hpp new file mode 100644 index 0000000..5cd471c --- /dev/null +++ b/src/Dispatcher.hpp @@ -0,0 +1,24 @@ +#include +#include + +#include + +class Dispatcher +{ +public: + typedef std::vector< std::shared_ptr > Aircrafts; + Dispatcher(); + ~Dispatcher(); + + void start(); + void execute(); + void stop(); + const Aircrafts& getAircrafts() const; + bool evalShot(const irr::core::line3df&); + +private: + irr::u32 lastDispatchMS; + Aircrafts aircrafts; + bool active; + +}; diff --git a/src/FireUnit.cpp b/src/FireUnit.cpp index 3211502..190c183 100644 --- a/src/FireUnit.cpp +++ b/src/FireUnit.cpp @@ -1,14 +1,21 @@ #include "FireUnit.hpp" +#include +#include + #include "Globals.hpp" +#include "Dispatcher.hpp" #include "TurretCamAnimator.hpp" +using namespace std; using namespace irr; using namespace irr::core; FireUnit::FireUnit() : aziTurnCoeffSmooth(0.f) , elevTurnCoeffSmooth(0.f) + , flashCount(0) + , fireBtnPressed(false) { turretAzimuth = Globals::getSceneManager()->addEmptySceneNode(); turretElevation = Globals::getSceneManager()->addMeshSceneNode(Globals::getSceneManager()->getMesh("../res/guns.obj"), turretAzimuth); @@ -19,21 +26,21 @@ FireUnit::FireUnit() cam->setFarValue(4000.f); cam->addAnimator(turretCamAnimator); - auto jet = Globals::getSceneManager()->addMeshSceneNode(Globals::getSceneManager()->getMesh("../res/SU35S.obj")); - jet->setPosition(vector3df(25.f, 0.f, 0.f)); - auto a = Globals::getSceneManager()->createFlyStraightAnimator(vector3df(100.f, 100.f, -1000.f), - vector3df(100.f, 100.f, 1000.f), - 16000, - true, - false); - jet->addAnimator(a); - a->drop(); - crosshair = Globals::getVideoDriver()->getTexture("../res/crosshair.png"); - auto b = Globals::getSceneManager()->addBillboardSceneNode(turretElevation, dimension2df(1.f, 1.f), vector3df(.14f, 1.5f, 1.89f)); - b->setMaterialTexture(0, Globals::getVideoDriver()->getTexture("../res/mflash.png")); - b->setMaterialType(video::EMT_TRANSPARENT_ALPHA_CHANNEL_REF); + mflashR = Globals::getSceneManager()->addBillboardSceneNode(turretElevation, dimension2df(1.f, 1.f), vector3df(.14f, 1.5f, 1.89f)); + mflashL = Globals::getSceneManager()->addBillboardSceneNode(turretElevation, dimension2df(1.f, 1.f), vector3df(-.14f, 1.5f, 1.89f)); + mflashR->setMaterialTexture(0, Globals::getVideoDriver()->getTexture("../res/mflash.png")); + mflashR->setMaterialType(video::EMT_TRANSPARENT_ALPHA_CHANNEL_REF); + mflashR->setMaterialFlag(video::EMF_LIGHTING, false); + mflashL->setMaterialTexture(0, Globals::getVideoDriver()->getTexture("../res/mflash.png")); + mflashL->setMaterialType(video::EMT_TRANSPARENT_ALPHA_CHANNEL_REF); + mflashL->setMaterialFlag(video::EMF_LIGHTING, false); + mflashL->setVisible(false); + mflashR->setVisible(false); + + fireSound = Globals::getAudioManager()->create("fireSound", "../res/gunburst.wav", false); + } FireUnit::~FireUnit() @@ -60,13 +67,28 @@ bool FireUnit::OnEvent(const SEvent& e) if (fabs(aziTurnCoeff) < DEAD_ZONE) aziTurnCoeff = 0.f; - if (e.JoystickEvent.IsButtonPressed(1)) + if (e.JoystickEvent.IsButtonPressed(0)) { - // fire trigger pressed + if (!fireBtnPressed) + { + shotline.start = cam->getAbsolutePosition(); + shotline.end = cam->getTarget() - shotline.start; + shotline.end.normalize(); + shotline.end *= 4000.f; + fireSound->play2d(); + /*vector3df lineEnd = cam->getTarget(); + lineEnd.normalize(); + lineEnd += 4000.f; + shotline.end = shotline.start + lineEnd;*/ + + Globals::getDispatcher()->evalShot(shotline); + fireBtnPressed = true; + flashCount = 16; + } } else { - // fire trigger released + fireBtnPressed = false; } if (e.JoystickEvent.IsButtonPressed(2)) @@ -109,7 +131,33 @@ bool FireUnit::OnEvent(const SEvent& e) void FireUnit::draw() { - auto& res = Globals::getVideoDriver()->getScreenSize(); + auto drv = Globals::getVideoDriver(); + auto& res = drv->getScreenSize(); - Globals::getVideoDriver()->draw2DImage(crosshair, position2di(res.Width / 2 - 128, res.Height / 2 - 128), recti(0, 0, 256, 256), nullptr, video::SColor(255,255,255,255), true ); + drv->draw2DImage(crosshair, position2di(res.Width / 2 - 128, res.Height / 2 - 128), recti(0, 0, 256, 256), nullptr, video::SColor(255,255,255,255), true ); + + video::SMaterial matA; + matA.AmbientColor = video::SColor(255, 255, 0, 0); + matA.DiffuseColor = video::SColor(255, 255, 0, 0); + matA.ColorMaterial = video::ECM_NONE; + matA.AntiAliasing = video::EAAM_FULL_BASIC; + matA.Lighting = false; + matA.Thickness = 1.5f; + matA.MaterialType = video::EMT_TRANSPARENT_ALPHA_CHANNEL; + drv->setMaterial(matA); + + if (flashCount > 0) + { + mflashL->setVisible(flashCount % 4 == 2); + mflashR->setVisible(flashCount % 4 == 0); + flashCount--; + } + else + { + mflashL->setVisible(false); + mflashR->setVisible(false); + } + + //drv->draw3DLine(shotline.start, shotline.end); + //cout << tgt.X << ' ' << tgt.Y << ' ' << tgt.Z << endl; } diff --git a/src/FireUnit.hpp b/src/FireUnit.hpp index 85d23c6..dc1bc6c 100644 --- a/src/FireUnit.hpp +++ b/src/FireUnit.hpp @@ -3,6 +3,11 @@ #include +namespace cAudio +{ +class IAudioSource; +} + class FireUnit : public irr::IEventReceiver { public: @@ -18,6 +23,13 @@ private: irr::scene::ISceneNodeAnimator *turretCamAnimator; irr::f32 aziTurnCoeffSmooth, elevTurnCoeffSmooth; irr::video::ITexture *crosshair; + + irr::core::line3df shotline; + irr::scene::IBillboardSceneNode *mflashL, *mflashR; + irr::u32 flashCount; + bool fireBtnPressed; + + class cAudio::IAudioSource* fireSound; }; #endif // FIREUNIT_HPP diff --git a/src/FlaSimApp.cpp b/src/FlaSimApp.cpp index 3e43272..51a6c19 100644 --- a/src/FlaSimApp.cpp +++ b/src/FlaSimApp.cpp @@ -3,6 +3,7 @@ #include #include "Globals.hpp" +#include "Dispatcher.hpp" using namespace std; using namespace irr; @@ -46,6 +47,7 @@ void FlaSimApp::execute() { while (dev->run()) { + Globals::getDispatcher()->execute(); drv->beginScene(true, true, SColor(255, 128, 128, 128)); sman->drawAll(); drawScreenSpace(); @@ -56,6 +58,24 @@ void FlaSimApp::execute() bool FlaSimApp::OnEvent(const irr::SEvent &e) { + if (e.EventType == EET_KEY_INPUT_EVENT) + { + if (e.KeyInput.Key == KEY_F12) + { + dev->closeDevice(); + return true; + } + if (e.KeyInput.Key == KEY_F9) + { + Globals::getDispatcher()->start(); + return true; + } + if (e.KeyInput.Key == KEY_F10) + { + Globals::getDispatcher()->stop(); + return true; + } + } return fireUnit.OnEvent(e); } diff --git a/src/Globals.cpp b/src/Globals.cpp index ee9d402..af90838 100644 --- a/src/Globals.cpp +++ b/src/Globals.cpp @@ -1,6 +1,8 @@ #include "Globals.hpp" +#include "Dispatcher.hpp" #include +#include using namespace irr; @@ -11,11 +13,14 @@ Globals::Globals() dev = createDevice(video::EDT_OPENGL, core::dimension2du(1280, 800), 32, false, false, true); drv = dev->getVideoDriver(); sman = dev->getSceneManager(); + dispatcher = new Dispatcher(); + audioManager = cAudio::createAudioManager(true); } Globals::~Globals() { dev->drop(); + audioManager->shutDown(); instance = nullptr; } @@ -48,3 +53,19 @@ scene::ISceneManager* Globals::getSceneManager() return instance->sman; } + +cAudio::IAudioManager* Globals::getAudioManager() +{ + if (!instance) + instance = new Globals(); + + return instance->audioManager; +} + +Dispatcher* Globals::getDispatcher() +{ + if (!instance) + instance = new Globals(); + + return instance->dispatcher; +} diff --git a/src/Globals.hpp b/src/Globals.hpp index 5b6eb5e..7c7b336 100644 --- a/src/Globals.hpp +++ b/src/Globals.hpp @@ -1,6 +1,11 @@ #ifndef GLOBALS_HPP #define GLOBALS_HPP +namespace cAudio +{ + class IAudioManager; +} + namespace irr { class IrrlichtDevice; @@ -22,6 +27,8 @@ public: static class irr::IrrlichtDevice* getDevice(); static class irr::scene::ISceneManager* getSceneManager(); static class irr::video::IVideoDriver* getVideoDriver(); + static cAudio::IAudioManager* getAudioManager(); + static class Dispatcher* getDispatcher(); static void shutdown(); @@ -33,5 +40,7 @@ private: class irr::IrrlichtDevice* dev; class irr::scene::ISceneManager* sman; class irr::video::IVideoDriver* drv; + class cAudio::IAudioManager *audioManager; + class Dispatcher *dispatcher; }; #endif // GLOBALS_HPP diff --git a/src/main.cpp b/src/main.cpp index 41b8e2a..1bf0119 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,9 +1,12 @@ #include "FlaSimApp.hpp" +#include "Globals.hpp" int main() { - FlaSimApp a; - a.execute(); + FlaSimApp *a = new FlaSimApp(); + a->execute(); + delete a; + Globals::shutdown(); return 0; }