From 17cccf76173808234befdebaa3c6040f9e98e39e Mon Sep 17 00:00:00 2001 From: Philip Rosedale Date: Mon, 19 Nov 2012 15:07:21 -0800 Subject: [PATCH 1/6] Removed cloud rendering from main.cpp to Cloud class --- .../UserInterfaceState.xcuserstate | Bin 101257 -> 101209 bytes main.cpp | 125 +----------------- 2 files changed, 4 insertions(+), 121 deletions(-) diff --git a/interface.xcodeproj/project.xcworkspace/xcuserdata/philip.xcuserdatad/UserInterfaceState.xcuserstate b/interface.xcodeproj/project.xcworkspace/xcuserdata/philip.xcuserdatad/UserInterfaceState.xcuserstate index 1cabcd6b99353d42e0982f7cc429127206fb4b0b..a232612957bea21e610cb0ad66d91fb97d090527 100644 GIT binary patch delta 31397 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 delta 31138 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 .999) tri_scale = 0.7; - else if (r > 0.90) tri_scale = 0.1; - else tri_scale = 0.05; - + //load_png_as_texture(texture_filename); - glm::vec3 pos (randFloat() * WORLD_SIZE, - randFloat() * WORLD_SIZE, - randFloat() * WORLD_SIZE); - glm::vec3 verts[3]; - verts[j].x = pos.x + randFloat() * tri_scale - tri_scale/2.f; - verts[j].y = pos.y + randFloat() * tri_scale - tri_scale/2.f; - verts[j].z = pos.z + randFloat() * tri_scale - tri_scale/2.f; - tris.vertices[i*3] = verts[j].x; - tris.vertices[i*3 + 1] = verts[j].y; - tris.vertices[i*3 + 2] = verts[j].z; - - // reuse pos for the normal - //glm::normalize((pos += glm::cross(verts[1] - verts[0], verts[2] - verts[0]))); - //tris.normals[i*3] = pos.x; - //tris.normals[i*3+1] = pos.y; - //tris.normals[i*3+2] = pos.z; - - // Moving - white - //tris.colors[i*3] = 1.0; tris.colors[i*3+1] = 1.0; tris.colors[i*3+2] = 1.0; - tris.vel[i*3] = (randFloat() - 0.5)*VEL_SCALE; - tris.vel[i*3+1] = (randFloat() - 0.5)*VEL_SCALE; - tris.vel[i*3+2] = (randFloat() - 0.5)*VEL_SCALE; - - } - if (serial_on) { // Call readsensors for a while to get stable initial values on sensors @@ -365,52 +324,6 @@ const float SCALE_X = 2.f; const float SCALE_Y = 1.f; -void update_tris() -{ - int i, j; - float field_val[3]; - float field_contrib[3]; - for (i = 0; i < NUM_TRIS; i++) - { - // Update position - tris.vertices[i*3+0] += tris.vel[i*3]; - tris.vertices[i*3+1] += tris.vel[i*3+1]; - tris.vertices[i*3+2] += tris.vel[i*3+2]; - - // Add a little gravity - //tris.vel[i*3+1] -= 0.0001; - - const float DRAG = 0.99; - // Drag: Decay velocity - tris.vel[i*3] *= DRAG; - tris.vel[i*3+1] *= DRAG; - tris.vel[i*3+2] *= DRAG; - - // Read and add velocity from field - field_value(field_val, &tris.vertices[i*3]); - tris.vel[i*3] += field_val[0]; - tris.vel[i*3+1] += field_val[1]; - tris.vel[i*3+2] += field_val[2]; - - // Add a tiny bit of energy back to the field - const float FIELD_COUPLE = 0.0000001; - field_contrib[0] = tris.vel[i*3]*FIELD_COUPLE; - field_contrib[1] = tris.vel[i*3+1]*FIELD_COUPLE; - field_contrib[2] = tris.vel[i*3+2]*FIELD_COUPLE; - field_add(field_contrib, &tris.vertices[i*3]); - - - // bounce at edge of world - for (j=0; j < 3; j++) { - if ((tris.vertices[i*3+j] > WORLD_SIZE) || (tris.vertices[i*3+j] < 0.0)) { - tris.vertices[i*3+j] = min(WORLD_SIZE, tris.vertices[i*3+j]); - tris.vertices[i*3+j] = max(0.f, tris.vertices[i*3+j]); - tris.vel[i*3 + j]*= -1.0; - } - } - } -} - void reset_sensors() { // @@ -443,7 +356,7 @@ void update_pos(float frametime) float measured_fwd_accel = avg_adc_channels[2] - adc_channels[2]; // Update avatar head position based on measured gyro rates - const float HEAD_ROTATION_SCALE = 0.10; + const float HEAD_ROTATION_SCALE = 0.20; const float HEAD_LEAN_SCALE = 0.02; if (head_mirror) { myHead.addYaw(measured_yaw_rate * HEAD_ROTATION_SCALE * frametime); @@ -567,8 +480,7 @@ void update_pos(float frametime) void display(void) { - int i; - + glEnable (GL_DEPTH_TEST); glEnable(GL_LIGHTING); glEnable(GL_LINE_SMOOTH); @@ -600,36 +512,8 @@ void display(void) load_png_as_texture(texture_filename); - //glActiveTexture(GL_TEXTURE0); - glEnable( GL_TEXTURE_2D ); - - //glTexEnvi(GL_POINT_SPRITE, GL_COORD_REPLACE, GL_TRUE); - glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); - glPointParameterfvARB( GL_POINT_DISTANCE_ATTENUATION_ARB, particle_attenuation_quadratic ); - - float maxSize = 0.0f; - glGetFloatv( GL_POINT_SIZE_MAX_ARB, &maxSize ); - glPointSize( maxSize ); - glPointParameterfARB( GL_POINT_SIZE_MAX_ARB, maxSize ); - glPointParameterfARB( GL_POINT_SIZE_MIN_ARB, 0.001f ); - - glTexEnvf( GL_POINT_SPRITE_ARB, GL_COORD_REPLACE_ARB, GL_TRUE ); - glEnable( GL_POINT_SPRITE_ARB ); - if (!display_head) { - glBegin( GL_POINTS ); - { - for (i = 0; i < NUM_TRIS; i++) - { - glVertex3f(tris.vertices[i*3], - tris.vertices[i*3+1], - tris.vertices[i*3+2]); - } - } - glEnd(); - } glDisable( GL_POINT_SPRITE_ARB ); glDisable( GL_TEXTURE_2D ); - if (!display_head) cloud.render(); // Show field vectors if (display_field) field_render(); @@ -802,7 +686,6 @@ void idle(void) // Simulation update_pos(1.f/FPS); if (simulate_on) { - update_tris(); field_simulate(1.f/FPS); myHead.simulate(1.f/FPS); myHand.simulate(1.f/FPS); From 86b1f0909b015d436c8fe471fa76e3f3214fb308 Mon Sep 17 00:00:00 2001 From: Philip Rosedale Date: Mon, 19 Nov 2012 15:20:24 -0800 Subject: [PATCH 2/6] More little housekeeping cleanups to main.cpp --- head.cpp | 119 +++++ .../UserInterfaceState.xcuserstate | Bin 101209 -> 101683 bytes main.cpp | 29 +- tga.h | 470 ------------------ 4 files changed, 123 insertions(+), 495 deletions(-) delete mode 100644 tga.h diff --git a/head.cpp b/head.cpp index f2132e788d..98cbf0d0d3 100644 --- a/head.cpp +++ b/head.cpp @@ -62,6 +62,125 @@ void readSensors() } +/* +void update_pos(float frametime) +// Using serial data, update avatar/render position and angles +{ + float measured_pitch_rate = adc_channels[0] - avg_adc_channels[0]; + float measured_yaw_rate = adc_channels[1] - avg_adc_channels[1]; + float measured_lateral_accel = adc_channels[3] - avg_adc_channels[3]; + float measured_fwd_accel = avg_adc_channels[2] - adc_channels[2]; + + // Update avatar head position based on measured gyro rates + const float HEAD_ROTATION_SCALE = 0.20; + const float HEAD_LEAN_SCALE = 0.02; + if (head_mirror) { + myHead.addYaw(measured_yaw_rate * HEAD_ROTATION_SCALE * frametime); + myHead.addPitch(measured_pitch_rate * -HEAD_ROTATION_SCALE * frametime); + myHead.addLean(measured_lateral_accel * frametime * HEAD_LEAN_SCALE, measured_fwd_accel*frametime * HEAD_LEAN_SCALE); + } else { + myHead.addYaw(measured_yaw_rate * -HEAD_ROTATION_SCALE * frametime); + myHead.addPitch(measured_pitch_rate * -HEAD_ROTATION_SCALE * frametime); + myHead.addLean(measured_lateral_accel * frametime * -HEAD_LEAN_SCALE, measured_fwd_accel*frametime * HEAD_LEAN_SCALE); + } + // Decay avatar head back toward zero + //pitch *= (1.f - 5.0*frametime); + //yaw *= (1.f - 7.0*frametime); + + // Update head_mouse model + const float MIN_MOUSE_RATE = 30.0; + const float MOUSE_SENSITIVITY = 0.1; + if (powf(measured_yaw_rate*measured_yaw_rate + + measured_pitch_rate*measured_pitch_rate, 0.5) > MIN_MOUSE_RATE) + { + head_mouse_x -= measured_yaw_rate*MOUSE_SENSITIVITY; + head_mouse_y += measured_pitch_rate*MOUSE_SENSITIVITY*(float)HEIGHT/(float)WIDTH; + } + head_mouse_x = max(head_mouse_x, 0); + head_mouse_x = min(head_mouse_x, WIDTH); + head_mouse_y = max(head_mouse_y, 0); + head_mouse_y = min(head_mouse_y, HEIGHT); + + // Update render direction (pitch/yaw) based on measured gyro rates + const int MIN_YAW_RATE = 300; + const float YAW_SENSITIVITY = 0.03; + const int MIN_PITCH_RATE = 300; + const float PITCH_SENSITIVITY = 0.04; + + if (fabs(measured_yaw_rate) > MIN_YAW_RATE) + { + if (measured_yaw_rate > 0) + render_yaw_rate -= (measured_yaw_rate - MIN_YAW_RATE) * YAW_SENSITIVITY * frametime; + else + render_yaw_rate -= (measured_yaw_rate + MIN_YAW_RATE) * YAW_SENSITIVITY * frametime; + } + if (fabs(measured_pitch_rate) > MIN_PITCH_RATE) + { + if (measured_pitch_rate > 0) + render_pitch_rate += (measured_pitch_rate - MIN_PITCH_RATE) * PITCH_SENSITIVITY * frametime; + else + render_pitch_rate += (measured_pitch_rate + MIN_PITCH_RATE) * PITCH_SENSITIVITY * frametime; + } + render_yaw += render_yaw_rate; + render_pitch += render_pitch_rate; + + // Decay render_pitch toward zero because we never look constantly up/down + render_pitch *= (1.f - 2.0*frametime); + + // Decay angular rates toward zero + render_pitch_rate *= (1.f - 5.0*frametime); + render_yaw_rate *= (1.f - 7.0*frametime); + + // Update slide left/right based on accelerometer reading + const int MIN_LATERAL_ACCEL = 20; + const float LATERAL_SENSITIVITY = 0.001; + if (fabs(measured_lateral_accel) > MIN_LATERAL_ACCEL) + { + if (measured_lateral_accel > 0) + lateral_vel += (measured_lateral_accel - MIN_LATERAL_ACCEL) * LATERAL_SENSITIVITY * frametime; + else + lateral_vel += (measured_lateral_accel + MIN_LATERAL_ACCEL) * LATERAL_SENSITIVITY * frametime; + } + + //slide += lateral_vel; + lateral_vel *= (1.f - 4.0*frametime); + + // Update fwd/back based on accelerometer reading + const int MIN_FWD_ACCEL = 20; + const float FWD_SENSITIVITY = 0.001; + + if (fabs(measured_fwd_accel) > MIN_FWD_ACCEL) + { + if (measured_fwd_accel > 0) + fwd_vel += (measured_fwd_accel - MIN_FWD_ACCEL) * FWD_SENSITIVITY * frametime; + else + fwd_vel += (measured_fwd_accel + MIN_FWD_ACCEL) * FWD_SENSITIVITY * frametime; + + } + // Decrease forward velocity + fwd_vel *= (1.f - 4.0*frametime); + + // Update forward vector based on pitch and yaw + fwd_vec[0] = -sinf(render_yaw*PI/180); + fwd_vec[1] = sinf(render_pitch*PI/180); + fwd_vec[2] = cosf(render_yaw*PI/180); + + // Advance location forward + location[0] += fwd_vec[0]*fwd_vel; + location[1] += fwd_vec[1]*fwd_vel; + location[2] += fwd_vec[2]*fwd_vel; + + // Slide location sideways + location[0] += fwd_vec[2]*-lateral_vel; + location[2] += fwd_vec[0]*lateral_vel; + + // Update head and manipulator objects with object with current location + myHead.setPos(glm::vec3(location[0], location[1], location[2])); + balls.updateHand(myHead.getPos() + myHand.getPos(), glm::vec3(0,0,0), myHand.getRadius()); +} +*/ + + void Head::addLean(float x, float z) { // Add Body lean as impulse leanSideways += x; diff --git a/interface.xcodeproj/project.xcworkspace/xcuserdata/philip.xcuserdatad/UserInterfaceState.xcuserstate b/interface.xcodeproj/project.xcworkspace/xcuserdata/philip.xcuserdatad/UserInterfaceState.xcuserstate index a232612957bea21e610cb0ad66d91fb97d090527..b653b6168a2bc179a65c76fe4b742f86bf36cb02 100644 GIT binary patch delta 30848 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

