static const char * sw_name(int ecode) { return lookup(lut_sw, numof(lut_sw), ecode) ?: "SW_???"; }
static const char * ff_name(int ecode) { return lookup(lut_ff, numof(lut_ff), ecode) ?: "FF_???"; }
static const char * rep_name(int ecode) { return lookup(lut_rep, numof(lut_rep), ecode) ?: "REP_???"; }
static const char * snd_name(int ecode) { return lookup(lut_snd, numof(lut_snd), ecode) ?: "SND_???"; }
static const char * msc_name(int ecode) { return lookup(lut_msc, numof(lut_msc), ecode) ?: "MSC_???"; }
static const char * led_name(int ecode) { return lookup(lut_led, numof(lut_led), ecode) ?: "LED_???"; }
static const char * abs_name(int ecode) { return lookup(lut_abs, numof(lut_abs), ecode) ?: "ABS_???"; }
static const char * rel_name(int ecode) { return lookup(lut_rel, numof(lut_rel), ecode) ?: "REL_???"; }
static const char * key_name(int ecode) { return lookup(lut_key, numof(lut_key), ecode) ?: "KEY_???"; }
/* Internal helper functions for looking up event codes by type */ static const char * syn_name(int ecode) { return lookup(lut_syn, numof(lut_syn), ecode) ?: "SYN_???"; }
void WarSpace::draw(wardraw_t *wd){ for(int i = 0; i < 2; i++) for(WarField::EntityList::iterator it = (this->*list[i]).begin(); it != (this->*list[i]).end(); it++){ if(!*it) continue; Entity *pe = *it; if(pe->w == this/* && wd->vw->zslice == (pl->chase && pl->mover == &Player::freelook && pl->chase->getUltimateOwner() == pe->getUltimateOwner() ? 0 : 1)*/){ try{ pe->draw(wd); } catch(std::exception e){ fprintf(stderr, __FILE__"(%d) Exception in %p->%s::draw(): %s\n", __LINE__, pe, pe->idname(), e.what()); } catch(...){ fprintf(stderr, __FILE__"(%d) Exception in %p->%s::draw(): ?\n", __LINE__, pe, pe->idname()); } } } #if 0 glPushAttrib(GL_POLYGON_BIT | GL_ENABLE_BIT | GL_TEXTURE_BIT | GL_LIGHTING_BIT); static GLuint tex = 0; if(!tex){ glGenTextures(1, &tex); extern double perlin_noise_pixel(int x, int y, int bit); GLubyte texbits[TEXSIZE][TEXSIZE][3]; for(int i = 0; i < TEXSIZE; i++) for(int j = 0; j < TEXSIZE; j++) for(int k = 0; k < 3; k++){ texbits[i][j][k] = 128 * perlin_noise_pixel(i, j + TEXSIZE * k, 4) + 128; // texbits[i][j][k] = rand() % 256; } // glBindTexture(GL_TEXTURE_2D, tex); // glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); // glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); // glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, TEXSIZE, TEXSIZE, 0, GL_RGB, GL_UNSIGNED_BYTE, texbits); glBindTexture(GL_TEXTURE_CUBE_MAP, tex); for(int n = 0; n < numof(cubetarget); n++) glTexImage2D(cubetarget[n], 0, GL_RGB, TEXSIZE, TEXSIZE, 0, GL_RGB, GL_cubetype, texbits); glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_S, GL_REPEAT); glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_T, GL_REPEAT); } // glBindTexture(GL_TEXTURE_2D, tex); glBindTexture(GL_TEXTURE_CUBE_MAP,tex); glEnable(GL_NORMALIZE); { const GLfloat mat_specular[] = {0., 0., 0., 1.}; const GLfloat mat_shininess[] = { 50.0 }; const GLfloat color[] = {1.f, 1.f, 1.f, 1.f}, amb[] = {.25f, .25f, .25f, 1.f}; glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular); glMaterialfv(GL_FRONT, GL_DIFFUSE, color); glMaterialfv(GL_FRONT, GL_AMBIENT, amb); glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess); glLightfv(GL_LIGHT0, GL_AMBIENT, amb); glLightfv(GL_LIGHT0, GL_DIFFUSE, color); } // glEnable(GL_TEXTURE_2D); glEnable(GL_TEXTURE_CUBE_MAP); glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); // glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); glDisable(GL_CULL_FACE); drawIcosaSphere(Vec3d(.1,0,-1), gradius, *wd->vw, Vec3d(1,.125,1), Quatd(0, 0, sin(war_time() / 10.), cos(war_time() / 10.)) * Quatd(0, sin(war_time()), 0, cos(war_time()))); glBindTexture(GL_TEXTURE_2D, 0); glPopAttrib(); #endif Teline3DrawData dd; dd.viewdir = -wd->vw->rot.vec3(2); dd.viewpoint = wd->vw->pos; dd.invrot = wd->vw->irot; dd.fov = wd->vw->fov; dd.pgc = wd->vw->gc; dd.rot = wd->vw->qrot; dd.user = this; DrawTeline3D(gibs, &dd); }