1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
|
void Camera(float positionx, float positiony, float positionz, float rotationx, float rotationy, float rotationz) {//gère la caméra qui est fixe et fais des translations et rotations sur le décor
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glRotatef(rotationx, 1.0f, 0.0f, 0.0f);
glRotatef(rotationy, 0.0f, 1.0f, 0.0f);
glRotatef(rotationz, 0.0f, 0.0f, 1.0f);
glTranslatef(positionx, positiony, positionz);
}
void checkMur(Map*map, CameraGestion*camera) {//on vérifie si la caméra a atteint un mur
map->positioni = (camera->posz)/3.0f;//on calcule la position de la caméra sur z suivant la map (on divise par 3 car chaque mur a une taille de 3*3*3)
map->positionj = (-camera->posx)/3.0f;
if(map->load[(int)map->positioni][(int)map->positionj] == 0) {//si il n'y a pas de mur on enregistre la position de la caméra pour le réutiliser après
camera->oldposx = camera->posx;
camera->oldposy = camera->posy;
camera->oldposz = camera->posz;
}
else if(map->load[(int)map->positioni][(int)map->positionj] == 1) {//si c'est un mur on restaure la position de la caméra
camera->posx = camera->oldposx;
camera->posy = camera->oldposy;
camera->posz = camera->oldposz;
}
} |
Partager