|X|3F&bmJt3qg zg>+CzPYLOeke(LOGy7Dt8l^_7F=}TuR*h5Rh4ieDUKY|@LOLg;&xG`~kgf@1Yez55 z(9Y3BGh9vUp$@R8?p1rLz0}@nAGNRAPwg+H!$NvaNY4xDh>%_o(u+bmx|dL*)xm^v zRvkvP-McZFFWJ5Ai9$Lini+DuLmYX!L351O4ew1IZ%?VeKXsGrDGxTFYL;5)j+m`Z zR&&%`HBZe~3xsrBNUsR#gpghp(n%qm64GmX2`9Q$i8@7{s#;X5J=-18J+Y^S^tzDF z3h51Z%wS)G=6JZR;f8G{Ee#{oSy>~}$K*{bDe6}~b6S;<&NQyg>Kt`$#(%dO=|xp8 zbspvaIQBMNQ16|-P)KjyJHw{hbG&{2-eolIY150U8dRY!b}#P#b~)O%GbHCNS2x;I zA5mARE7eu%YITjeR$ZsAS2qahZ6Tc((gh)16w*6FdRIvA3F&Ovd`{_~lsE7V`sC(3B-3RyURa2i=kJ?ik)FbK(>Wf19 zTu5IC>B|Q7rRMJ32f*VJFs>*@_5{UW66Lb@TOUxjp2 zNVkOa+g|l1(duvN??e-=-WJmDjpF_g#wP9;%?!fWa`KS=100_P7_OQ$qt?QneM`i^rutv7SdmnrcSFWswmDYDEeEarf8ZQqzdVdQ`3cX zcYJ#J%!+>^{51EiiRLeiIJH1wG)yeZn>sC~VEXh?_i5T_AzIi24dKGr^kVw`dpfO? zW`3X}N*LW+_Nm1qf0By8^+TaJeh6v+>`yg$&mi9mS(MD-w z?WqmgXl;y^E{tu2(L)$L8;I7%YZDqL-AfpKa=aZSL52l^*;>xuiPv(4(ffW(O)Jm} z-Q^KBdWvTGd$rcA!YKcD$5Z8Xf?tZD2(leF-RDLg|UM$h6rP*Fox|TTB{?JaIIc*YA&szaWcZ~ z-u7%^94?HLg)v7MOC04L410YZ*Pe7I`w3x;aB2sIv7;j*#1P;A8SSv!{H!o`a%#^B zW8~Phys6V34EjawWqVSCc2s*wJ0^@~VT=;S=mzaL;o1pdjB!UA>Zl7b6z0Be&v9yJ zgt7DelQr#4?Ol87UhOUIoc6YMUb~=O)ZP)sSYeD4#&}^&5XLUT*i{%4_iFEH?`xMd zf6ZU}Nc&hAy9r~GF!mQl8h-{0;}Az)sNsOmH`*2LTUu)0Y2RxDdk;MH=6VY|!q`_B z`?!m#m=eA9HV;Gh4vkB#?xB0;c+36AkL_PxFte;^TGjCKg1oA!<a2IQr|!{X z^*B9VPtdyvW129I5XO=MNbyeSHd_(7{}Tt3*&f4%Z`RIt^4Zz z?Ws<^pD?C7iaQ#jS`X2OxeY^wah#*BqakGYD1FS|O{b>|KKXyUMbFW5g>jNFW;oh(G6ee-=~Mm%n5tWZF-sV;9fLa=+S|(Y>Ho8m z=#~1+2O4GxWA1$obKM%|>GOp#PZ$dyXjr8GtEKhD`VwKx7si4~L;4T6w-XHMJ+Jb11g>-1fQ5xT=LQm=Pxi8PF~O%=xJ!dPMFUG497&>QsK?sgzt7|Vsx za<3We+4lzcjlSQW)1W`9AJ88YMyoKE3S-&d4ROBJDB zg@zICU%g&`*^YZm6~Z{HpDkQ zqn~y3jxvNdb?I+7dPW&io1W9(b}WoCMA*#W5eFVU!D9e;q=Cmo@W=p<9Pr2kj{@+R z0v;CdC^}z~el4Tm+AI!Q*}K_y9aU0*_C?<5TeX96Y`RkFUYw3V7TB zPr$PY*gTtoXLImu1)d(@=?$JTcxvG33!eVqnE;-nz|#Vrv%zyccpeAOi{N0H1;2GZK8pflmhb_as4DhK0p9SEv2z<_i&t>rW41B%-pRd5@NAUR>Ox?iLA4~(mG#E^_pO3S zfaysvJq4zx!SpPcj)Cbo$ZbIO1=$be0Fc{*+!5qRkmrEB4CECcuL5}u$Xh_(2J#h< ze+Bs#$iIX9A5fZtB7rg(Y|1!LCV-L;N+Br4piBY90!k?;vq6~)%6w23f?@+jfN~I& zk3nq>YBH!6P?v*R4eC}jYX1Xepre0Ie@*{XrWD+Az@4KpP3#M9}g;n-1D+ z&}^Ws1Z@{+dq6wxHk<+N4baYkb{@1ZK)VXsEzp~Q-VAgj=q*5R1$rjvg`m#>y%O|! zpf3P@5$JZ%SAf0>^fjQb1AQy#wV)pd{dLg42K^_{uYqp60s2j7+XUJ+gSI}p2yL^V?Hp+P5VSoBZNCQJR^TgxuL{1A z;2Q5s`zCFQr5cm!O-#qZOfNv@IE(hNY;JXQY9|PZK z!S^}v{Sf(XU2|yX4edL5m=$27($OXb%MKgP{Eo^a2DOg`i^)@FfWT5Q0C34o#p#Aaoc29jwq{ z4Rm-CIy?^@UVsj7K!>-W!`sl|0(5u>I=lxRE_UWTv}5Oxy6PD9uk2)hhnS0L;=2>S`bu0hy!2)hg61_(Do zcnb(`1>s&0?gQa6ga<=-7aN54fbgLZJ{-bFLwGubkAv_G2+xA>$q-%w;Y%QVErhR! z@J$e24dJ^X{9y>+2jTl6`~ZaChKObm;R6veM6`nle~1W#h#-iFfQU{IVTK4>G(>cT zhzy9xhloWGu>vAiLBv{!SPv09A)*c<_Cv%0hxeu88gLx2`hk`i`%%i}Z zjt%p8Fi!$=7MOFuoDb$AFi!!q70lDXJOj*CV4e-;d0<`$W;>XdfO$EXSAlsgm^XlV zGnlu6c{`YQf_WF1onYP#=DlFv59Y_f{3MtU*}(iPn4bspi(ozm=2yUc63nN;d=|`a zf%!a`-vRUcVEz!ypMd!@FnTFh|(a+7oz+jsy#$?fT%Et>IhM0h>C%zIEd;3QQaUa8KQbXRBwpt2T=nd zY6wIPhp3SdH3p(GAu8J)0HRhx)M|)wLDZuV^%z9G22pQ=E$RY9{SMIvh;9ne!4Mq@ z(NPdR7@|i*bUH+rL-ZVoo(It`h<+5JAA{((Ao_iX{s5wXgBT#D3B*K0Od`Z2K}_cg>_f%p~>?*s8N z#79DW0>pQP_|Xub0r6Q7zZBxvLHq`YKMe74P)zGCHx@?6mhoQ^M(B&2A@&$DH0lNGMU3KUh1YJ8o*CgoL2fFryt`*RA zK6G6OT_1w3`=IN7==uh9eHXgE4_&W8*FT`^ZAc7-#ArzD42gpvaTGQZ$3Ws#NUVUw zDo9)pi4I8I0g1;U@eCxs0f}Ej;!lux4Z8V2w|3CYAG-C1ZbP8kFz8ka-DX0!+0bnh zbgO}Gwb1Q3=yn{soq%pvpqrcHIwX18AW4TLUr0)Zq<)Yz0FufeX%-~Sfux;~v>TEh zhNM%FbPkfvL(*O7-U7O}g6=WUy&H7z4&5g~_k8GH2;BvAUk%;YLieN4{SXhg1b@sR5AM9#RKE>L^GZ1F5qi z)efnPA$1?59)#3Gkoqp9UWU}qphtV?(Ghw?LXWA?qXK$VL62R~V=wf01bUo>9`8Vp z_n^n`(9-}tn?lb(=otY$J7J?|Kj=9edX9jeGoj}q=xK+ZPUyKGdLDqD??BH_py#L1 zs|oaK4ZS>|S1k1E4!u&KR~Gatf?g%iYYp_;0=>3DuMeTum(c5L=p75ayF>33=)C}X zFS9}K70~-4^!^xnUxq$`&?f@=bb>y!p^qKiw{|(T86ZAh1{Xc~MAHx7&7|;O*gu;M)7+{3~Wia3g81NhnI06H%!+_f`;4c{1 z6$bW%fxThiTo||*1}=qxufo7L!8Y(53~C93OfX1+K^ZWp00tGopod}56ENr?47v(~ zZo;77VDJDKJOT!fg2CHh@Ix@z34^b|;A=4WIt=LzLx#YRVK8I`4A}@nHp7s!FytK= z@*WIriH)Hq7^=X~kuY>349$R{bujc{7`hLJeg;FogP}jbuoxKD4Tg1xVRK>FVi>j* zhP?{I-h^T2V7LUsJz=;v44(wU^I>=)3_k$FpMl|rAx(j_07z?ZgS28uD~GfhkoG*J zy#i^k!iY97LWL1Jj7WnK<6*=^81V>7+V5kr^DC^82dPkJq%-?hp~5HTyq%L62?t}arrQ=5XK#cac5xM z8!$c$#>c?;SQuXk;}^jAMKJy~82>hmzW@_dm=FjPf?z@cOen?1glRD0F_`cyOn43^ z{00+&iA`W)Pnb9eCJup#t6<`0n79Qdz6}#UfQcW$q;@bV1SW;Sq!O4k9VS)4q!(e* zNtpB+WXO==4;g`wkpmf1Aj1L~58EK)5M(?98P7t-VaRwDGEPCpdC0g38Sg^I`;hSg zWPA)6S0Lki$oLU5u0h5P$hZZW;gH!EGDkw@XviE3nd2dI5@cpUW)WnTKxQdqmP2L* zWZGWUhqF)sVRXGB-iy7RaoF%>9sg05T6k<{`*@1~QL8=8KSd3^Gqc=2wvU zBV_&znb#rnCS(~Qt0iQ$hAdCW@`0>u$SQ`cO30cCwyXt^WrHjMSxX^n4P>o{tWA)$ z1+r=(>o{bcg{&)(bq%tvLzX+h?~pA)c5}#9AX|g%wvgQpvi%`D5VC_HI~uZMAv*!G zyFzw1$nFl=DcH#F57`4DI}@@eLv|iy7eaOkWLqG+46>&~b|qxbg6z4Fy%@5WLUt`= z?}6;SkbNAo&p`GYko_%W{{q=JU~)T{90HTWU~*rWJPanM!Q?40d4>%pSHk3jF!=~f zei0`B1vy5@X#qKdAZHZhjDego$e9H>b0B9fgmS3>SO$lUmhFomx6|0U#Kh5VnOpfwaIP@q9U926u&K`Io? zgMuYcunY=LLBTmFI1h#1Q0NPVeo&YQg}tD#4;1!=!jVuo8VbiiVLBAra-lFE3d^8y zIuuqy;VdYe3xx}ya0L{uhQf7FxDg7gp>P`%o`S+(peP86MnaJdigrTLJ}BA`MUO$z zlTdUBik^j{Gf;F9ir$5y525H2DEbU+ML$B(&rtL$6#WK8|AC^rP;7wWW>9Q`;xH(V zf#MV>?g7Ppp?Clk4~F72C>{yLW1u(_if2Qy9f}u2@iHi03B^00xE6|cL9r8xcSG?_ zD855$N?JpS2b3s|^MehtEgVWZK}i&pBtXeTD5-*yMNqN=N>)M1S}557CACnp3rZe^ zlEQ;mK|WJ1yY3pnO0=(!n|&tdqc+1=bv}=7Y5etW&^h1?x1h z&H!r_SZ9NE9#|KG)ehDrU|kN@RbX8U)(v3Y4A!k+-452BVBG~)Cs=obbuU==gY_}6 zJ_$DKA+SCR*5|?cB3O@s^%bz51nX(Ao(1b$U_B4kcfk5SSU&{oCt&>ytY3ol8?b%{ z)~jIs8LZdAdK0X_gY`C8??9;mN}EAxb0}>Er5;e~jg3+nN;N3;g;IYgZ4ad#pfn6h zJ3^@$N@Jij4obT~X*VcMhSDBT+8avyLFqs!9Rj7pp>!maj)Br~P&yGxGof@cl;%Nc zA(WOtsRc^Qpme$oN-Lps7L?9~(gjfJwk?LzWl*{jO4mT?7AV~YrO!d>aVR|jr5{1* zS5W#5lmTTep{zBO#X(szl%+yh29y;*SrL>8C|eC>YoTl(lpTaJ+aW0X2+F>KvTtBo zbC~80(@Zce7N&KFX(=$R2&PSgY13iaA(-|eOnV8YeGk)az_goC9tq_MP~H{FCqj81 zlovqx8Ytfa<=deA2$Y|I@{>^hE7;2ag7UjCJshTYhUsxIeHct13)9EL^qDYy5lpwk z^oL;jKA65Ark{rC=VAIqn0^OlG=~{2VMa8}NQ4&Fyk=H zco}BAf{huU!i;ZW#`jRs8Y&d1(4Zn3DiWb02`a`yMK)CAK*b8E*a#Jyq2dTsoPdgx zQ1LlbxH+yur3{t+P#Fl7-J!BCRQ89;e5kZSWf@eifyym5sN4pX&p_o%Q28=cUWUpm zQ28BHwSp=cs#K`z3{^=`l?+w+P-TUxGN{@BRokJe2C9xg)d{FN2~|Hs)$dUCADHP4 zGksyEAIuyIGt*(_IGAah4KwX9b1}@^4Kp8unNPsX(=hWq%)AIQ|Abi*%xVs^+QY1l zFe?&f^?_MKVb*Y%RSdJrVb%@=7?5@t_@*%dIm3TAJF**jqNPMCcRW}k-HXJGa>F#Bhi{R_-7!5lxB6997t zz?=~)*5iGm~3-7`r11$1`MWL`L92TX)qVce3 zA}pE(br&W0X83SKa988-0#%)09!Ax6@aZ2Y}3H@ z6xdz>+flH$0J{&^Ww4J0dp6i}!2T%Mp9cH0V7~?SyC4i8MuM0KA_K(3Af5nm5X4VDUq+*a?e2gT>#$;vZm1G%QJkB}uTP5|%80C5vFmE3o7& zEO`@_s<1Q=mIlGn$*{BpmQIDGkHFHWVCmDa^cPtAA6WV)EK7!E{b1PuShm6j%QnKY z&9LkYEV~HH-i75Juv~-XZDILnSe^mPvtW5GEZ+mm_rmheVfpv4{3@)7hZQNXq6e&4 z1S?j+idC@URao&RtT+cN17Kx1tn3IYr@_kEu+lacRvv?ur(xw8Sk)F*1;eTkSd{~- zrobu-tZIN&2Vm9Xuf^Bb1gtT_8ZTJm z18YXZnhaQz1#4=-wq_5k*$Znvfi>U2nr~rk9IQ=-wW+XnDXd)wYd65!tFZPato;qv z^@MeUVBHW{w+YtOz`9yk_Z6)B5!U?->%(Au46KiZ^#azfhV^S<{Y6;+F|5CgjSU@P zLmX^KfDH>^!!p>g0ydn54e!8)_h4ffY>a`8v9NIlY@7!h7r@42u<2LUVB0>}wjZ|r2-|MKw%@^#0*?OR z7zmDK;8+iijo>&3j!WS95VmWuy*+FXhV6N<-2&T7Vf#MVeh{`Fg6-E~`)#mo{|k2X zf*pfl$57a@1$NZIj)!2!53u7`*l`PLxZepY6cc{4yHFscV4D6f)J6FQa!?5!T z)Ha1$Z>TjvtqQemq1F#-1EDq^YEz)L2h{e3+5u2I7;48s?F6XJg4!IY&4=0&sI@?C z8Pv{)+VxPoVItIShuS?*yBBH?K?l*?L1=Kd2iBb!kvH7V73g-Bzf32y1x^qx>0qWj`x=T>^5!79Vx*wqKC#d@c>f91;Lfvmr_Xq5154%!eS3c}o z3ASDPVAq?l>pj?Y3F@<puQODr$T)x)R#kj1=P=k`Z-WPALUThWEz~~*^)9I21NHl${!yrZ92@lqq5f&8KMeIpp#CV-zYO&! zp#BupzYg_pK>azWzX0{`LcLq)M^Jwm>OY72ub}=4)PE24KSKRAsJ{XAx1jzHsQ(k{ z?}D=lI3;kl0B37(y5H_{`hZgbrw-0`;0yp~5I94?84k`);EV!iXK==Yvnx20z?lNh zp5W{Q&i>#W1kR!0OatdAaHfNEJUAzTGYgzK;LHbS5jdxS(+W=ah159%oK@hQ4bFMs zTnJ7(IG2EPIXG8=b1gVGfO9iAw}Nv!ICp|`7dV~Z+zrmX;M@<+$H4g{I1hpIS#UlN z&KJRX44kik^CUP=gYzudoNs~iJUHJ0=lkIN5S*WY^D}UM3C?f8`5ic~g7ar^UI*t* zaQ+U?+u*zdE(5rlfvY*VT7k<0T;AaR?*lFkT)yD)2UmM=bpTfwxH^K%j15-|xZ=Ro z1zg?0l?<*P;OY&oe&8Ait|8zW4z7{l8UwCz;F<`oOmIyGS01rHUI2d+!t zx(2R4z;zoMRA>lWys=Pu;SGQM2KmxmeLmchSb@Ro9YZ=X4p^r24NrryO(9sMX%g`Sgx`Lsr7~06tLlTA_W>_x6iWpYH zu(KF;A;T_W*c}XekYNuo>=T9!X4p`MEn(PdhOK2-Gs6xuJQ!Zc@M9Q$9K$bW_|*)* zmf?>w{8@$%V)$naAI|WR3}2LB_%epCV0Z(=4>G)!5q%g@$cSP_oWqEV7;yPbdD&!`s}HHJ}B7&VPi z<&0X#s11y2Wpo=xw`24`MxVgwlNfz1iP5((`c_6i!|0b7{R*Q8GkOf8$1!?2qc<>m z6Qh4-ObTPt7&Cw|M>FPF#{7vfe__mRjCq+cZ!_jy#!O_)OvcP+Obuh27}LVoY{nKa zw!eh2=P~vY#$LwQdl~yEV;^Vi2*yri>}1BSW9)XuRx+*|<8m37&$#m$cNya@XWS!< zOEB&qj2pqYiHw`fxJ`_!X53E3r!u|+<1-k4BIAFPVEkE(zl-q?G5!(8|Bvw_7(a^f zKQev=<5w{unD8qmv}eNcOgNnhXENbdCfvh>`=J(nDir)YMHc;Ne7tRo5}r|T*&0#Gx?7sCSSqi$C&&NCO^mI z1x#MbTs*tbl;HwAu>LI?G%U9p?)elTLf+<~?lEsu;nQ{+P?qkXfrp#x` zcTDZV)ZR?(!_+&O`gf*2%+!$*rcPq&S4?eUYAe$)?JTBU$h3=?_A=AnX4<<CZ5IHq#d{{d;DlF{2|hGMRA+Gp=FApP2CpGX^tbXo4A= zm{HA)oy^Q>*lDVsym(9Ea=JjXZUzv9w^B!Q{c;-!K z-b@nn_A>8h<{jee^Z5D_zP^mFKjiDr`T9$~3BLIi-?ZnO%lYQdd~*Ze4B?xxd^4VJ z_A@_;`6h41g;`+N9)Hs3Gc`|nv4Ecz9T z+Oy~i7G2Mx8(H)*i@s#h5EkuXQ6r0*`Qbc%xP%`r-NU#nN^xJ%XiwVCj`C zy_%)(vh)*{e#+80EM3UbMJ!#+(xoh2!_svuZJ{iMvNX!tP}Y{Ru9S77>>5p*zef3+l)p{+ zzkbQTPx(ib|A+F=DF1@;A(RiNd=%wlDW5?3WXh*fK7;bvl+UAlKIIE2Uqtz0%9m2U zjPjL~uc3TB<(nw4p?nYJ^^`YIevtB3mYqyu*?BBGpJf-a>>`$3#jaRMt&V#U3zc#;)Qv*KA+3}VG=tayVJ3s|w7 z6)Rb>h862rv7Hr_tSn~biL5-Cm8Y@t3|79#%6D1$9xFdcu<|2TZe?XHE9+U=$jW9` zox!RLS#=SsE@jmpS@jXChO%lnt46VE46B-1oy_V~R<~vKuUOrg)m>TrCszNB)pxM^ zZdTvR>PK1qIIHKfIgBB7!0Jt`>BE{*)*Q*2V_0(>YffX$8LWAjHG^35 zJZoNJ%`2>Vhc*9V&05w}v1SKrYFM*}H7%^!&)TC|dpc{+WbIk3J%_~Fi&%RJYd>J^ zVAc+0?FiP6V(nzsPGRi<*0o_>JJz*lT?f{6V_gr{UCg@cSa&_^Zeranth*la-9_!|_?mN~kVO<&P+p@l^g!SE6-;?#dSl^HJ16Y3->mOtN6Rdxl^$FI$%=%YZ zKbQ53S-*t!<*Z-M`VFk##D=bH$Y(Jcrn3- zm)Y!g3Y%YJ^S{{qZ#Gx6xrxm!Y(Bu| zgKSA9v84@Le#e$8*m4zHu4T)0Y`K*!e`U)jY#Gj$k!%^mmT_#E#+DguJ%X*>+1it> zz1iA_t%YnYX6xN-eVnaNvh^9ZKFiiu*!mh%t?QORGi*4_-?IX7RhiyaHHk@sv*fy4J6WF$xZH;VC zVtX;$k7N69*#29#Uyxw?)oj0(?YFS~Hn!i+_Pf}AFWVnw`x9(`n(fcB{W-RO%Jy&B zzKrcZQ;|YN2P(Q!kxxYd6$7a_nu_D7IDv|jsW^*@bE!C=iVLZ@n2N;JRNP9%eN;R} z#WPgAM8&IAyg|i3sd$%)PpJ4W6`xZvn2KRkjHhBY6$`0YLB%R6HdC>Uib^VWP*Fog z6BYZY_=RjMl|f}MD$gcSc^Q?DQ#pvr*Qk7#%Fn3$oXU|@j-hfqm6NEPLgid4zoGIw zD!-@lM=DoPxsl3URPLs-nacfC9;EUxRY_DGK~)E;GO6l9RX3_~B~%qrbsSZ{q3SHE zE~M&WsxG7I3aYNA>L#lGLe*cXx`V2_sd|{IK~%j?)rVAlOx2fE4W()XRimjIN7Xc{ zW>PhWs;{Z~ma3nqT1D071Xa7Ks-f12mFjs^|3vjts@G7xp6X3hZ>73|>OEA~Q{6~)3)KhM(Ul#ivEu@E zJjjkG+3`F(-e$+U?D$39+3{a?e9n%+>=?$5@$8tyjw$Sz&W>5^_>LV**s-1+8`)9C zj-Bk-&5k;DG_d0!I}WomiJhtJY|GBR?7V=T*Rb#yv(pIuM0E5WXp+4UN`-elL? z?D`kG{==@%*!2awhOlcmyXLcN7rXW+sL7+In406MIfI%Dskw-ntEjn_nmBQ>{B za~C!DQu6>c4^i_dHP2G>1~uwncX+C z`xbWJ#_rqM{Q$ckV)vu$euCXkv-<;f&mpmUF}s`C-O8T!?CHjy0`~N0&r$3-mOZ~_ z&q?e#l|ARM=XdP6fISzn=Ti3E#h!QA^BH>b4RYSXA~M{Rp* zf0_Ta-Kou{Hiz0gYKy5oj@r|x{XMl8QhNopS5x~ZYOkmECTj1X_HJtLqxL~+AEx#h zYG0!EZE8QI_A_dSQ#*>x-MO`22@~JDK?s)1>r|tsk{y^Q8)Llc}b=2KJ-Obe9N!>lv-A~=$ zsY^Wai=*yk>fWaAQ|dmWZa8(Ls2fY&1nMSJH=DY7)Xk@E0dUL9COWiM| zf2OXL`k+3A`gH0usP9aD7WF--&!_%K67?rie-8EMQGW^bf296O>aU^xI_htw{%_RZ zN&P+4-%tH()K8#(F7?&a*Hhoh-XqwX&fYBc_F!)>_V!_KK6^{pdn9|0Vej$mJ(0bC zl(6@4_P)g4vFx47-udiZ%-*%^UC-VM_ExiZ7kl@xx1PNR*n5ZuG$hlIMngv$vT5i? z!?83RPs8an{Dy|JX*iFD-_!6%8m^?_8XB%k&~O6{f1}|ce!2E*c%6nfX?UN8k7)Q0 z4WH5Q1r4KU7)!$h8Ya^)m4;<9r$y(71@k#Wb#@aSe^@Y1~BPRvLHF z*hJ%Dn%dLUfu?RW^`xmcO}RAnrKyyrqi8yoMANTnI*F#=(sUtBSJHF~O}El?4^8*e z^mm#bq3Lm&2GR5aO)t~*8clD~^gc~r(lnN)nKaF&X#q`(Xj)9uQks_0w4SC-G;O7+ zf~IN-P4zS#pgEc544OO9oK15M&3QBz&^&ndZ}IK9}Z;X}+4~TWS6) z&G*s#Ak7cc{20wo()>KlFVXxe&2P~BPntiZ`HKY2qiLQ_^Guq*rFkLEKhXRW&1E#N zrFjF*n`z!gb0y8SG#{iTjh4=|bfqPSmONStXc<6DF)hc@asn+U({dUuXVP*$EmzQT zBQ3ui)3n@6%cHbBLCe#$JWI=Sw7gEsTeQ4G%X_qZK+FGV89~bwTBgzRH7(!LvXGV^ zX!(hjRkW<7WdkjnY1u|g4J}RVOJZLN`_kE$L1JHL_GPiJ2mA8b*N=UL>?>j4k?cE_ zeW$bUH|#r$eHXItBKECeUnTph*|&>*yV=*wzJ2U}iv6#!|26i%$^L(`|3mhF%>LEv zuV8-_`*%v%U&H<;_P220IS%}j1MhI)Jq~=pfsZ-xDF>!=;2REn%YlU)_<;lKIncy` zeH{3i1FigwpI_(a_xSl!exAk8^Z9ujKkw&Y8VB2Q@CXk6qW>Pus8k7)f5t)J2Q1+7D99Zu^gTF25lf!4{iPUZdNMxIn}oMEpaE9yh1CjKxNcvPHO%zGriKL|> zsazy26GNFFJY$B5)9B6*rfo+*;&h~(uWd8J5RC6d>QiC0(QxiIihS%JCxQM3HieNV!C$TqaWfC{nHzDc6XU>qN@! zBIPcTa*s%PLZm$POGA+|NTj?VQeGA*?}?Q6MaoAaV zsf8l7SfrMS)FVaeF(UPNk@{PadX7jvPo!QhQm>SV)N4fQbt3f!k$SU8y;G##EmH3j zsSk?Omqh9-BK1{~`i4mTr$~KQq<$t+Cy3O^B6X@roi0+p5vf0j)SpCZnMhqLQmaL3 ztw?PaX~`ljRiw2QX-9~(4hfN#Dbfatv{OXdX(H`Rk#?3yJ6EKgFVZd(X_t$%t3=wh zBJEz0cE3n_K%_k+(jFCQPl&XaMB1w&?RAm%p-B5!qa*9HYK9Xk)q8pqRqLY&Gn+qAkpR((dOTx%?F~*e?^jAlgh8 zZKjGgyF}YG(YB9hTPWHVi?+v!wkL?TCyTbHiMD5owto<9FBWaD6m72&ZLbq;ZxC&7 z6K!u7ZSN9o?-gy|7j3^4ZRnPe~N<_QvqFuIVmm}KciFSpeU5RLS zq-b}HXm^Tece-fzJJIe6(e5hI?t0PgCeiLMqTOFbyL&{t`$fCIi*}EQb_vn$MbYjp z(e52_#9nd4VbMNB`wpUgrfA?R$#$y+!+6(SD$4f3#?StZ4sh(f%aS{uI&v zG|~QM(f&ozew=8(RWV z{;5d+Or(Dy(g%z5F(Q4ONUsvn9r$DyL*DA94O z=r}=ioFY0-7aeDbj^Bumi$up|qT_neafj%*OLVLg9UDZ)W{K$dv*_3=GD2ju5g8ps zMmLd>D>4R(jH5)x@gn0yk#UO1I8$VtB{I$x85fF-D@4ZiBI8bxakt2LKx8~5G9DEf zPl=3#$QUFtUK1Jr5*hy!8DEHuVIpJXFUc_?W1`6TN@PqE8FNI&LXlA>GB%2g%_5^h zWK@fcT_U4SWHgA3W|47NWVRKVT}5U$k=aXR_7R!+B6EPqEEbsqMdk@2^GuO>zR0{l zWZoz;ZxNY^+eGH=BJ(bhd9TQPKx957G9MM0Pl(K?Mdqs_^L3H=mdJctWPT(vKM|SB zMCN9Zxm9FVh|DUHStm00icUqM(+Q%}NutxKqSNW3(|MxP`J&U)qSLFQ)9WJ9=`GRe zZPDo?(diS>X}RdMMReLGI#r5J)uL0q=+q!Omx#_MiO#2p&KHW#7mLo9iOyGu&R2`h ze-fRq7oBeso&O>_KO{OoDmp(QIzKHsKPx&95}jWVonI22UzLc?gGJ{_qVsCexlwfK zE4rL3y4)sORMM_ zqHBui+EsMzCc5?zU3-bHeMHxM(Y2rGIv^ps7K^TDi>_CRuD6J;?})C0Mc3t`YnABQ zB)YbWtRqBLy2#29S)D~zmdNTMvhqb%fygQnS*0TDD3NuV$T~x0oh`D?6Is6(Sr?0} z%S6@{BI|mQb*IQm+%2*m5Lpk2tVc!GQ@?;BYmmr#O=Nu_vOW@7BSqF2ku_dqO%hpC zMAmeXHA`g86&MbEXO=Qh!^QuM49 z*~udNS0Xz{WEY9-KZxvWMfP|r8%q{vQ;5!vHK_9T%#MP!$Y>@6a@N%U$bdUY4QjuySn5xs5_y&e|5 zUKhRI6TLnVy*?DZJ{P^lie6udUNc3nZ$+<#qSyDLSGnl5T=ZHYdTkWFwuoL^MXz0= z*B+7RRV#WO6unwS?^Mydt>}G(=-ol|?kakB7rlFm-n~WdlSJ=JMDP1V@25oXXGHIp zMDJHc?>9v6e~RAkir$}y-v1T7KNr0Ri{8UT@9CoVR?)j&CXQk+~M)X-P`fL(?wu(NDA~!^CvdB#nx$Q)5 zdy(5wppq|kA}>YcwGnw8L|(SY>n-wf zMP6T#*I(oniM$g;-bo_wWRZ7@$orkh`@P7!RODSQ@~#qj*NVKGBqHxGBJZyv?+%go zmdKkb@-~RPog%MBZ;Jf)MgEr} ze~8E*De}jN{P80HE0I4<cuPFGtD0o&B3=##eh=SKe!CRu>9Z~S1DELGad@2h5Ckhse zf(lV^Nc2k+{o0CtM~HqMM89m&ueaz|D*7EI`W-9!{aW-pN%T8a^gBZ$`u$e)yHxbM zT=ct2^t)E{`?KhGqv&^w=y#jw_n_$ahUoX9=r>yQ`(E^`68#!P|Bj-6f#`pt=zpH* zf34{Mu;~Ao=>MeX|BUGW57GZQ(SNe&KU?&lEBY@G{TC%f|HY#JQqg~n=)Ya`uM+)t zivA5^KqoPvn;39{7;vT-aF!Twt{8B!7;u>waD^CfgBWm^7;ujmaK9MvcQN28G2j_7 zV6qr6TMSq(2CNYSYQ=zkqOh+hEEI)_%SGW$qVN_`c$X-=R}?-V3Lg@MkBY))Md5Rz z@I_JhiYRi{gEv_>d?eN|HrMTTya^DCrNB>D0xGaB!-HTnWAKlD48cp=8KXAqGYouO%|mcMQN5O%@?I5qVz~n zdWz?-Hf=iqZ!}=|iIQX;J#DD1A

dPoc$AO@C-fmexvH;RETh=H$)f#bx$uf@OxV&LNc_p>e~Nw@zSbu0US!2h=x Hxa9u;O))LD delta 30476 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 G!v6yV3c~gP diff --git a/main.cpp b/main.cpp index c249238ccd..acb6e3ea94 100644 --- a/main.cpp +++ b/main.cpp @@ -33,7 +33,6 @@ #include #include #include -#include "tga.h" // Texture loader library #include "glm/glm.hpp" #include @@ -60,7 +59,7 @@ int serial_on = 0; // Is serial connection on/off? System wil int audio_on = 0; // Whether to turn on the audio support int simulate_on = 1; -// Network Socket Stuff +// Network Socket Stuff // For testing, add milliseconds of delay for received UDP packets int UDP_socket; int delay = 0; @@ -79,16 +78,9 @@ int target_display = 0; int head_mirror = 0; // Whether to mirror the head when viewing it -unsigned char last_key = 0; - -double ping = 0; - int WIDTH = 1200; int HEIGHT = 800; -#define BOTTOM_MARGIN 0 -#define RIGHT_MARGIN 0 - #define HAND_RADIUS 0.25 // Radius of in-world 'hand' of you Head myHead; // The rendered head of oneself or others Hand myHand(HAND_RADIUS, @@ -108,15 +100,6 @@ Cloud cloud(300000, // Particles false // Wrap ); -// FIELD INFORMATION -// If the simulation 'world' is a box with 10M boundaries, the offset to a field cell is given by: -// element = [x/10 + (y/10)*10 + (z*/10)*100] -// -// The vec(x,y,z) corner of a field cell at element i is: -// -// z = (int)( i / 100) -// y = (int)(i % 100 / 10) -// x = (int)(i % 10) #define RENDER_FRAME_MSECS 10 #define SLEEP 0 @@ -157,7 +140,6 @@ int head_lean_x, head_lean_y; int mouse_x, mouse_y; // Where is the mouse int mouse_pressed = 0; // true if mouse has been pressed (clear when finished) -int accel_x, accel_y; int speed; @@ -257,7 +239,7 @@ void initDisplay(void) void init(void) { - int i, j; + int i; if (audio_on) { Audio::init(); @@ -603,10 +585,7 @@ void display(void) void key(unsigned char k, int x, int y) { // Process keypresses - - last_key = k; - - if (k == 'q') ::terminate(); + if (k == 'q') ::terminate(); if (k == '/') stats_on = !stats_on; // toggle stats if (k == 'n') { @@ -798,7 +777,7 @@ int main(int argc, char** argv) glutInit(&argc, argv); glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH); - glutInitWindowSize(RIGHT_MARGIN + WIDTH, BOTTOM_MARGIN + HEIGHT); + glutInitWindowSize(WIDTH, HEIGHT); glutCreateWindow("Interface"); printf( "Created Display Window.\n" ); diff --git a/tga.h b/tga.h deleted file mode 100644 index c45f1730c3..0000000000 --- a/tga.h +++ /dev/null @@ -1,470 +0,0 @@ -#include -#include -#include - -#define IMG_OK 0x1 -#define IMG_ERR_NO_FILE 0x2 -#define IMG_ERR_MEM_FAIL 0x4 -#define IMG_ERR_BAD_FORMAT 0x8 -#define IMG_ERR_UNSUPPORTED 0x40 - -class TGAImg - { - public: - TGAImg(); - ~TGAImg(); - int Load(char* szFilename); - int GetBPP(); - int GetWidth(); - int GetHeight(); - unsigned char* GetImg(); // Return a pointer to image data - unsigned char* GetPalette(); // Return a pointer to VGA palette - - private: - short int iWidth,iHeight,iBPP; - unsigned long lImageSize; - char bEnc; - unsigned char *pImage, *pPalette, *pData; - - // Internal workers - int ReadHeader(); - int LoadRawData(); - int LoadTgaRLEData(); - int LoadTgaPalette(); - void BGRtoRGB(); - void FlipImg(); - }; - - -TGAImg::TGAImg() -{ - pImage=pPalette=pData=NULL; - iWidth=iHeight=iBPP=bEnc=0; - lImageSize=0; -} - - -TGAImg::~TGAImg() -{ - if(pImage) - { - delete [] pImage; - pImage=NULL; - } - - if(pPalette) - { - delete [] pPalette; - pPalette=NULL; - } - - if(pData) - { - delete [] pData; - pData=NULL; - } -} - - -int TGAImg::Load(char* szFilename) -{ - using namespace std; - ifstream fIn; - unsigned long ulSize; - int iRet; - - // Clear out any existing image and palette - if(pImage) - { - delete [] pImage; - pImage=NULL; - } - - if(pPalette) - { - delete [] pPalette; - pPalette=NULL; - } - - // Open the specified file - fIn.open(szFilename,ios::binary); - - if(fIn==NULL) - return IMG_ERR_NO_FILE; - - // Get file size - fIn.seekg(0,ios_base::end); - ulSize=fIn.tellg(); - fIn.seekg(0,ios_base::beg); - - // Allocate some space - // Check and clear pDat, just in case - if(pData) - delete [] pData; - - pData=new unsigned char[ulSize]; - - if(pData==NULL) - { - fIn.close(); - return IMG_ERR_MEM_FAIL; - } - - // Read the file into memory - fIn.read((char*)pData,ulSize); - - fIn.close(); - - // Process the header - iRet=ReadHeader(); - - if(iRet!=IMG_OK) - return iRet; - - switch(bEnc) - { - case 1: // Raw Indexed - { - // Check filesize against header values - if((lImageSize+18+pData[0]+768)>ulSize) - return IMG_ERR_BAD_FORMAT; - - // Double check image type field - if(pData[1]!=1) - return IMG_ERR_BAD_FORMAT; - - // Load image data - iRet=LoadRawData(); - if(iRet!=IMG_OK) - return iRet; - - // Load palette - iRet=LoadTgaPalette(); - if(iRet!=IMG_OK) - return iRet; - - break; - } - - case 2: // Raw RGB - { - // Check filesize against header values - if((lImageSize+18+pData[0])>ulSize) - return IMG_ERR_BAD_FORMAT; - - // Double check image type field - if(pData[1]!=0) - return IMG_ERR_BAD_FORMAT; - - // Load image data - iRet=LoadRawData(); - if(iRet!=IMG_OK) - return iRet; - - BGRtoRGB(); // Convert to RGB - break; - } - - case 9: // RLE Indexed - { - // Double check image type field - if(pData[1]!=1) - return IMG_ERR_BAD_FORMAT; - - // Load image data - iRet=LoadTgaRLEData(); - if(iRet!=IMG_OK) - return iRet; - - // Load palette - iRet=LoadTgaPalette(); - if(iRet!=IMG_OK) - return iRet; - - break; - } - - case 10: // RLE RGB - { - // Double check image type field - if(pData[1]!=0) - return IMG_ERR_BAD_FORMAT; - - // Load image data - iRet=LoadTgaRLEData(); - if(iRet!=IMG_OK) - return iRet; - - BGRtoRGB(); // Convert to RGB - break; - } - - default: - return IMG_ERR_UNSUPPORTED; - } - - // Check flip bit - if((pData[17] & 0x20)==0) - FlipImg(); - - // Release file memory - delete [] pData; - pData=NULL; - - return IMG_OK; -} - - -int TGAImg::ReadHeader() // Examine the header and populate our class attributes -{ - short ColMapStart,ColMapLen; - short x1,y1,x2,y2; - - if(pData==NULL) - return IMG_ERR_NO_FILE; - - if(pData[1]>1) // 0 (RGB) and 1 (Indexed) are the only types we know about - return IMG_ERR_UNSUPPORTED; - - bEnc=pData[2]; // Encoding flag 1 = Raw indexed image - // 2 = Raw RGB - // 3 = Raw greyscale - // 9 = RLE indexed - // 10 = RLE RGB - // 11 = RLE greyscale - // 32 & 33 Other compression, indexed - - if(bEnc>11) // We don't want 32 or 33 - return IMG_ERR_UNSUPPORTED; - - - // Get palette info - memcpy(&ColMapStart,&pData[3],2); - memcpy(&ColMapLen,&pData[5],2); - - // Reject indexed images if not a VGA palette (256 entries with 24 bits per entry) - if(pData[1]==1) // Indexed - { - if(ColMapStart!=0 || ColMapLen!=256 || pData[7]!=24) - return IMG_ERR_UNSUPPORTED; - } - - // Get image window and produce width & height values - memcpy(&x1,&pData[8],2); - memcpy(&y1,&pData[10],2); - memcpy(&x2,&pData[12],2); - memcpy(&y2,&pData[14],2); - - iWidth=(x2-x1); - iHeight=(y2-y1); - - if(iWidth<1 || iHeight<1) - return IMG_ERR_BAD_FORMAT; - - // Bits per Pixel - iBPP=pData[16]; - - // Check flip / interleave byte - if(pData[17]>32) // Interleaved data - return IMG_ERR_UNSUPPORTED; - - // Calculate image size - lImageSize=(iWidth * iHeight * (iBPP/8)); - - return IMG_OK; -} - - -int TGAImg::LoadRawData() // Load uncompressed image data -{ - short iOffset; - - if(pImage) // Clear old data if present - delete [] pImage; - - pImage=new unsigned char[lImageSize]; - - if(pImage==NULL) - return IMG_ERR_MEM_FAIL; - - iOffset=pData[0]+18; // Add header to ident field size - - if(pData[1]==1) // Indexed images - iOffset+=768; // Add palette offset - - memcpy(pImage,&pData[iOffset],lImageSize); - - return IMG_OK; -} - - -int TGAImg::LoadTgaRLEData() // Load RLE compressed image data -{ - short iOffset,iPixelSize; - unsigned char *pCur; - unsigned long Index=0; - unsigned char bLength,bLoop; - - // Calculate offset to image data - iOffset=pData[0]+18; - - // Add palette offset for indexed images - if(pData[1]==1) - iOffset+=768; - - // Get pixel size in bytes - iPixelSize=iBPP/8; - - // Set our pointer to the beginning of the image data - pCur=&pData[iOffset]; - - // Allocate space for the image data - if(pImage!=NULL) - delete [] pImage; - - pImage=new unsigned char[lImageSize]; - - if(pImage==NULL) - return IMG_ERR_MEM_FAIL; - - // Decode - while(Index Date: Tue, 20 Nov 2012 21:51:09 -0800 Subject: [PATCH 3/6] Added spaceserver messaging. --- .../UserInterfaceState.xcuserstate | Bin 101683 -> 101676 bytes main.cpp | 14 ++++---- network.cpp | 30 ++++++++++++++++-- network.h | 1 + util.cpp | 5 +++ util.h | 1 + 6 files changed, 42 insertions(+), 9 deletions(-) diff --git a/interface.xcodeproj/project.xcworkspace/xcuserdata/philip.xcuserdatad/UserInterfaceState.xcuserstate b/interface.xcodeproj/project.xcworkspace/xcuserdata/philip.xcuserdatad/UserInterfaceState.xcuserstate index b653b6168a2bc179a65c76fe4b742f86bf36cb02..b310c1ec8998fae6553ee58651446f823ff07bac 100644 GIT binary patch delta 33413 zcmaI62Y3|a7xw*IGPBZ>%$~ zbL)$ZU3%J3$I$x^bF93@xjqx4nslo85EWt1{n8KaC< z#wp{KLZwJ4R%R(BN~uz&lq>a0gECK{jkq9#Hlu4=N8S4=a0>{mOI7^U49`4dqSci1LRsyH>OJZ{^-=XP z^>Ot@^`QEa`m*|t`mXw(`o4Nx{Zc)lex?4bo>6~Me|5BT1UV#!;!qt9hvw++h;<}5 zk{m8asw2aZG1f83F~c#_QS2yp%yv{bY8-AygQL;0$g$Y5!qMyy zj9`@Mrq@;DcW?cSS!=2wOVbS)~GGlR%&as4cc|uM$M<)u5H$~X}h$0v_0B`+C$nC z+LPK-+SA%I+RNH2+9B;#?JezN?Gx>o_Nn%nNBdm+Li=9(K|7`WsGZgR)c(>g=%Koz ztGYwibX^bA!}V@@gdVM@>)CoAy}v#{AEFP{N9ZHznm0`n~!Cy5}K%pZ>W1w7y?| zL4QgANdH*>L_el~s(+?`u79B)*T2+H>gV+H`UL~SX0$Vc49SoUyV2QDjV?x4BgTj| zvW*-g*XU#PHS&ypMt@^~G0~W0Og5$%Q;liHbYq55Xv{L^8S{+=#zLdfSY#|VmKaNo zCd1<~yv8bHow457Y-};M8m-1QW4p1#xWm|K+-dAG?lJB+9yA^?9ygvdo;MB{FBmTw zhm3cOca8TnxADGl-1yQsVSHtLZTw)IGJZDB7-x<1redn5!_-XOG)&X9%rG<3>~6-J z31+hCGSkfrGt=yA4l>7@o^j@QbGkXhoMo1qwPu}JZ#I~V%w^_s(`&9ZuQ9JRuQP8l zZ#Hi+x0&0`9p4Ai{?S|u=$$#zWIUqp?TCiW}Y^GGJiJD zn7^36n!lO9n}1kAmSlCbLM(@6SYcKdE5eGh;;bH4#w;t-%CfSp94puAXAQCjTNA8_ z)+B4PHN~206tettHk{%WDa1m9^Ho%Gzk%Y~5nrYHhc6Sa(?WS^KP~ ztmmy4t(UD=t;5!v*1Oh+)+a5_;6b*HEp@>+E4f0>6Y?M-mk7C3$m<_6LkeutTS7YX zP-E!rSKEumdOthU@geK>shOVcLW&hqqL7?I>LsL9A!P`uuaNo+X_%1432B;;3WPLE zNaaGR5z+!7Ef&&pA*~eBDj}^E(iK9wT1Ynt=_VoFCZw%G+9jlWh4g@s9v0H0LV8k2 z&kE^)kX{nft3rDHEjmz28Ra3}c<9?B&pPZyuI(rKzxmLfFGFmZyM@$END)G^2`Msm z&?7~j$DLQ~ozaw%9F>)x(>$XoJv}8kDy7-a(veP>p$~^X*0S+rSVZXKp-TTp{&oX+G|4X*}6AC_;$|aK$QdZPq*?^=sL8GN!jvN%37AhmxwK;Zib$G(<>41Nr2)*iI~OS@lhi-u;y!e!l_AKxL3JSV+T# zG(t!tg*0l1GE~XOr3@F+Xd#UW_>B$tP5w5q_e5oy-*1vKS(&0t71DSiO%T#VAx+w$ zOjl;$QVN7LSx8d?ep3T}vERi9RVZ`)84Rvb+_;oFAx#(3i~we)zgpW+?1M| zotm2*m70;8+g#9;mXej5^RKEa3zemTS}Dtv<+zj;LMjweQGlno<&E#+gH|c){BgAP z$`!bjD}_`dq|$)BtR?RIq~05q8~ysPS6Y-ClubgKEu;z|RSKzUhvHLi!lm3Iq-r6} z3HZzn=>P5eq~1G}yZnB4C_9xqm0dz|3#nE}bwaA&q1>(9gG;$jNDV@o7x0@O@O$Nl z9zpw*Cj)w(Ql7@8JS(JyLTU_P7PUm5iVu2GIn}ulG;3@DJLi6-08-#Ra!1t<_E~k6+?5@Un^LD6FYP1@o#tP{g zAzdq^>x8s%hZ?UYw9#EJq?VTE-oK1UPQ>bM$_{=gbp@O{xC= zN=?bkY@X4Sk^LWz@#>V8S!cRvQ`Kp>)EPp$T}Yb)6kA$m{p{>LOP%e{tVAtU%hYlq zwF+sQkhTkH#}2hZt;D5P3+WCa?F{(b*tAae#M;x)hhXTu65b>FxmL zo|X+~dIovb%iFZCRoCHCuMpCGLfRbw-0#=E*;TNoe_>NBRuxV9SYLlY&mFKllLy)l=$^xYVD7^s=fHx2dPSX++1urmPJAWMrjh zG|y~G&CL8yjel3q`Bem;S1+`6;$b1Z)^h!CF+p}mCqKQ%(b*A<%MmK1H-z+Nfc}V| zzE%IN+myB!RAxr=jHa~A?0+TbFdSXIc{?1Y!*YZ$!k2cJE0Zagr?Cnyb zh?YG{WXsCGX1A>Pqhna_HqZx`Kkz2=@Z}lcDA^%q27{KN4}7bz0Egt;5)}~#|XzrM|8`FXCuNt z71C$^9E$yWH8-nQ`>T&ogWECAF}`KDx@!3 z9n*z$JP@Ntp+82EkiNVWW0qs2qm%?8eH93C!drYP@5O4BV~(GvT1Y2b9dm{BO@Jr1 z&d*aXq;D_r%yW!%Eb#MuAK>|}CFR^Cb*W>y-+h^oPPICkg!E&ZyT|YD71HTT?yDRl z9c%pVKL^}@YB_&)QcLpr@f|lfeBQi!9alQ8Y7yu4AR+zI;yWK5bg$#4mdDP=_2@3- zSRp40*(Kx@A*TvCUC0@iD!a3-CcpY@Hk;NvXJ~$Ac6xq_D}QKinkyqeE5|i>aB7Y# zBRefWD|<-#;GF#2OTPEC{CPfn)2lXD`v=-s&IVXEt+Ms9?QOaGLRa5To2^&-$J>nO z1ICtF7kb&A+0@k$$-qd5))AaXlDWRUIUO?zxzTkgEj%l6u)v$n3Aa&5iZ zztx6lA0Y7++ibmT@B6N@*}AqE7kah-xXs$REyRx(dRT!|o8xoGasU2)A>@!&$CpA5 z4eW2Xlirf8m-_8H#}9tc_d-@%9jAQt?QDtNe)d=3jF7c=_{Q<8<2Qf9Q4w0~IP3V+ zx2K&gDdhLJ=-@c-xS(Mhui1Pj+u5As?184!f;6dc+~kq<6_raTlr_%TrpYw?bD<4& znby8UF-H!~AJb4hv|;w5y2|>-F%7fJ8s|3DZ`V3#9ew3Nw!WTVE%a}7nj++|BXpn> zCp67l(yHk~?(!drTA1Tc#{*v43%RS1O(C8Ar_u-^8_H#WC$B|mF@Nun7Axd#7wHrH z^ohbFNBo!H>G;#JH^3hm;Q#BN{3(9^&X@SpwaiQMvxFRVkw4eZ-$%&N|E2Hm_|x%t zfIddZrbkHU|H(hZ&o5u%AEu4Cq<^H4<1X@#@$-)ra{Pb!Cp!LgJQLtg@XMF^C;c=( zeefmvnd7y>OZtn1+~XpDiJ!kz$UXndU*Y)EaUj5-6yR_779F%Xj`JE?jpp`km2H;C zskA#n2dz%4*BYjeo7}6Stg%eU$%8MWtvBXt3yQ~09=oWqth}~zXjx;~c5S}4kcMgF zCj0L$>07KVy_EhkA@{l{Z-rl8vyglLSDrupfiM3ff9Vq2T5bK`$p*&dlIbe#8gE{! zcD0bxS{+~dLhQDl$t~KZzk~k=ezSI~AAXCFGh4OWgq-Ccyx1AqR==!PA!q+r)*X&N z9Uli&kcSI-gpfyW*FMya zY99%Cl#oXYd5o{Vy=`;+m)gny6Z9MHTkSg`j}!8EAy4q7cCbYa`bqos{{;O_`(67( z$diOTS;$jj2mDCj&upUN+uHLx_TIdm+Piv?E@|)UcKxz| z$Z0~JF65Cyo+0F!JM|7WUGJoKw&^xq$OYb6LM{|?v3HhtmanX{E!tPy*|y$e&_OqK z%ipDqbL%So@7Hb5ytn0hAr}RDRqvvAZEMTQZF(0PN)%;ELq*xLsItbW+&&pOQ4_{0 z-?Vk*e!aW5Z!4kRpuaa#kJX*tygT(cJzh_6+^F}^d+JF-E)()>Ay*2y(F z;Y;!en1-@El~!S4lstKXsTbeK$a zTp9d{evgo^5J7Ks;2F2vtD({ z`dG_r$MSXk$u`3^mkiJPPCIO=Ey_C%U4OpKdfg@KLBDnA)K~Pkym`CyL;9=wVf{7z zb^Q(fP5p?FuNQKQkZ%z3CL!M_WS@|467tQvaOv;p@8Tj-)PFdaZxQmXLb7>- zgnYAC5%O*OHfXk7TlH7ol2$+0%@;S%)W6lw_``jtf3N?bpVEKSPwPMFKMVPGA#WD) z79npHa;uQH33qP^eVz0?MpIjpLp6E z9ld$29cPGk&$JqygnZ}!=FJH4_T6TL8j6s23Hk1eQaT%&VS016b*$)EDcU_J+C9Im zW3>?`+8q$`U9kg~NBz6%MmMAT{|_A{KmH=QX~Y}7ym`Bf1S8StVe~YT z45yK7xP*M4kar9Dejz^~HPVc9Bg4ovvV^=>$j=D*u#jI9 z@^K-b6!IBi58d~jX|vmg4>Cr2^X@bT8$*ntM!qr37;cOZ@*_gtC*((k{Fsm*7xEKA ze)3M@a2aEWnX3|%@Xp{zT7a|PgMopzFRNuRk644r9+`nYRvJ6DKpBA z*+zv?X;c~2LVi}r`-S|Rke?Uw0U^I2W1>Wv0(u|JG|Cl3nwB_Y2e z%IzOBYyA%A>v zn;-QrJSOB%E;dYO<4NNgZ_YO3DdTA&9~1JY+d5uh>=*6c6!K@2M$N65)VOS7^+oc7 zf0G+`8L#+nF7lYhVdG72-ge_P<8|W=A%7|46GHxKyK%%{At8V53yZLo_5RQ}=FQt- z95p^NJ~loP@;5^MR>q+H=Bg_g_dhVGo`)a%jHqc%<#H$87R{tDTye)tnsFl$M^E9F>)p-u(AB+nvp> zW;bt6s~Ilj^Q~rtkT3i{axn|>v2sCG+3ZUjVD>PR{Ggt~ z-mcYSI)y!G+T?~s3;qe|ZKnDmDZ(zbnrXr=&!{V#Ti^R}63=H$R?XaA*Nm$1vz=GK)}S1!C5p|e?F7G2U+EbJi{O{Q6D zmi@b`73Lgo-gdLntTL;GT@iLw*d5z(nKh<6P%2H>jS|J@j<&6coNq4tyIssiVb?Da zFEN+;n<_qeg}L(YXT9kWcI$tGWv=q}-EOWn*O-?Jdzi3?3wxyRtr%Oh)J534`kG>F z3E|h9oBsVEH*Yk3!ro2TBYaQB*rLO4Gq?N)u+?l8_U^(S<@-IxmN0dvdA~PrmwBhT z%e>3H+q}oT*Syc%E$lJE9xLo|!X7W|3BsNz>^+3N=Pq349^yzaA2#=zkC^)c87Fxa zZ?UjX6!zJ|ULowYzJ;;2JJsjR1OAdeFYL}%^95l~_BrEhX+vK&5BZm05q4Lr`Kqw@ znliR*ZvDlL>1@7XzU|G~ZoX+AG2asQ-ol{-H|E$lhMo-6Eq?liwKzcs%z zzc*9NQ|6Dt-dEW3gnfjtj}dlB*vAU{IA3MF?Oye)`KS389n5p)dGmsWW%I=(*rs+I zD(wA*y`QiT_lX2s-)zh7E!l2eX0^9E2>SqGA0+I9kI=#DWOX)E3Px5`);G?rnp?R* z*ar%`6nOetp_bya5^ddswppsrNVLU;2jD#e82<-K|E*;OZio0lZguk_?8AgT z-`^)yR9oHuK2f#r(8e2W#rU31w1ox5(%`=^eWwy__Mmtx!S{Qj&1FmUCG@am2PIj( zeWg8YU52Juskp3kVIL{%qXH!z?f+P?J@v|mUH{i#s?1tYSyoX}U)i{%VS&3x&z9Yx zJ>&g_2prd~ZhAHobZe$Juhp6%>@$21 z^t2^+nq`&x7fOV^!1q;8TkM!htNQP;vgQbT(f`KEa(nx3vudq6VJ{Z;(u=Lr*_vl9 z{P(C>jn*PzpC#-izG+FeXwP!1`9FY_mPgpjguT3QNJIU?hT6(O3o6TE2QC=+uk)5^ zt+6iu*F(fwZ*90F?n+^=yeRG(zqo6y>x8{Z*ymmn*J9lm_MhNB>n35Z7WO&55T`9- z`0du#{{UL8ZNgq7?C!Sb|Io_vMb*`n3)(c+x19;!wsu-~(!ttg-9?3Uk9Dtafzvi7 zs?OhIOND*WyVh>&e(M2i4;`!rt%q#mtb1+at-ZcaoVM|vdSPEA>`T17WBxrP)}z*A z{vjbj*c*ktp>0IG#cc_mu%7Wx$+Ome>p5YcC+zcueZk*Ta&a`;hUPz0a42A1_>b3< z@7`ovhY|l6h<}Nt!ZyzT&)RFf)Hn9sP&QWT(T`W=wllE z7fJscq+`~nz7m(MN6=?9_%9NC54dc4&~fWa-$9ox(US?meIa-R1doT{=@48F!4(iZ z7lPdoTnE7mAh;2Nmq73}5WE+HpM&575PTGZKZf9A5d0Yge*wW?Lhx4*d=i4ch2ZZY z_!I=6hLH9U(h)*BgC`^eLR1LRA;f}^t`HIdAyE(#3n2**(houkAfypO1cclKA%`I3 zV+c71pI2V)Bu+rZcX#+_i?1;$fgya>iiU>pYHbuiw@>-`8JsEg82cMN5T9K%wNF*tj=JCfTe)t080m}60CZ#n!suXYYkXy!CDX2 z2Cz1Q)dJQguzX-`0c$5%hroIZtW#k94%S&e*Ez5*Kv-u83xTk32#bKQ?hqCYVX+Vv z4`GQAmH}Z|5S9aBeIP6k!umtlKnSaXuvHLt7lgeIVW*&r4qYOkOLt#Mnl0Qj5V{P8 zE<>TqFz7M@x=e&Flc9?nx->$U#n9zC=yEf3xfQzXgD%fPm*=3%N$BzubU6cERp{Ck zx^{!E+0b<$bR7&`z0mav=z1k|eHFUC16|*Pa1%V?-61?0!t)?JAHs)2_$UY;1L0F4 zd^&{Bhwz0Ez6iosLilP3zY4mjlQB5#1mR*2jVk-H)C0f>AMA|HmxMcT+XHbALEIw{cLL&7h#v^?4G_Nt z;-7%{mmvNXh(8SRuS5J1h<_X6zlQkJ5dSm8{|@nIA^tB&=l}_wAVGly2PEi_&;=60 zAt3@1oRH8T4++B|VG1NngM>mzD29X*NT`5>DoB_E3G*T0YDl;d5^jQoTOr|gNZ1Vt z4?x0$knk`hJOYU_B!)m@I3z|uVjLtUKw=L_OoGHzNKA*sOi0Z3K;i&MtboK?NL&wz z8zHd;5^sdWn;`KHNW2pgABIGKfJY(maY%d;5}$^|XCd)0B)$%bZ$jc*koXQHz6XgP zK;n7m(G_|Of*#e-<7((}AM|(xdIUcTJsyJ|&q0p^zNQ@8LC<}VbU!5Rfux5ZX)h!_ z3Q12u($kQ%ACeA0(m_ai1(FU!(i@QU79_n3NgqJcN04+3l0Ju|FCpn`Nct9%et@LY zkaPx;euJd5kaP~5fHMf3cJMemfU`3=L&50)rvc6|aE6035}eWCj00yPIFrEX0%r<1 z)4`bq&RlTjfpY*j2ZJ*ooFl+F8l2<6IT4&wz&Rb91>h_OXDK*mgR=?`&bi>M1!n^| z7l3mSIG2L637jjzDZse~oa?~30i0KZ^Ez<0fb&Lh-VDy$z_|sS+rW7TICp{b9&qjk z=N@oA49oulf%92#J`c_pJ>Yy9oUelOb#NX5=R4qhADl@8YItzS zz5~6zl_50*QWX!RWs9^DfAI5HcTz%y%L4 z7-W71nP(v@2(o0z>IGTZkd+Hr6CtYrvWg&UA!Mzjx(TvcA!|Ei9fGX4A?sbp zIt5w3L)KZy4u|YG$WDOlQII_uvZq4!V(>rNvjt?|3fVg#dnaT+2ib=p`!HmmhHO8_ zUyu_9Inj_43pqnQkTVu?#zW2$$niqXD#*D5a&|+`1Ca9u< z9R#^UAa^$8)A(C;DW_YU;?1p0jn{o6tRPS8IX`uBkTsn9x3x|4A6o83q_Iz=8pNV89R;U`RL& ziGU#`Fk}u4sevJPz>wWAn9@F!sSuQ2=qjIhCo@i1Zrj3|H+TVcdq zFybB(OmOw4UGC3M*RY#b71r!7(E0=uZGcA!RTvX^lLEsJsAA~j0uG?VKAmE zjF}B%YGF)0jClmcJOg9)!`Mg|n+Rij!q|B*b{ULq^1#^VVeG3g_B9x1!np1*E*i#7 zhjFDat{lca1mm8BaZkf|8ODdecm>86!1&oPz7odohVlDg{9`cw989pog!V9DI!q{q z3FRVDfsHya6U3g~`WZ@(Gv{2~!ebN>A`i znGaKz!;}>;YSs(|W_S9GKPzrZvN~ zwJ>cxOnVcieF)P&g6Z91dJmYM1k>wa`eK;A6sGTk>CfU}`g1VD1~WRsjLtA)1k9KS zGbY1~7MO7x%-9SwK7<)xz>F_pW*p3P!OY$;b3V*m4l`H4%okzi>oD_8D2RZ91SseM z1#_Wb0TeVs!2?k66cjuI1UjxNEq4<6%-UG#l zp!jVleiw>=g5p1+_#DiNgIO+^)f;Awfmu^w)^wP)0A@A8tY($@Ngu0wp&_aH~3d&AG*|$*kJs!$VLD^|2`x(lC@*pU; zLwS2B?+E3cp*#f2Ehz5-<-MRh70NT9JR8dUKzTnX9|+|`pnMpVkA(6uP(BsPr$c!I zlrM$yesQd~lzk$l%pz;r>JP)2K8&pY9)d8wHK~)G;b%UzjP?ZB! z`A{_+s>VRoc&M5LRnwtrCR7zcRV7pjsM-KkS3%XaP<1_2ZHKCzP_+xH?t!Y^P;~*S z+e5Vh)fQAo;-NYUs$-!#0jgb4odVVAP@M(U{h+!Ws#ikwdZ^wA)h$qcBUIlE)jOej z7gXPMma38;P=s`o?n0jNF*)o(-fyHNcBR3C-vkD>ZgsQw)0wDZ86NSKokbKEdz zBg}aO<~##)_QRa#V9p_!a~NtSLCsXCnE^G0P%{f^%AlqKYO0~825Rb{W**cmgqp=r zvkYohK#d1#Rzc0>P_rItu7sLv{OcQ`<_4(oLCq~tb34>*g_`Y9vlD9Wf|`4w=6~a!F?ULTfluIxNipcZQ$Ml?rq?{1Khj7 zeGj;Id%(R1+z*3$AGjX}_fz107TnK+`$cfS4DMIK{W`dhfcqVAzYp%C;Qj>MpMm>0 zxW5ATH{kvr+&_Z*XK?=t?mxi&7q~A#Z9Axyp|(BLc7j?@2-K=jt3#~?wOye$0&1h6 zHWq3VptdK}CPQs+s7-^~OsLI)+P+ZRA8H3d?NF#44z;78b}ZCRfZEAWI}K`QLTwS$ zmOyPe)K)_69H@1Jr?wty=R<8H)GmSAVAZJ73#Y}eK)A@1NB3oJ|F5EpnfUTFNgZ4p#DXue+lZ(K>azW zzW@yx(9jPW20%kOG`OLm4jMK=!)9pM>Vbv>&~O+UUWbPBFz+&$*8%3Gz`R_T*B9nZ zg?Y1JUMbA;z`XS^Zv)J`3+6ot^B#tIM_}GjnD;TvZx8cTn6JV7Y?wa~<`0JXl`y{^ z=FfxqH^Y3-HkiKy=I@93ufY6QVg5;&{}aqV0}BjT5D5#SU_mzc|69s}!LVQ!EU1PB zb78?oSa1t0xD6H@fCYzP!RxT#TUg-d_!SmLz`_Jr*aH?0frVpW;W+Rttc8V(VBr#2 zxCs_+hJ{;U;WM!CC0O_hEc_Z4o`!`#L!%Cj5zyEj8grp>FfK9$5SrEItoQVql3AmbhTaI9M_rmdu1D3t`C$Sh5n9+yYCs!;(8-$;+_h z2rPLUmi!1y{(vQa!qRTAG#-{F!qV}ubOtOffThi_bS*4h4@-B!(mk-$^AIfk43>Ta zOTU9<3M}ga%few%#Yfu>iX=~rmF04r>;q9?3KgB2ODVkWF8hZPmDVgsybffbuz z#XeZ^EUb7A56w1c?g-7Dp?NekPl4uX(CmfgE1>yGXuc1cAA#maq4`5-{sNl6gq6U` z4zRKltc-`1ytXvH%uY#4=z{*Ep~A-o4;`8obYf07M56 zoj}Y4Q4XR4!~-B61Mvi`@^pYz4p^nbsuEZ=2UgX%VKL%?pSQ`avV_cHp6htyeBOA5H(un8mw96eZ&dKcYWn2S zrx$(Bq0htgd5k_!&}RaDX42;q`s}Aq9eo<;dmeo+rSIkRP0;rZ`u3&o=k)!CzRP(t zoj1?o%`OSvyo)y<;LQhlb0lw0;>{_%S;d<*yje@X%jow@`dv%Ex9K;KeuL@PK)=(x z6})vlZ{5OMzvHc;yfvJ+M)KAn-fHBn?|J*jynP98U&`BW@^<0_-X6f)TX=g9Z&&lq z`Mh%(?_9wXh-$4JD85BBrnWqkNc z2_Ig|hr{@AJReSEKywD9GoU>KZezeb47is8V;C@%0n-`K$UqEi!oX`7_!|b^%)oaT zIEaBm7`TCfI~ll}K{*U6WKb^#{hdKiFz6`;O-(RpE`#PX=mdkCGPpT|Z(#7P4E{ZX zKVtAG29IHIJ%dj%1Vet#kY6$6Muxn>koOqUpCQv3vXCK*81e-}zGO%RLsm0n8$)(7 zq>>@k3`y)~$RUP&&yW)gInB@}3~kEL77V?Fq4zWNeTFV%=n;zBP@G9|7RA{V=TUq% z#RU{!PVqGqUq|tc6#tguTPgk%#rIMCAjJ<;{0PPWCQ`6&1(g^vpP=o&tHB*91T^U+j3TE|D*`DiDl4^jFz zO8-IWzbJj2(x)hWmeT+7L*7{W5~Z(F`Ua(MQu;Qf?@{^zr2{D)LTL%5rIZe%bR?x? zC>>AfBuc0LfHQ;APbi&B>8F$~r1T3)7gM^F(&dz{q;wUfYbo78>1Il|QThYXN=mCK z-B0NuN{>)lM`R$li{!f``;#0%axlqak{^>SBRPWPXp-YdP9!;n zL2@_ADw6w19wb>q@+ip$ zlHZd&LGm^jPRMcGZ1-AviLdaKU4M>%Kl2(-zobiW&ft^ z3Cf

