void onMouseDrag(float _x, float _y, int _button) { if( _button == 1 ){ Tangram::handlePanGesture( _x-getMouseVelX()*1.0, _y+getMouseVelY()*1.0, _x, _y); } else if( _button == 2 ){ if ( getKeyPressed() == 'r') { float scale = -0.05; float rot = atan2(getMouseVelY(),getMouseVelX()); if( _x < getWindowWidth()/2.0 ) { scale *= -1.0; } Tangram::handleRotateGesture(getWindowWidth()/2.0, getWindowHeight()/2.0, rot*scale); } else if ( getKeyPressed() == 't') { Tangram::handleShoveGesture(getMouseVelY()*0.005); } else { Tangram::handlePinchGesture(getWindowWidth()/2.0, getWindowHeight()/2.0, 1.0 + getMouseVelY()*0.001, 0.f); } } requestRender(); }
void onMouseDrag(float _x, float _y, int _button) { if (_button == 1){ float dist = glm::length(cam.getPosition()); lat -= getMouseVelX(); lon -= getMouseVelY()*0.5; cam.orbit(lat,lon,dist); cam.lookAt(glm::vec3(0.0)); } else { float dist = glm::length(cam.getPosition()); dist += (-.008f * getMouseVelY()); if(dist > 0.0f){ cam.setPosition( -dist * cam.getZAxis() ); cam.lookAt(glm::vec3(0.0)); } } }