BLENDER_v242REND -InitSRt tpDSR1-Animation !8v ?u L  DATA ur DATAr u  DATA u9 r  DATA9 u8 DATA8 u 9 DATA u 8 DATA uH5 DATAH5 u( DATA( u; H5 DATA; uX ( DATAX u ; DATA uxGX DATAxGu!8 DATA!8uxGDATAv v& r DATA&v@$v  9 DATA@$v B & r DATA B v@$ DATAvp( B DATAp( vx8 H5 DATAxvJp( ( DATAJv3x( H5 DATA3v J8 DATA vJ3 ; DATAJvȕ 8 X DATAȕ v J9 X DATA v 1ȕ ; X DATA 1v8C   H5 DATA8C vP 1 xGDATAPv&8C ( xGDATA&v P xGDATA v~&; !8DATA~ve9 X !8DATAe9v?~8  DATA?vk e9 !8DATAk v ?? ; DATA ?vk !8xGDATAu xȺN  ; X 9 O`_ )4 e DATA4 w_ Link and MaterialsEditing>DATA_ w@ 4 MeshEditingF>DATA@ w} _ Anim settingsObject>DATA} wg@ DrawObjectF>DATAgwP } ConstraintsObject>DATAP wHgEffectsObjectDATAHwPv P HooksObjectF>} DATAPv w HParticle InteractionObject>gDATA w@ Pv SoftbodyObject>gDATA@ wH: OutputRender>DATAH: w @ RenderRenderF>DATA we H: AnimRender>DATAe w FormatRender>DATA`_ d)333?V,@DhCDhCC(BDC?z?DATAT)f`_ 333?V,/9DATAȺN xdu r  !  DATAdx&JȺN  xG( H5 G==o?Et A ОpO DATAОwpO Transform PropertiesView3d>DATApO wО3D Viewport propertiesView3d>"DATAEt _A 333?V<????????G==o? A*A?G==o??????*Aɀ  B??=C ݢM@ݢM@ݢM@?DATATA fEt 333?V</9DATA&Jx8YndH5 ( 8 ??PףH@ 8y V V DATA V wTransform PropertiesIpo!>DATA(@ c0 333?V\zC̽̌?zC@ #< #<`jFzD OBzC̽̌?DATA0 g @ 333?V\CC|||??l|DATA С0 333?V\zCCHBC|||?CFC= ADATAxСjq 333?V\ =rttDATAq i С 333?V\?zDzDBCl||ll|zDzD=HB DATA  q 333?V\BCBCl|llFzD #<HB DATA _8y  333?V\??? ???? A???PA A!O?j?}GCHB? Aɀ  B? #<CDATAT8y f 333?V\/9DATA8YnxL&J!8 8 X  w ^ Z DATAZ w Link and MaterialsEditing>DATA wZ MeshEditingF>DATAw l 333?VLzCB{ µCB ?BFB= ADATA pu w 333?VLzCCHBC$?CFC= ADATApu d^ 333?VL#DhC`DpJgChCC(BDC?z?DATAT^ fpu 333?VL/9DATALx8Yn; xG!8} ?=o?. ` 8A`DATA8Aw`Transform PropertiesView3d>DATA`w8A3D Viewport propertiesView3d>"DATA g`Ä 333?YDATAȺ} wE ` LampLampF>DATAE w Ⱥ} SpotLamp>DATA w E Texture and InputLamp>DATA w Map ToLamp> DATA w8& PreviewMaterial>DATA8&w@t MaterialMaterialF>DATA@tw(8&PreviewWorld>DATA(wD@tWorldWorldF>DATADw`(Mist Stars PhysicsWorld>DATA`wK DTexture and InputWorld>DATAK w>`Map ToWorld>`DATA>wK OutputRender>DATAw >RenderRenderF>DATA wAnimRender>DATAw@ FormatRender>DATA@w Link and MaterialsEditing>DATA w0 @MeshEditingF>DATA0 wP& Mesh ToolsEditing>DATAP&w 0 Mesh Tools 1Editing>DATA wHU P&CameraEditingF>DATAHU w  ShadersMaterial>xq DATA wH HU TextureMaterial>DATAH wH} Anim settingsObject>DATAH} wx{vH DrawObjectF>DATAx{vw H} ConstraintsObject>DATA wXB8x{vScriptlinksScript>DATAXB8wh ? EffectsObjectx{vDATAh ?w: XB8Map InputMaterial> DATA: w+` h ?Map ToMaterial> DATA+` wm : AnimAnim>DATAm wX: +` SoundSound>DATAX: w m ListenerSoundF>DATA w, X: SequencerSound>DATA, w(N ArmatureEditingF>DATA(Nwxq , RampsMaterialF>8&DATAxq w(@t (NMirror TranspMaterial>DATA(@t wh xq Mist / Stars / PhysicsWorld>DATAh w8! (@t Amb OccWorld>(@t DATA8! w h Shadow and SpotLamp>DATA w8! ModifiersEditing>DATAw ShapesEditing> DATA@ d 333?8DhCB5DB%>CC(BDC?z?mDATA _@ 333?8??? ???? A??@PA Aj?c3>}GCHB? Aπ  B? #<CDATAgH 333?8   ??DATATH f333?8Load LibraryC:\Documents and Settings\Jean-Baptiste\Mes documents\Mes Projets\BZoo\src\template.blend\Scene\InitGDATA x@88 5 Pw }  x> DATA@x h p1 } X7 w=[K=o?  |Wil^ ^ w, DATAw, wTransform PropertiesView3d,>DATAww, View PropertiesView3dT>"DATAxWj螮 333?@hw_ ( =DATA螮h@z W333?@CC@???DATA@z _ 螮333?@????????w=[K=o?{IAV!Ay?w=[K=o??????{IAπ  B??Y!==C7?X<s=@s=@s=@?DATA( c @z 333?@zC̽̌?zC@22 #< #<`jFzD OBzC̽̌?DATA guB 333?@ 22 ??2DATAuBs7 333?@?zDzDBD22FzD #<HB DATAs7diluB333?@DdC8CnD fCC(BDC?z?DATATilfs7333?@Open Text FileICTURESC:\Documents and Settings\Jean-Baptiste\Mes documents\Mes Projets\BZoo\src\bzProtocol.py.blend {DATAx@` 8 p1 h  @c;@AHM X0.   `n@DATA`nw@Transform PropertiesView3d,>DATA@w`nView PropertiesView3dT>"DATAX_ 333??%%%i!3?i!3&i!4??%%i!3?%i!3? @c;&A &Zm4A?? c;@ti! 'Zm5 s@@/>$/ݮ$V~2ݮ>@'֟A֟(`!(@ @c;@AHM?%%%i!3?i!3&i!4?5?55{IAπ  B??gw:=C7?X<>>>?DATA( c  X333?zC̽̌?zC@22 #< #<`jFzD OBzC̽̌?DATA  gh# 333? 22 ??2 DATA, AM1~Ab>ADATAh#  333??zDzDBD22FzD #<HB DATA d0. h#333?DdC8CnD fCC(BDC?z?DATAT0. f 333?Save FileNT PICTURESC:\Documents and Settings\Jean-Baptiste\Mes documents\Mes Projets\BZoo\src\ClientTemplate.blendWSRt@: tX pDSR3-Materialodel SingMT AD(lP   DATAMT u!vDATA!vuF MT DATAF ur !v DATAr u)KF DATA)Kud^r <DATAd^u< )K<DATA< u d^DATA u?K< DATA?Ku@ ,<DATA@u@ ?K,DATA@ u @DATA uhr @ ,DATAhr uA DATAAuhr DATAD(vx F !vDATAx v\WD(r MT DATA\WvX x MT )KDATAX v \Wr d^DATA vylX )Kd^DATAylvRs < !vDATARs vXylF  DATAXvRs  < DATAvX d^DATAv} ?K)KDATA} v@> ?Kd^DATA@> v0X}  @DATA0XvH@> ?K@DATAHvf90X@ )KDATAf9v?H@ < DATA?v}f9 @DATA}vpT ? ?KDATApT vh5`} @ DATAh5`vPpT hr @ DATAPvh h5`hr DATAh vH7P< ADATAH7vlh A@DATAlvH7hr ADATAP x MT )Kd^r ?@Pף;;!7paP+ DATApawآ OutputRender>DATAآ wP paRenderRenderF>DATAP wP+ آ AnimRender>DATAP+ wP FormatRender>DATA7lP8w 333?V\~CA~CA!?AFA= ADATAP8w  [7 333?V\zCCHBC ?CFC= ADATA [d`|P8w 333?V\DhC?DhCC(BDC?z?mDATA`|_ [333?V\??? ???? A??@PA Aj?c3>}GCHB? Aɀ  B? #<CDATA g`|333?V\@̌AR|B1@lA A@CC #<@DATATf 333?V\/9DATA x P < !vF   !  DATA xq ?K@ d^G@? JL-=-=W-X~xI  h DATA w`c OutputRender>DATA`c w0 RenderRender>DATA0wT `c AnimRender0>DATAT w00FormatRenderH>DATA0w" T PreviewMaterial>DATA" wFX0MaterialMaterial>DATAFXwp" ShadersMaterial0>DATApw@BFXTextureMaterialD>DATA@Bw@ pMap InputMaterial\>DATA@ wx3v @BMap ToMaterial`>DATAx3v wh @ RampsMaterial>" DATAh wx3v Mirror TranspMaterialH>DATAxI d333?VChCCvgCC(BDC?z?DATA_P xI 333?VJ>H!?)xu?i6>Pbܗ=(?^L?a?滎z?J>#xu?ܗ=Hi6>(? ?Pb^L?\FAA?4[?[!?@jG>gb>Pb>4Im>k&?]M^L<0@AzA=>Kc<2֍7&> ?:x¸A1vB,jB~@G@? JLJ>H!?)xu?i6>Pbܗ=(?^L?a?滎z?@?$$OAɀ  B?=Ch?j(4?t'>dDATA(P c 333?VzC AzC A #< #<`jFzD OBDATAT fP 333?V;SAVE FILE/usr/home/intrr/blender/blend/untitled.blendDATAq xX1X )K@ ?KU.=w=o?+=+=W+X,X DATA _ 333?W???h?j(4?t'>????hj(4t'?U.=w=o??OAɀ  B??=Ch?j(4?t'>dEh@Eh@Eh@?DATA dzS 333?WDdC>9C,DeCC(BDC?z?DATA(zSc 333?WzC AzC A #< #<`jFzD OBDATAT fzS333?W SAVE FILE/Users/ton/Desktop/der/blend/untitled.blendDATAX1Xxq hr A@ e?B$?AHM+++USpנ= DATApנ_Ou 333?W |ݕ/?U~'?3F:?>T8165e?2>Z& 4?ߕ/?7F:?81W~>85e?'?T2>ne@>M@?4z?'''䷄?K??T?v|@?l211A 4Atp>?@@FC>G ?4xB֟&BĭeA(@e?B$?AHMݕ/?U~'?3F:?>T8165e?2>Z& 4?H?N,Z#OAɀ  B??=Ch?j(4?t'>dA@A@A@?DATAOu dpנ333?W |DdC>9C,DeCC(BDC?z?DATA(c= Ou 333?W |zC AzC A #< #<`jFzD OBDATAT= f333?W | SAVE FILE/Users/ton/Desktop/der/blend/untitled.blendDATAxX1X@ < Ahr &=+=o?US(اr DATA(_X_ 333?W ?3?3:-vk(4??3?3;@k(40v@?&=PU1n;+=ꉖø;ZO{:?JXA54U0AC;@j(40v@?&=+=o??3?3:-vk(4?5?5IXAɀ  B??=C:j(4?.vdٚ@ٚ@ٚ@?DATAX_ dS(333?W DdC>9C,DeCC(BDC?z?DATA(Scاr X_ 333?W zC AzC A #< #<`jFzD OBDATATاr fS333?W SAVE FILE/Users/ton/Desktop/der/blend/untitled.blendSRtX td@: SR4-Sequence.Sr s(s Ot K  DATA.SuH/SDATAH/Suf .S DATAf u_nH/S DATA_nuҫf DATAҫu)_nDATA)uҫDATAu )DATA u ; DATA ; uP DATAPu@mC ; DATA@mCuk PTDATAk u8R @mCTDATA8R ur k DATAr u8R DATAsvCf H/SDATACv s.S_nDATA v>C.SҫDATA>v   _n)DATA  v`J>)ҫDATA`Jv2w  H/SDATA2w vJ `J f DATAJ vp4 2w DATAp4 vVJ ; DATAVvhLJp4 PDATAhLJv`Y V ; PDATA`Y v`z hLJ ; @mCDATA`z v`J`Y @mCPDATA`Jvc `z k DATAc v `J k DATA v`ev c k @mCDATA`ev v(  8R ҫDATA( vN `ev 8R ; DATAN v(s ( r PDATA(s v(s N r )DATA(s v(s r 8R DATAOt x .Sҫ)_n19i  XSDATA wLOutputRender>DATALwn8 RenderRenderF>DATAn8wXSLAnimRender>DATAXSwn8FormatRender>DATA19di 333?WDhCvDhCC(BDC?z?DATATi f19333?W/9DATA xAOt H/Sf  !  DATAAxM  ҫ8R r )8=i>o? ʚ  DATAʚ lv333?W&~CB~CB ?BFB= ADATAve0ʚ 333?W&zCAzCA  A@FB= A DATA0_ v333?W&????????8=i>o?fffAD&@??fffAɀ  B? #<CDATAT f0333?W&AVE TARGA/t1.blend9DATAM xy A@mCk P8=H>o?UUU 0 DATA0e8A333?W*zCAzCA1||1 A@FB= A DATA8A_ 0333?W*????????8=H>o?fffA*@??fffAɀ  B? #<CDATAT f8A333?W*AVE TARGA/t1.blend9DATAy xKM ; k @mC8=>o?SSSTO   DATA(O cڮ333?W.B̽̌?B̽̌? #< #<`jFzD SQB̽̌?DATAڮ_  O 333?W.????????8=>o?fffA@??fffAɀ  B? #<CDATAT  fڮ333?W.OAD FILE/9DATAKxy 8R ; Pr 8=i>o? x  DATAx e8 333?W1zCAzCA A@FB= A DATA8 _ x 333?W1????????8=i>o?fffAD&@??fffAɀ  B? #<CDATAT f8 333?W1AVE TARGA/t1.blend9SRtdtX SR5-ScriptingpN?w> 8ײ h>|H  DATApN?uj DATAj uU pN? DATAU u@] j  DATA@] u@| U DATA@| uPf@] DATAPfux @| DATAx u PfDATA uX# x DATAX# uw DATAwuX# DATA> vdj U DATAdvK> j PfDATAKvdx U DATAv7Kx PfDATA7v= @| DATA= vX 7X# PfDATAX vp = x X# DATAp vX(u X X# DATAX(u v،: p @| PfDATA،: v X(u @| pN?DATA vأ ،: pN?wDATAأ vb  @] wDATAb v̤ أ wDATA̤ v8ײ b X# wDATA8ײ v̤ x @] DATAh>|xPfj U x  !  DATAx(hh>|@| PfX# z==o?H۫C MJA DATAMJwA Transform PropertiesView3d>DATAA wMJ3D Viewport propertiesView3d>"DATAH۫_C 333?Y.|????????z==o?&A*A?z==o??????*Aɀ  B??=C ?@?@?@?DATATC fH۫333?Y.|/9DATA(hxH wX# x @] ??Pף Lt ` HE HE DATAHE wTransform PropertiesIpo!>DATAxt j 333?Y/|> =DATAh>t 333?Y/|CCx??|?DATA(>c؍]333?Y/|zC̽̌?zC@;; #< #<`jFzD OBzC̽̌?DATA؍]gPj >333?Y/|CC|||??l|DATAPj H ؍] 333?Y/|zCCHBC|||?CFC= ADATAH iv Pj 333?Y/|?zDzDBCl||ll|zDzD=HB DATAv x H 333?Y/|BCBCl|llFzD #<HB DATAx _` v 333?Y/|??? ???? A???PA A!O?j?}GCHB? Aɀ  B? #<CDATAT` fx 333?Y/|/9DATAH x(hpN?@| wO| 8>f DATAfwx Link and MaterialsEditing>DATAx w( fMeshEditingF>DATA( wXu x Anim settingsObject>DATAXu wv ( DrawObjectF>DATAv w8: Xu ConstraintsObject>DATA8: w@ v EffectsObjectDATA@ w: 8: HooksObjectF>Xu DATA: w @ Particle InteractionObject>v DATA w`` : SoftbodyObject>v DATA`` w  OutputRender>DATA w@>`` RenderRenderF>DATA@>whd AnimRender>DATAhdw @>FormatRender>DATA whdScriptlinksScript>DATA| d8>333?Y0|ChC#DhCC(BDC?z?DATAT8>f| 333?Y0|/9SC\8.]$YSCInitenuJeu.001π د   =@ -dd??< ddd Z ??MJMJ@????L?fff??@ A//backbuf\Documents and Settings\Jean-Baptiste\Mes documents\MesPublications\SiteBlender\Games\Premier\fondecran//ftype@&#@^@&^#D DATAد S .π DATA Sد BhFy DATA0@ \Z ?o: ??DATA4MJX1 RenderLayerSC\$Y] 8.SCKeyboardingnit.001̀ x` (P(P(P=At -dd??< ddd Z ??0S0S@????L?fff??@ A//backbuf\Documents and Settings\Jean-Baptiste\Mes documents\MesPublications\SiteBlender\Games\Premier\fondecran//ftype@&#@^@&^#D DATA SPJ@Psw DATAPJSw (v DATAw S [PJ@(Ay DATA [S;w e@w DATA;S(_ [phw DATA(_SX;zw DATAXSx`(_w DATAx`SX.̀ DATA0At \Z ?o: ??8DATA40SX1 RenderLayerSC\ ] $YSCMaintageainӀ u (@(pV?GIqIqIqIII=Pr dd??< d XddZ ??n8n8@????L?fff??@ A//backbuf/tmp\//ftype@&#@^@&^#D DATA(@(Su .v DATAu S@ (@(.@ր DATA@ Sq9u .s DATAq9S0j@ .܀ DATA0jS | q9.(Є DATA | S? 0j.w DATA? S0u | .|w DATA0u SI ? Txvw DATAI S`0u  ( DATA`S I  P DATA S ` .PÀ DATA SX\  .v DATAX\SpV  .Ӏ DATApVSX\hـ DATA(R,d'=A@DATA0Pr \Z ?o: ??8DATA4n8X1 RenderLayerSC\ ]" SCMessageseyboarding.ɀ $ O뺯(>P=6(!92Ӹi>P=6(!92Ӹi>P=6(!92Ӹi>=O-dd??< ddd Z ??LL@????L?fff??@ A//backbuf\Documents and Settings\Jean-Baptiste\Mes documents\MesPublications\SiteBlender\Games\Premier\fondecran//ftype@&#@^@&^#D DATAS8q4Jy DATA8qS 4Ny DATA S8 8q4@Qy DATA8 S  4hTy DATA S4 8 4Wy DATA4 S8= 4Zy DATA8= S4 4} DATAS w 8= 40} DATA w S`  4X} DATA` S w  4} DATA SM `  4} DATAM S8}   4Џ} DATA8} SM  4} DATAS 8} 4 } DATA S(e 4H} DATA(e Sh3X 4p} DATAh3XSl$(e 4 DATAl$S+s h3X4( DATA+s SOl$4P DATAOS +s ;(pw DATA SJ O4x DATAJ S$ @ DATA$ SJ @ɀ DATA0O\Z ?o: ??8DATA4LX1 RenderLayerSC\"] SCStatusnit.001xƀ t t {3>,2~>W> K1) >W> K1) >W> K1) >=- -dd??< ddd Z ??  @????L?fff??@ A//backbuf\Documents and Settings\Jean-Baptiste\Mes documents\MesPublications\SiteBlender\Games\Premier\fondecran//ftype@&#@^@&^#D DATA t SXBv DATAXBS } t Nx DATA }S,XB6s DATA,SG }yw DATAG Sw , DATAw SxCG s DATAxCS w ȼ DATA Sp xC s DATAp S<  "( DATA< S p  @Ȉs DATA S<  .xƀ DATA0- \Z ?o: ??8DATA4 X1 RenderLayerIM4X pR IMaffiche.jpg//textures\affiche.jpggs/Jean-Baptiste/Mes documents/Mes Projets/BZoo/src/textures/affiche.jpgpg} ( DATA} cJ DATAdJ JFIF NeoGeoZC     C   " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?(((((((((((((((((((((((((((((((([_>Ѵ)nKl3?Z-wri&OtlgkJԴ ڤhVf7lKӚOz| ֖chnt*2FO^n*5hNѿvz89)n_L8#7Iwxk,..?w˛uLwoj4Ww%<"gC?xyBiFOUӠn]$f^Min` ȎT3J?ӵCno8-WO[fr&+I+_jV5ꕕ$*R1 <N2嶉Wm~g#]q;ɾ+Fb20️a^G>/x"d q4?e.-Q [38 z\Ok0^[UA$2{nxLk m_˝сJZHke}^?#q5_sx 52?z$|  Y.c_Yr# {lQGG6dXL?/y癢_~}_)?UU =@>_ݏd<)5pXg?g?/|G)<,Fl\??''~|52i:DT1S_~:G_kS/ªr>μ&}S6w9o#:gZ/خK.0ynfR#JӼ/%kƏj\وewo٬Y§Z,w\e|FuԼbPM_qw'q䛈_=^NU+Em˲Vԣsäۻd_㏆Wgj^h~TS8+4{ 7,_&4>\ ^kxVwD]ݳk+]'WSN4QD!Yp8#Q^>+)BQP[~;8UkK][s*m+R n|Pƹ_Ԯ:342nX1߱ jl<}q[Ik꽀9/|}\%S֗ .!,|o><*ՒoEm̾}]QNh+oK?'I_hX\즛{+~𪎅s'toXsըc{]/M*J>z#Cw.<}KCeYh#hSyǯ5zKiٷm?z]͕ҵu aЃ}eiTͨRv+mZwO3WMOX>E#h|ul)Mˣo֨7Qk`Ӿ>l:޽[# 2E{mfBO eԇP3?I(Sn->8:^w;\x:;{?O΂Iml:9ֿ&kn[kJ`aap{g=k>$k0hōuWQ nD'^'D-e@lVICj[wѭs$ ʭ{=[Z֒ZI t[ yQkz湨6+kp$B=\iOSV]ԑS۹w`2s^+HojkV->kcRIIH1 |WW駕>jx*W=wZ/B9aYQ]tar xߋ|[+|/GU# Q#,x<_O4}*M=""TAm3؍N+ԋr<*y\ץΗʦC䱛;C.[$yI9*rAfU<^4_ZG]}nb)G0źH:ҫ[Q{ @Y~!F$Jɝ)XH\+:_0^6P8 )a'u%OkhΕ^h+gw-晩sl h- yҸP_eZv|jD95e8$yrNRI/鞅:W~Zє_칹>x|`-Zx~Sk{[VAn,a0'8qo{]w?ĭJ.k䬡m뻡o9~KLқZs/ ~_dHWCh7Z!潇G"'5Axῴx} eO3K~6tR0$eqguڏTE<Lv$o0H~jzկ ("Wf \dWT`B*Vm;[{n)Mr|Y]ȽF^h#68ƾT^WPQW q 3_-5wNcLDrែM?o[[ D(H| ~IiaIhoծ[Xf"*z ՗!=W7r!dBퟵ΍u1љl\r~VuO~M-gFOdh9$E6[,m%r?{ӧN6*# a)) '[}zYNcNte&vٮcHHng,UK^jjJ~W#k|Wc8ލCQӮoV{95G6'Ym0Lr#L;<26 9viiJs,`߫ϫrxŲWϰM},0zZ~ڞ34o 7Svͷvb ~f~RMq<%s[ /LTUbxU1 uW y0QѴkW׳oSm8\[hP:x-#.2Wy8 .ἸCi6"l4?jgZ1LrkGJҭhnoLZ>pξ,hee=8Ӻokc$O_sWgQQ07#l{8-K229 0 WEY }> d( N rc#z'4W_KVEh+Ʋ0* `קeίn߆Gk{+_ykI$3>$0aqamhU/L,k i=:V!y2cS ֋mmTv 2|CLoהּvr+vJXhм`H{j}scJSM[Oþ坶ƥ]KӫǪf3}M·5ȯLڵR_*8$ߍmI汾(|J:|Ug_f-e2Z{6ѓHԾ#1)>4 !zPH8Rr(ʾ6oc=kڕA.snSzAX+ZƛV&~G 8bk?iZς|gZuYr>XmX/cU"@5e*m>aq5Uzz][8?ÿZ^Jb r^q/cÿZ^j_qL󜆵8+Ԃ珬uiz;Yd_؋@?f-B9$b4Œn9$0=V"<ϸQM_ (.u#rjcZ˸eQB8jrm^Y.y3L*ޫJ-7R-WiC7cä餿tcם ީgH{{fo+OM88E{ŵj-mᶁ~q U_X<*& $!8{wѲ>euUzM9e): ъZ-O+vhwj]7PHxo/ \k뮖HF8uK ]yWƽZ'[4J"sџWV˩Nkd]Of㉌۵ESX]FF{שx#w 4Ԓ[x} 4Ẹ VEGmgu2[9FTΰXu7 J{EkG}DT,:r8+^=|Vz: VUc#kV)񴩥}rSѧxgJ[g  #WT̟Xܟ|;C(^.i#mnE85P;+7Y7Sxnè$'|`8Ӷ;W6 %1-l0 LU?Y 0Sƣ Oج CҎVi~|"Ug{hOgxWڤ>f6s\$y&ݹ`3u{w KM6)--e\Ř=sڟ*J_5..ay6`0Qd0r+|p^6>[r V?m<?u˚/SO]CĖNԢYX./9ahY1JzdW|1|U.u>uZba.m39 x55c[Z[I#Zh]0>c!~c8xBymњ&*G#J1ӅcU~ʻd}RM)0EijcRC܃G9>X~Yau~{u`^O=ԷA{dc*#$c'$<$^0,W^+oO]bA<[5rF.)j+=+Uנ1]ѧ* tĉWz/2xT})1Ūijc]wߗGw< [K5{pwʠ(\nvz?/<i9F7kڇjM^y{!HלZG\nVJȯ)U$<ՉJ "W~ / z̝k?h"@5ޗ pǧ3^ǯz2`è9߲?z=p8jvըሟZoY}f8ݒx䈀S?|ZYӴgLΘg O>>sGo;\uJLszg4/L;J@ &'J:m[mJ3NQY+9JO˯xŘ<{izϋ-,/ l^yG6:W[ ǵtU r껵pWoT2kޱ\HY2e# (M^ ?C<ݪEPv.-T0KGgmJ<+>!߆cҒQyQZ"#F܊m<ַ[^imr][S+AoV\xٕЩ(ٻj=<#O/&݆map֎;C@g D񅑐 r3\Ғtt`^ $ԜҒgUH VT#:Tv2Z,1c9\NH$? 5j8auo6{YimfƬR؇Eд[:}7Y$x; },䔣HK^3/C6t:̊Y05I•GkJJ$=x?kh+k/=+4h-N}(եUڜg^=Q,ֳ.'yR.|.$,?|u`פ-yP{њO~fG|&VäFTas} #_ ~0𷂼2ƝVUFZvo.,`G5YfoF5oN}O+Qx:6oCӦIl".M`ZvD7$@^!7ohc!dk3Zx94*c־3)ӭvinWzyGw'ZYyxBugAiH¾zҼCuLȑ2^:\o|QY1g&+iD\ƅV+]O{* Ҿ'YL  ڔnvzzNѮ<  O?x|/O$m6=¶1_/SW:@m$vWqg᥷Y ԯ$0[ܷ~_Izu# C4WuxbzRA5;'sHcGXȷoHXm+H(Gw::q:)c}kG^#o"-t~Llè^aw66/hv =1W_++NkK&Q#)ǥ|\Z.umC~8FV3ׅ ~*7^a UϧZm_L oQ 5ճU\3z֬'s_h_~9bg5i( rC_<>F/eq'_ omGF9NWk(aw]tpcW0W07^ϩ6r׿hs#oΕ;ſss]JW;Fpvi 5p5]/ߝ|#Ї5Zv+Sj-֒#YKc~+xV; vIm|7,&}~9T[RZX_:ېxlD/_θO;mOFKm@껃*GusJ5b]{G_ '[mz>Ml[zc1,]+N_D'"lP x8[!i}$JEs|j~w-GN aPҲ-eձ8Iӭn}  W|~%鱏݀ y|%EklQwVZG7[EՕFwE<N2M+=di!䊚/~W1Mdb3_0cbhW 8c܃ֳ4ψ1&EŰ g[Fvr8v? Od a!"![+¿Wty HD5Z P~ ׋Q]{Э%%?o{j>`3n1M7ľ2._װ?_>|l/񅕰?I5atmo}U'|j7bV3taϝBzcSojsRf>j-qoY^¢CH/`Ubje5ʲtgڽGέgӗ&o-5| [#?76$ij`|3ϫGvHf%Yzv1B : ҭܖ;WGSU]ߦxi#[4_[~0-Ou~?lQ+(ZEwV74S|^'ƥFQ}KdJ cM^Kq wc 2٪q^xd%`O&kω)۽ʉTMp׵lx҇5[i|O[T7v6RuLywgfv*-WİnIV*fGzO1odwN;XhNxҌir'oǭ'zΉYi7" |=ꚔWV&kD--è;` @Jcb}7RK1C s^}H~I]wBӕU9-Ug/}kzm_'e7=k}-u H#m ,ѯ+nzwlD2wOR5mJYvu+圜5KϢܽ5e>.H15πmc#fiv#­"nOc֝,<˟GC{V`aއ!x?*Y_HދE=Q!Ҽ!h~JHTw~(.dg5ښZ_ڦ i1ut]Bpq~ #`\s]Nm$ +<鬢/ =yMv4b^6?6xds+amjs;F=kIk#eXJKé>rH%؄;FGZ .$BDmu-O!*Rv';X[l9KlS "փZM8$9P]%]7婓{OiBk^}tM} jCӌ͂[qOIx(X4Y7f%Ul]E՘Pk*r3VM] @98]X6nagAc6ǧ/"]o*, ơԦ%s Kɤ$gwZZFLcVmҜr>x:VcxVXc~)^lU\6sɂ"u lw454x@deW֫KWA 'xЫ}k_ѧ'R峽7*2Ċln<<7QݤNC9fw^54VqjY^:=˚wzkommؐA c}]F$(|vOlsUZy4e Kg*KvsFi9%-5fmVa lqehe@f9Gj4Mh6`pGtMe2WP}늲SHԣIx5%m,z۹4sJTӻjMi}3^YkA>F!0mֺ(JZ,::2r.n_BENgzZ #o;GOl0r8VrA&ޟ=j cbhhRse+EDOy[[s1um Q&UWcqG"#hW6@[WU7ǁ<6Qv|0 PJ[߳*0>ie:%>Q/C׊ hF|}CT䤽S:GWwkgDvWngjjՍ\|[p& $OyΝwK[<".9=HyȚVl`zV"n9H/#ZI35%^{!iSE≡Әm.DžW\}~8ZϬBMUEIJ 9486ViꎲrIq64<5JMF+D7*c#*~^ Yu'\ [RĄ#w|cP%s*JOPr٩Y$F }8Fa3 E^J|J1Z@GָBt!TE]ooW˚i9Vc^swsCx| t4/ݶI9EZІ VxFBs׭ws\m=1G<v-v«jԺʡJ=55Ƭm瓐gR2dӔ.RNkK}ouu.0r!?kI&*iIw"A=E`I0?ҙsv&yҹ>Mzk/Tlα#;Iq3-ݱܬ^3sU~ڒ>60iŠm8eXV{7t}"fxZi'p9Ϧigh, eEsRC,`~ZY.$h<:ړF Ir87K%m%pWgq橼AN5[?eTgW#J*Iq*Y=3P2ӱC 2ՄjnٹSrz_6W[6X([/61##QIvKb?M /9UB 6`(8ǠxsWUޟlCW,>rs-$L0TUdI7^(s;Y4~cIeYd`PW<3s+CqZVEnh|棴Yc;ZQҪOl'E$|ڸk֚'ΏHy-vҥϽh/ Ԡ. U[.`_ǀA>*ҩR)f竅pN Z%So}A|M$Dszlw"(#fMSdPB9ғhyjpK{S-F dV N}Ojwџ70+fZז>V%}bkZTٞ4S12jk;h˘W%9=Z}F42E\dc?/CU#J\y 6;k3ʢ+iMdY^3B-jњI>[K>FծTޖ[*0F;*CKd\TW `ǿ5O7/Ѐs r>,<8ϡZ?foݛ?n1N1\aio>J*݀l|v+#…A<=+R}M-5hB? ɢxۧ329< 2+}L+3e.+E2qV..m:3I\Ik)76/<MO*PHb-^8)M$VbN8t);=ݟcǧI`܊5真1D9RǡȯwFYE>SMdڄjՌ8ɨ"km;H۲jHثd3Rj7VHdIA s3VotH y8i'ս}mEe*Mc)/X7F3M=8%ۂ93Zje)_.q\D>CTcXk*‘ɫG4aDgp?/U+Uoi&%̑1i2)Kc&' >qx)%|g(s|Y!:e{ɻ廔T׊$\+S_SɊE\X3mlH2Ywuo-ܚ%y@^*K6r?eYWqI4׻'>Q}N2 d50Ӥ8} $2Fs*IU˃؊h8i. k-:m=,(]i&7Z  &BsjY\[ l_ao=ڕĤ40֯Cct{Uu_}OJIngZ1V1dُ˷5%|U.bY"͡_r[#F!<< Id\h;ikWU|V#Sj ֥qk`3[3kYkJn˩7Ov !Tpy#h)Y2y&"V,E.Vh-&\r?(1o<ۡ+u=4FxD5d;CnCL[5pIq\3XRicN~''L4{ƒkFP⢞+SP3m3w5.-`w:Z3?Jƽ͉q5žO ExDiUsS$;ح(ިG^ɰXU TZW⦁lWcFQG=|8V[ە̞I{(?ƪ@QD;DA|Fю6+2*['XjU_ Dp Ul Hұ-"xIogcI'59wc+n=jJ9DN2e\*Kh|"T+򓟱^©YE,K=3gѫ{(6u>L)Q5sWyaMq+Z<{3mzʕHo6 䮍_>my Zԋ5g񞤒c_|&p1A8G:K7C'<1B8D/G8C(B;=:C0C,84K1=(=2K!-@1D%7 $6.@+;0@0?1?,<2B+;+</C &< (7}'-k02C-s82r68Ep3=J2BB1@7J:M 8N7M+@3H,>0@/A.=%4/@.?): 4J#n,c:F<' *DA"1XLOTo1868h:a3.:*:*<2C2C);';/D1C'7+9'51</=)9 )>'A5EAH&8C?;596=8C8QFAJ\ FHFT#:L9M=E5;:F,B,</;7G -7-=2:%>.>'@.;  2= c=>#>@W6\2 -< ., `E3?F9&- X-3C5F(p3."4Dg<)1B 0>'#L68D9F@M!9W#HKSP;O4F0@6F8IHL<\6J/9)G?@7H6A=DIQ `g30C;>QC4#.= 3I5L @N4L?J>K;K4L=U%;L;G0H?U'BJNO't@O4;~νgn!]X2k``V2$GCKUV4g{_VywT &1+8ĭ]01ig,*0rjuk- dbrYeAǹtg> /0 &'ĹjkYw_@:Tjg0OF gd;}zim &K\0[q\xy64%$RbG]b y{:ej0um/tg DATAX>g   BFNTd !3"J  #a $z  %&'() *  +2$$ ,J.-b).z.5/ 0   1  2   38  48  528  6J8  7b8  8z8  98  :<  ;< <: =T *>R ?2P @JPAaPPB{PCPDPEP FP GhHh: I3hJIh  KchL{h MhhNh OhPh QRS2TJ Uc Vy WXY1Z[\]1^J _` `ya b c d e fg1 hKR icjxk  lm  n o )p q2 rK  sb& tyu v w  x yq  z {2 |K}b ~z      b՟M|& ڏ@CZZӅlj.!IϋorrIWWɂ9܂i* @Q66 ft { l pt ‚  3 %”WV ee _ ".D6uϪ WUO  <&l  $EE3_njC wM p   Q k(ل3' TN==ʐn ( u/8h "!{LΛ|~OܒlhP ZLgj ' WUȇG eRV  }  >  szi..ڎSj6ʐ 17M -NjjLJma ]T„mbb؅MVWȈ:2y7)/6'ʁ&& |Enj 6Ps;ơ 'i=*E7gz ^(  +cu4̠tvB09B "sƌ:D&#!/^Jȕc30^_=*i؆j%pq- N@AK4 ;$֚ONru܂OE,-T0/ɍ c_ŕxTRN  <S(ک EÓ! %K-2ɑtt,έ6Ҕ Y@?LTrAvZ737"#f'1HASAZ~ apd`Aڄ X rWJV{w;U  xK +Z D ('ٌ %G@u %  cҩ"A?MDC ȍ _˃4"~h;A'@ %&-&'~_[e.q  0-8P >>&ӄB7#0yD .1}݆yY.܋a$.I %)G9+߈ &zуOf7jLˌ>#hiR G5 K>w CD$k +'ӌ  Y*&) Æ<:sm_]ʙGQI2مu ))-CP[|c *HRz~ b՟Mr Mnך-9FC‡Got#2ϋorqh6V& p E܂i* @Qҍ'ڊ ) /Ɖ  !d RDt 65?5NՀ+b>{,WV eeq׃-6u (%11(ۉVA <&l  $\ł[  6e pc]BH TN"  !! fЃv "!{L΃E5&߉5X ZLd: eGFJ/SՎUdr  szi| 5ψx"7ĉK TN%e ,W„mml"̇3n7)/6'ʁ_aΈf WܦQՒ' '=*E7z ^(  +cutv09 "sƌ: 2q !..q _TU T $z{(և! ɊE 'DŽȄN J 8ш+/ 1/‰ _.cWՀ+.`aHLIE>2vwS; deO<:ֈF  Z{FGz[z _ Q76R+3I)3 GHaJMÌ =X>5?@׈ՙ*  RW 4nm5lǂ's >0k *+*+ԄLVSHHB 1#}!"E31ʼn ȋBED$" ca`$'ч$ *՞NVD$7 XW Xe} Sߥ<\hˆA" A3<=30;<0(ч;bňcpj %={rN .9 GՄC yz ux11 %֊ ) <  R!"S4 52LIOi ,( *jWNe)?jriXb LT := +~p*TӃXtv8: Ma<CH>2@̇teՆ_X68 ڂ  +oq !@6σ<@:T6":ӎx|LՂ4stBio &GN XYLBޮ m6oYьbL>U ' &*lY X 9 c d^t}  R"#R0&@ĉ2*΂Ä z{ )ыȇ5%ćUM[~jt WbX WƁ ڛ%9D9:#)3<=3:@Z!5r@6Җ(8rsnޣ-r."f.rK 0;CHBH [\ o.cEÕ 9=2`cy H"Ռxec EFbhŠc(Հ+fi<0ixcTizAj{gɊW(ՎUkn- >r ] E(׌b fi UjcCIMIJ& 6F-x1(d/zP%*4sZ+U" EIb7>GLĂ*A,ƒ2A9/8 {,)qua lV  D7 9 [ %is` dMSa)!ZixM) sSύv] sVS2M[ÂJ*X Bg=" d = ẻY7˃aUhU[Vy*,s4lRRR!1ׄ1K† 8C̏&gm{{ j.k`a3݂3 ^yW#$WTg^vhn#2.׍?C#  7|LnnkpZ[ hMPX/#^mn=|= ۂ  4,3/ ! wƍ 0؏kh!~dɊ_W%Wu~FVPHe""Ou \y[ }/   W$ ULKΈ e/ɑ F^ Ɇ CDӒ6boPocR[Ri(/hTy 煉9m " 32mmvlփҬIH\]JĄG  qu o,-g11w p $ {-( YЄef=Dj[a^Uy mog=ۓ=6+ԂȏqdxHUU2ƃZ`m^`DATA   X DATAX qqqqFFFF````^^^^,,,,bbbbnnnnbbbb''''JJJJ^^^^EEEE&&&&GGGGwwwwcccc&&&&CAt( U CACamera.001L>=zCAA?CAtU "( CACamera.002L>=B B@?CAt" U CACamera.004L>=B B@?CAt d"CACamera.005L>=B B@?CAtd CACamera.006L>=B B@?IPP(`IPcrouchbIpoN< 0A. @OBDATATN.o ?0A3]?OBA]?DATAT.N@ ?@|=OB|DATAT.P4v ?@=OBDATApo '5]??]?њ@]?.@30A3hmA3DATA8@ '?|?|?|DATA8P4v '???WO u QWOWorld.001>===??A@pA A?L=TXddr r TXAND.py`X \(h(h(0 DATAT`XC:\Documents and Settings\Jean-Baptiste\Mes documents\Mes Projets\BZoo\src\AND.pypyDATA(hЏ ' DATA(hHU  5DATAHU $(hE FREEDATA$N?HU 0  DATAN? $ @DATA  N?ADATA (  Hu # DATA( tv X}DATAtv D (  0 DATAD ~ tv ؜ *X"DATA~ \D X!'DATA\~ x E> DATA(Џ cont = GameLogic.getCurrentController()DATA8 # test de l'etat des sensors en entree du controlleurEEDATAE result = TrueEEDATA 0 for sens in cont.getSensors():EDATAD  result = result and cont.getSensor(sens.getName()).isPositive().ziDATAA02DATA$Hu #Si tous les sensors sont a positifDATA if result == True:DATA  4DATA,؜  #On actionne tous les actuators en sortieDATA$X for actu in cont.getActuators():4DATAHx  GameLogic.addActiveActuator(cont.getActuator(actu.getName()), True)TXdr r dr TXbzPulse.py@v xL v v ODATAX@C:\Documents and Settings\Jean-Baptiste\Mes documents\Mes Projets\BZoo\src\bzPulse.pyDATAv x.9HoFREEDATAx.9 v hWDATA _ x.9ش FREEDATA_  h FREEDATA : _ 7 %FREEDATA: z GFREEDATAzp :  FREEDATAp ITz0: .FREEDATAITm$p FREEDATAm$ IT'FREEDATA  m$m ,FREEDATA X'  ,'bDATAX' f  X 8FREEDATAf s X' @d>FREEDATAs xL f t FREEDATAxL s FREEDATAHoimport bzClientDATA hWfrom bzClient import bzClient DATAش  DATAh DATA(7 cont=GameLogic.getCurrentController())DATAGown=cont.getOwner()DATA DATA00: if hasattr(GameLogic,'bzInitialised') == True:DATA DATA( scene = GameLogic.getCurrentScene()DATA0m  base = scene.getObjectList()["OBplayer"]qDATA DATA<X  GameLogic.bzClient.StorePosition(base.getPosition())qqqDATA@@d GameLogic.bzClient.StoreOrientation(base.getOrientation())EDATAt  REEDATA  GameLogic.bzClient.Pulse()ETXdr  r TXcontrols.pyext <0T} 0T} 0T} (DATAX C:\Documents and Settings\Jean-Baptiste\Mes documents\Mes Projets\BZoo\src\controls.pyDATA0T}  p[ FREEDATA 0T} /)EDATAHa  FREEDATAHa  8, FREEDATA `0CHa x FREEDATA`0C.`  o FREEDATA.`  `0CXGFREEDATA P .` h'FREEDATAP  `q F1"DATAEP Hq FREEDATAE0Pe F3"DATA0( Eo !FREEDATA( $0 !FREEDATA$O( ` V FREEDATAO $HP FREEDATA x OFREEDATAx X p llEEDATAX  x e FREEDATA gX 'FREEDATAgHX DATAHXv g 3"EDATAv  HXp,` )FREEDATA  v : llEEDATA PI hw!1"EDATAPIX/  llEEDATAX/` PIbT3"EDATA` X/B7FREEDATAt `  FREEDATAt N  FREEDATAN QJt SDATAQJ; N q7DATA; P!?QJ H DATAP!?(p; 0?K x,DATA(pJP!?`: )FREEDATAJhJ(p(w FREEDATAhJ8 J FREEDATA8 JhJ( llEEDATAJ(J8 _V2"EDATA(JOJJGX7llEEDATAOJJ(JJ1"EDATAJ8JOJJFREEDATA8JJZUFREEDATAF8J`# 7FREEDATAFWJFREEDATAW]nF@ ?*FREEDATA]n`$KWJF3"DATA`$Kl]nPJFREEDATAl F `$KZ FREEDATA F JleYF2"DATAJQJ F 07F1"DATAQJO1J`3"EDATAO1PQJB FREEDATAPw O10C8+FREEDATAw RJP \FREEDATARJw ?;FREEDATAzRJ8lUFREEDATAz8p 9qREEDATA8Az@q )EEDATAA 8U FREEDATA Ap w DATAp[ # -*- coding: cp1252 -*-###DATA/import GameKeysDATA  DATA 8,maxCar = 50DATAxmaxLigne = 4EDATAo  DATAXG -*DATA(hcont = GameLogic.getCurrentController()DATA`q own = cont.getOwner()"DATAHq DATAPe DATA$o keySensor = cont.getSensor("key")leDATA$ keys = keySensor.getPressedKeys()qDATA` V for key in keys:DATAHP  keycode=key[0]DATA status=key[1]DATAp  REEDATAe  if status == 1:DATA(  if (keycode == GameKeys.F1KEY):DATA  print "F1"DATA  REEDATA,p,`  elif (keycode == GameKeys.F2KEY):DATA :  #print "F2"DATA$hw if own.StatusOn == 0:KEDATA$ own.StatusOn = 1KEDATAXb actu = GameLogic.getCurrentController().getActuator('OverlayStatus')DATA8B GameLogic.addActiveActuator(actu, True)DATA  else:DATA$  own.StatusOn = 0qDATAT actu = GameLogic.getCurrentController().getActuator('RemoveStatus')DATA8q GameLogic.addActiveActuator(actu, True)DATA  #print own.StatusOnDATA0?K REEDATA,`:  elif (keycode == GameKeys.F3KEY):DATA(w  #print "F3"DATA  if own.MessOn == 0:DATA (  own.MessOn = 1DATAX_ actu = GameLogic.getCurrentController().getActuator('OverlayMessages')DATA8GX GameLogic.addActiveActuator(actu, True)DATAJ else:DATA J own.MessOn = 0EDATAXZ actu = GameLogic.getCurrentController().getActuator('RemoveMessages')?DATA8`#  GameLogic.addActiveActuator(actu, True)DATA J #print own.MessOnEEDATA,@ ? elif (keycode == GameKeys.RETKEY):DATAJ #print "Enter"=DATA PJ if own.KeybOn == 0:DATA Z  own.KeybOn = 1DATA\e actu = GameLogic.getCurrentController().getActuator('OverlayKeyboarding')lqDATA80 GameLogic.addActiveActuator(actu, True)DATA` else::DATA B  own.KeybOn = 0DATA,0C8 if GameLogic.Message == '':DATA`  actu = GameLogic.getCurrentController().getActuator('RemoveKeyboarding')REEDATA<? GameLogic.addActiveActuator(actu, True)DATAX8l #actu = GameLogic.getCurrentController().getActuator('OverlayStatus')EEDATA<p  #GameLogic.addActiveActuator(actu, False)DATA @q  #print own.KeybOnEEDATAU  EEDATAp w REETXd Hv_ r TXdisplay.pyage.pye8 X h h g DATAX8C:\Documents and Settings\Jean-Baptiste\Mes documents\Mes Projets\BZoo\src\display.pyDATA0r @ FREEDATA0r h > FREEDATAh  0r (` 'ODATA  h ఇ DATA u 8` <DATAu  XH = 0DATA h u p 0EDATAh ?  fKNDATA? h (u DATAxL? `E H DATAxL88 ` DATA88  xLpx DATA 88 x_ FREEDATA[ ]DATA[ X PTiEEDATAX -[ #KFREEDATA-X 0 FREEDATAX -ЗWne:DATAX 8; FREEDATA@ DATA> nbLine = 20 REEDATA (`nbCar = 50DATAఇ DATA@8` lines = GameLogic.bzClient.display.GetDisplay(nbLine, nbCar)REEDATAXH idx_line = 0 0DATApfor ii in range(nbLine):1lDATAPfK laLigne = GameLogic.getCurrentScene().getObjectList()["OBDisplay.%03d"%ii]DATA(u  laLigne.Text = ''DATA`E  idx_line = idx_line + 1DATA` DATApx idx_line = 0REEDATAx_  DATA ]for li in lines:DATAXP laLigne = GameLogic.getCurrentScene().getObjectList()["OBDisplay.%03d"%idx_line]DATA#K laLigne.Text = liDATA0  idx_line = idx_line + 1DATAЗWDATA8;  ilTXdHv_ hw_ TXkeyboarding.py: @: P| ` ` կDATA\: C:\Documents and Settings\Jean-Baptiste\Mes documents\Mes Projets\BZoo\src\keyboarding.pypyDATA@: @, +1 DATA@, ؋w @: hH  DATA؋w `i@, `# DATA`i0h ؋w  FREEDATA0h @w `ih?| DATA@w  0h x| DATA 0M @w . DATA0M Zw   'YDATAZw  0M qn` DATA  t Zw o DATA t   &FREEDATA `  t h )DATA` xkH c FREEDATAxkH Iv ` ( FREEDATAIv @Ȃ xkH xu FREEDATA@Ȃ T Iv 3s !FREEDATAT `>@Ȃ N "deEDATA`>@, T X##> DATA@, (u `>lFREEDATA(u /u @, FREEDATA/u X8u (u 8XFREEDATAX8u 8 /u ț FREEDATA8 (9t X8u XېFREEDATA(9t )8 G,0 DATA)` (9t qn$DATA` Hj )Xw FREEDATAHj ` r DATA`7 Hj Y +1DATA`7 r qn DATA`7  No DATA DATAxu DATAxu sN `DATAsN pLxu XDATApLg sN `DATAg v pLvKDATAv g qKDATA(v jKDATA(a (mKDATAa P' (uKDATAP' Hgv a ^DATAHgv `$P' x_DATA`$u Hgv WDATAu  `$`DATA ]u `,`DATA]ܲ :DATAܲ Yt ] RDATAYt pAܲ  ll]DATApA@3 Yt s} EDATA@3 @z pA@ OOFDATA@z П @3 ‡A>DATAП 8ή@z h BC;DATA8ή[П DATA[@]8ήۺDATA@] J[DATA Jྦྷ@]0qnveDATAྦྷX JxqnDATAX;ྦྷ/ +1DATA;(` Xlqn DATA(` α;hT FREEDATAαB (` ^FREEDATAB xs αg FREEDATAxs CB hAdeEDATAC_ xs FREEDATA_ ? C `FREEDATA? س _ dFREEDATAس E ? FREEDATAE ` س eFREEDATA` V} E k FREEDATAV} ` _qDATApJV} ط DATApJ?[ J+1DATA?[6pJheqnDATA6?[G`+1DATA߼ 6U qnDATA߼  8FREEDATA xƌ ߼ 0 "FREEDATAxƌ 2 pFREEDATA2 X xƌ t deEDATAX  2 (_ DATA ZX FREEDATAZ  FREEDATA Șr Z ` FREEDATAȘr 0l  |9 FREEDATA0l  Șr po FREEDATA `h0l hs qDATA`hl a DATAl [ `hP extDATA[ (_l FREEDATA(_0A[ 8b FREEDATA0AX`(_Я FREEDATAX`h 0AxU FREEDATAh @ X`FREEDATA@ u h 8FREEDATAu {@ xw FREEDATA{k u pr FREEDATAk  {y FREEDATA X8k h !FREEDATAX8h˫ he!FREEDATAh˫X8Y !FREEDATA` h˫h !FREEDATA` V  !FREEDATAV pC` !FREEDATApC V 8d !FREEDATA PPpC !FREEDATAPPTT (, !FREEDATATT (@PP( !FREEDATA(@ TT !FREEDATA 8q (@Ha! DATA8q  @!llODATAP  8q han!HBDATAP  o !ll6DATAo ` P  x, !FREEDATA` h o  !FREEDATAh ` ` ; !FREEDATA` P|vh  !FREEDATAP|vI} ` : !FREEDATAI}  P|vXw !FREEDATA p I} 0u !FREEDATAp  U !lDATA U  p HeDATA (' U P ! [DATA(' HDATA  ('fFREEDATA  XHDATA ap DATA`   'FREEDATA`  F FREEDATAX?` FREEDATAX?XL T FREEDATAXL 8X?p|FREEDATA8EXL B !qREEDATAE8E!)EEDATAuEFREEDATAu'xh%DATA' u( 0bDATA ȏ 'H{DATAȏ   PWDATA E ȏ Wp0hDATAE }  M8gDATA} 8 E PdFREEDATA8 dn} 8 :p&DATAdn8 8 P"9DATA8 ?Idnd" DATA?I  8 R DATA  n?IU p>DATAnh  nR\DATAh t n 2BDATAt N h U $BDATAN v t p se:DATAv  N 0t )H DATA Fv `SpDATAFZ V DATAZxt FHQP DATAxt / Z`DATA/ `cxt V  EEDATA`c=v / t > DATA=v `c(V hDATAz =v xV 0DATAz @Q U %DATA@Q hy z U 2e =DATAhy l@Q hU %e EDATAli hy ШDATAi Dllh DATADlH%i `LRDATAH%v Dl*DDATAv # H%h"%WDATA# @v hmpDATA@@# "DATA@ @"DATA h @H"،DATAh   DATA @6\h |0LDATA@6\w  ZDATAwH$@6\^DATAH$0wjTPK DATA0|H$P 30ZDATA|(0T 8+ DATA(P| | 6DATAP| (hg X0DATA # -*- coding: cp1252 -*-REEDATAhH import GameKeysDATA`# DATA maxCar = 50DATAh?|maxLigne = 4REEDATAx|  DATA. DATA( cont = GameLogic.getCurrentController()DATAqnown = cont.getOwner()DATAo DATA( if hasattr(GameLogic,'keymap')==False:EDATA$h GameLogic.keymap = 200*['']DATA$c  GameLogic.keymap [32] = ' 'DATA$(  GameLogic.keymap [44] = ','DATA$xu  GameLogic.keymap [46] = '.'lleDATA$3s  GameLogic.keymap [138] = '/'qqDATA$N  GameLogic.keymap [139] = '\\'eDATA X GameLogic.keymap [97]='a'DATA l GameLogic.keymap [98]='b'DATA  GameLogic.keymap [99]='c'EDATA 8X GameLogic.keymap [100]='d'DATA ț  GameLogic.keymap [101]='e'DATA Xې GameLogic.keymap [102]='f'DATA G GameLogic.keymap [103]='g'DATA  GameLogic.keymap [104]='h'DATA Xw  GameLogic.keymap [105]='i'DATA r  GameLogic.keymap [106]='j'DATA Y  GameLogic.keymap [107]='k'DATA r  GameLogic.keymap [108]='l'DATA   GameLogic.keymap [109]='m'DATA   GameLogic.keymap [110]='n'DATA  GameLogic.keymap [111]='o'DATA ` GameLogic.keymap [112]='p'DATA X GameLogic.keymap [113]='q'DATA ` GameLogic.keymap [114]='r'DATA vK GameLogic.keymap [115]='s'DATA qK GameLogic.keymap [116]='t'DATA jK GameLogic.keymap [117]='u'DATA (mK GameLogic.keymap [118]='v'DATA uK GameLogic.keymap [119]='w'DATA ^ GameLogic.keymap [120]='x'DATA x_ GameLogic.keymap [121]='y'DATA W GameLogic.keymap [122]='z'DATA`DATA `,` GameLogic.keymap [48]='a'EDATA : GameLogic.keymap [49]='&'EDATA  GameLogic.keymap [50]='e'EDATA   GameLogic.keymap [51]='"'DATA s}  GameLogic.keymap [52]='\''DATA @  GameLogic.keymap [53]='('DATA ‡ GameLogic.keymap [54]='-'DATA h  GameLogic.keymap [55]='e'DATA  GameLogic.keymap [56]='_'DATA ۺ GameLogic.keymap [57]='c'DATADATA 0 GameLogic.keymap [45]='-'DATA x GameLogic.keymap [135]='$'DATA /  GameLogic.keymap [138]=':'DATA l GameLogic.keymap [139]='*'DATA hT  GameLogic.keymap [140]='='DATA ^ GameLogic.keymap [141]=')'DATA g  GameLogic.keymap [157]='/'DATA hA GameLogic.keymap [42]='*'DATA  GameLogic.keymap [159]='-'DATA ` GameLogic.keymap [161]='+'DATA d GameLogic.keymap [158]='0'DATA  GameLogic.keymap [151]='1'DATA e GameLogic.keymap [147]='2'DATA k  GameLogic.keymap [152]='3'DATA _ GameLogic.keymap [148]='4'DATA ط  GameLogic.keymap [153]='5'DATA J GameLogic.keymap [149]='6'DATA he GameLogic.keymap [154]='7'DATA G` GameLogic.keymap [150]='8'DATA U  GameLogic.keymap [155]='9'DATA8DATA$0  GameLogic.shiftmap = 200*['']DATApDATA$t  GameLogic.shiftmap [44]='?' DATA$(_  GameLogic.shiftmap [46]='.'FalDATADATADATA$ `  GameLogic.shiftmap [48]='0'.tgDATA$|9 GameLogic.shiftmap [49]='1'qqqDATA$po  GameLogic.shiftmap [50]='2'lleDATA$hs  GameLogic.shiftmap [51]='3'o DATA$a  GameLogic.shiftmap [52]='4' DATA$P  GameLogic.shiftmap [53]='5'DATA$  GameLogic.shiftmap [54]='6'VDATA$8b  GameLogic.shiftmap [55]='7'X DATA$Я  GameLogic.shiftmap [56]='8'9) DATA$xU  GameLogic.shiftmap [57]='9'rueDATADATA8 DATA$xw  GameLogic.shiftmap [97]='A' DATA$pr  GameLogic.shiftmap [98]='B'DATA$y  GameLogic.shiftmap [99]='C'DATA$h  GameLogic.shiftmap [100]='D'EEDATA$he GameLogic.shiftmap [101]='E'weDATA$Y  GameLogic.shiftmap [102]='F' DATA$h  GameLogic.shiftmap [103]='G' DATA$  GameLogic.shiftmap [104]='H'DATA$ GameLogic.shiftmap [105]='I' DATA$8d  GameLogic.shiftmap [106]='J'9DATA$  GameLogic.shiftmap [107]='K' DATA$(,  GameLogic.shiftmap [108]='L'DATA$(  GameLogic.shiftmap [109]='M'DATA$  GameLogic.shiftmap [110]='N'DATA$Ha GameLogic.shiftmap [111]='O' DATA$@ GameLogic.shiftmap [112]='P' DATA$han GameLogic.shiftmap [113]='Q' DATA$ GameLogic.shiftmap [114]='R' DATA$x,  GameLogic.shiftmap [115]='S' DATA$  GameLogic.shiftmap [116]='T' DATA$;  GameLogic.shiftmap [117]='U' DATA$  GameLogic.shiftmap [118]='V' DATA$:  GameLogic.shiftmap [119]='W' DATA$Xw  GameLogic.shiftmap [120]='X' DATA$0u  GameLogic.shiftmap [121]='Y'gDATA$  GameLogic.shiftmap [122]='Z'1DATAHDATA$P  GameLogic.shiftmap [138]='/'DATA H DATA f GameLogic.shiftON = FalseEDATAXHhifDATA VDATA(  if hasattr(GameLogic,'Message')==False:DATA F  GameLogic.Message = ""'DATA DATAT DATAp|DATA$B keySensor = cont.getSensor("key")9DATA$Ekeys = keySensor.getPressedKeys()= DATAfor key in keys:DATAx keycode=key[0]DATA(  status=key[1]DATAH 8DATAPW if status == 1:DATAW #print keycodeDATAP  if ((keycode == GameKeys.PADENTER ) or (keycode == GameKeys.RETKEY)):)DATAPd #enterDATA<8  if hasattr(GameLogic,'bzInitialised') == True:DATA<P" GameLogic.bzClient.Say(GameLogic.Message)DATA$d GameLogic.Message = ""EDATAT elif ((keycode == GameKeys.BACKSPACEKEY) or (keycode == GameKeys.DELKEY)): DATAU  #delDATATn GameLogic.Message = str(GameLogic.Message[0:len(GameLogic.Message)-1])qDATA4  elif (keycode == 128) or (keycode == 129): DATA(U  GameLogic.shiftON = TrueythDATAp  else:EEDATA,0t  if GameLogic.shiftON == True:DATAT` GameLogic.Message = GameLogic.Message + GameLogic.shiftmap[keycode]DATAV  else:DATATH GameLogic.Message = GameLogic.Message + GameLogic.keymap[keycode]qDATA`rueDATAV  DATA t  else:seDATA (V  #print "c ", keycodeREEDATA4xV  if (keycode == 128) or (keycode == 129): DATA(U  GameLogic.shiftON = FalsemaDATA4U  elif (keycode == 124) or (keycode == 126)::DATA(hU  GameLogic.altGrON = FalseEDATAШ DATAh DATA`LfDATADATAh" nbdeb, nbfin = 0,0DATA idxLigne=0EDATA " while idxLigne < maxLigne:DATA" nbdeb = nbfinDATA H" nbfin = nbdeb + maxCars'DATA  DATA  while (nbfin < len(GameLogic.Message)) and (GameLogic.Message [nbfin] != ' ') and (GameLogic.Message [nbfin] != '\n'):> DATA  nbfin = nbfin - 1]=DATADATAXj laLigne = GameLogic.getCurrentScene().getObjectList()["OBLigne.%03d"%idxLigne]REEDATA4P  laLigne.Text = GameLogic.Message[nbdeb:nbfin]DATAT DATA   idxLigne = idxLigne + 1'DATAhg  nbfin = nbfin +1TXdhw_ P 8Hv_ TXmainInit.pyextg g g KXqDATAXC:\Documents and Settings\Jean-Baptiste\Mes documents\Mes Projets\BZoo\src\mainInit.pyDATAg g 8 h5 DATAg @g g $DATA@g Xr g x83q %DATAXr r @g :JDATAr r Xr DATAr 0r r H Pku DATA0r h r z DATAh  0r  *TDATA  h   DATA @ Ќ DATA@ @ h DATA@؛@@ 8 3 DATA؛@ @@( K(DATA @h@؛@>DATAh@G @} h#FREEDATAGGh@0: 1q "00EDATAG0GG: xw00EDATA0GxGG0 FREEDATAxGc 0G@0wFREEDATAc c xG: HJ艀 DATAc Hc c 3/2  DATAHc c c KxoW(c DATAc KHc H 7 > DATAKKc d@/DATAKKK : p DATAK`KKd Z "DATA`K Kک TDATA ` `KpdP1q DATA`   z  DATA  ` @ 8Rx9DATA  X ?.yDATA  +rEEDATA @ x_ X2FREEDATA@   2.pyDATA @ P 2DATA8 GameLogic.pseudo= 'Guest'DATA( GameLogic.host = 'ascensionwars.com'REEDATA(x#GameLogic.host = 'LODweb.dyndns.org'EEDATA EDATA #DATA H # BZoo World Template v1.42REEDATA # for BZoo protocol v1.0EEDATA #==DATA  # ======DATAЌ# Press F2 for statusDATA # Press F3 for messages1qDATA$8 # Press Enter to type a messageDATA( #DATA>#meDATA}  DATA$0: GameLogic.protocol_version = "1.0"DATA: GameLogic.port = 50000EDATA0 ameDATA@import bzClientDATA : from bzClient import bzClientEEDATA3mpoDATAKprint "bzInit"DATAH DATA0dif hasattr(GameLogic,'bzInitialised') == False:DATA :  #Game Variable initDATA$d GameLogic.bzInitialised = TrueDATAXک GameLogic.bzClient = bzClient (GameLogic.host, GameLogic.port, GameLogic.pseudo)DATA$pd GameLogic.bzClient.Connect()DATA z  CliDATA@  #Switch to Main scene.JDATA@  actu = GameLogic.getCurrentController().getActuator('Main')DATA,  GameLogic.addActiveActuator(actu, True)DATAx_ DATA else:DATA4P  print 'Not Connected .. Please Exit and Restart',qTXdP 8( hw_ TXmouse.pyou U w w  DATATC:\Documents and Settings\Jean-Baptiste\Mes documents\Mes Projets\BZoo\src\mouse.pyDATA  U  2 #DATA H X DATAH E# DATAE#F#H DATAF#HF#E#X 0DATAHF#F#F# 8DATAF#w HF#@ ,DATAw w F#0 =DATAw w w ЎJ<DATAw Xw w @J<DATAXw } w (@ ;DATA} ~ Xw @ <DATA~ P~ } A <DATAP~ ~ ~ J####DATA~ } P~ ( DATA} @~ ~ N DATA@~ ~ } BDATA~ ~ @~  DATA~  ~ p 8DATA ` ~ 29 DATA`   XDATA  ` t (DATA تb xt  0DATAتb  b t DATA b hb تb u  0DATAhb b b I2 0DATAb  hb pI2 1DATA @ b I2 1DATA@  J2 0DATA  @  0DATA h DATAh  pɚ DATA  h Pt DATA @  @0.10DATA@ hQ DATAhQQ@ DATAQQhQ8 DATAQ@RQ DATA@R Q DATA ` @R- DATA`    $r.geDATA  ` V %r.geDATA @c BDATA@c c PW $DATAc Аc @c W FREEDATAАc c c # DATAc LАc W FREEDATALLc @&b DATALHLL #FREEDATAHLLL@ ors DATAL: HL(,DATA: Ц: L $r baDATAЦ: : : 'r baDATA: `: Ц: x DATA`: 8OU : X $DATA8OU OU `: pn kDATAOU OU 8OU DATAOU PU OU ^DATAPU `: OU X_ DATA`: : PU DATA: : `: [*p0 DATA: 8: : [[on([DATA8: (: Pu ~DATA(p8: X2X ot)DATAp(h0cescDATApx[%1DATA0 0 %== 0DATA0 x 8DATAx  0 IIrDATA  x DATA :  0.10DATA: P:  30.10DATAP: : : DATA: : P: -wn DATA: c : :####DATAc Xc :  # DATAXc c c r DATAc c Xc xJ  p DATAc  c  0FREEDATA H c x ZC>DATAH   FREEDATA ؤ H 0T DATAؤ (p T?DATA(pppؤ  DATAppp(pаT)DATApqpp FREEDATAq c p dardDATA c hc q80 DATAhc c c 0Tx DATAc c hc DATAc %Ac ODATA%A%Ac 8 DATA%A&A%APDATA&A`&A%A^T3FREEDATA`&A5 &A[ dDATA5 5 `&AP DATA5 6 5 piu DATA6 X6 5 RDATAX6 6 _Tn([ DATA(X6 P_T$DATA(p $DATAp(8 $n([ DATAs p?s DATAs (t  )DATA(t pt s _T([ \DATApt t (t 68] \DATAt 9pt 680], DATA99t (78DATA9(:9b DATA(:p:9p78(rotaDATAp:`| (: , empDATA`| | p: n([ DATA| | `| DATA| 8} | , \DATA8} HM |  x] ]DATAHM M 8}  (DATAM M HM ` on([DATAM  N M DATA N @U M  DATA@U U N  DATAU U @U 0s DATAU U @ DATAU #### MOUSESCRIPT 2 ####DATA X # author: z3r0_d (Nick Winters)DATA # license: public domain1DATA #######################DATA4X # this is a variation on my other mouse scripts.blDATA< # it is intended to act as a fps camera, except it usesctDATA0@ # 2 objects for the rotation instead of oneDATA@0 # the object the script is in only rotates around its z axisDATA@ЎJ# the object refrenced by an actuator linked to this scriptonDATA@@J# will only rotate around it's x axis. this will allow the ovDATA<(@ # movement to work properly with the direction being facedDATA@@ # by for example allowing a local motion of the base objectoDATA@A # to not be into the sky when looking up or into the groundREEDATAJ# when looking downDATA( #######################DATA N # setup:DATAB# Logic Bricks:DATA  # sensors:DATA<p # m_move A mouse movement sensor pulses turned offDATA29# actuators:s:DATA\ # [doesn't matter] any valid actuator in another object, this object rotates verticallyDATA,t # Object Properties: (type, name, value)DATAxt # Timer now 0.00aDATAt # Float ago -1.00fDATAu # Float sx 0.00l?DATA I2# Float sz 0.00DATApI2# Float cx 1.00` DATAI2# Float cz 1.00] DATAJ2# Int mousedown 0DATA# Int mousex 0DATA# Int mousey 01aDATApɚ #DATA Pt # constantsDATA@xsensitivity = -0.10|DATAysensitivity = 0.10DATADATA8 import GameLogicDATA import RasterizerDATA from math import sin, cosDATA- 2 DATA( midx = Rasterizer.getWindowWidth()/2DATA(V midy = Rasterizer.getWindowHeight()/2DATA BidxDATA(PW c = GameLogic.getCurrentController()DATA W m_move = c.getSensor("m_move")DATA$ #m_button = c.getSensor("m_button")DATAW o = c.getOwner()DATA@&b mpoDATA$ o2 = c.getActuators()[0].getOwner()DATA@ # the second object???!!!DATA(, DATA( # move the cursor back to the centerDATA( Rasterizer.setMousePosition(midx, midy)DATAx  moDATA(X c = GameLogic.getCurrentController()REEDATAlpn mouse = c.getSensors()[0] # change to specify name of sensor if you connect multiple sensors to this scriptDATA o = c.getOwner()DATA^/ DATAX_ # initilizationDATAif o.ago < 0.0:DATA,[ Rasterizer.showMouse(0) # hide the cursorDATA\[ Rasterizer.setMousePosition(Rasterizer.getWindowWidth()/2, Rasterizer.getWindowHeight()/2)DATA Pu  deltax = 0DATA X2X deltay = 0DATAh0else:DATA(x[ deltax = midx - mouse.getXPosition()EEDATA(0  deltay = midy - mouse.getYPosition()EEDATA8DATAL I# based on the cursor's movement, and the constraints, rotate this objectxDATA # (and how much time passed) cDATA $DATA4 dt = o.now - o.ago # dt = time passed to this frameDATA o.ago = o.now?DATA-%DATA< # create copies of the values, then calculate the new onessDATA$ ## z axis rotation (no constraints)DATA r osz = o.szDATA xJ ocz = o.czDATA4 zrot = (3.141592654 * xsensitivity) * dt* deltaxDDATAx szrot = sin(zrot) DATA czrot = cos(zrot)DATA 0To.cz = -osz*szrot + ocz*czrotDATA To.sz = osz*czrot + ocz*szrotDATAW|DATA,аT# x axis rotation (there are constraints)DATA  osx = o.sxDATA ocx = o.cxDATA48xrot = (3.141592654 * ysensitivity) * dt* deltayDATA0Tsxrot = sin(xrot)EEDATAcxrot = cos(xrot) DATA o.cx = -osx*sxrot + ocx*cxrotDATA 8o.sx = osx*cxrot + ocx*sxrotkDATAP DATA4^Tif o.cx < 0.0: # prevent looking past top or bottomDATA [ o.cx = ocxDATA P  o.sx = osxDATApiu o.sDATARo.sDATA_T#o.setOrientation([ \DATA(P_T# [ o.cz, o.sz*o.cx, o.sz*o.sx ], \DATA( # [ -o.sz, o.cz*o.cx, o.cz*o.sx ], \DATA(8 # [ 0, -o.sx, o.cx ] ] )DATA?s o.sDATA, # only horizontal rotation, around z axisDATA_To.setOrientation([ \atDATA68 [ o.cz, o.sz, 0], \ DATA68 [ -o.sz, o.cz, 0], \DATA(78 [ 0, 0, 1] ] )DATAb q DATA,p78# only vertical rotation [around x axis]DATA0 # this is for an empty: [+y axis is forward]DATA #o2.setOrientation([ \|DATA # [1, 0, 0], \DATA # [0, o.cx, o.sx], \|DATA # [0, -o.sx, o.cx] ] )DATA, # this is for a camera [-z axis forward]DATA` o2.setOrientation([ \|DATA  [1, 0, 0], \eDATA  [0, -o.sx, -o.cx], \DATA  [0, o.cx, -o.sx] ] )|DATA0s o2.DATA@  boTXd(  P 8TXObUpdate.pyext@ lw    DATAX@C:\Documents and Settings\Jean-Baptiste\Mes documents\Mes Projets\BZoo\src\ObUpdate.pyDATA  mw %FREEDATA H  (LFREEDATAH   O FREEDATA ؎H H pLFREEDATA؎H  H  L(DATA H hH ؎H L.extDATAhH H H XSDATAH > hH VFREEDATA> ? H ~[FREEDATA? `? > IIextDATA`? ? ? P dDATA? u `? 82DATAu @v ? (X DATA@v v u  <DATAv v @v H BDATAv X v  FREEDATAX  v  *FREEDATA  X INFREEDATA 0  h" YDATA0 Ͱ " 2extDATAͰ(ΰ0 0  DATA(ΰpΰͰ`# &DATApΰΰ(ΰIJFREEDATAΰ8lw pΰ(TFREEDATA8lw lw ΰȃSYDATAlw lw 8lw XS2FREEDATAlw lw 蘋 DATA(mw cont=GameLogic.getCurrentController()onDATA(Lown=cont.getOwner()DATAO  DATA pL# compute objId from objet nameDATA,LobjId = int(own.getName().split('.')[1])qDATA0 Lif hasattr(GameLogic,'bzInitialised') == True:EDATATX if (objId < GameLogic.bzClient.nb_client) and (objId != GameLogic.bzClient.id):DATAX ObjPseudo = GameLogic.getCurrentScene().getObjectList()["OBpseudo.%03d"%objId]?DATA\~ ObjBasePseudo = GameLogic.getCurrentScene().getObjectList()["OBbpseudo.%03d"%objId]DATALI ObjPseudo.Text = GameLogic.bzClient.pseudos[int(objId)] #"coucou"DATAhP  ObjPseudoMountPoint = GameLogic.getCurrentScene().getObjectList()["OBmntpseudo.%03d"%objId] DATA48 pspos = ObjPseudoMountPoint.getPosition ()DATA, ObjBasePseudo.setPosition(pspos)qqqDATA@  own.setPosition(GameLogic.bzClient.positions[objId])DATADH  own.setOrientation(GameLogic.bzClient.orientations[objId]) DATA  else:DATA,  own.setPosition([0.0, 0.0, -20.0])DATAPI own.setOrientation([[0.0, 1.0, 0.0],[-1.0, 0.0, 0.0],[0.0, 0.0, 1.0]])DATA\h"  ObjBPseudo = GameLogic.getCurrentScene().getObjectList()["OBbpseudo.%03d"%objId] DATA4"  ObjBPseudo.setPosition ([0.0, 0.0, -20.0])DATA0 else: DATA(`#  own.setPosition([0.0, 0.0, -20.0])EDATALI own.setOrientation([[0.0, 1.0, 0.0],[-1.0, 0.0, 0.0],[0.0, 0.0, 1.0]])DATAX( if "OBbpseudo.%03d"%objId in GameLogic.getCurrentScene().getObjectList().keys():DATA\ȃS ObjBPseudo = GameLogic.getCurrentScene().getObjectList()["OBbpseudo.%03d"%objId] qDATA4XS ObjBPseudo.setPosition ([0.0, 0.0, -20.0])DATA蘋  REETXd  ( TXStatus.py#SرK K DATAX#C:\Documents and Settings\Jean-Baptiste\Mes documents\Mes Projets\BZoo\src\Status.pypyDATASK @ ''DATAK (L Sx@ EiEEDATA(L pL K @ CDATApL L (L ~CDATAL  pL hIIDATA P L 6 DATAP   hA .FREEDATA  P ( FREEDATA  @$DATA  .DATA ( 7$DATA( p  DATAp  ( P7'DATA 0 p  extDATA0 x 73DATAx  0 (v DATA _x Ȟt?DATA_0`  LEEDATA0`x`_v REEDATAx``0`b REEDATA`x`8tDATAH`t#DATAHtextDATAرH  DATAر8  ''DATA@  DATAHx@ serveurObj = GameLogic.getCurrentScene().getObjectList()["OBserveur"]EEDATAD@ pseudoObj = GameLogic.getCurrentScene().getObjectList()["OBpseudo"]DATAD~statusObj = GameLogic.getCurrentScene().getObjectList()["OBstatus"]DATALhInbClientsObj = GameLogic.getCurrentScene().getObjectList()["OBnbClients"]llDATA6 DATA0hA if hasattr(GameLogic,'bzInitialised') == True:EDATA(  seDATA(@ serveurObj.Text = GameLogic.hostd"DATA0 if GameLogic.bzClient.Connected() == True:EDATA(7 statusObj.Text = "Connected"d"DATA  else: DATA(P7 statusObj.Text = "Disconnected"DATA lseDATA47 pseudoObj.Text = GameLogic.bzClient.GetPseudo()DATA(v seDATA@Ȟt nbClientsObj.Text = str(GameLogic.bzClient.GetNbClients ())DATA f hDATAv else:EEDATAb  DATA 8t serveurObj.Text = 'None'REEDATA$t statusObj.Text = "Disconnected"DATAt pseudoObj.Text = ''DATA  nbClientsObj.Text = ''lDATA8  TXd b TXbzClient.py?#7 770VDATAX?C:\Documents and Settings\Jean-Baptiste\Mes documents\Mes Projets\BZoo\src\bzClient.pyDATA7` P DATA`  7p DATA  ` 0 _tDATA  ` DATA  DATA @  . DATA@    9DATA `n@ H kDATA`nn s DATAnn`n DATAn8onj DATA8o n DATA ؽ 8o/ DATAؽ  j FREEDATA h ؽ @k  9DATAh X: DATAX: : h k 19DATA: : X: [DATA: 0: : x7ScoDATA0: P} : 7SDATAP} } 0: 8SDATA} } P} ح7DATA} (~ } X8S"DATA(~ 2} JDATA2`2(~ ؆J DATA`222} DATA22`20J]DATA2+`2PDATA+`,`2 9DATA,`H,`+`YDATAH,`,`,`08DATA,` H,` )DATA X ,`X 1DATAX   P[DATA  X !DATA  $ DATA  DATA DATA`0% -DATA`'t % 0DATA't (t `% DATA(t P(t 't PvDATAP(t (t (t E DATA(t : P(t ո 5DATA: @: (t @~ DATA@: : : ո DATA: З: @: Hָ %DATAЗ:  : ָ DATA  З: (] DATA H  !DATAH  ȡ DATA LH ` .DATALL  [DATAL`LL;y DATA`LLL DATAL*v `L9<DATA*v H*v L DATAH*v *v *v PILDATA*v *v H*v (z DATA*v a *v 9DATAa `a *v @9 DATA`a a a pl 0DATAa a `a l ?DATAa E a Hm 5DATAE  F a  ,DATA F hF E ( _DATAhF F F  @DATAF (` hF _v DATA(` p` F 9DATAp` ` (` i DATA` ` p` ! DATA` m ` o = DATAm Xm ` " < DATAXm m m x" $ConnDATAm m Xm " ion.DATAm ؜< m (elf.DATA؜<  < m x foDATA < h< ؜< Ȁ) DATAh< < < ] = DATA< ht h< G# DATAht t < hG## ioDATAt t ht m h_namDATAt @t t G#9 oncDATA@t  t 0H# douDATA  @t ׫@er' DATA P Hث%p UVDATAP   ث"nd rDATA  P } ort DATA  f nt' DATA ( } 9DATA( p ثDATAp  ( @r 9DATA P p / .DATAP   } 5DATA  P " 5DATA  hb  DATA蠣 h} (> DATA蠣0 !DATA0x蠣 !ionaDATAxHb08 L, #DATAHbbx ReleDATAbؾbHbp ", moDATAؾb bb aturDATA b.ؾb *mpilDATA.. b  DATA. /.` herDATA /h/.P realDATAh/e /@ ed_sDATAe e h/ VION DATAe (f e  ptioDATA(f pf e X n fiDATApf ^v (f  "RetDATA^v ^v pf / rDATA^v 8_v ^v ) DATA8_v _v ^v 6 & DATA_v :y 8_v 6 *al__DATA:y ;y _v X7 AbjecDATA;y P;y :y 0m jDATAP;y ;y ;y E +DATA;y \ P;y 8F $DATA\ P\ ;y 7 DATAP\ \ \ F DATA\ \ P\ + DATA\ _ \ F DATA_ _ \ ( DATA_ @` _ Y "DATA@` ` _ PY *DATA`  @` Y >DATA X ` l jDATAX   }$DATA  X DATA pp }DATAppp 0~DATApppp~DATApHpp DATAHp0p DATA0xHpP DATAx0 DATAx DATAXn t DATAXn n pwfDATAn n Xn eJDATAn 0o n DATA0o xo n DATAxo ` 0o PPPDATA`  xo  CDATA  ` < DATA 8 )DATA8  eNDATA L8 DATALL 8 DATALML DATAMXML0n DATAXMMM DATAMu XM0 DATAu  u M0 DATA u hu u PPPDATAhu u u Ђ "DATAu u hu `DATAu `)u ( DATA`))u Y DATA))`)H` DATA)8*): /DATA8**)X`DATA* 8*`: DATA  *: ,DATA  "^DATA X : DATAX   oDATA (sX 8`DATA(sps oDATApss(s@p"DATAsspsp"^DATAsHssp'DATAHssN ?DATAHs"^DATAPO -DATAP 5VDATAPاVDATA g P<VDATA g hg 8"^DATAhg g g xO $DATAg g hg XXDATAg @h g XDATA@h hc g F DATAhc c @h N /DATAc c hc N )DATAc @d c `N !DATA@d d c N DATAd p @d H DATAp  d  DATA  p  DATA H @ DATAH  v +DATA  H pv (DATA 0 WDATA0 x  (DATAx  0 XDATA  x FDATA h v 2DATAh   8a DATA  h -DATA @ 1DATA@  `EDATA @T @  VDATA@T T X 7DATAT ТT @T 7DATAТT T T ( #DATAT `T ТT 0 -DATA`T  T BDATA @ `T x=RDATA@    7DATA  @ x8DATA   3DATA   +v DATA   LDATA @  WDATA@   WDATA Я @ PDATAЯ ˇ Q(DATAˇˇЯ QZDATAˇ(̇ˇ{N ZDATA(̇ṗˇp|N ZDATAṗ̇(̇@ YDATȦBṗQ*DATABḂ}N DATABBB2DATAB`BBDATA`BBBP WDATAB `BeKDATA  B DATA (  й !DATA( p  ( 'DATAp  ( *DATA / p 0 .DATA/ /  ,DATA/ 80 / h'1DATA80 0 / ')DATA0 0 80 0('DATA0  3C0 0DATA 3Ch3C0 h1DATAh3C3C 3CH3VDATA3C3Ch3C5DATA3C@4C3C8w DATA@4C8 3CG =DATA8 Ƞ8 @4CO DATAȠ8 8 8 eKDATA8 X8 Ƞ8 (DATAX8 8 8 G )DATA8 /X8 p;KDATA/(/8 DATA(/p// DATAp//(/XH DATA//p/H &DATA/yv / DATAyv `yv /`DATA`yv yv yv `DATAyv yv `yv (IDATAyv 8zv yv : DATA8zv c yv H`1DATAc `c 8zv eODATA`c c c `'DATAc c `c l9DATAc 8c c pl2DATA8c ~c l]DATA~8c v 9DATAP~xv *DATAP،v 1DATAP7DATA0U 0\DATA0U xU `b fDATAxU U 0U 3DATAU U xU TDATAU PU U Z DATAPU u U X )DATAu Xu PU DATAXu u u xeJDATAu u Xu  *DATAu 0u u h 6DATA0u ou @DATAo(p0u b DATA(pppob 3DATAppp(ppb %DATApqpp@v DATAq pb +DATA ؖ qIDATAؖ    (t DATA  h ؖ 6w !DATAh   x6w 7DATA  h  DATA  0 DATAPimport socketEEDATA pimport syseDATA0 import BlenderEDATA` import structEEDATA import bzProtocolDATA. ptiDATA DATAH class bzDisplay:DATAs DATA  def __init__ (self,):.DATAj  self.messages = [] DATA DATA/ DATAj  def __repr__ (self, ): DATA@k  return "" DATA DATA4k  def cesurate(self, string, maxLigne, maxCar):DATA[DATAx7S nbdeb, nbfin = 0,0DATA7S idxLigne=0DATA8S lignes = []DATAح7DATA$X8S while idxLigne < maxLigne:ZDATAJ nbdeb = nbfinDATA$؆J nbfin = nbdeb + maxCarDATA} DATA`0J while (nbfin < len(string)) and (string[nbfin] != ' ') and (string[nbfin] != '\n'):DATA P nbfin = nbfin - 1DATA DATA\ #laLigne = GameLogic.getCurrentScene().getObjectList()["OBLigne.%03d"%idxLigne]DATA<0 #laLigne.Text = GameLogic.Message[nbdeb:nbfin]DATA,  if (string[nbdeb:nbfin] != ''):DATA4X  lignes.append (string[nbdeb:nbfin])tuDATAP[DATA$  idxLigne = idxLigne + 1DATA$  nbfin = nbfin +1DATA  return (lignes)DATA  DATA00%  def QueueMessage (self, pseudo, message):DATA4%  self.messages.append ([pseudo, message])useDATA %  #print self.messagesDATAPvDATAE DATA8ո  def GetDisplay (self, nb_lines = 8, nb_car= 36):DATA@~ DATA ո  displayed_lines = []DATA(Hָ  nb_remaining_lines = nb_linesDATAָ  nb_used_lines = 0DATA (]  pyDATA$  if len(self.messages)> 0:DATAȡ DATA0`  idx_message = len(self.messages)-1DATA\  message = self.messages[idx_message][0] + " : " + self.messages[idx_message][1]DATA;y  REEDATA DATA@9 lines = self.cesurate(message, nb_lines, nb_car)DATA DATAPPI while (len(lines) <= nb_remaining_lines) and (idx_message > -1):5DATA(z  #print "idx_msg = %d, nb_used_lines = %d, nb_remaining_lines = %d, lines = %s"%(idx_message, nb_used_lines, nb_remaining_lines, lines) DATA 9 lines.reverse()DATA$@9 for li in lines:DATA4pl  displayed_lines.insert(0,li)DATA@l  nb_remaining_lines = nb_remaining_lines - 1DATA8Hm  nb_used_lines = nb_used_lines + 1DATA0  idx_message = idx_message -1DATA`(  message = self.messages[idx_message][0] + " : " + self.messages[idx_message][1]DATAD  lines = self.cesurate(message, nb_lines, nb_car)DATA_v  yDATA 9 return displayed_linesDATAi DATA! class bzClientSocket:DATA DATA@"  def __init__ (self, servername='127.0.0.1', port=50000):ectDATA(x"  self.servername = servernamessaDATA"  self.port = portodeDATA( self.socket = NonesDATA x self.connected = FalseeDATAȀ self.address = NoneDATA self.socket = NonemDATA G# self.sa = NonenDATA$hG# self.receive_status = FalseDATAlm  for res in socket.getaddrinfo(self.servername, self.port, socket.AF_UNSPEC, socket.SOCK_STREAM):ngDATA<G# af, socktype, proto, canonname, self.sa = res mDATA0H# try:eleDATAD׫ self.socket = socket.socket(af, socktype, proto) 'IDATA(Hث except socket.error, msg:_tDATA$ث self.socket = None DATA}  continue 23DATAf  DATA}  def __repr__ (self, ):DATAث return ""DATA@r DATA/ DATA }  def Connect (self):DATA" DATAhb try: DATA,h}  self.socket.connect(self.sa)vDATA$  self.connected = True iDATA$  except socket.error, msg:n_DATA 8  self.socket.close()DATA  #self.socket = NoneDATA$p  self.connected = FalseeDATA$  #if self.socket is None:().DATA,  # print 'could not open socket' DATA  return (self.connected)DATA` DATAP DATA@ DATA VDATA  def ReceiveData (self):DATAX  data = NoneDATA try: DATA0  self.receive_status = False DATA,  data = self.socket.recv(1024)tuDATA(6  self.receive_status = True DATA,6  except socket.error, (errno, msg): DATADX7  #print "Exception %s %s while receiving "%(errno,msg)eaDATAl0m  if (errno == 10054) or (errno == 10053): # ???? what are the corresponding symbolic constant ?6DATA,E  self.receive_status = FalseDATA(8F  self.connected=FalseDATA7  DATAF  return dataDATA + DATA F  def SendData (self, data):DATA(  try: DATA$Y  self.socket.send(data)DATA,PY  except socket.error, (errno, msg):DATA@Y  #print "Exception %s %s while sending"%(errno,msg)DATAll  if (errno == 10054) or (errno == 10053): # ???? what are the corresponding symbolic constant ?DATA(} self.connected=FalseDATA  DATA } def CloseConnection (self):DATA0~ self.socket.close()DATA ~ self.connected = FalseDATA  DATA  def Connected (self):DATA P  return self.connectedDATA DATA DATAt class bzClient:DATApwfDATALe def __init__ (self, hostname='127.0.0.1', port=50000, pseudo='Guest'):DATA$  self.hostname = hostnameDATA  self.port = portDATA  self.pseudo = pseudoDATAD  self.connection = bzClientSocket (self.hostname, self.port)DATA <  DATA,  self.position = [0.0, 0.0, -20.0]DATAPe self.orientation = [[0.0, 0.0, 0.0], [0.0, 0.0, 0.0], [0.0, 0.0, 0.0]]DATA  self.action = 0DATA 8  self.pending_message=""DATA$  self.display=bzDisplay()DATA 0n  DATA  self.pseudos = []DATA0  self.positions = []DATA 0  self.orientations = []DATA  self.actions = []PDATA$Ђ  self.incomming_message=[] DATA`DATA(  self.nb_client = 0DATA Y  self.id = 0DATA H`  DATA0:  self.protocol = bzProtocol.bzProtocol()DATAX`DATA`:  def Connected (self):DATA0:  return (self.connection.Connected())DATA"^DATA:  def GetPseudo (self):DATA o return (self.pseudo)DATA8`DATA o def GetNbClients (self):DATA$@p return (len(self.pseudos))DATAp"^DATA(p def StorePosition (self, position):DATA@N  self.position = [position[0], position[1], position[2]]DATA"^DATA0O  def StoreOrientation (self, orientation):DATAX 5 self.orientation = [[orientation[0][0], orientation[0][1], orientation[0][2]],DATAXا [orientation[1][0], orientation[1][1], orientation[1][2]],DATAXP< [orientation[2][0], orientation[2][1], orientation[2][2]]]DATA8"^DATA(xO ## def decodeData (self, packet):DATAXXDATA XDATA F  DATA0N ## sizerec = struct.calcsize('Isffffff')DATA,N ## nbRecord = len (packet)/sizerecDATA$`N ## pos = [0.0, 0.0, -20.0]DATA N ## eul = [0.0, 0.0, 0.0]DATA H ## self.positions = []DATA ## self.pseudos = []DATA$ ## self.orientations = []DATA @ ## self.nb_client = 0DATA,v ## for idRecord in range (nbRecord):DATA,pv ## baseidx = idRecord*sizerecDATA W##DATA(## (idClient,pseudo,pos[0], pos[1], pos[2], eul[0], eul[1], eul[2]) = struct.unpack('Isffffff',str(packet[baseidx:baseidx+sizerec]))DATAX##DATAH## beul = Blender.Mathutils.Euler([eul[0], eul[1], eul[2]])DATA4v ## mat = beul.toMatrix().rotationPart()DATA8a ## DATA0## if (idClient < self.nb_client):DATA4## self.pseudos[idClient] = pseudoDATAH`## self.positions[idClient] = [pos[0], pos[1], pos[2]]DATAX ## self.orientations[idClient] = [[mat [0][0], mat [0][1], mat [0][2]],DATA8X ## [mat [1][0], mat [1][1], mat [1][2]],DATA8 ## [mat [2][0], mat [2][1], mat [2][2]]]DATA$( ## else: DATA00 ## self.pseudos.append(pseudo)DATAD ## self.positions.append ([pos[0], pos[1], pos[2]])DATATx=## self.orientations.append( [[mat [0][0], mat [0][1], mat [0][2]],DATA8 ## [mat [1][0], mat [1][1], mat [1][2]],DATA<x## [mat [2][0], mat [2][1], mat [2][2]]])DATA4## self.nb_client = self.nb_client+1DATA +v  DATA L DATA WDATA WDATAP def buildPacket (self):DATA,Q mat = Blender.Mathutils.Matrix (DATA\Q [self.orientation[0][0], self.orientation[0][1], self.orientation[0][2], 0.0],DATA\{N  [self.orientation[1][0], self.orientation[1][1], self.orientation[1][2], 0.0],DATA\p|N  [self.orientation[2][0], self.orientation[2][1], self.orientation[2][2], 0.0],DATA\@  [ 0.0 , 0.0 , 0.0 , 1.0]DATA,Q )DATA}N  eul = mat.toEuler()DATA2 packet = struct.pack ('sffffff',self.pseudo, self.position[0], self.position[1], self.position[2], eul[0], eul[1], eul[2])DATA return packetDATAP WDATAeKDATA  def Connect (self):DATA$й  self.connection.Connect()DATA((  if self.connection.Connected():DATA,  print "Connection established"DATA00  chaine = 'ACCEPT:%s'%(self.pseudo)DATA0  self.connection.SendData(chaine)DATA4h' data = self.connection.ReceiveData ()DATA,' response = data.split(':')[0]DATA(0( if (response == "GRANTED"):DATA4 self.pseudo = data.split(':')[1]DATA4h self.id = int(data.split(':')[2])DATAXH3 print 'Connected. My pseudo is: %s, my ID = %d'%(self.pseudo, self.id)DATA8 self.connection.socket.setblocking(0)DATA8w  else:DATA@G  print 'Connection refused . Serveur full ...'DATAO  DATAeKDATA( def Disconnect (self):DATA,G  self.connection.CloseConnection()DATAp;KDATA DATA  def Say (self, message):DATAXH  print messageDATA(H  self.pending_message = messageDATA  DATA` def Pulse (self):DATA` data = NoneDATA(IDATA:  try:DATA4H` data = self.connection.ReceiveData ()DATAPe if (self.connection.receive_status == True) and (data is not None):DATA(` #self.decodeData (data)DATA<l msg_list = self.protocol.unpackData(data)DATA4pl #print "receiving data ", msg_listDATA`l self.pseudos, self.positions, self.orientations, self.actions = msg_list["1"]DATA<v  self.id = self.pseudos.index(self.pseudo)DATA,xv  if "3" in msg_list.keys():DATA4،v  ids, messages = msg_list["3"]DATA8 for idx_client in range (len(ids)):DATA`0 #print self.pseudos[self.ids[idx_client]], self.messages[idx_client]DATAh`b  self.display.QueueMessage(self.pseudos[ids[idx_client]], messages[idx_client])DATA4 self.nb_client = len (self.pseudos)DATAX #print self.pseudos, self.positions, self.orientations, self.actionsDATA Z DATA,X  #chaine = self.buildPacket ()DATA  msg_list = {}DATALxe msg_list["0"] = [self.position, self.orientation, self.action]DATA,  if self.pending_message != '':DATA8h  msg_list["2"] = [self.pending_message]DATA@DATAb  #print msg_listDATA4b  data = self.protocol.packData(msg_list)DATA(pb  self.pending_message = ''DATA@v  DATA,b  self.connection.SendData (data)DATAIDATA(t  DATA$ 6w  except socket.error, msg:DATA8x6w  print "Exception %s %s"%(socket.error, msg)DATA DATA 0  TXdb  TXbzProtocol.py6w u DATA\6w C:\Documents and Settings\Jean-Baptiste\Mes documents\Mes Projets\BZoo\src\bzProtocol.pyDATA@,` ''DATA@82 DATA@u "FREEDATA@JqDATA(vXu eDATA(vpvJDATApvv(vu DATAvvpv00 )FREEDATAvHvv0 FREEDATAHvAv5} =[]DATAAAHv0 DATAA`AA(1 &FREEDATA`AAA> 1llDATAAA`A> 2''DATAA0 A`? 2DATA0 x A? FREEDATAx  0 p~ qqDATA  x x: []DATA P xqqDATAP HB  Ȃ&[]DATAHB B P xJqqEEDATAB B HB []DATAB  C B pqqEEDATA C hC B []DATAhC : C 1 qqEEDATA: : hC к []DATA: ; : JqqEEDATA; `; : #[]DATA`; ; ; x qqEEDATA; 8 `; Ȼ []DATA8  ;  qqEEDATA  8  7[]DATA  PJqqEEDATA X  []DATAX pqT   = 0DATApqT qT X  DATAqT rT pqT ` FREEDATArT HrT qT H -qDATAHrT rT rT XI )eDATArT pq HrT I FREEDATApq q rT J 'FREEDATAq q pq (UFREEDATAq Hq q PK''DATAHq q q pUFREEDATAq pL(Hq UFREEDATApL(L(q heIFREEDATAL(M(pL(UBFREEDATAM(HM(L(80 DATAHM(M(M( DATAM(x+ HM(ت DATAx+ + M( JDATA+ , x+ UFREEDATA, P, + #KFREEDATAP, , , / DATA, P!P, h/ *FREEDATAP!!, / *FREEDATA!!P!(0 3FREEDATA!("!贫/FREEDATA("p"!heMFREEDATAp". ("XeOFREEDATA. 0/ p" FREEDATA0/ x/ . HFREEDATAx/ / 0/ FREEDATA/ 0 x/ o FREEDATA0  / 赫FREEDATA   0 m 6FREEDATA  h  pm /FREEDATAh   8EERFDATA  h eOFREEDATA   DATA   m FREEDATA P p ##DATAP    qqq DATA  P (n = inDATA hy ȍ2 q qDATAhy y 24qqqqDATAy y hy 2, daDATAy @y y aqqqqDATA@y y y Ȏ2lf):DATAy H @y /v )ta, DATAH  y H>, daDATA ؉ H 0v eudoDATA؉  h0v = []DATA h ؉ 0v $q qqDATAh pn  1v DATApn n h  DATAn o pn ֤QDBetDATAo Ho n 2qqqqDATAHo o o ####DATAo ^ Ho ` ####DATA^ ^ o   = iDATA^ 8_ ^ $qqqqDATA8_ _ ^ t7qqqqDATA_ _ 8_ X bbbbDATA_ (0_  2qqqqDATA(0p0_  ze =DATAp00(0_ tionDATA01p0 qqqqDATA1H108 $qqqqDATAH1" 1xfqqqqDATA" " H1 qqqqDATA" # " ~(qqqqDATA# X# " wfll lDATAX# # # p~qqqqDATA# @ޚ X#  q qDATA@ޚ ޚ # (4qqq DATAޚ ޚ @ޚ x4 qqqDATAޚ ߚ ޚ 4qqqqDATAߚ `ߚ ޚ  q qqDATA`ߚ hHߚ 5&qqqqDATAhHH`ߚ hb"qqqqDATAHHhHb+ll lDATAH@HH bBh.deDATA@HHHb)h.deDATAHh @H. ), psDATAh  H. ) DATA  h H/ -FREEDATA @ / (qq qDATA@  蟮qREEDATA  @ p5####DATA h υ ####DATAh  υ 9lf):DATA  h ew rn "DATA @ PЅ qqqqDATA@  DATA  @ | 'qqqqDATA   `| qqqqDATA `  | AenDATA`   (} .qqqqDATA : ` p .DATA: ;  U lf,)DATA; H; : p.aPRDATAH; ; ; wfappeDATA; ; H; x idx_DATA;  |?; BFientDATA |?h|?; HC DATAh|?|? |?pvg, poDATA|?|?h|?C 0.0]DATA|?@}?|?pDATA@}? |?C DATA ظ @}?` (####DATAظ  8DDATA h ظ #####DATAh   7DATA  h /qqqqDATA P X* DATAP   (qqqqDATA  P  DATA ( qqqqDATA( L hE DATAL L( p'FREEDATA LhLL"EEDATAhLL L8 qqqDATALLhL qqqqDATALXy Lp DATAXy y L q qDATAy y Xy `FREEDATAy 0z y JqqqqDATA0z xz y 8 q qlDATAxz UT0z  ,####DATAUT(VTxz  DATA(VTpVTUT ####DATApVTVT(VT8 ( DATAVTWTpVT nd(iDATAWTVTx DATA WT DATA h ata>>> "DATA(U return chaineDATAPKDATApUdef eul2mat(eul): DATA U [DAlpha, DBeta, DPhi] = eulDATALhe [Alpha, Beta, Phi] = [radians(DAlpha), radians(DBeta), radians(DPhi)]a)DATADU mat = [[cos(Beta)*cos(Phi), cos(Beta)*sin(Phi), -(sin(Beta))],DATA80  [-cos(Alpha)*sin(Phi)+cos(Phi)*sin(Beta)*sin(Alpha),cos(Alpha)*cos(Phi)+sin(Beta)*sin(Phi)*sin(Alpha),cos(Beta)*sin(Alpha)],):DATA  [cos(Alpha)*cos(Phi)*sin(Beta)+sin(Phi)*sin(Alpha),cos(Alpha)*sin(Beta)*sin(Phi)-cos(Phi)*sin(Alpha),cos(Alpha)*cos(Beta)]DATAت  ]DATA J REEDATAU return matEDATA#KDATA / def mat2eul(mat): tDATA,h/  ## Does not work when abs(Beta) > 90.0DATA,/  if abs((1.0 - abs(mat[0][2])))> 0.001:eDATA4(0  DBeta = -math.degrees(math.asin(mat[0][2]))DATA0贫 cosBeta = math.cos(math.radians(DBeta))DATAPhe DPhi = math.degrees(math.atan2(mat[0][1]/cosBeta, mat[0][0]/cosBeta))EEDATAPXe DAlpha = math.degrees(math.atan2(mat[1][2]/cosBeta, mat[2][2]/cosBeta))DATA  else:DATA H if (mat[0][2] > 0.0):EEDATA sinBeta = -1.00DATAo else:EEDATA赫 sinBeta = 1.0):DATA8m  DBeta = math.degrees(math.atan2(sinBeta, 0.0))EDATA0pm  cosBeta = math.cos(math.radians(DBeta))DATA8 DPhi= 0.0DATAPe DAlpha = math.degrees(math.atan2(mat[1][2]/cosBeta, mat[2][2]/cosBeta))DATA REEDATA$m  return [DAlpha, DBeta, DPhi]ul[DATAp DATA class Message:EDATA (n  def __init__ (self, type):DATAȍ2 self.MsgType = typeDATA82 self.header = struct.pack ('B',self.MsgType) DATA2 self.data = ''eDATA a bbbDATAȎ2 def __repr__ (self, ):DATA,/v  return "type = %d"%(self.MsgType) DATAH>DATA 0v class ServerMessage (Message):EDATA h0v  def __init__ (self, type):DATA(0v  Message.__init__(self, type)DATA 1v  DATA  def __repr__ (self, ):qDATAT֤ chaine = 'srv %s nb_client = %d'%(Message.__repr__(self), self.NbClients)DATA2 return ""##DATADATA ` class ClientMessage (Message):EDATA  def __init__ (self, type):DATA(  Message.__init__(self, type)tioDATA t7 b qDATAX  def __repr__ (self, ):qDATA4  chaine = 'clt %s'%(Message.__repr__(self))DATA  return ""x_DATA_  REEDATA DATA(8 class PositionReport(ClientMessage):qqqDATAxfDATA  def __init__ (self ):DATA,~ ClientMessage.__init__(self, 00)Y DATAwfDATAp~ def Encode (self, position = [0.0, 0.0, 0.0], orientation = [[1.0, 0.0, 0.0],[0.0, 1.0, 0.0],[0.0, 0.0, 1.0]], action = 0):DATA  self.PosX = position[0]DATA (4 self.PosY = position[1]DATA x4 self.PosZ = position[2]DATA 4 self.Action = action:DATA   DATA(5 self.Orientation = orientationEDATA$hb eul = mat2eul(orientation) DATA,b self.data = struct.pack ('ffffffb',DATAD b self.PosX, self.PosY, self.PosZ,DATA,b eul[0], [DATA,.  eul[1],DATA,.  eul[2],n)DATA0H/  self.Action)EEDATA,/  return (self.header + self.data)DATA 蟮 )DATA p5 def Decode (self, data):REEDATA υ  eul = [0.0, 0.0, 0.0]EEDATA<υ  self.PosX, self.PosY, self.PosZ = 0.0, 0.0, -20.0EEDATA ew  DATAPЅ  self.PosX, self.PosY, self.PosZ, eul[0], eul[1], eul[2] , self.Action = struct.unpack ('ffffffb',data[1:1+struct.calcsize('ffffffb')])DATA  thDATA(|  beul = [eul[0], eul[1], eul[2]]DATA`|  mat = eul2mat(beul)DATAD|  self.Orientation = [[mat [0][0], mat [0][1], mat [0][2]], DATA0(}  [mat [1][0], mat [1][1], mat [1][2]],DATA0p  [mat [2][0], mat [2][1], mat [2][2]]]EDATA U  rucDATAt  return (1+struct.calcsize ('ffffffb'), [self.PosX, self.PosY, self.PosZ], self.Orientation, self.Action)])DATAwf REEDATAx  def __repr__ (self, ):DATAHB chaine = 'size = %d, data = [%s]'%(len(self.data), self.data)qDATAHC return chaineonDATApvgDATA$Cclass SayMessage(ClientMessage): DATApDATAC def __init__ (self ): 1DATA,`  ClientMessage.__init__(self, 02)3 DATA8DDATA$  def Encode (self, message =''):DATA8  self.data = struct.pack ('B%ds'%(len(message)),DATA0  len(message),DATA,X message):DATA, return (self.header + self.data) DATA  DATA  def Decode (self, data):)EDATAHh [msglen] = struct.unpack ('B',data[1:1+struct.calcsize('B')]) DATA(p message = str(data[2:2+msglen])DATA$ return (2+msglen, message)EDATA8 REEDATA  def __repr__ (self, ):DATAp chaine = ''DATA return chaine DATA`DATAJDATA8 DATA0 class ClientsSituationReport(ServerMessage):REEDATA DATA  def __init__ (self):DATA,8  ServerMessage.__init__(self, 01)O DATA  self.NbData = 0DATAx  self.PseudoLg = []DATA  self.Pseudo = []DATA  self.PosX = [] DATA  self.PosY = [] DATA`  self.PosZ = []'DATA  self.RotX = []#DATAxu  self.RotY = []DATAu  self.RotZ = []DATAu  self.Action = []DATA DATAXh def Encode (self, pseudos = [], positions = [], orientations = [], actions = []):PDATA( DATAXu  self.PseudoLg = []DATAu  self.Pseudo = []DATA8 s self.PosX = []DATA s self.PosY = []DATA s self.PosZ = [] DATA s self.RotX = [] DATAX s self.RotY = [] DATA@Ե  self.RotZ = [] DATAԵ  self.Action = []DATA sDATA$Ե  self.NbData = len(pseudos) DATA0յ  idx_clt = 0DATAxյ  for ps in pseudos:DATA,@9 self.PseudoLg.append(len (ps))qDATA$9 self.Pseudo.append(ps) DATA49 self.PosX.append(positions[idx_clt][0])DATA4`9 self.PosY.append(positions[idx_clt][1])DATA4  self.PosZ.append(positions[idx_clt][2])DATAW  REEDATA(x  mat = orientations[idx_clt]DATA М  eul = mat2eul(mat)DATAM  DATA(  self.RotX.append(eul[0])? DATA(pC self.RotY.append(eul[1]) DATA(ȘC self.RotZ.append(eul[2])DATA4 C self.Action.append(actions[idx_clt])nnnDATA$C idx_clt = idx_clt + 1 DATA.  self.data = ''DATA,.  for idx_clt in range (self.NbData):DATA<0/  fmt = 'ffffffbb%ds'%(self.PseudoLg[idx_clt])lllDATA8/  self.data = self.data + struct.pack (fmt ,EDATA\  self.PosX[idx_clt], self.PosY[idx_clt], self.PosZ[idx_clt],DATA4  self.RotX[idx_clt],)DATA4 self.RotY[idx_clt],DATA4^ self.RotZ[idx_clt],DATA4(^ self.Action[idx_clt],DATA8^ self.PseudoLg[idx_clt],EEDATA4^ self.Pseudo[idx_clt])DATAL` return (self.header + struct.pack ('B',self.NbData) + self.data)CDATAx DATA  def Decode (self, data):DATAϰDATA0 pseudos=[]DATAx positions=[]DATA_ orientations=[]DATA0_ actions=[] DATAx DATAx_ idx_byte = 0qqqDATA  2liDATA`_ [typ, nb_data] = struct.unpack ('BB', data [idx_byte:idx_byte+struct.calcsize('BB')])llDATA4h_  idx_byte = idx_byte + struct.calcsize('BB')DATAл_  idx_data = 0 stDATA_  #print nb_data, typDATAP_ DATA$h_  while (idx_data< nb_data):EDATAL@K9 #print "idx_data = %d, idx_byte = %d"%( idx_data, idx_byte)qqqDATAv DATA|K9 [px, py, pz, rx, ry, rz, act] = struct.unpack ('ffffffb', data [idx_byte:idx_byte+struct.calcsize('ffffffb')])DATA@pL9 idx_byte = idx_byte + struct.calcsize('ffffffb')te DATA? DATA8`o  [lg_ps]=struct.unpack ('b',data[idx_byte])EDATA8o  idx_byte = idx_byte + struct.calcsize('b')EDATA REEDATA80o  pseudo = str(data[idx_byte:idx_byte+lg_ps])DATA,o  idx_byte = idx_byte + lg_ps DATAH DATA$`< pseudos.append(pseudo)EDATA,< positions.append([px, py, pz])qDATA _  beul = [rx, ry, rz]DATA = mat = eul2mat(beul)DATA h= orientation = matDATA  REEDATA0`f orientations.append(orientation)REEDATA = actions.append(act)DATA$f idx_data = idx_data + 1DATAؗ  DATAHf return (idx_byte, pseudos, positions, orientations, actions) DATAșd REEDATAf def __repr__ (self):DATAf REEDATAHf chaine = 'size = %d, data = |%s|'%(len(self.data), self.data)DATApf return chaineDATA8 DATAA DATA(fclass ClientsMessages(ServerMessage):DATA  DATA def __init__ (self):DATA,P ServerMessage.__init__(self, 03)DATA@  DATA0 def Encode (self, ids = [], messages = []):DATA8 DATA  self.NbData = len(ids)DATA` idx_clt = 0DATAf self.data = ''DATA,V for idx_clt in range (self.NbData):DATA4@W fmt = 'BB%ds'%(len(messages[idx_clt]))DATA8W self.data = self.data + struct.pack (fmt ,EDATAXH{ ids[idx_clt], len(messages[idx_clt]), messages[idx_clt])DATAL+ return (self.header + struct.pack ('B',self.NbData) + self.data)\DATA8 DATA X def Decode (self, data):DATA #DATA  ids=[]EDATA(+ messages=[]DATAp+ lenmsg=[]DATA #DATA+ idx_byte = 0DATA hd  ieDATA` [typ, nb_data] = struct.unpack ('BB', data [idx_byte:idx_byte+struct.calcsize('BB')])DATA4( idx_byte = idx_byte + struct.calcsize('BB')DATA+ idx_data = 0 DATA4 #print nb_data, typ, " data= ", str(data)DATAV DATA$؞  while (idx_data< nb_data):DATAL0  #print "idx_data = %d, idx_byte = %d"%( idx_data, idx_byte)REEDATAdb  [theid,lenmsg] = struct.unpack ('BB', data [idx_byte:idx_byte+struct.calcsize('BB')])0]DATA8  idx_byte = idx_byte + struct.calcsize('BB')DATA=2DATA$  ids.append(int(theid))tDATAD@r  messages.append(str(data[idx_byte:idx_byte+lenmsg]))EEDATA,r  idx_byte = idx_byte + lenmsg ,DATA8 uleDATA$r  idx_data = idx_data + 1DATAJ DATA,pr  return (idx_byte, ids, messages)REEDATAL EEDATA":  def __repr__ (self):DATA ]])DATA":  chaine = ''DATA8#:  return chaine DATA8 #DATAp1su9DATA(BetDATAHREEDATAX{iDATA; DATA#: class bzProtocol:EEDATA( .DATA#:  def __init__ (self,):DATA(  self.aPR = PositionReport () DATA0  self.aCSR = ClientsSituationReport ()EEDATA$X  self.aSM = SayMessage () DATA(  self.aCM = ClientsMessages ()##DATA$ self.dictMsg = {}DATAo  REEDATA$ def __repr__ (self):DATA@% return "" DATAPlDATA % def packData (self, msgs):DATA% data = '' DATA  for msg in msgs.keys():DATAp DATA  msgType = int(msg) DATAػ lDATA @ if (msgType == 0):DATAH [position, orientation , action] = msgs[str(msgType)]DATAPp>  data = data + self.aPR.Encode(position, orientation , action)q DATAcDATA$>  elif (msgType == 1):t bDATATJ( [pseudos, positions, orientations, actions] = msgs[str(msgType)]DATA\H?  data = data + self.aCSR.Encode(pseudos, positions, orientations, actions) DATA  DATA$أ  elif (msgType == 2):REEDATA00  [message] = msgs[str(msgType)]EDATA8  data = data + self.aSM.Encode(message)EDATA8< llDATA$< elif (msgType == 3):REEDATA8ظ< [ids, messages] = msgs[str(msgType)]REEDATA@@< data = data + self.aCM.Encode(ids, messages)6 DATA`d  else: DATA@d  print "ERROR: unknown type of message", msgTypeDATAd  breakEEDATAXu 4 DATA`d  return dataDATAUI DATA  REEDATA$d  def unpackData (self, data):EEDATA0%s DATA(  self.dictMsg = {}DATA ?  DATAx  idx_byte = 0 DATA8  #print "len = %d data= |%s|"%( len(data), data)DATA((  while (idx_byte < len(data)): DATA  try:DATA  2EEDATA@P [msgType] = struct.unpack('B', data[idx_byte]) DATA$0Q if (msgType == 0):EDATALQ #print "msg 0 len = %d data = |%s|"%(len(data), data) DATAhH" nb_byte, position, orientation , action = self.aPR.Decode(data[idx_byte:len(data)])DATAT self.dictMsg[str(msgType)] = [position, orientation , action]EEDATA(R elif (msgType == 1): DATALE  #print "msg 1 len = %d data = |%s|"%(len(data), data)DATAtF  nb_byte, pseudos, positions, orientations, actions = self.aCSR.Decode(data[idx_byte:len(data)])DATA`  self.dictMsg[str(msgType)] = [pseudos, positions, orientations, actions] DATA(F  elif (msgType == 2):DATAL  #print "msg 2 len = %d data = |%s|"%(len(data), data)EEDATAT0  nb_byte, message = self.aSM.Decode(data[idx_byte:len(data)])proDATA<  self.dictMsg[str(msgType)] = [message] DATA(ؒ  elif (msgType == 3):DATAL0  #print "msg 3 len = %d data = |%s|"%(len(data), data)DATAX8 nb_byte, ids, messages = self.aCM.Decode(data[idx_byte:len(data)])DATAD  self.dictMsg[str(msgType)] = [ids, messages] DATA(  else: DATAH8 print "ERROR: unknown type of message ", msgTypeJ DATATP print "len(data) = %d , idx_byte = %d "%(len(data), idx_byte) DATA, 8 print dump_data(data)etDATA88 raise BZooProtocolError(msgType)REEDATA8 breakDATA  DATA$X  except struct.error:rinDATA8  print "ERROR: Unable to unpack data"REEDATA  breakDATA`  REEDATA,  idx_byte = idx_byte + nb_byte DATAX  return self.dictMsgDATA nmsDATAM DATA ##print "debut"DATAv # DATA ##aPR = PositionReport ()DATAd"##data = aPR.Encode ([12.4, 13.5, -22.64], [[1.0, 0.0, 0.0],[0.0, 1.0, 0.0],[0.0, 0.0, 1.0]], 1)DATA, ##data = data + struct.pack('If', 12, 14.5)DATA@0B ##nb_byte, position, orientation , action = aPR.Decode(data)DATA0B ##print nb_byte, position, orientation , actionDATA;## DATA$C ##aCSR = ClientsSituationReport ()?DATAHDt ##data = aCSR.Encode(["JiBe", "Guest"], [[-1.0, 0.0, 0.0],[0.0, -1.0, 0.0]], [[[1.0, 0.0, 0.0],[0.0, 1.0, 0.0],[0.0, 0.0, 1.0]], [[1.0, 0.0, 0.0],[0.0, 1.0, 0.0],[0.0, 0.0, 1.0]]], [0, 0])\DATA,XC ##data = data + struct.pack('If', 12, 14.5)DATAX ##print len(data)DATAL8b##nb_byte, pseudos, positions, orientations, actions = aCSR.Decode(data)?DATA<b##print nb_byte, pseudos, positions, orientations, actions=DATAB##DATAhT L DATA`  DATA q  2EEDATA(b##prot = bzProtocol ()DATAMb ## DATApb##aPR = PositionReport ()DATA$N ##aCSR = ClientsSituationReport ()TDATA. ## DATAu##msg_list = {}DATA ]##msg_list[str(aCSR.MsgType)]=[["JiBe", "Guest"], [[-1.0, 0.0, 0.0],[0.0, -1.0, 0.0]], [[[1.0, 0.0, 0.0],[0.0, 1.0, 0.0],[0.0, 0.0, 1.0]], [[1.0, 0.0, 0.0],[0.0, 1.0, 0.0],[0.0, 0.0, 1.0]]], [0, 0]]DATAN ##print msg_list DATA$ O ##data = prot.packData(msg_list)en DATAxO ##print "|%s|"%str(data)DATA O ##msgs = prot.unpackData(data) DATAH ##print msgsREEDATAb## DATAeo DATA ##print "fin"EEDATA0h ARPp ARArmature`a b DATA`a b BoneI]os>J>\>?}wAa߾}w?.;d\?Aa߾d\F>os>ͲJ>\>?}wAa߾}w?.;d\?Aa߾d\F>?- >?=0 ?=??_=<???DATAb `a Bone.001ee2ĒJ>A?B3>V{>B3.;^?V{>^tx>ĒT˲J>A?B3>V{>B3.;^?V{>^tx>? >?= ?=??B]=B<???OB(Є K܀ OBArmature.000܀ p @????????j99????U9A??-??jѹA?DOBd8? #=?>=??@???DATAH1  Bone`a ?????d2?32?W/Ʋ,1.??\>?}wAa߾}w?.;d\?Aa߾d\F>?os>ͲJ>4444C4C4CDATAH 1 Bone.001b ?????*ۨ2ύ2?n13-в??A?B3>V{>B3.;^?V{>^tx>?ĒT˲J>4444C4C4CDATA 1  OB܀ Khـ (Є OBBase.000mpty?????????????DOB@d8? #=?>=?8 8 GG?@???DATAL8 sensorX DATAX GDATAPGcont9RDATA9R( OBhـ K@ր ܀ OBBorderlane.003Ӏ ]@}B"9x#Av@"(A????????4d74-'.;?3\z7v@%(A?3??'i!?i!3"A4x#?DOBd8? #=?>=??@???OB@ր KӀ hـ OBbpseudo.000mptyG????????G?????DOBd8? #=?>=?HHHH  ?@???DATALHsensorN DATAN HDATAPHcontX DATAX  DATA<   act` DATA@` Ӏ OBӀ Kπ @ր OBCamera.001 v (`( |3v@"(A????%%???%%i!3?%i!3v@"(A????????(?OBd8?)d??>)d??а а ???DATA<а crouchonothingrouchct/DATA4/ OBπ K̀ Ӏ OBCamera.002 U ????%%???%%i!3?%i!3?????DOBd?? #=?>=??@???OB̀ Kɀ π OBCamera.004 "????%%???%%i!3?%i!3?????????DOBd8? #=?>=??@???OBɀ Kxƀ ̀ OBCamera.005  ̌????%%???%%i!3?%i!3̌?????DOBd8? #=?>=??@???OBxƀ KPÀ ɀ OBCamera.006 ď????%%???%%i!3?%i!3̌?????DOBd8? #=?>=??@???OBPÀ K( xƀ OBClientmpty.001???????i!3?i!3??????_3_?44?wL(@24?DOBd8? #=?>=?/99Bt Bt ( PI?@???DATA@//MenuOnrop/DATA@/8/StatusOnrop0DATA@89/MessOnrop8DATA@98KeybOnropD9DATAL9?O sensor%DATA%Bt DATAL?O @O 9keyensor1 @O t DATAt Ct DATAH @O DATAL@O Bt ?O sensor1MDATAM( DATALBt @O sensor2x"DATAhx"StatusOnTrueDATAPBt Ct contprY DATAprY r DATAPCt ( Bt cont1Hd:DATA:x @   DATAHdr DATAP( Ct cont2DATAdr DATA<  OverlayKeyboardingct1PDATAP$YDATA<  RemoveKeyboardingct DATA $YDATA< Scene+=MenuctH DATAH DATA<x Scene-=Menuct DATA DATA<x  OverlayStatuscene+=Statusct3 zDATA z"DATA< @ x RemoveStatuscene-=Statusct`r DATA`r "DATA<@   OverlayMessagesssagesct2x`DATAx` DATA< &6@ RemoveMessagesene-=MessLDATAL DATA<&6'6 Menu <= ONcth'6DATALh'6MenuOnenuTrueDATA<'68 &6Menu <= OFFct DATAL MenuOnFalseDATA<8 HI'6Mess <= ONenu <= ON1t DATAL MessOnTrueDATA<HI8I8 Mess <= OFFctIDATALIMessOnFalseDATA<8IPIHIKeyb <= ONctНIDATALНIKeybOnTrueDATA<PI8IKeyb <= OFFctIDATALIKeybOnFalseOB( Kȼ PÀ OBConnectionlane.002؍J .>;!2ؤY>N;!2ؤY>?????DOBd8? #=?>=?00?@???DATA@0TextropDATAPseudotatusOBȼ K ( OBConnection.002b .>;!2t=N;!2t=?????DOBd8? #=?>=?PP?@???DATA@PTextrop, DATA, StatusOB Kx ȼ OBConnection.004([ .>;!2y<N;!2y<?????DOBd8? #=?>=?, , ?@???DATA@, Textropp_ DATAp_ NbClientstatusOBx KP OBConnection.007[ .>;!2>N;!2>?????DOBd8? #=?>=? - - ?@???DATA@ - Textrop ` DATA ` ServerseudotatusOBP K( x OBCylinderX i@Af@|r ?|r ?L`@??|r ?|r ?L`@i@Af@??????lj4w q2 I>V4쿋"qnRA '>?DOBd8? #=?>=??@???OB( K P OBCylinder.001X- @Af@|r ?|r ?L`@??|r ?|r ?L`@@Af@??????4w2 I>L<4쿋"q_U '>?DOBd8? #=?>=??@???OB Kx ( OBDisplaympty.003???????i!3?i!3?????DOBd8? #=?>=?s s P18Q1Q1Q1?@???DATALs s sensor( DATA( P1DATALs s sensor1s DATAHs .DATAPP18Q1conts DATAs  DATAP8Q1P1cont1MDATAMQ1DATA<Q1  act(R1DATA(R1 OBx KP  OBDisplay.000z M뺯(>VG?????DOBd8? #=?>=?s s ?@???DATA@s Textrop@s DATA@s 2345678901234567890123456789012345678901234567890123456789012345678901234567890a premire ligneOBP K( x OBDisplay.001z M>>VG>?????DOBd8? #=?>=?s s ?@???DATA@s TextropDATAa premire ligneOB( K P OBDisplay.002z Mͭ>VG?????DOBd8? #=?>=??@???DATA@Textropx DATAx a premire ligneOB Kp} ( OBDisplay.003z M\p>VG?????DOBd8? #=?>=??@???DATA@Textrop( DATA( a premire ligneOBp} KH}  OBDisplay.004z Me|>VG?????DOBd8? #=?>=?Q Q ?@???DATA@Q Textrop0R DATA0R a premire ligneOBH} K } p} OBDisplay.005z Mg>VG?????DOBd8? #=?>=?R R ?@???DATA@R Textrop_ DATA_ a premire ligneOB } K} H} OBDisplay.006z MpS>VG?????DOBd8? #=?>=?8` 8` ?@???DATA@8` Textrop DATA a premire ligneOB} KЏ} } OBDisplay.007z M4>>VG>?????DOBd8? #=?>=?` ` ?@???DATA@` TextropP DATAP a premire ligneOBЏ} K} } OBDisplay.008z MSz*>VG?????DOBd8? #=?>=?x%x%?@???DATA@x%Textrop%DATA%a premire ligneOB} K} Џ} OBDisplay.009z Mr>VG?????DOBd8? #=?>=?%%?@???DATA@%Textrop8=U DATA8=U a premire ligneOB} KX} } OBDisplay.010z M뺑>VG?????DOBd8? #=?>=?=U =U ?@???DATA@=U TextropX DATAX a premire ligneOBX} K0} } OBDisplay.011z M`=VG=?X>U X>U ?@???DATA@X>U Textrop DATA a premire ligneOB0} K} X} OBDisplay.012z M뺞=VG=?xNxN?@???DATA@xNTextropNDATANa premire ligneOB} KZy 0} OBDisplay.013z M'=VG=?OO?@???DATA@OTextrop( DATA( a premire ligneOBZy KWy } OBDisplay.014z M3d>=VG=?????DOBd8? #=?>=?  ?@???DATA@ TextropҺDATAҺa premire ligneOBWy KhTy Zy OBDisplay.015z M\<VG=?H H ?@???DATA@H TextropӺDATAӺa premire ligneOBhTy K@Qy Wy OBDisplay.016z MHi;VG=?$$?@???DATA@$Textrop`$DATA`$a premire ligneOB@Qy KNy hTy OBDisplay.017z Mpy]VG=?$$?@???DATA@$Textrop DATA a premire ligneOBNy KJy @Qy OBDisplay.018z MI VG=?p p ?@???DATA@p TextropH DATAH a premire ligneOBJy KhFy Ny OBDisplay.019z Mf5[VG=? ?@???DATA@ Textrop DATA a premire ligneOBhFy K(Ay Jy OBInitmpty.001?????????????DOBd8? #=?>=?P P P P ?@???DATALP sensor(HDATA(H DATAP contX JDATAJP DATAX hw_ DATA<P  Mainonnectenuct DATA  OB(Ay Kw hFy OBKeyboardmpty.0???????i!3?i!3??????%?%??DOBd8? #=?>=?x x p p ?@???DATALx keyensor 3DATA3p DATAH DATAPp Keyboardingont DATA Hv_ OBw Kw (Ay OBLigne.000lane.003 ٸߚc=,M>La<>La<>La<???>La<0>La<>La0ٸߚc=,M?????EB5 P6E(EB9"DA24EBMA`AfB?DOBd8? #=?>=?qq?@???DATA@qTextroppqDATApq2345678901234567890123456789012345678901234567890OBw Khw w OBLigne.001 ٸߚc=]Ws>La<>La<>La<???>La<0>La<>La0ٸߚc=]Ws?????EB* P6E(EB9"75EBMA@AfB?DOBd8? #=?>=? r r?@???DATA@ rTextrop@~y DATA@~y OBhw K@w w OBLigne.002) ٸߚc=M>La<>La<>La<???>La<0>La<>La0ٸߚc=M?????EB5 P6E(EB9"á4EBMAlAfB?DOBd8? #=?>=?~y ~y ?@???DATA@~y Textrop DATA OB@w Kw hw OBLigne.003~ ٸߚc=֟>La<>La<>La<???>La<0>La<>La0ٸߚc=֟?????EBe2 P6E(EB9"0M\5EBMAAfB?DOBd8? #=?>=?`y `y ?@???DATA@`y Textropȫ DATAȫ OBw K|w @w OBMesh.000000(Є 8  @j99????????j99????A?A65µGA6GBw,x-C?DOBd8? #=?>=??@???DATA(  GBoneDATA(G  Bone.001OB|w Kyw w OBmntpseudo.000mpty.܀ U@ҹHK>K>K>??K>˫K>K>?G????U9A?DOBd8? #=?>=?00 00 ?@???DATA@00 Textrop0 DATA0 coucouOByw Kxvw |w OBnbClientsonnection.`[d*> 2ۼaJG 2ۼ?????DOBd8? #=?>=?P1 P1 / / / / ?@???DATA@P1 Textropp. DATAp. tatusDATAL / sensor/JDATA/J/ DATAP/ contfDATAf OBxvw KPsw yw OBPlane.001h ]b=lA A-B@V@V@???-B@P®4V@VP®4]b=lA A?????>G25<(5m>#1!ā2P4m>廫-@?DOBd8? #=?>=??@???DATAOBPsw K(pw xvw OBPlane.002= (P=> >=???=>]/2 >1(P??????%?%??DOBd8? #=?>=??@???OB(pw Kv Psw OBPlane.003x[P=6(!92Ӹi>c>. >i>???c>12. >iڱ2P=6(!92Ӹi>?????DOBd8? #=?>=??@???OBv Kv (pw OBPlane.0048 W> K1) >A>+i>!>???A>2+i>!vL2W> K1) >?????DOBd8? #=?>=??@???OBv Kv v OBPlane.005h]?B?B?B???B?B?B?????DOBd8? #=?>=??@???OBv K(v v OBplayerube.031X]Mv@"(A????????v@"(A?????DOBd8 B233? A=?nv , , nw  q أ ?I???DATAMDATA@nv xnv nowrop4nv DATA@xnv nv nv agoropnv DATA@nv )8xnv sxropov DATA@)8P*8nv szrop1 *8DATA@P*8*8)8cxrop2?|*8DATA@*8ZP*8czrop3?*8DATA@ZZ*8mousedownropDZDATA@ZZZmousexropZDATA@Z, Zmouseyrop$[DATA@, Zodd_framerop, DATAL, , m_moveensorp DATAp  DATADATAL,  , fwdensor( XDATAX DATAH( DATAL mw , backensor  zDATAz DATAH  DATALmw nw  slftensorXnw 2` DATA2` @ DATAHXnw DATALnw mw srghtensor ` DATA`  DATAH DATAP  mouseont5Y DATA а DATA5YP 8DATAP   cont1г DATAг r DATAP @  cont2Z} DATAZ} %DATAP@  cont3Y DATAY %DATAP @ cont4@… DATA@… أ DATA<q r movectq DATAxq OCK!dSDATA<r %q acth%DATAxh%>OCK!0DATA<%%r act1* DATAx* ̰OCK!0DATA<%أ %act2x+ DATAxx+ OCK!FREEDATA<أ %act3H DATAxH >OCK!b OB(v Ks v OBPromptigne.004> ؾߚc=,M>La<>La<>La<???>La<0>La<>La0ؾߚc=,M?????EBɡ1E(EB958EBA`AfB?DOBd8? #=?>=? ?@???DATA@ Textrop DATA **>OBs Ks (v OBpseudoonnection.00y d*> 2l[%>aJG 2l[%>?????DOBd8? #=?>=?` ` ?@???DATA@` Textrop e DATA e tatusOBs Ks s OBpseudo.000lane.003@ր X& @@G>>>?I@??!03x_!>!03>!2G????A?DOBd8? #=?>=?к к ?@???DATA@к Textrope DATAe coucouOBs Ks s OBserveuronnection.0p[d*> 2>aJG 2>?????DOBd8? #=?>=?ii?@???DATA@iTextropiDATAitatusOBs KȈs s OBstatusonnection.003Jd*> 26=aJG 26=?????DOBd8? #=?>=?ii?@???DATA@iTextrop`DATA`tatusOBȈs Ks OBStatusmpty.002?????????????DOBd8? #=?>=?8`8```?@???DATAL8`sensor`) DATA`) `DATAP`contDATA TEy TETex>@???????@@????? @??<ME8 0X]MECube.001 5x X h5~xs>=>3>P>DATAlx 5^y>1Y4^O%> >瓀W\'#>xw*. S`uc(#~w>*>UU`>u>d>YU^>w2Y>BVM% 瓀>2TM9=1?p\=KY21?Э=Y2ϩ=t1?U5h5je豽1?㳽Kxjq5 <> >}xq\t>0I/9?$}=t6]\=G>bL]<OI4'I>g8;ҿ+ZΏ>{GJqx#K=>FFkiZ=>LcNf3K2> ff\8>{jI=1>GF7d>I=d >eFsfh>\>uVcϡ>4KW>hg >Z=,>XbLS=#K=XG>Fg|hb=+ZWE>GJ^>I4>8z>\=>LDATA|X 25####"""""" " " " " "" " " " " "" "  " " " " """""""""""""""""""""""""DATA0 1             DATA5/????????????z}????z}???? ?????k???z}?k?????>d?????>d???>d??????3>????z}3>??? ?GF??????GF????GF????? ???????? t ???? ???? ???? t????t ????L???? L????m ????m????L m????DATAth4u} xU  j h P 7&HȘ  . je  DATAu} 3?DATAxU 3?DATA j 3?DATA3?DATA3?DATAh3?DATA 3?DATAP 3?DATA73?DATA&H3?DATAȘ 3?DATA 3?DATA.3?DATA je 3?DATA3?DATA 3?MEX]0X 8 MECube.015P  b?  @4 ?B>?DATADATA 5 ?@6 蠿@Q͵?w 蠿@͵椿w 蠿k͵椿6 蠿kQ͵?p6?III?w?II椿w?I椿 6?IIi!"3DATAb?2""""""""""""""""DATAP 1 MEX 0X- X]MECylinder  HFw?Fw??DATA 55?5?@;@;?Fw?򃄾PQ?ꃄ>Fw?55?Fw>?烄Fw?QP?5?5??@;@;`Fw?胄?PQ`>Fw?`55?`FwӃ>?`Fw??QP`?DATAhH2 !# ! !# !# !# !# ! # !# ! # !# ! # !# #### # # #DATAh1                 DATA8 /????u????eo'|$x????u ~????eoVb'| ????8 ~ ~> ????eo FQVb???? ~[e????eo=F FQ????[e kyk????eoKW=F???? ky????eo$xKW????$x'|u????u'|Vb ~???? ~Vb FQ ~???? ~ FQ=F[e????[e=FKW ky????$x kyKWMEX- 0h X MECylinder.0020 (֠Fw?Fw??DATA(֠55?5?@;@;?Fw?򃄾PQ?ꃄ>Fw?55?Fw>?烄Fw?QP?5?5??@;@;`Fw?胄?PQ`>Fw?`55?`FwӃ>?`Fw??QP`?DATAh2 !# ! !# !# !# !# ! # !# ! # !# ! # !# #### # # #DATAh01                 DATA8 /????u????eo'|$x????u ~????eoVb'| ????8 ~ ~> ????eo FQVb???? ~[e????eo=F FQ????[e kyk????eoKW=F???? ky????eo$xKW????$x'|u????u'|Vb ~???? ~Vb FQ ~???? ~ FQ=F[e????[e=FKW ky????$x kyKWMEh 0]X- MEPlane.001Av   Q  @4_N"??kN"=DATAAv DATA 5??#@13III?$@1II"@1I?(@13II?YNIeN?eNI??YNIIDATAQ 2 #"""""#""#"#DATAx 1DATAh /X Z? Z?@8; Z?6;>Z?><X y?|b??|b??y?ITITITIT<X GBz?g??g??GBz?ITITITIT<X ;?t??t??;?ITITITIT<X n`?q??q??n`?ITITITIT<X Zz?k??k??Zz?ITITITIT?ME]0h]h MEPlane.002 @$X~  4(4@Z]@'7DATA5!0?l ?]1!0?l uh3!0i tα!0q ?uh4Z]@Bn4V](Բ4@Y]Bn44@U]@(2DATAX~ 2 """" #  # ##DATAP 1DATA@$/????????????????MEh]0 ]MEPlane.003  `0@4???DATAP 5????DATA0`02####DATA 1ME 0 h]MEPlane.007, h @4(??'7DATAPh5??#@13?$@1"@1?(@13DATA0 2####DATA, 1DATA</pR =y?;y?;b?=b?=@ME 0) MEPlane.008X(6PcT X , @4(??'7DATAPX5??#@13?$@1"@1?(@13DATA0 , 2####DATAX(61DATA<PcT /pR =y?;y?;a?=a?=@ME) 0~ MEPlane.009 @dT cT h[@4(??'7DATAPcT 5??#@13?$@1"@1?(@13DATA0h[2####DATA 1DATA<@dT /pR =y?y?a?=a?=@ME~ 0X& ) MEPlane.010` (` dT @4(??'7DATAP(` 5??#@13?$@1"@1?(@13DATA0dT 2####DATA1DATA<` /pR =x?;x?;a?=a?=@MEX& 0z ~ MEPlane.018a pJa 0+8@4(??'7DATAPa 5??3?D]򾹳?G]4DATA00+82####DATAa 1DATA<pJ/pR =y?;y?;a?=a?=@MEz 0؍JX& MEPlane.035x `JJXov @4(??'7DATAPJ5??#@13?$@1"@1?(@13DATA0Xov 2####DATAx 1DATA<`J/pR =x?;x?;a?=a?=@ME؍J0y z MEPlane.050 `  бJ34'l?l?'7DATAP 5l?l?d$3l?lb$llb$ll?d$3DATA0бJ2####DATA 1DATA<` /pR =y?<y?<a?=a?=@MEy 0b ؍JMEPlane.051P C xC 34'l?l?'7DATAP 5l?l?d$3l?lb$llb$ll?d$3DATA0xC 2####DATAP 1DATA<C /pR =y?;y?;a?=a?=@MEb 0Jy MEPlane.052HԺ HD D 34'l?l?'7DATAPHD 5l?l?d$3l?lb$llb$ll?d$3DATA0D 2####DATAHԺ1DATA< /pR =y?;y?;`?=`?=@MEJ0([b MEPlane.053 @ ` ଓ 34'l?l?'7DATAP` 5l?l?d$3l?lb$llb$ll?d$3DATA0ଓ 2####DATA 1DATA<@ /pR =y?<y?<`?=`?=@ME([0`[JMEPlane.054 X$ x# # 34'l?l?'7DATAPx# 5l?l?d$3l?lb$llb$ll?d$3DATA0# 2####DATA 1DATA<X$ /pR =y?<y?<`?=`?=@ME`[0p[([MEPlane.055ت x p[MEPlane.057` ـ 034'l?l?'7DATAP05l?l?d$3l?lb$llb$ll?d$3DATA02####DATA` 1DATA<ـ /pR =y?;y?;`?=`?=@ME> 0= [MEPlane.058I ۀ @ڀ ڀ @4(??'7DATAP@ڀ 5??#@13?$@1"@1?(@13DATA0ڀ 2####DATAI1DATA< ۀ /pR =y?;y?;b?=b?=@ME= 0x[> MEPlane.059Xs r s  L9`???'7DATA 5?f>?$@1"@1f>Wp?SwWpSwWp?&|>&Wp0|>DATAr 2 ""#" " !"#!"DATAPXs 1DATA@s 6 en enMEx[08 = MEPlane.060#H8/"H$H SRBtr?BP?'7DATA8/5e??#@13e?AP!Nӳ@P!Mӳ?(@13?@AB C!DE9 ""FGHIJKLMNOPQ,R#ST$U%V&W&XYZ[\]^_`ab!c#defghi'jklm(n)opqrstuvwxyz{|}~*U   +xyz,+-(n$$HIYZ)46~,$*,-.u(/3wxyz{HI',R0,1cwxyz      !"#$%&'()*+,-./jk,0,123456789'2:,3;<=>?@ABCDEFGHIJR4KL5"!c6667MNOPQRSTUVWXYZ[\6]^87M _ `,1abvucde9 fghijklmn:oghkn;;;pnqrstuvwxyz:{9|}<~pB=S>97M  `(((,?1a uvbstB6;4444=<<@( AAA:{9|   @B C#7M ,1aDB EFGHICJK BvubDpFLhGLEpHxyzIJMMM$NM9  OM(n$PM(n$QMR M((9SMTMU MVMGB(nW M(n$XMYM(nZqrB   : ,[[[$7 Ku\((b ((,?7M]^ "    `  1a u!"V#$%&'()*+,-./0123456789:;<=>?b@ABCR D E F G HIJKLMN O P Q_R`S3TU7VWXaYbZb[ccc($\]_ ^_`abcdefghdo`ijekfl6mnopqrstuvwGxyz{|Bd}~.a&CCC,Eg8w,'Rhiii%(nj  k  Bl 9mnnn$o%pjjklz7G6     D !"#$%&'()*+,-./ 01B23456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^q_GB7rrr`asbcdefGghijklmnopqBro$(sgtou$ viwxyz{%|}~$2: h qspxmR GB7tXu $&W)oDTv<wwx(suvy%GJtx7 zwwwx{wwx|wwxBz  ,-}wwxyz .~wwxzBwwx wwxz   wwxz$GB wwxzwwx 9      wwxB9wwxzwwxz- 2:2Qwwx !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^B&_  `abcdefghijklmnopqrB.skltuvwxyz{|}~$o0 G   o .]xxx    R      &WY 6 K     )! 6"#$%&'()*+,,o%V-./01 2345678 9: ;< = 2 >?@ABCDEFGHII6+IwJKLM.NOPQRSTUVWXYZ[\]^_``abcd3;Ief!g" >nhi j $klm n o$pqGB$1rstuvw$xy$z{B$@$|$}~G(kGB$ "( $ kB7$ "( ]KL$ KL3KL (C$o(s$x( " KL$G( KL$3;}(GBKL k$ "( 7U !c! ,9wwxz3B( 3  $hui    O$G,B  uV(^ , $h] wwxz], "h (   h  B(hi (h (h ( (h  (|L] () ()*( GB   :( ,](nL !o ""#$$%&'()G*+,-./0$51'  2 3*+456789:;d<=>?.2 @ ABCDEFGH I JKLM NOGPBQRSiTUVWX YZ[\]^ENDB