diff options
author | epoch <epoch@hacking.allowed.org> | 2020-02-24 00:49:21 -0600 |
---|---|---|
committer | epoch <epoch@hacking.allowed.org> | 2020-02-24 00:49:21 -0600 |
commit | 7272b080db41ef9033b83a991ee44e7a24176b62 (patch) | |
tree | b52478f28438a14d1ed7eb1de129e0e86b397487 | |
parent | b1f45a8a1528ba0f9c2068844df2e6293e5e46db (diff) | |
download | hackvr-7272b080db41ef9033b83a991ee44e7a24176b62.tar.gz hackvr-7272b080db41ef9033b83a991ee44e7a24176b62.zip |
made the camera control with the secondary mouse button work in a way that is easier to use
-rw-r--r-- | src/graphics_c3.h | 2 | ||||
-rw-r--r-- | src/mouse_x11.c | 6 |
2 files changed, 6 insertions, 2 deletions
diff --git a/src/graphics_c3.h b/src/graphics_c3.h index 691b650..b609721 100644 --- a/src/graphics_c3.h +++ b/src/graphics_c3.h @@ -23,6 +23,8 @@ struct gra_global { int mapxoff; int mapyoff; int mousemap[10];//you're only going to have 10 buttons on your mouse... right? + c2_t dragstart[10];//mouse coordinates where a drag was started + c3_rot_t oldcamera; int maxshapes; }; diff --git a/src/mouse_x11.c b/src/mouse_x11.c index 23ec5ab..16c577c 100644 --- a/src/mouse_x11.c +++ b/src/mouse_x11.c @@ -38,12 +38,14 @@ int mouse_event_handler() {//this returns HVM_ key + for buttondown and - for bu printf("# gra_global.input_mode == %d\n",gra_global.input_mode); } printf("# button press %d\n",butt); + gra_global.dragstart[butt]=gra_global.mouse; gra_global.mousemap[butt]=1; redrawplzkthx=1; break; case ButtonRelease: printf("# button release %d\n",e.xbutton.button-1); gra_global.mousemap[e.xbutton.button-1]=-1;//we can trigger on -1 or on 1 then set back to 0 to prevent double-trigger + gra_global.oldcamera=global.camera.r; redrawplzkthx=1; break; case MotionNotify: @@ -68,8 +70,8 @@ int mouse_event_handler() {//this returns HVM_ key + for buttondown and - for bu //global.camera.r.x.d=(gra_global.height - gra_global.mouse.y);//up and down camera controls backwards //fprintf(stderr,"# mouse.x: %f mouse.y: %f\n# width: %u height: %u\n",gra_global.mouse.x,gra_global.mouse.y,gra_global.width,gra_global.height); if(gra_global.mousemap[2] == 1) {//if "right" click is held down - global.camera.r.x.d=(gra_global.mouse.y); - global.camera.r.y.d=(gra_global.mouse.x); + global.camera.r.x.d=gra_global.oldcamera.x.d + (gra_global.mouse.y - gra_global.dragstart[2].y); + global.camera.r.y.d=gra_global.oldcamera.y.d + (gra_global.mouse.x - gra_global.dragstart[2].x); } } if(redrawplzkthx) { |