void eraseGeometry() { // Clear out map int halfSize = getworldsize()/2; loopi(2) loopj(2) loopk(2) deleteCube(i*halfSize, j*halfSize, k*halfSize, halfSize); }
static void buildfont() { u8 *font = (u8*)MALLOC(fontw*fonth*sizeof(u8)); loopi(fonth) loopj(fontw/32) loopk(32) font[i*fontw+j*32+k] = (fontdata[i*fontw/32+j]&(1<<k))?~0x0:0x0; u32 id = ogl::maketex("TB Ir Dr B2 Wsr Wtr Mn mn", font, fontw, fonth); FREE(font); textfont = id; }
vec getaimpos(fpsent *d, fpsent *e) { vec o = e->o; if(d->gunselect == GUN_RL) o.z += (e->aboveeye*0.2f)-(0.8f*d->eyeheight); else if(d->gunselect != GUN_GL) o.z += (e->aboveeye-e->eyeheight)*0.5f; if(d->skill <= 100) { if(lastmillis >= d->ai->lastaimrnd) { const int aiskew[NUMGUNS] = { 1, 10, 50, 5, 20, 1, 100, 10, 10, 10, 1, 1 }; #define rndaioffset(r) ((rnd(int(r*aiskew[d->gunselect]*2)+1)-(r*aiskew[d->gunselect]))*(1.f/float(max(d->skill, 1)))) loopk(3) d->ai->aimrnd[k] = rndaioffset(e->radius); int dur = (d->skill+10)*10; d->ai->lastaimrnd = lastmillis+dur+rnd(dur); } loopk(3) o[k] += d->ai->aimrnd[k]; } return o; }