void drawTurretStuff(turret_struct* t) { if(!t || !t->used || t->dead)return; drawLaser(t->laserOrigin,t->laserDestination); if(t->laserThroughPortal)drawLaser(t->laserOrigin2,t->laserDestination2); //TEMP TEST BILLBOARD vect3D u1=vect(t->OBB->transformationMatrix[0],t->OBB->transformationMatrix[3],t->OBB->transformationMatrix[6]); vect3D u2=vect(t->OBB->transformationMatrix[1],t->OBB->transformationMatrix[4],t->OBB->transformationMatrix[7]); vect3D u3=vect(t->OBB->transformationMatrix[2],t->OBB->transformationMatrix[5],t->OBB->transformationMatrix[8]); glPolyFmt(POLY_ALPHA(31) | POLY_CULL_BACK | POLY_ID(63)); GFX_COLOR=RGB15(31,31,31); applyMTL(turretShotTexture); if(t->drawShot[0]) { glPushMatrix(); glTranslatef32(t->laserOrigin.x, t->laserOrigin.y, t->laserOrigin.z); glTranslatef32(u3.x/128, u3.y/128, u3.z/128); glTranslatef32(u1.x/32, u1.y/32, u1.z/32); glScalef32(inttof32(1)/16,inttof32(1)/16,inttof32(1)/16); glRotatef32i(t->shotAngle[0],u3.x,u3.y,u3.z); glBegin(GL_QUADS); GFX_TEX_COORD = TEXTURE_PACK(inttot16(0), inttot16(0)); glVertex3v16(-u1.x/2-u2.x, -u1.y/2-u2.y, -u1.z/2-u2.z); GFX_TEX_COORD = TEXTURE_PACK(inttot16(32), inttot16(0)); glVertex3v16(+u1.x/2-u2.x, +u1.y/2-u2.y, +u1.z/2-u2.z); GFX_TEX_COORD = TEXTURE_PACK(inttot16(32), inttot16(64)); glVertex3v16(+u1.x/2+u2.x, +u1.y/2+u2.y, +u1.z/2+u2.z); GFX_TEX_COORD = TEXTURE_PACK(inttot16(0), inttot16(64)); glVertex3v16(-u1.x/2+u2.x, -u1.y/2+u2.y, -u1.z/2+u2.z); glPopMatrix(1); } if(t->drawShot[1]) { glPushMatrix(); glTranslatef32(t->laserOrigin.x, t->laserOrigin.y, t->laserOrigin.z); glTranslatef32(u3.x/128, u3.y/128, u3.z/128); glTranslatef32(-u1.x/32, -u1.y/32, -u1.z/32); glScalef32(inttof32(1)/16,inttof32(1)/16,inttof32(1)/16); glRotatef32i(t->shotAngle[1],u3.x,u3.y,u3.z); glBegin(GL_QUADS); GFX_TEX_COORD = TEXTURE_PACK(inttot16(0), inttot16(0)); glVertex3v16(-u1.x/2-u2.x, -u1.y/2-u2.y, -u1.z/2-u2.z); GFX_TEX_COORD = TEXTURE_PACK(inttot16(32), inttot16(0)); glVertex3v16(+u1.x/2-u2.x, +u1.y/2-u2.y, +u1.z/2-u2.z); GFX_TEX_COORD = TEXTURE_PACK(inttot16(32), inttot16(64)); glVertex3v16(+u1.x/2+u2.x, +u1.y/2+u2.y, +u1.z/2+u2.z); GFX_TEX_COORD = TEXTURE_PACK(inttot16(0), inttot16(64)); glVertex3v16(-u1.x/2+u2.x, -u1.y/2+u2.y, -u1.z/2+u2.z); glPopMatrix(1); } }
static void renderScene(void) { glMatrixMode(GL_MODELVIEW); glLoadIdentity(); gluLookAt(C.eye[0],C.eye[1],C.eye[2], C.center[0],C.center[1],C.center[2], C.up[0],C.up[1],C.up[2]); glRotatef32i(angle,inttov16(0),inttov16(1),inttov16(0)); switch(selectedModel) { case DRAGON: DRAW_MODEL(dragon); break; case GISELE: DRAW_MODEL(gisele); break; case BOX: DRAW_MODEL(box); break; case TEAPOT: DRAW_MODEL(teapot); break; case SPIDER: DRAW_MODEL(spider); break; case WU: DRAW_MODEL(wu); break; } }
//------------------------------------------------------- void renderPyramid(int angle){ //------------------------------------------------------- glPushMatrix(); glTranslatef(0, 0, -4); glRotatef32i(degreesToAngle(angle), inttof32(1),inttof32(1),inttof32(1)); glBegin(GL_QUADS); glColor3b(255,0,0); glVertex3f(-1.0f, -1.0f, 1.0f); glColor3b(0,255,0); glVertex3f( 1.0f, -1.0f, 1.0f); glColor3b(0,0,255); glVertex3f( 1.0f, -1.0f, -1.0f); glColor3b(255,255,0); glVertex3f(-1.0f, -1.0f, -1.0f); glEnd(); glBegin(GL_TRIANGLES); glColor3b(255,0,0); glVertex3f( 0.0f, 1.0f, 0.0f); glColor3b(0,255,0); glVertex3f(-1.0f, -1.0f, 1.0f); glColor3b(0,0,255); glVertex3f( 1.0f, -1.0f, 1.0f); glColor3b(255,0,0); glVertex3f( 0.0f, 1.0f, 0.0f); glColor3b(0,255,0); glVertex3f(-1.0f, -1.0f, -1.0f); glColor3b(0,0,255); glVertex3f( 1.0f, -1.0f, -1.0f); glColor3b(255,0,0); glVertex3f( 0.0f, 1.0f, 0.0f); glColor3b(0,255,0); glVertex3f(-1.0f, -1.0f, 1.0f); glColor3b(0,0,255); glVertex3f(-1.0f, -1.0f, -1.0f); glColor3b(255,0,0); glVertex3f( 0.0f, 1.0f, 0.0f); glColor3b(0,255,0); glVertex3f( 1.0f, -1.0f, 1.0f); glColor3b(0,0,255); glVertex3f( 1.0f, -1.0f, -1.0f); glEnd(); glPopMatrix(1); }