void displayNavigateSubwindow() { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glLoadIdentity(); setNavigateSubwindowCamera(&estado.camera2, gordon.objecto); setLight(); glCallList(modelo.labirinto[JANELA_NAVIGATE]); glCallList(modelo.chao[JANELA_NAVIGATE]); if(!estado.vista[JANELA_NAVIGATE]) { glPushMatrix(); glTranslatef(gordon.objecto.pos.x,gordon.objecto.pos.y,gordon.objecto.pos.z); glRotatef(GRAUS(gordon.objecto.dir),0,1,0); glRotatef(-90,1,0,0); glScalef(SCALE_GORDON,SCALE_GORDON,SCALE_GORDONY); mdlviewer_display(gordon.stdModel[JANELA_NAVIGATE]); glPopMatrix(); for(int i=0; i < 3 ; i++) { if(headCrabs[i].objecto.pos.x != NULL) if(headCrabs[i].objecto.pos.x > 0) { glPushMatrix(); glTranslatef(headCrabs[i].objecto.pos.x,headCrabs[i].objecto.pos.y,headCrabs[i].objecto.pos.z); glRotatef(GRAUS(headCrabs[i].objecto.dir),0,1,0); glRotatef(-90,1,0,0); glScalef(SCALE_GORDON+0.01,SCALE_GORDON+0.01,SCALE_GORDONY+0.01); mdlviewer_display(headCrabs[i].stdModel[JANELA_NAVIGATE]); glPopMatrix(); } } //GLint x=2; //for(int i=0;i<3;i++){ // glPushMatrix(); // glTranslatef(x+i,0,0); // //glRotatef(GRAUS(gordon.objecto.dir),0,1,0); // glRotatef(-90,1,0,0); // glScalef(SCALE_GORDON,SCALE_GORDON,SCALE_GORDON); // mdlviewer_display(headCrabs[i].stdModel[JANELA_NAVIGATE]); // glPopMatrix(); //} } glutSwapBuffers(); }
void displayNavigateSubwindow() { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glLoadIdentity(); setNavigateSubwindowCamera(&estado.camera, modelo.objecto); setLight(); glCallList(modelo.labirinto[JANELA_NAVIGATE]); glCallList(modelo.chao[JANELA_NAVIGATE]); if(!estado.vista[JANELA_NAVIGATE]) { glPushMatrix(); glTranslatef(modelo.objecto.pos.x,modelo.objecto.pos.y,modelo.objecto.pos.z); glRotatef(GRAUS(modelo.objecto.dir),0,1,0); glRotatef(-90,1,0,0); glScalef(SCALE_HOMER,SCALE_HOMER,SCALE_HOMER); mdlviewer_display(modelo.homer[JANELA_NAVIGATE]); glPopMatrix(); } desenhaBussola(glutGet(GLUT_WINDOW_WIDTH),glutGet(GLUT_WINDOW_HEIGHT)); glutSwapBuffers(); }
void motionNavigateSubwindow(int x, int y) { double dx,dy; dx=(modelo.xMouse-x)*0.01; dy=(modelo.yMouse-y)*0.01; estado.camera.dir_lat+=dy; estado.camera.dir_long+=dx; if(GRAUS(estado.camera.dir_lat)>80) { dx=RAD(80); } if(GRAUS(estado.camera.dir_lat)>-15) { dy=RAD(-15); } modelo.xMouse=x; modelo.yMouse=y; }
void desenhaModelo() { glColor3f(0,1,0); glutSolidCube(OBJECTO_ALTURA); glPushMatrix(); glColor3f(1,0,0); glTranslatef(0,OBJECTO_ALTURA*0.75,0); glRotatef(GRAUS(estado.camera.dir_long-modelo.objecto.dir),0,1,0); glutSolidCube(OBJECTO_ALTURA*0.5); glPopMatrix(); }
void displayTopSubwindow() { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glLoadIdentity(); setTopSubwindowCamera(&estado.camera,modelo.objecto); setLight(); glCallList(modelo.labirinto[JANELA_TOP]); glCallList(modelo.chao[JANELA_TOP]); glPushMatrix(); glTranslatef(modelo.objecto.pos.x,modelo.objecto.pos.y,modelo.objecto.pos.z); glRotatef(GRAUS(modelo.objecto.dir),0,1,0); glRotatef(-90,1,0,0); glScalef(SCALE_HOMER,SCALE_HOMER,SCALE_HOMER); mdlviewer_display(modelo.homer[JANELA_TOP]); glPopMatrix(); desenhaAngVisao(&estado.camera); desenhaModeloDir(modelo.objecto,glutGet(GLUT_WINDOW_WIDTH),glutGet(GLUT_WINDOW_HEIGHT)); glutSwapBuffers(); }
void desenhaAngVisao(camera_t *cam) { GLfloat ratio; ratio=(GLfloat)glutGet(GLUT_WINDOW_WIDTH)/glutGet(GLUT_WINDOW_HEIGHT); // proporчуo glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA); glDepthMask(GL_FALSE); glPushMatrix(); glTranslatef(cam->eye.x,OBJECTO_ALTURA,cam->eye.z); glColor4f(0,0,1,0.2); glRotatef(GRAUS(cam->dir_long),0,1,0); glBegin(GL_TRIANGLES); glVertex3f(0,0,0); glVertex3f(5*cos(RAD(cam->fov*ratio*0.5)),0,-5*sin(RAD(cam->fov*ratio*0.5))); glVertex3f(5*cos(RAD(cam->fov*ratio*0.5)),0,5*sin(RAD(cam->fov*ratio*0.5))); glEnd(); glPopMatrix(); glDepthMask(GL_TRUE); glDisable(GL_BLEND); }