rayzor
diff src/modeller.cc @ 12:d94a69933a71
lots of stuff, can't remember
author | John Tsiombikas <nuclear@member.fsf.org> |
---|---|
date | Sat, 12 Apr 2014 23:28:24 +0300 |
parents | 70e332156d02 |
children | a9a948809c6f |
line diff
1.1 --- a/src/modeller.cc Thu Apr 10 08:42:33 2014 +0300 1.2 +++ b/src/modeller.cc Sat Apr 12 23:28:24 2014 +0300 1.3 @@ -1,9 +1,11 @@ 1.4 +#include <stdio.h> 1.5 #include <string.h> 1.6 #include <assert.h> 1.7 #include "modeller.h" 1.8 #include "min3d.h" 1.9 #include "rayzor.h" 1.10 #include "scene.h" 1.11 +#include "keyb.h" 1.12 1.13 struct ModellerImpl { 1.14 int mx, my; 1.15 @@ -112,8 +114,25 @@ 1.16 { 1.17 if(press) { 1.18 switch(key) { 1.19 + case 'q': 1.20 + quit_app(); 1.21 + break; 1.22 + 1.23 case 27: 1.24 - quit_app(); 1.25 + scene->clear_selection(); 1.26 + break; 1.27 + 1.28 + case '\t': 1.29 + { 1.30 + int s = scene->get_selection(); 1.31 + if(s >= 0) { 1.32 + s = (s + 1) % scene->get_node_count(); 1.33 + scene->clear_selection(); 1.34 + } else { 1.35 + s = 0; 1.36 + } 1.37 + scene->select(s); 1.38 + } 1.39 break; 1.40 1.41 default: 1.42 @@ -136,15 +155,17 @@ 1.43 mod->prev_x = x; 1.44 mod->prev_y = y; 1.45 1.46 - if(mod->bnstate[0]) { 1.47 - mod->cam_theta += dx * 0.5; 1.48 - mod->cam_phi += dy * 0.5; 1.49 + if(kb_isdown(KB_ALT) || kb_isdown(KB_CTRL)) { 1.50 + if(mod->bnstate[0]) { 1.51 + mod->cam_theta += dx * 0.5; 1.52 + mod->cam_phi += dy * 0.5; 1.53 1.54 - if(mod->cam_phi < -90) mod->cam_phi = -90; 1.55 - if(mod->cam_phi > 90) mod->cam_phi = 90; 1.56 - } 1.57 - if(mod->bnstate[1]) { 1.58 - mod->cam_dist += dy * 0.1; 1.59 - if(mod->cam_dist < 0) mod->cam_dist = 0; 1.60 + if(mod->cam_phi < -90) mod->cam_phi = -90; 1.61 + if(mod->cam_phi > 90) mod->cam_phi = 90; 1.62 + } 1.63 + if(mod->bnstate[1]) { 1.64 + mod->cam_dist += dy * 0.1; 1.65 + if(mod->cam_dist < 0) mod->cam_dist = 0; 1.66 + } 1.67 } 1.68 }