_3$KkFpmidzrG=DCxGb8`T$j2G^BqKjy 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 Cg=k3t delta 33196 zcmaI62Y3`^_s0EOGPBeqGdpDyQb-SEvmu>?gx-5^DWs4By9t31I%M|&q=|Kb*p;Fn zV&O$WQAETFDq$InOg^ChWb%y8jmI^=8n^ z_E&BQ?_p`$H>h6+&*9J~Lyv?$75Y->%b~A?o(z32^!?BeLO%>W7y5PR`Ou$3e+m6n zu`2DA4vMZAimBL@FeO~+sw64NN_Qn&$x(8ZUP_*luk=<5lwrznWrQ+P8KsO?#wcTz zBBfXsy`D$R;Vx!R*_Qm#?1Rc=vkRc=#mSME^mRPIu? zDfcT6C=V(RDf^WFDEpO%m8X=W%G1g*<)reea!Pqk`B3>t`B?cx`9}Fx`A)f@{I2|= zTv7g1JF8vPU^QIrsz#`hYIn7VnxZ(uMj+tl0DJJdVX`_#Sa{pthi zA@yQCy=>Mu6gX0^4qX*S(v*kWyo zw(ho6TTfe-E!WmN)7Hl}$TrwE+&0!W&NkjQ#a3)9v6b7ZZ8f%9TfJ?*ZINxUZHcYf z=CQ4|t+#EkZS*-i_4IsV`_y*E_OwWaT`ape)Z6Z_1*ej{XyNcUq7H9(huuL z^=I^V^mp~s`g{8O`Um=l`bYZ5`X~As{TKaL{Wtx0{SW<${-=RqG1?g&j9|ksOe5Op zW@H)JMvjqd^fK~{e51EfV2m-w8sm)d#sp)cG0B*0Of!m%I-}m0Ycv@1jQK{RvA}3D z78}cr6&|D6SZ%B^ZZU2(ZZmE-?lA5&?lQI++l?K@PGgsGpYedP&v@84XdE@3HjZia z#xusN#wp`9<8|W=&Gu-TE z#+b2YvgtJQ&E95#ImjGrjx@)bp6TWcv&bwqE6i%M#;h|N&1L3tbA`Fayvkf_UTa=w zUT^L+?>6r-cbU7*d(A!Oedb>CKjwb(G4qi5jQOnjocX+Y!u-Je(EP~!*!;x&)cnl+ z+&p7`XI?Nbo4=Y@>=wIZm+c+xUF?cox5wCH?Q!;adxE{YJ$1a@X)mxB+WXl1+WXo2 z+lShR*~i$&+9%s**emRn_E~nfz0O{5pKo7mUtwQkzskPWey#mF`}Ovl?Az_T?GM=Z z*&ntav_EQp!hY2Lto=n_PVfNBjlRXfH!FEUE)a5mA7bAv7t#?S9TU>? zLOLO&lR|p!bvjZ`1(hL@?7#HdQ#NbSx0{{zNA^E{Cd88J5>lj)qJ(4-Qm6O<2c~{8 z&~?qC>C4koV{&@stn@o~qBCab{?JE#mhZ#*ggzE}2xsUMLh2@@n1Ekw{D1?~7r(S| zZmVCf^vsnrmgnSWrpEM2{|Cdt3wJ7=l`cxK5+bB*A>{}u zS4h2fDvF}EqVt55?`!_v>s$9#*Puuxwv{YSiElL*2&vF_{HwU0DN0X2nL|lcoJyLI z`U(32C5^1_d%2?7Qak<-V=wl6&@12KxQ_D*crH$^an^71A&v z4Hwdgoys6(FivHtkVXn=RKRa^z_0e}q@LrIDSp2R%0y+7GFeDtg)~k`S!Wsc&)sniK+s*t7yK-1#~94NZ<$L|*omMqW9 z&B#xU$xP49S~+8RMtWvOYRo^@QfX8c`zk&U)0HL4Qk=?iAr%R!IKWckJ99oUNGNOl zVRU7kvL2_hQAjg|R2Be~`|`g@>3O}f#jpPc*a`%l$4f=vn1>Yf2}SmvAbt2x*a!76$-Jd>g+@ z3VK6%*Z0wxu>Q(v1AhvNg(A$~m0Mc_B3m$rB*)`f@KM23=HsYSsC(@(WJoHzBPO(&_+Ujc?kfQSygV~A%U^@MUMr_B&&$vMpWaai zsl)v;`;AaX;#5Zq={6zV9w52H-+O#ETp@Hv@Jlg-S^8yN6!ki#;?9oouyW()k4}Sq`QT5kC1llRBP4Q zI8~RBb_?m=fX^PkdfzKQbPsA$m$niwQ1e?IbfChUK964N`{Yt&&@1Zet&!eP-^8iDEu?3J z^lSk6oGPW6(IUJ}yF z0sAX~YD{-uwYqqDZgxg$Oh#^2_R6B=8ND*HQ)6=T|FM|A+3>3fu~}^GTAT1yA)WF$ ze~Jt0XbbW0Igc&WrnH(~7t$Mn0RFp`^R+!KUu_NCt#UIm+9+*yTco#er!CADZtH4` z5Yk&hdPhj7h4lVTTa+!@*3A|pqz{F3Mo3=^>B8UlNLxHr-mXG=+skWoq=s5svNycU zck!n!VJWSqciT*9-taO-_`WZX_8tDYUdw0&yw?WE@%8y-gqGKO{e!mag}(28n&>P4 zqcGy{8?3FLZGg9Mo2|c)KH6p*D5Q^lQNJgI4fU37vkeo{CvR|$j-0oRu#L2hvW@mN z{~FctGa-F0q))x2zVCn9WQ!kgU{tDn!{wUSaN)L1uub&6|7$mShi#H=vhVb-1Jr4@ z8U6^5ot*q%YedRM{F_7|jU-=*7A~)G?@)q7_yT*2{?K<1_wi|3W z+I+Unwk@`;wie&3f5cku^ZocoLSl@NV}+b394%ue=SjeIN8g={JTXt7l@0_)L<;Q#}WObYEoRDpPOysxz zI({c)?M=?vzPDZU_YYN}rM649%Po2BEGZ$szD`HmFScK8zgfoFes7uA&f-XyTifS~ z?a$(|lSa&~s$Md_qG|Sa4I2J=A%N1_X+bR~+F2rkBu#Gls-304(?RR>w_L5Wki-7l z8Cr<9Y?~G;RCRNB=ukvhA|%kwC0&fmm1m87tKvt5aL7 zo?1p*RsEH3Gv#Q#{x)fOLXP_@%K~rNHjh>)dTbSwq|MhL$Y)#bt>&%qodZK&C}*j z8#^hjs-mev$Y}%H)7m-u|r#+Eu>-U*h&6xZCaOT%lu2e zRLJSA8=y=H_w}z1_q0Jgn((I+*dy91A!q)T&Q<<&)(Sc6-|1|$UADa*NGCgxj(^$z z+6mfq{%Un;qrXwx+(y4e$hiUf;e4UpM$F(OqZ4mNcA(ysHYj0^BcFbF_Q+q~xR(no+UdTg)JX*-(g*>?} zpX1sqex?)JOWMmq9xCKvLLRhDZJ7z}3!ls7$il&NQZSl@(U;keu=e2LNZ-qQT$PrjWPZjcTAx{(X z^n0``7F|cTSagdnYb4vGk%P6uC=|6>bkdJ8=>Byzf;x2^cZj9 zEcY@J#M4|$ds-yQFc>#XOt-c+i+ z_^y9rNN2sE^?R)spZZCx&udeCf5uo_JRufar~a+BIbM9--WeOB4{81G_EM${^6jhX z?Yr~!;Fi9j7Hh;veT+A6yFN-EE#!J3&)u$%)yE0BLCEu3%0ewYBBtsy{D5itbRjni zdBJwQNG}$0laLp-0xI=tKVX(0us8sy(QAdgM9529iWN&-M7=)mUx4{~qmY*ic|}Ww zVu_4ctS|EemiQT(0}RXc6+-q1*&ASJ>91JY|5L$QeVve333+wPO@9AP`gQ-3c)fmu zkgpQ*+Ln`wrR$`v-hw@Pi|so7X8jiZ*5FU|+k-z0J`(({kkiWJ`!!>P&M|`pGW%}lR z5Tfgkwi>T%Gd|HWz-Gzt-T8^tcl^^Xx_+b;aYGy8m>)5C%5(ZjZ{cqJdHn_bMg6#b zLVrnrS${>yJ|S-w@)jX)6>^J^ZxZs&LcV1;PW_br8css>S4hy`_7B?ftwO#{NEUC9 zkZ*ew@prg{tR`m0tmyajDjqETX0`NNbNGmSE%+^8@rjafoID&(hy zd`!sC2>DqdKPTkpcaem%Q>`)Em}9sMx3|zPIq@!i5 zv8ZJ1q=^-CYpVw}ES%dUiJbGLDC$=`Fx zr0S*}#%^N|4O7NWnpE8sD5P<>aeph`|BQ3gc<8SR8+RM~|27zR8wdPf+M4Du+f7)eS!fE_u{EQQ)@tcr;4ygS_SljtONETu3 zICI3{AuWreEiZR4miyn1WaYGs>1GM@Sj`UJylrNCA^*C~>?q{l{(llNgUwKH;Wjfw z$iHth6(RpIW6s>B>c*OiS#8;xx@r1BhLEppGwnkDbLymqg^mA2M40|(2s2Vx@oY1r zh1D{>zGBYYv|01!jsL42UCekhu}xW$u(sXg%^s$sO-HJ*`bX{7*W_kTGuvCZ(=^Oz zGtiZ{c<` z+UyrVckqAo%N173)H(GPwQblg=1_BZo7@q?+V&h{jyA{q&&rzP&B@-v9p(gcVuU$K zSi1;ou&{>gz-dl31FwRup~9-R{1IbmjxIIJ{_YsFTv(Mhd9%zae_tg|m~FcLKC4Z) zuxkH3f6Tewf*odqInSIgth%t;g|+Kn?p@3#bMgNk!R8WksjwQtYPN*NS&|}}P4O?l zDs#24h6!tU%lJ4;Y|D?a7P}N7tdT97;w(v1ZZvQ87Vb8E=4Nw?xz%hjZ!&K-ZxPmL zVeKZYF~S-vtZ~8`FRTf|nz$RMc{>RtnRl7n%q7qjuzIL!dfP*wJq)A zExXhQ%!m9d{-CfXZ!`A^YxkBT@s`ZNkC+Gjmk$VQk8S3o!kRL9OvRkJZ7DusKIP5Z zVIDT0G>-_YLs(OV)w#nwN|Jd@SkwHGMz-W6SgOij^p51-;CR z-m)F$59W{NC1EWP);_}8_cc12Kbb$9kwqh_s^>P%shLyVD6ECT+WI(W{$~E(a$l0A zThMm%kCuCrED3`GaKn$0ul(2B9u#ot_s@MBc&$a1y}iAI7hxSJtONY*Q$wx2^Iwxw zhq%C5Z4b7GlquTasgwPW`t{Xwn?^Uxs%Vw8foli4Icjww6uF7N<6uinnZ=-65=_TJG#_iOuV2&+!)CZBMsn*fZ@}_H1DtBdlYEb)2w{7uE@P8&BGM z+4C&Ay|<7*7uJcwI@vo@Sf{r9+}$#<^FaGxZ{arkAYq-MhuApJtyftkZ?H_^;OKVlTGO{NJ5pFSC~m>kMHn zYWb~)B{rhkKKoyQId+$@mI!NUORp45H&26o-v68#_67EZZ5kE{Yx!Rqmijd;vo9Cc z3Sq5k)6i`H*Y35ivac4_N@1NfW5nPgL#pO9H8jTeUv}63PGl=068H`zHG} z!dfk?H7#GKSfWC2u-`~WyU)IvD*IM@ON-rM867j*-#iP1b>3U{o9(yQZ?)e>NBiye zJ1k@EEtYZiyINK|EaNgwBCbH-yfG(D`@>ZGzATAoOhr{Q;CHP*Oli1*H!t{XiK2${;>fkP_BU5 z9#k8s5uiFj%?7m(s6#;=2kI11i$E<0wI0+4Q0IfX0Mr$rHiLQ!)DJ=Z7}QTe{T$S9 zK>ZGEy}&jYY(v2|9BiJEV4DQCDPY?Hwuiv>AFw?PwgX^00=A=|bpb6LvV_A_X|f*u6A4Ek{J=u<$S26`pvRiM{^ zJ{xow=yjkk27M{$%RyfWx(9Rt`aaO#2ct6>y}@vSu@(#;7+b)&35;97xE+i;!PpPR z6JR_E#xXFS1><=<7;k{_78vh=@c|egf$=#QUx4u?7?;892xccRH83N=>;YyPm<3?= z0dpXjgTWjM<|r`7fH@A#>0nlXIS742$6z2H_(hyaK{q z5MBr2Ya#qP2)_Zs?}zXM5dJ8He+1!QLijo8+8(+p(A5TAozOKGy5>RGMbOm)T?KS~ z8oHi;RFSAhHWYhCrkOk>L;-0g+J<*$pCNA#wsl zuE0a&eGvIBME(F#KvX-3k|C-+M0J9wE)W$1Q9U5a0a57?l?hSV5H$dz20_$th#Cn| zqakVnL`{OIDG)Uaq834v2ckAX)U^=hgQzVK)dEqs`3-kK)LjsDFGT$Zq8^5*gAnx? zL>-5ymmumDh!S zbXx)4_CmK8pxc|!?QQ6G8oIp?-9CbDpFp=u(CrHN-}c1F5YrxFIzo&IF=60|iGrAJ z5EBbANf6T=Vp1R`4`N0^%w&kEfS6ejGaF)D5K{*+^C4yd#4LoEW{9~3Vs=2x-4L@I zV)j7H;}CNgVvaz}QHVJPv7I4ShuBz%jmJZ53dE*DY#PL-Lu@aI&4<_mi0uQhgCTYf z#9jrlS3~S(h}{aYH$&{L5W5><_dx7Hh8pOTR5X5(Z_z;NCf%v`<-yh;jA-)FUXG8pIh~EV9*FwDKQHVbZ@y8$`2okzL zLI@=EgoHdu=nV-|AYmpXltV%VB+P|`d5|z45*i`F0|^2WHbKI*kZ?UD+z1JqAz>>d zY=eXykZ?C7?1F@QAz?2hybqql_K=thiPey}1rql`;**g06eJ#l#AhM#1xP#&i627Z zSxEc}62FDS3y^pb690rG3nW<~sRJZ+f}~JLQXxr$q*zGGhNM1_G!l|VL(&9DnuLd> zDUehINhOdp6Ow8nX*DEmf~0F9=>|yhLDEi0x(AYWL((2d+6zg)L9ztNDkN)=+!c}| zAvqe7V<0&hl6ye11CpJPoCC>4kX#AL&5*p#1IZg8c@rdG3(2=a^6ikk2a@+f@&l0k z5G4Nxk{^cT1CV?SlAnd-=OOt;NIn6{FGKQ4Nd6JJE6}|cbT5VOtD*Z2=)M=aKLFhy zgzk?*_d}2}08)YnLCO$F83rjMTDs&}p7%TeDf=MhVMsX$DSqr>NO=lUjzP+Ekn$p= zyaXvHA>}nlc@t9Jft2?k4pP2>lnapZ1EgGrlwTm_cS!jY9PPj% zgQEjDI)ld%0uB`%Iymg$=n9S~aKwNk9vn&F=mCyYaP$O6COC4ykq3?faP$So0B{Tj z$1re=1jiU~j0eXga7+cq3~-cyqYNCC;HU=2Y;d^o;Ft@J`QT^*$6|0S1IJ2mc)_t6 z9BaX`0UVpaaUD2r1jiO|+ystW!EpyTwt-_OICg;}z$3x)Q4~_%icnlm*fa3@_ zo(9LW;CKNXCp_SI1stcq@dh~F2FGb|d;pG*!SNY5z5vHp;5ZMC@4#^p9GAfHGdO+& z#}!DmK&k|(?IE=jqy|H(0;w9Lnvfa}sgaP{4N~JEH4##~L#qF|BsC3EGaxk^QhPya zZ%FL}sr?~!5Tp);)De(68dAqW>O@E_hSX9&0i>>n)Qyn39a8Uu)cYazc}RT~QeT7A zpTTJXXAn4J!I=WiRB-y|Qs)G4P6B5GIG2EP8929t^FDCi56)M>`8GJ;1?NwY2Bfuv zG$*9xLRucARYIB@(&{1YAxL`+(jJGjvygTH(k?>JWaya=Ju{)_6zDk9;}p-H^Tu z(w~L&S0MdWNdFBoB*?HrMhawPK}HT_OoxmL4`j@Oj7^ZS1u|M7<6+1+3>ilt<9*0D z0~u!_vjb$Rkf}jt3S?$MW)5UdfXpJuEP>25ka-PcUI&>6A@eE7d>S%8giJrjSCG{a zvTTs0LzbrivIaxeP{^u)EEi`cfmfb2eyJq@zUA-fW?H$t`#vbR9?LCAgzvY&?RPa*qj@MM1jId;g2ft)zV$%C8$ zkTVE!8X;#nWdj33;a=?@!3@0QsFDKMnGGL4H2u&w%_&$ghHY0r?vte-q>%hWzIs z{{_hZ7V>|B{9mAV3iQr`-Z{{_7_hIP$9Q1wxdS8Uzzd`Rm zpdbtiVxb@&3PwV~Bq*2y1f4hl9v!NX8+7z&O+!ADT=B@~>4LLCaDps*Vh4uit+ zP&g3^7ek>J3Ri)ra5oh0gTnn#_$Cy72!$U*pKj2nJM>9`K69W?BlKy4K6gN$UC`%V z=yL-4ya9dQf<8Y(UkmgNg1*tvHyQf&fWCvE?`Y^d7WyuPzRl3r3w^gi-#vKfyBGSt z0ewG!z8^uqcF?ag^b3Z5>Ci79`V~OG66jYA{c54#)zEJ<^xF#kPD8)Xpx+tjpAP-= zp??ANUjhBEg8u8E|Lf5Iedzxo42XsS$uOV?3|Q=e0bUre3I@Ca1Kx%K@4~=j7?=(N zGhyIL7`PS&u7`n7!ocTY;EOP*0}N7OkOqUMz@V8hs2m2}3WIjSpnG7@IT-W<47vn^ z`@rC#FnBl&UJHY-gTbB~VDKpzd>RJ74@1IXNE{4FfFYGI#0^90VaS6ppQ zA-}!!LV5{tQv;h1D;_I z!mxcX>^uy+1jBxU;X`2fSQtJYhHr)8cf#;(F#IeGzW~E8!ifGbVg!sB1tZqMi0fg* zjWFT_jCcb^yagjW!bls8)M4Z}7&#qA7Qx8dVdOn9ayK4EeheeOf{|ats5BVW3r6L` zsHHG!6^vQ~qn?3LFT<#lFj|JuAuw8j(KBFlC5*0u(R*R^BQW|PjL~6C6pZNxV`^Yb z1B{suV;+MsPs5mJU~Cr{Yj|L+9mbAD9fU}_>vO@pcFFm(Y;T>(>@Ve0cR^;MYq8cZ`_S~N_HfoZc~S{+QA z3)Ak0X$N51qcH6!m<~*D2h;oFVfrwbJ_4q1fay2F^vy8+Rha%ROn(n%bcGr5Fe4FW z)WVE;FryJ>JOMMFg&EI7kp@MPP!tVCWl%I5id;~14;1Z(qDP?U02CdBqGzD!IVd^> zMX!6H=uIek8;ahAqW7WbEEJuCqHmz+0u=oKMVFyC35o|o@i-`+0L7D`cq$anfZ`G; zu7=`TD6WIz1}JWXVh!Elf6ki9$H$d@bzx{S7-UG#Zp?Dt@?}y??p!g6J zKLN!@p!fwS{v3+Gf#UC=_#zZvf)Xo~bcB-5P!a+qDwLE$Nez@NfRcq!vI0sxP$HmY z4U}9BCD%g94N$TfJSDe5$x$dd0VQXlzzv zpmZseu7c7vP9{T@nxfSFxkW<1PHgqZ_j<|vps24>EN zne$=h0+_iEW*&l>Pr%GSpv($o9iVKO2g=4n*+eL-hq6Ubwgk$SLfKj~l=p`6eo#IT%7;MtL@1vOx+y|A1pz;Z*{0u73L*=&~nAI6( z=`hQLSs5^^H_R%8S<7J7YM6Bu%z6%HorGDZph|(NaHxuas$8h*2UP>0Y9LgNgQ^Ko zH4&;NK~*_aRYFxgRLz5`1yHpJs+L043aIj|gQ|^Cbq!Qq4^=*>+6q%K=pS}{UcQW1l7Mn z^`B5YQv#65^Ce2HVF^4J)kxfYO|nrI@C5n zZ8OxagW3&Hy9sKqgWB7m_714M4{9HP+I>*_Fw`D|+Cxx#7;2A0?MqO55^7ID?dwqc z7Sz52wLimb9cCB6>}XfNL_irh%&n zT&3VD2iGic)qrabxaz>w0Io)GEdj7}>1J}dgItZ>q;5rPhr@-YG`W(1k1lLR8Iti}V!1X4$ z-T~Kp;QA0;pMdLgaGeF$IdFXgt_$G$0X(kD;Q9qzzk};faJK`u4DJr#?hNh_aI4_f z!EFb3S8zvxI|khG;7$T}4{)b~yC=9a!JPx{Ja89)yDzv0fO{~whk<(}xW|BdJh=U@ z1l?1?JpJsaF^aL)zzd~i2`doj3|fqNymz2IIA?zQ0F0PaoTz7E_s zf_n?NZvywN;JyRg+rYgO+`GWN2i*6A`yp`e_kjBVxE}-e6W~4q?x(^1EVy3)_X%*n z0`61begoWZgZnhNKLGc~;QkEUUx527aGwYFci_GV?n~hQ8Qi~t`wG-qpiY9i_E6Ue z>Vlz8fjW-{btcq>LtP})b%VM%s7r*p?oj7|x-_WEfVym`>jibap{@_q^@qAaP&X9n zMnK(Ys2c}$6QOPj)J=!FVyK%5brn!o1$DJh=YqO=sGA3#x&=_T2BSOoxUFXqW{JS3|>QXxIu3hoIpYG&~CpKSIMF9%%Rz z<|Vae;Vd{K7#pQ!u)g4*clpiXf&bG35~hX zmWx=p43zikavc9ma0+zX8Ssg6f0?Y0I|Nk*sb{v+y4$IzzWfx%CFR<)4@GOsm zKzV5NYSJ7DErSor{~ zd=*x{3oGA)m6u`VpU`Z9<_Ks`faWA<9s|u&p?NwqFNNk+(7Xnk_d@d{(0mY@Peb!( z(0m3w9l)c4|K#;#d%)xW$#_5T%<>; zCd0;b*q8|$7sAG7*yx3gkHW^Iu<;mNZH51*rTdQVg2>(m{<#nWtOOED=plq2f_?36 zEv&0+Tl>1MuB%(@?z(pO>)MqjqJo%UzM=OnMGy-rq6i7S*O1TyqyR#A59jyJIdkTZ zd(X`C&&=F;&U5edX+ob2`rJaFKhoz<^vS2s$OL^x(`O@ncG9PuzGu<*BKlrJ-`DBe zkG=!wyO+LI^sS-aW%T~`kzk!GwJ_7`oBy6zVu&C z{|)rt#DGM12Asu!a~SXv1Kwc3TMYP-0V^1=iubzk-s!w|ChtAPdoS?bOT4#$_ZIQq zVg|NhU?&E4Vc=s7e1?I~F>pQuzhmGc-p}IwZoJ=v_n+YX=SaN&0`Je|{cm{xTi!p$ zpt=mI$DkV+bO(d(V$fIyO=Hju2JK}~6@zN{;Br2=mJhDugE#qL03QtGgH?R6nGd$| z;aPlm5g%T{hadA{5g(4=!xIudO68*ld~`h@-Nr|E@X@DyG=`7H@zFj$s^+6348EAb zS2MUbgWq6qe+IwD;H3;+!{Buc$z(_ehIC}eUl{T*Lmp+w7=}z`$aIDrV#qHHId%Vk zd^sOq%g5L8@dtcdz{j8R@g6>|8g5Eb`AL|6=klCI3qDuOa_h@^2^qPV)am{(a;>K>pv!f0+Eo$bXUi z{^SoJkw1j|k>rmie**cF$)864Eb`})KcD>X$lpf(9`g5*UqSw13Q{PjPeDTp8d1=g zf|e9?rl2bYy(l=7f^#T1kAh1nxPpSKDCkYW4H61&qu_Z8KBVAN3dT?{j)I94Orc;t z1q&$niGrmRlu)pef;AMZr(hEWdnnjX!9fa60jr{*hJvFE>%g#!8TJ6f-e%YshAm;( zDu%5|Pg;d>Mg zqVOXMKc+CB!cQqIqHrXIV<;R?;Uo&DQaFRcSrjJbQaGQ&FDd+n!tW^jfx@3CTuNaH zg)1psL*aS~H&M8i!W|TrQMjAJeH2zuc$mU!3Xf8FoWheN>yWHRvH{7{NH!*!L9#i? zmL!sGNVX@LO|lcot|WVq%p-XQ$+JoRn&br}FD7{z$={H?n&fXuUPtlAcjvzUjA({!Fr% z+(>c@$?YU}lH5gdFUbQW50R`Qd4%LIBx@-Oic%=5PtmU^N~0*9Q*{E0GAU|JQ9Ft{ zP?SSa7mB)5)RUsqDLRXyb16!kPtipbT}sgv6kSD8Z;F0L(eEj`iK0JHbUQ_NQFISQ zf2Qa!6g^1M-zj>SqQ@wDlA?c8^bAGMQ}oiQ1t@xzqBkgdo1#7x^`~ecMW^EbqQMjm zrKo_SLW;&xG@ha*6s@9Y4Mi0c9i`|OhPPmN7Q?d{-kae!G5i*WKf&nF zWCKS2ijkKy@>)h-$H>PR`3xhUV`L#C$1-v}BbPFA4I|evsv)DAGO9VFE@sr#jOxv( zQ}pSme=_P3M!n0ZL5%v4Q8O4dpHT}KwUJRf8CA~cW{hsf=qyHG$>{4DeFLMPWc2fl zev#257(J2ElNtRJqgOI|HKQvTeS*;^8I#SJ9*jAq{}^*6W3Fe+4UG9GWB$dMrx}ya zn30Sb&6uT(S;LrhjHzbKNyY|ayEFDI#-7928yR~iWAA3{vy6R(v9B_=kg;PKJD#zN z8M~aZD;ax={~3Fnv9*lrz_{*=%VpfvjJttxH!<#6#=XM0R~a{gaT6IgnQ==Qw}x@+ z7@xxUG{!e!d>6)_&iFGKe;?!j!T5(6-?j#xImGek0>|GQOM%8BA!y zgmz3gmkF0L;c_P2!G!ym@E0b$$b{FK@Fo)`F<}-H<}jgz3G11#kqNa-tk1-TOzg$P z^O$%66Ypl?15A97iT`EdDM{GGcbGVmiIbQ(g^4SexRHsQnfMEnQkay=q;5<)lSyYY z>5okME0Z2#(%VcL$fQ9`n$DzoO!|UJdznW z(=KJ&v|&suWZKtE`;lo&nBIu#EtuYt>31;wKBoVL>3x{~0n02qW<17>{>&K6jE|Y|6*Cqy z<0obuV8#(<9AjpCW_D#}cV_;MnSWsBZOnX*ng3(vYYAq4&&*}aEa9{EeAboEy7SpT z`RreO_B5Y;$!9I-^_i9 zx&LME7tH;hxj*oEDxWvu^9(+}iO=ui^FQ)=KA(@|^U-|1na|7ld^d@CIn3+Hyk5-v z8}puE-c!t*%DlPEo5#Fr=AC4IF#osAznS@eVE!QH=QDp8^Vc$e8}oPY#o2suF<)HD z7q9U}U%u$i7c2N;BVTN0K`$1ZCt<+_EO?p)FS8)Qg4rziiUr@Wpqd3I`7-$O6282K zFMrFI@ABm!zWk6cm+<8(zFfmsZTYG*Uv=fHzwy-*eDxGxP35b(d^L}+4)N75e074a zdnfq%CceIfuRrGNBEBBMH^Dc*;+sZ%b1UEciEsYQH>3DwGT%()o1-kO!@?96Uc|zy zSa=N!KVsphEKIVnoP`Hjc$jZ5<=ftTdoAA%cF#Bz|bc4{iA20e*OdA0Fd}FZkhme)xgK!Qx-BxDktQWAVK#zK_M9 zuy_QEN3nPhiz``N&5ynL@g{z}g&!yJ<1Buh!%t25sVzUX=coJm>7V>`O8@!O41Su= zPYYO5hb5=6B#k9Ev*d1;+{2QgEE&#{ku2H4l6@>Wz|TGT`CNWJkDs66=LA3hkDurB z^LPBbh^6&en$FUuEWM4T_pyxCO;6DSn#bXDNPx;+H9Yh2qyJev{(F zI~4b&cmT!kQ~V*tLn!`);$ajgDIP)bXo|;CJdxrl6i=u4Gm7U>Jdff96n{H7kdnic9H*p~#6)QHgVk;|K zvog_@mEBp{la;+#c^)e-VCCbie36wev+@;IzRJoztnA0i?^(Hmm8)2}mX+&Sxr3EE zS(VGG^I3Hvt1e;HWvqIWRfAadA*+V4YACC=vFZScRR>vB$*O8rU&iX|S$zYmZ)Wu$ zSUr^0qgg$c)e~4fiPhDtsmq#rtZBfSU$LecYg(}8kF5DSYyQcaM_KbYYo2Az^Q`%j zHA`5tlr<%+Ss`J~M%HX*Z3ouovG#PI@3Zy; z)~;i18Ebd3b}wu9v$lq{M_G3!>n>&8<*d7sbyu_Q2G-rgx*@DP#s94v&AM@{o4~r6 zteeHUW2~>w`i87;#QMgpZ^`=BtiO@<_ptt6*5A+i2U!0I>mOtNG}bR*{a37C$olVC zzm)aGY-qrS7HnwAhBjVWyv>Gp+3+PBmat(d8%o%) zf(;wlu$hf5*qFn{&TQ<)#vW`un~mqP@t?d7Uk9vgIAN^kK^fZ25>S#?;yTYt;e z+t_+Xf~|M6^&Yl9$kxBHHJ`0x**c!Blh`_it#jD=IonQSTPwD;VOx8)bzoa}w&k+z zQMNtLwinsE2 zSF`ly0GPJEc1*-9_nMN~aaLPwfK9=$c zluxF7HsxPY{xjvvC|^tY2Ff>6zK!xy%J)-#kn&2(YbZa)t`_XNgk9IM>tF18kzKE| zYaqJ@u`8clpR%inT_f2wCc&<$?3%%@S?rq2uKDcxj$KRHwSirm*j2`^-R#=Ot_pS? zX4i3con&_%cGqKf19o>}_jT;Pi`}oV`yFA{{`*z-sB{Eau&0nc z!`U;6J!9FkkUe|YbCkUu*_+GWbGc*hW$eA4y*IG;4))&7-aoPTKK4Gq-bdK`ID4OB z@6+skmc6gAw;y{4vv&l0N3nM@d#AB?CVOWOzT%1K(0&_x_ptW}dylcNF8fm1*N}aU z2EX(~bVyvpzN^`H3;S+m-=ElbANw9)-$U&C2m794-_z`SmVGa|ezG zV)k!he>wZB*k8i|9H`5IR1P#8eDjmhq5U}=xP$}0vK^1Cu#0ZSbNeqr)iy$bnrPsOG>CDuRj>D(X}5D=N~c$fTk*744|# zKt&D}J*haCic6`uj*8z?aXS@vQE?9yf2QIuR6I<@V^lmz#lNX|hKd9gZ&NXlM8z;F z3aJ=N#RMuQQ!$N-nN)m1#aC1;q~d!j7E`gDiY-*^qv8M+r$GNgMJ)$|gDD(L<6t@m zn{hCcgRME3!@<)zcs>WO=3s9Q-X!7RA2@hB2k+wGJsf4+p1l z@JkMsbMPPsYdLfphtfEd$)VO9YR91t9LnKPPY#{Vp|d!2E{D$N&>uMTJcr)m&}0tH zPH<=;hn8??9fvk>sFXwH9NNR7{Tw>Tp<^66!C@S(%i&ZGH{ozw4tL@3*&IHX!1uJ(Y{8Ttek4D%VoEfy&KPZliJ!l~q)pq^c2B zjj3u$RU4|>QQ$=Vpz3X^`cT!Ms=-u^plUKz^QiiQs_&^^*QtJs>UXK`NA-JDe@yjoswYxCm+E;`C%&b65!F9Z{WI0YRIj6YBh_1| z-cI#Sst-_ooSIZ>no-k&nk;HMQq!55Zq(#ba}G7%aNTNDd)%@j_l(|HAjwc^d*kI!_ht*?a$HoIQlV1KjG*aj+Sz?jHA0b zx|gF>9IfHlDFXP|dmMY8V;^#C2**C**f5UG<=8hI`<7#iIQApQHgK$pV@Ejl3&(2t z1;6y=mk;@67{AQtmxcVYonMY}JeA`OIDQ((8*@B^R-^=l>9N*3H8jhcu@Hod$a-t3=>T#kmC(=35j1!rh=*Ed$PW0l$nVdMA z6HjpBIZnL6iMKfME+_htIPo4Q2619CCuVbEE+^)5;!92xb7BQ2R&!zYXm?oh9m>E9(75)Vo^L>n-ZtD(Vfs>BYDrF-_E)DeBD@_2!Ct z--voYih4hbdc~sNI#I7&)H@*RRg2WRBDJ1KZ6H!l6RC|wYKBPdB~mXEsh5b<%SGyy zBJ~=PdaX#kMWo&;QtuF{cZ<}=Me36x^(m1^eOjbGD^gz&sc(tYcSUMnk@~Sn{Y0b= z6RAm&Izpt57O7K2>NJr$Q>4xosY^uaQjxk$q%Ie!t3>Krk-Af)mW$LqB6Yt=Jt$Hu zMg2OWej`!8wW!}#BI;+0`kh4muA+WVQU7#N|144e8d3jVQU6s@{~b~PBT;{dsQ;;` zUnJ^}6!pi5`jbWdX`=p2QGd3mzehAk6%9Iw2Hi!2T+!eh(cnDM;6l;h64Bst(ct%@ z!Ho&g;C9jAF45o~(csUb!9$|KKSYB^M1#jggTbP~x1zy8(cqY9a9lL3BN{dl4KqZ; zR-$2B(J)Ii>?j&`7Y%!ghNp{$XNiUviH4VohQAdJZxapg5Do7Y4eu8X6Mq#A|0Wtf zCK^5|8va`}eCCuvG<;Ju93UFLFHSooPCF?Yg=o}RG|CW-nu|s)MWZ&NQG3xSTQuq= z8l5Q`oh=&uS~R*qG`dJMxXoBCU@|>o3v6pc$o<3plxrD$9u8Xpx+E)z|z7fo&uO>P!V z{vetR5lu!WM3d2?$pq14vS>0*G?^uu%oR=MizeTQCW}Rr<)X<3(PWosvPU$j5KRt? zCe@9>jW zdqw)gBK=X3{**|6TBJWK(qB5|B+_3M>3u}{2O>Qw(ua%mF(Q4uNS`Fqr;GH@MEV?& zzCffe66wVveUnJvBGOAmdbvp7Bho8G`eBh?EfVP`MMeXW(L!Xj6dCPAMhB6RBQm;) zj9ih?OJtlUGAU?EW2nf;7a7YXB4dll*d{VcMMjy(s1O;4MAIIk>3O2*1)}N2qUoigX>ZZ= zTG8}n(ez!>w6AD7Kr|gFnhq6B^F`AYqUl!Abh~J}Q#36XO%IBuheflVqS*za*+rt+ z^`hCS{om{s(d;(S>`u|_kD}SVqS^hT*jAEDVlc@&94#7|00?fiRPb+<_ksh??m$-MDw3S^R=S+deJl7qWLePd97#>qD6{m(L%InDO$7^E!v3|9Yl*9(V~lJ(M`0-6)mn3E$$F4 z9uO_w7cEAL7Ar)HGSQ++w5S!Cr-{rok(n+sn~BU!k;rTZSBuPbB6Fk2+#)i!i_D!ObC<~6 zD_S-ZEzb}wuM#c)Dq6lOT8nJX!W{iHCVLzT(nvvS{)ayJBikLqV?&b z^%h1^|hk)b)xm%qV=Cd>-$9O2Sn?KMC*Tu){ltRkBinXi`I!#{Z-NW z4bl2-(YlXl-CwjGC|b`Ft=Ee-M4KGZ=J%q_qoU0q(dHA;W`t-nRkWEQ+RPVi7Kt`X zM4L6D%{tL$yJ)jhv^gN!))j4kCE8|*wmn4K-;1_)i?;WOMBB$j+owd^r$yUmMcWrd z+m}V#S47*_MB6t-+jm6Ue9`t((Y8pm9Vyz55pBndwv$BLsiN%+(RP+-TO!(S6>Y0T zyN04&E79&u(e7%|?tankKcZb<(e6XhZiqy*`&hIq67437cAtrM^F+IEMY~0!-4CK& ziDv-$t}= zFWO%q+TSGFKOx$`B-;NsA=_Y>{k6YU3y_W7dyr=oq4Xg^Z4A0yh&745f) z_6J2)1CiB2WVIAoZA4akk(Dj7I*F`bi>xa}*3}~G8j;moWZf&W9u`@TimWF@*1ts7 ze?(T|Ig#~-$a+g;y)Cld5m_IJtRW(6w8$DKvL=eGDI#mS$ofoV%@JAiMAnZY>t~Tw zEV5RJtkoiGoygiKvbKn<1ENE7(V?s8aH;6*(P6Ua@V)48>ZI(jN_1E&I&2Uf zHj57124DMTbV#%o*{%jvuE_pIWPc~Je-PO}iR`5!dyUB6CbAER?1Lh^T4Wy;*~dl45FJxQ$NHjUW6`m# z=-6I#%oZIxiH==G#~z~Nd7|S5qT_|4<3*z5Z$-!7iHV39LI^n20iUeW1((dnj|3h?sM09>!bpE&K{EF!Os_6WV=-gLy9w0iuFFJoL zI_Hbd!$jw#=)6R9E)|_mh%Tw3O9Rp6G|{E8=+ahnX)n6ui7sb|E@w+bmtTu67l!h=-OL!y<2qskLdcG==!4Q`d`uYf1>MaqU+3r==z1|`laalz394FbX_94 zE)!kXimp3E*D}#{x9ECUbZaWQwG`dX6WuNs-L4eft`XgC6y0tS-EI@z{w%sZBDy^$ zx;-hn{abWE9q z{*>tcwCMh<=>Cf6{+j6irs)2T=-yX!|4?)<65S_=?kh$2ZKC@Q(Y;J`-zB;q65T6B z_ZrdtnCOuqdSr<~T5M33E~$6k?3 z{trdCeMczh{cM9Bgk+)am?H73mMP8-IJ0W^?6TR|8uRBDq`$VrdM6Y*6uPLI} f*SbZo??taA|MxRnN}c~3TNeM{`2Sn Date: Wed, 21 Nov 2012 11:12:40 -0800 Subject: [PATCH 4/6] Spaceserver agent list, broadcast routines for discovered agents --- agent.cpp | 80 ++++++++++++++++++ agent.h | 23 +++++ interface.xcodeproj/project.pbxproj | 6 ++ .../UserInterfaceState.xcuserstate | Bin 101676 -> 103122 bytes main.cpp | 11 +-- network.cpp | 9 +- network.h | 7 ++ 7 files changed, 123 insertions(+), 13 deletions(-) create mode 100644 agent.cpp create mode 100644 agent.h diff --git a/agent.cpp b/agent.cpp new file mode 100644 index 0000000000..f0f3fe9bc9 --- /dev/null +++ b/agent.cpp @@ -0,0 +1,80 @@ +// +// agent.cpp +// interface +// +// Created by Philip Rosedale on 11/20/12. +// Copyright (c) 2012 __MyCompanyName__. All rights reserved. +// + +#include +#include "agent.h" + +// Structure to hold references to other agents that are nearby + +const int MAX_AGENTS = 100; +struct AgentList { + in_addr sin_addr; + glm::vec3 position; +} agents[MAX_AGENTS]; +int num_agents = 0; + +// Process an incoming packet that lists the other agents in the area +void update_agents(char * data, int length) { + std::string packet(data, length); + //std::string packet("127.0.0.1,"); + //std::cout << " Update Agents, string: " << packet << "\n"; + size_t spot; + size_t start_spot = 0; + spot = packet.find_first_of (",", 0); + while (spot != std::string::npos) { + std::string IPstring = packet.substr(start_spot, spot-start_spot); + //std::cout << "Found " << num_agents << + //" with IP " << IPstring << " from " << start_spot << " to " << spot << "\n"; + // Add the IP address to the agent table + add_agent(&IPstring); + start_spot = spot + 1; + if (start_spot < packet.length()) + spot = packet.find_first_of (",", start_spot); + else spot = std::string::npos; + } +} + +int add_agent(std::string * IP) { + in_addr_t addr = inet_addr(IP->c_str()); + //std::cout << "Checking for " << IP->c_str() << " "; + for (int i = 0; i < num_agents; i++) { + if (agents[i].sin_addr.s_addr == addr) { + //std::cout << "Found!\n"; + return 0; + } + } + if (num_agents < MAX_AGENTS) { + agents[num_agents].sin_addr.s_addr = addr; + std::cout << "Added Agent # " << num_agents << " with IP " << + inet_ntoa(agents[num_agents].sin_addr) << "\n"; + num_agents++; + return 1; + } else { + std::cout << "Max agents reached!\n"; + return 0; + } +} + +// Broadcast data to all the other agents you are aware of, returns 1 for success +int broadcast(int handle, char * data, int length) { + sockaddr_in dest_address; + dest_address.sin_family = AF_INET; + dest_address.sin_port = htons( (unsigned short) UDP_PORT ); + + int sent_bytes; + for (int i = 0; i < num_agents; i++) { + dest_address.sin_addr.s_addr = agents[i].sin_addr.s_addr; + sent_bytes = sendto( handle, (const char*)data, length, + 0, (sockaddr*)&dest_address, sizeof(sockaddr_in) ); + if (sent_bytes != length) { + std::cout << "Broadcast packet fail!\n"; + return 0; + } + } + return 1; +} diff --git a/agent.h b/agent.h new file mode 100644 index 0000000000..896b76923f --- /dev/null +++ b/agent.h @@ -0,0 +1,23 @@ +// +// agent.h +// interface +// +// Created by Philip Rosedale on 11/20/12. +// Copyright (c) 2012 __MyCompanyName__. All rights reserved. +// + +#ifndef interface_agent_h +#define interface_agent_h + +#include "glm/glm.hpp" +#include +#include +#include +#include +#include +#include "network.h" + +void update_agents(char * data, int length); +int add_agent(std::string * IP); + +#endif diff --git a/interface.xcodeproj/project.pbxproj b/interface.xcodeproj/project.pbxproj index 910b2dbd70..18a6cffacf 100644 --- a/interface.xcodeproj/project.pbxproj +++ b/interface.xcodeproj/project.pbxproj @@ -16,6 +16,7 @@ B6BDADE415F44AC7002A07DF /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B6BDADDC15F444D3002A07DF /* AudioUnit.framework */; }; B6BDAE4415F6BE53002A07DF /* particle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6BDAE4315F6BE53002A07DF /* particle.cpp */; }; D409B98A165849180099B0B3 /* cloud.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D409B989165849180099B0B3 /* cloud.cpp */; }; + D409B9A8165CA7BC0099B0B3 /* agent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D409B9A7165CA7BB0099B0B3 /* agent.cpp */; }; D40BDFD513404BA300B0BE1F /* GLUT.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D40BDFD413404BA300B0BE1F /* GLUT.framework */; }; D40BDFD713404BB300B0BE1F /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D40BDFD613404BB300B0BE1F /* OpenGL.framework */; }; D40FD5FB164AF1C200878184 /* int-texture256-v2.png in CopyFiles */ = {isa = PBXBuildFile; fileRef = D40FD5FA164AF1A700878184 /* int-texture256-v2.png */; }; @@ -69,6 +70,8 @@ C6859E8B029090EE04C91782 /* test_c_plus.1 */ = {isa = PBXFileReference; lastKnownFileType = text.man; path = test_c_plus.1; sourceTree = ""; }; D409B988165849030099B0B3 /* cloud.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = cloud.h; sourceTree = ""; }; D409B989165849180099B0B3 /* cloud.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = cloud.cpp; sourceTree = ""; }; + D409B9A6165CA7A50099B0B3 /* agent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = agent.h; sourceTree = ""; }; + D409B9A7165CA7BB0099B0B3 /* agent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = agent.cpp; sourceTree = ""; }; D40BDFD413404BA300B0BE1F /* GLUT.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GLUT.framework; path = /System/Library/Frameworks/GLUT.framework; sourceTree = ""; }; D40BDFD613404BB300B0BE1F /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = /System/Library/Frameworks/OpenGL.framework; sourceTree = ""; }; D40FD5FA164AF1A700878184 /* int-texture256-v2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "int-texture256-v2.png"; sourceTree = SOURCE_ROOT; }; @@ -137,6 +140,8 @@ isa = PBXGroup; children = ( 08FB7796FE84155DC02AAC07 /* main.cpp */, + D409B9A6165CA7A50099B0B3 /* agent.h */, + D409B9A7165CA7BB0099B0B3 /* agent.cpp */, D409B988165849030099B0B3 /* cloud.h */, D409B989165849180099B0B3 /* cloud.cpp */, D4EE3BC015E746E900EE4C89 /* world.h */, @@ -267,6 +272,7 @@ F68135561648617D003040E3 /* texture.cpp in Sources */, F681358B1648896D003040E3 /* lodepng.cpp in Sources */, D409B98A165849180099B0B3 /* cloud.cpp in Sources */, + D409B9A8165CA7BC0099B0B3 /* agent.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/interface.xcodeproj/project.xcworkspace/xcuserdata/philip.xcuserdatad/UserInterfaceState.xcuserstate b/interface.xcodeproj/project.xcworkspace/xcuserdata/philip.xcuserdatad/UserInterfaceState.xcuserstate index b310c1ec8998fae6553ee58651446f823ff07bac..13077bb321daeb9cbaa5b117160f46a4a44ffeb5 100644 GIT binary patch delta 39108 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 delta 37991 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

