gKit2 light
Loading...
Searching...
No Matches
app_camera.h File Reference
#include "app.h"
#include "orbiter.h"

Go to the source code of this file.

Classes

class  AppCamera
 classe application. More...

Functions

void update_camera (Orbiter &camera)
 gestion de la camera, clavier / souris.

Function Documentation

◆ update_camera()

void update_camera ( Orbiter & camera)

gestion de la camera, clavier / souris.

Definition at line 23 of file app_camera.cpp.

24{
25 // recupere les mouvements de la souris
26 int mx, my;
27 unsigned int mb= SDL_GetRelativeMouseState(&mx, &my);
28
29 // deplace la camera
30 if(mb & SDL_BUTTON(1))
31 camera.rotation(mx, my); // tourne autour de l'objet
32 else if(mb & SDL_BUTTON(3))
33 camera.translation( float(mx) / float(window_width()), float(my) / float(window_height()));
34 // deplace le point de rotation
35 else if(mb & SDL_BUTTON(2))
36 camera.move(mx); // approche / eloigne l'objet
37
38 // molette / scroll
39 SDL_MouseWheelEvent wheel= wheel_event();
40 if(wheel.y != 0)
41 {
43 camera.move(8.f * wheel.y); // approche / eloigne l'objet
44 }
45
46 const char *orbiter_filename= "app_orbiter.txt";
47 // copy / export / write orbiter
48 if(key_state('c'))
49 {
50 clear_key_state('c');
51 camera.write_orbiter(orbiter_filename);
52 }
53 // paste / read orbiter
54 if(key_state('v'))
55 {
56 clear_key_state('v');
57
58 Orbiter tmp;
59 if(tmp.read_orbiter(orbiter_filename) == 0)
60 // ne modifie camera que si la lecture est correcte...
61 camera= tmp;
62 }
63
64 // screenshot
65 if(key_state('s'))
66 {
67 static int calls= 1;
68
69 clear_key_state('s');
70 screenshot("app", calls++);
71 }
72}
representation de la camera, type orbiter, placee sur une sphere autour du centre de l'objet.
Definition orbiter.h:17
int read_orbiter(const char *filename)
relit la position de l'orbiter depuis un fichier texte.
Definition orbiter.cpp:127
int window_height()
renvoie la hauteur de la fenetre de l'application.
Definition window.cpp:27
void clear_key_state(const SDL_Keycode key)
desactive une touche du clavier.
Definition window.cpp:46
void clear_wheel_event()
desactive l'evenement.
Definition window.cpp:114
int key_state(const SDL_Keycode key)
renvoie l'etat d'une touche du clavier. cf la doc SDL2 pour les codes.
Definition window.cpp:40
SDL_MouseWheelEvent wheel_event()
renvoie le dernier evenement. etat de la molette de la souris / glisser sur le pad.
Definition window.cpp:110
int window_width()
renvoie la largeur de la fenetre de l'application.
Definition window.cpp:23
int screenshot(const char *filename)
enregistre le contenu de la fenetre dans un fichier. doit etre de type .png / .bmp
Definition texture.cpp:178