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 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 Timer(int value) { GLfloat nx=0,nz=0; GLboolean andar=GL_FALSE; GLuint curr = glutGet(GLUT_ELAPSED_TIME); if(modelo.homer[JANELA_NAVIGATE].GetSequence()==20 && curr-modelo.animStart>1050){ modelo.homer[JANELA_NAVIGATE].SetSequence(0); modelo.homer[JANELA_TOP].SetSequence(0); modelo.animStart = 0; } // calcula velocidade baseado no tempo passado float velocidade= modelo.objecto.vel*(curr - modelo.prev )*0.001; glutTimerFunc(estado.timer, Timer, 0); modelo.prev = curr; if(estado.teclas.up){ nx = modelo.objecto.pos.x + velocidade * cos(modelo.objecto.dir); nz = modelo.objecto.pos.z + velocidade * -sin(modelo.objecto.dir); if(!detectaColisao(nx,nz)){ modelo.objecto.pos.x=nx; modelo.objecto.pos.z=nz; }else{ modelo.animStart = curr; } andar=GL_TRUE; } if(estado.teclas.down){ nx = modelo.objecto.pos.x - velocidade * cos(modelo.objecto.dir); nz = modelo.objecto.pos.z - velocidade * -sin(modelo.objecto.dir); if(!detectaColisao(nx,nz)){ modelo.objecto.pos.x=nx; modelo.objecto.pos.z=nz; }else{ modelo.animStart = curr; } andar=GL_TRUE; } if(estado.teclas.left){ modelo.objecto.dir += 0.1; estado.camera.dir_long += 0.1; } if(estado.teclas.right){ modelo.objecto.dir -= 0.1; estado.camera.dir_long -= 0.1; } setNavigateSubwindowCamera(&estado.camera,modelo.objecto); // Sequencias - 0(parado) 3(andar) 20(choque) // modelo.homer[JANELA_NAVIGATE].GetSequence() le Sequencia usada pelo homer // modelo.homer[JANELA_NAVIGATE].SetSequence() muda Sequencia usada pelo homer if(modelo.homer[JANELA_NAVIGATE].GetSequence() !=20){ if(andar && modelo.homer[JANELA_NAVIGATE].GetSequence()!=3){ modelo.homer[JANELA_NAVIGATE].SetSequence(3); modelo.homer[JANELA_TOP].SetSequence(3); }else if(!andar && modelo.homer[JANELA_NAVIGATE].GetSequence()!=0){ modelo.homer[JANELA_NAVIGATE].SetSequence(0); modelo.homer[JANELA_TOP].SetSequence(0); } } redisplayAll(); }