#O@m(Zq1WZm>j~)f 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 diff --git a/main.cpp b/main.cpp index bafb5383c1..9f4d612058 100644 --- a/main.cpp +++ b/main.cpp @@ -45,10 +45,10 @@ #include "head.h" #include "hand.h" #include "particle.h" - #include "texture.h" - #include "cloud.h" +#include "agent.h" + //TGAImg Img; @@ -100,7 +100,6 @@ Cloud cloud(300000, // Particles false // Wrap ); - #define RENDER_FRAME_MSECS 10 #define SLEEP 0 @@ -201,6 +200,7 @@ void Timer(int extra) // Send a message to the spaceserver telling it we are ALIVE notify_spaceserver(UDP_socket, location[0], location[1], location[2]); + } void display_stats(void) @@ -650,8 +650,9 @@ void read_network() ping_msecs = (float)diffclock(ping_start, check); } else if (incoming_packet[0] == 'S') { // Message from Spaceserver - std::cout << "Spaceserver: "; - outstring(incoming_packet, bytes_recvd); + //std::cout << "Spaceserver: "; + //outstring(incoming_packet, bytes_recvd); + update_agents(&incoming_packet[1], bytes_recvd - 1); } } } diff --git a/network.cpp b/network.cpp index def6845057..e386ac913d 100644 --- a/network.cpp +++ b/network.cpp @@ -11,13 +11,6 @@ #include "network.h" -const int UDP_PORT = 30001; -const char DESTINATION_IP[] = "127.0.0.1"; - -// Location of the spaceserver to talk to -const char SPACESERVER_IP[] = "127.0.0.1"; -const int SPACESERVER_PORT = 40000; - // Implementation of optional delay behavior using a ring buffer const int MAX_DELAY_PACKETS = 300; char delay_buffer[MAX_PACKET_SIZE*MAX_DELAY_PACKETS]; @@ -97,7 +90,7 @@ timeval network_send_ping(int handle) { int notify_spaceserver(int handle, float x, float y, float z) { char data[100]; sprintf(data, "%f,%f,%f", x, y, z); - std::cout << "sending: " << data << "\n"; + //std::cout << "sending: " << data << "\n"; int packet_size = strlen(data); int sent_bytes = sendto( handle, (const char*)data, packet_size, 0, (sockaddr*)&spaceserver_address, sizeof(sockaddr_in) ); diff --git a/network.h b/network.h index 751b8f0f87..e06f416b9e 100644 --- a/network.h +++ b/network.h @@ -16,7 +16,14 @@ #include #include "util.h" +// Port to use for communicating UDP with other nearby agents const int MAX_PACKET_SIZE = 1500; +const int UDP_PORT = 30001; +const char DESTINATION_IP[] = "127.0.0.1"; + +// Address and port of spaceserver process to advertise other agents +const char SPACESERVER_IP[] = "127.0.0.1"; +const int SPACESERVER_PORT = 40000; int network_init(); int network_send(int handle, char * packet_data, int packet_size); From 2b62adce6c2e3b6796357f39f0238d036218faeb Mon Sep 17 00:00:00 2001 From: Philip Rosedale Date: Wed, 21 Nov 2012 12:08:30 -0800 Subject: [PATCH 5/6] Added vector renderer util, broadcast packets now reaching agents --- agent.cpp | 11 ++++- agent.h | 1 + interface.xcodeproj/project.pbxproj | 1 + .../UserInterfaceState.xcuserstate | Bin 103122 -> 103502 bytes main.cpp | 26 ++++++++++-- util.cpp | 38 ++++++++++++++++++ util.h | 1 + 7 files changed, 73 insertions(+), 5 deletions(-) diff --git a/agent.cpp b/agent.cpp index f0f3fe9bc9..63aef1c6b4 100644 --- a/agent.cpp +++ b/agent.cpp @@ -18,7 +18,9 @@ struct AgentList { } agents[MAX_AGENTS]; int num_agents = 0; -// Process an incoming packet that lists the other agents in the area +// +// Process an incoming spaceserver packet telling you about other nearby agents +// void update_agents(char * data, int length) { std::string packet(data, length); //std::string packet("127.0.0.1,"); @@ -39,6 +41,9 @@ void update_agents(char * data, int length) { } } +// +// Look for an agent by it's IP number, add if it does not exist in local list +// int add_agent(std::string * IP) { in_addr_t addr = inet_addr(IP->c_str()); //std::cout << "Checking for " << IP->c_str() << " "; @@ -55,12 +60,14 @@ int add_agent(std::string * IP) { num_agents++; return 1; } else { - std::cout << "Max agents reached!\n"; + std::cout << "Max agents reached fail!\n"; return 0; } } +// // Broadcast data to all the other agents you are aware of, returns 1 for success +// int broadcast(int handle, char * data, int length) { sockaddr_in dest_address; dest_address.sin_family = AF_INET; diff --git a/agent.h b/agent.h index 896b76923f..ec3f42028b 100644 --- a/agent.h +++ b/agent.h @@ -19,5 +19,6 @@ void update_agents(char * data, int length); int add_agent(std::string * IP); +int broadcast(int handle, char * data, int length); #endif diff --git a/interface.xcodeproj/project.pbxproj b/interface.xcodeproj/project.pbxproj index 18a6cffacf..8930389ea0 100644 --- a/interface.xcodeproj/project.pbxproj +++ b/interface.xcodeproj/project.pbxproj @@ -235,6 +235,7 @@ isa = PBXProject; attributes = { LastUpgradeCheck = 0430; + ORGANIZATIONNAME = "Rosedale Lab"; }; buildConfigurationList = 1DEB923508733DC60010E9CD /* Build configuration list for PBXProject "interface" */; compatibilityVersion = "Xcode 3.2"; diff --git a/interface.xcodeproj/project.xcworkspace/xcuserdata/philip.xcuserdatad/UserInterfaceState.xcuserstate b/interface.xcodeproj/project.xcworkspace/xcuserdata/philip.xcuserdatad/UserInterfaceState.xcuserstate index 13077bb321daeb9cbaa5b117160f46a4a44ffeb5..99d39951b83814b04efb34739c4a0c3e86806a6d 100644 GIT binary patch delta 26756 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≷OWIBEpC( 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 delta 26572 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, vec->y, vec->z); + // Draw marker dots for magnitude + glEnd(); + float particle_attenuation_quadratic[] = { 0.0f, 0.0f, 2.0f }; // larger Z = smaller particles + glPointParameterfvARB( GL_POINT_DISTANCE_ATTENUATION_ARB, particle_attenuation_quadratic ); + glEnable(GL_POINT_SMOOTH); + glPointSize(10.0); + glBegin(GL_POINTS); + glColor3f(1,0,0); + glVertex3f(vec->x,0,0); + glColor3f(0,1,0); + glVertex3f(0,vec->y,0); + glColor3f(0,0,1); + glVertex3f(0,0,vec->z); + glEnd(); + +} + void render_world_box() { // Show edge of world diff --git a/util.h b/util.h index 2eac21117b..637248b761 100644 --- a/util.h +++ b/util.h @@ -13,6 +13,7 @@ void outstring(char * string, int length); float randFloat(); void render_world_box(); +void render_vector(glm::vec3 * vec); void drawtext(int x, int y, float scale, float rotate, float thick, int mono, char *string, float r=1.0, float g=1.0, float b=1.0); void drawvec3(int x, int y, float scale, float rotate, float thick, int mono, glm::vec3 vec, From 6172b38f49653a9786b74953c06d21ab8a1c3cb2 Mon Sep 17 00:00:00 2001 From: Philip Rosedale Date: Sun, 25 Nov 2012 15:32:55 -0800 Subject: [PATCH 6/6] Added test routine makecubes() and key handlers --- .../UserInterfaceState.xcuserstate | Bin 103502 -> 104780 bytes .../xcdebugger/Breakpoints.xcbkptlist | 13 +++++ main.cpp | 53 ++++++++++++++++-- util.cpp | 28 ++++++++- util.h | 4 ++ world.h | 4 +- 6 files changed, 96 insertions(+), 6 deletions(-) diff --git a/interface.xcodeproj/project.xcworkspace/xcuserdata/philip.xcuserdatad/UserInterfaceState.xcuserstate b/interface.xcodeproj/project.xcworkspace/xcuserdata/philip.xcuserdatad/UserInterfaceState.xcuserstate index 99d39951b83814b04efb34739c4a0c3e86806a6d..1aded4aa69d1438242e9e35135534eb0091d71d7 100644 GIT binary patch delta 36515 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 delta 35097 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 OoBluh|DWjl^Zx^F)?M8I diff --git a/interface.xcodeproj/xcuserdata/philip.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist b/interface.xcodeproj/xcuserdata/philip.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist index 556fc539eb..f5c01eb1d0 100644 --- a/interface.xcodeproj/xcuserdata/philip.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist +++ b/interface.xcodeproj/xcuserdata/philip.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist @@ -16,5 +16,18 @@ landmarkName = "field_avg_neighbors(int index, glm::vec3 * result)" landmarkType = "7"> + + diff --git a/main.cpp b/main.cpp index 016e202ab0..3596d20183 100644 --- a/main.cpp +++ b/main.cpp @@ -95,11 +95,16 @@ ParticleSystem balls(0, 0.0 // Gravity ); -Cloud cloud(300000, // Particles +Cloud cloud(0, // Particles box, // Bounding Box false // Wrap ); +float cubes_position[MAX_CUBES*3]; +float cubes_scale[MAX_CUBES]; +float cubes_color[MAX_CUBES*3]; +int cube_count = 0; + #define RENDER_FRAME_MSECS 10 #define SLEEP 0 @@ -271,6 +276,18 @@ void init(void) myHead.setNoise(noise); } + int index = 0; + float location[] = {0,0,0}; + float scale = 10.0; + int j = 0; + while (index < (MAX_CUBES/2)) { + index = 0; + j++; + makeCubes(location, scale, &index, cubes_position, cubes_scale, cubes_color); + std::cout << "Run " << j << " Made " << index << " cubes\n"; + cube_count = index; + } + //load_png_as_texture(texture_filename); if (serial_on) @@ -491,6 +508,20 @@ void display(void) glRotatef(render_pitch, 1, 0, 0); glRotatef(render_yaw, 0, 1, 0); glTranslatef(location[0], location[1], location[2]); + + glPushMatrix(); + glTranslatef(WORLD_SIZE/2, WORLD_SIZE/2, WORLD_SIZE/2); + int i = 0; + while (i < cube_count) { + glPushMatrix(); + glTranslatef(cubes_position[i*3], cubes_position[i*3+1], cubes_position[i*3+2]); + glColor3fv(&cubes_color[i*3]); + glutSolidCube(cubes_scale[i]); + glPopMatrix(); + i++; + } + glPopMatrix(); + /* Draw Point Sprites */ @@ -587,7 +618,20 @@ void display(void) glutSwapBuffers(); framecount++; } - +void specialkey(int k, int x, int y) +{ + if (k == GLUT_KEY_UP) fwd_vel += 0.05; + if (k == GLUT_KEY_DOWN) fwd_vel -= 0.05; + if (k == GLUT_KEY_LEFT) { + if (glutGetModifiers() == GLUT_ACTIVE_SHIFT) lateral_vel -= 0.02; + else render_yaw_rate -= 0.25; + } + if (k == GLUT_KEY_RIGHT) { + if (glutGetModifiers() == GLUT_ACTIVE_SHIFT) lateral_vel += 0.02; + else render_yaw_rate += 0.25; + } + +} void key(unsigned char k, int x, int y) { // Process keypresses @@ -728,8 +772,8 @@ void reshape(int width, int height) glLoadIdentity(); gluPerspective(45, //view angle 1.0, //aspect ratio - 1.0, //near clip - 200.0);//far clip + 0.1, //near clip + 50.0);//far clip glMatrixMode(GL_MODELVIEW); glLoadIdentity(); @@ -810,6 +854,7 @@ int main(int argc, char** argv) glutDisplayFunc(display); glutReshapeFunc(reshape); glutKeyboardFunc(key); + glutSpecialFunc(specialkey); glutMotionFunc(motionFunc); glutMouseFunc(mouseFunc); glutIdleFunc(idle); diff --git a/util.cpp b/util.cpp index 81d6bca869..89fdcc8900 100644 --- a/util.cpp +++ b/util.cpp @@ -15,11 +15,37 @@ #include "world.h" #include "glm/glm.hpp" - float randFloat () { return (rand()%10000)/10000.f; } +void makeCubes(float location[3], float scale, int * index, + float * cubes_position, float * cubes_scale, float * cubes_color) { + int i; + float spot[3]; + //std::cout << "loc: " << location[0] << "," + //<< location[1] << "," << location[2] << "\n"; + if ((*index >= MAX_CUBES) || (scale < SMALLEST_CUBE)) return; + if (randFloat() < 0.5) { + // Make a cube + for (i = 0; i < 3; i++) cubes_position[*index*3 + i] = location[i]; + cubes_scale[*index] = scale; + cubes_color[*index*3] = randFloat(); + cubes_color[*index*3 + 1] = randFloat(); + cubes_color[*index*3 + 2] = randFloat(); + *index += 1; + //std::cout << "Quad made at scale " << scale << "\n"; + } else { + for (i = 0; i < 8; i++) { + spot[0] = location[0] + (i%2)*scale/2.0; + spot[1] = location[1] + ((i/2)%2)*scale/2.0; + spot[2] = location[2] + ((i/4)%2)*scale/2.0; + //std::cout << spot[0] << "," << spot[1] << "," << spot[2] << "\n"; + makeCubes(spot, scale/2.0, index, cubes_position, cubes_scale, cubes_color); + } + } +} + void render_vector(glm::vec3 * vec) { // Show edge of world diff --git a/util.h b/util.h index 637248b761..c6c2a319db 100644 --- a/util.h +++ b/util.h @@ -8,6 +8,7 @@ #ifndef interface_util_h #define interface_util_h + #include "glm/glm.hpp" void outstring(char * string, int length); @@ -20,4 +21,7 @@ void drawvec3(int x, int y, float scale, float rotate, float thick, int mono, gl float r=1.0, float g=1.0, float b=1.0); double diffclock(timeval clock1,timeval clock2); +void makeCubes(float location[3], float scale, int * index, + float * cubes_position, float * cubes_scale, float * cubes_color); + #endif diff --git a/world.h b/world.h index e11976c1c8..106f47ff69 100644 --- a/world.h +++ b/world.h @@ -6,7 +6,7 @@ // Copyright (c) 2012 __MyCompanyName__. All rights reserved. // -// Simulation happens in positive cube with edge of size WORLD_SIZE +// Simulation happens in positive cube with edge of size WORLD_SIZE #ifndef interface_world_h #define interface_world_h @@ -14,5 +14,7 @@ const float WORLD_SIZE = 10.0; #define PI 3.14159265 +#define MAX_CUBES 2000 +#define SMALLEST_CUBE 0.01 #endif