diff --git a/CMakeLists.txt b/CMakeLists.txt index 066f1b00..0f8177e7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -21,7 +21,7 @@ SET(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake_modules") ####################### SET(RTABMAP_MAJOR_VERSION 0) SET(RTABMAP_MINOR_VERSION 13) -SET(RTABMAP_PATCH_VERSION 1) +SET(RTABMAP_PATCH_VERSION 2) SET(RTABMAP_VERSION ${RTABMAP_MAJOR_VERSION}.${RTABMAP_MINOR_VERSION}.${RTABMAP_PATCH_VERSION}) diff --git a/app/android/AndroidManifest.xml.in b/app/android/AndroidManifest.xml.in index b5296ca9..66e016df 100644 --- a/app/android/AndroidManifest.xml.in +++ b/app/android/AndroidManifest.xml.in @@ -2,7 +2,7 @@ diff --git a/app/android/jni/tango-gl/gesture_camera.cpp b/app/android/jni/tango-gl/gesture_camera.cpp index d32f0038..2ed839e2 100644 --- a/app/android/jni/tango-gl/gesture_camera.cpp +++ b/app/android/jni/tango-gl/gesture_camera.cpp @@ -63,11 +63,8 @@ GestureCamera::~GestureCamera() { delete cam_parent_transform_; } void GestureCamera::OnTouchEvent(int touch_count, TouchEvent event, float x0, float y0, float x1, float y1) { - if (camera_type_ == kFirstPerson) { - return; - } - if (touch_count == 1) { + if (camera_type_!=kFirstPerson && touch_count == 1) { switch (event) { case kTouch0Down: { cam_start_angle_ = cam_cur_angle_; @@ -100,6 +97,7 @@ void GestureCamera::OnTouchEvent(int touch_count, TouchEvent event, float x0, float abs_y = y0 - y1; start_touch_dist_ = std::sqrt(abs_x * abs_x + abs_y * abs_y); cam_start_dist_ = GetPosition().z; + cam_start_fov_ = this->getFOV(); // center touch touch0_start_position_.x = (x0+x1)/2.0f; @@ -111,25 +109,31 @@ void GestureCamera::OnTouchEvent(int touch_count, TouchEvent event, float x0, float abs_y = y0 - y1; float dist = start_touch_dist_ - std::sqrt(abs_x * abs_x + abs_y * abs_y); - cam_cur_dist_ = tango_gl::util::Clamp(cam_start_dist_ + dist * kZoomSpeed, - kCamViewMinDist, kCamViewMaxDist); - - this->SetOrthoMode(camera_type_ == kTopOrtho); - if(camera_type_ == kTopOrtho) + if(camera_type_ == kFirstPerson) { - this->SetOrthoScale(cam_cur_dist_); + this->SetFieldOfView(tango_gl::util::Clamp(cam_start_fov_ + dist * kZoomSpeed*10.0f, 45, 90)); } + else + { + cam_cur_dist_ = tango_gl::util::Clamp(cam_start_dist_ + dist * kZoomSpeed, + kCamViewMinDist, kCamViewMaxDist); - glm::vec2 touch_center_position((x0+x1)/2.0f, (y0+y1)/2.0f); - glm::vec2 offset; - offset.x = (touch_center_position.x - touch0_start_position_.x) * kMoveSpeed; - offset.y = (touch_center_position.y - touch0_start_position_.y) * kMoveSpeed; - touch0_start_position_ = touch_center_position; + this->SetOrthoMode(camera_type_ == kTopOrtho); + if(camera_type_ == kTopOrtho) + { + this->SetOrthoScale(cam_cur_dist_); + } - StartCameraToCurrentTransform(); + glm::vec2 touch_center_position((x0+x1)/2.0f, (y0+y1)/2.0f); + glm::vec2 offset; + offset.x = (touch_center_position.x - touch0_start_position_.x) * kMoveSpeed; + offset.y = (touch_center_position.y - touch0_start_position_.y) * kMoveSpeed; + touch0_start_position_ = touch_center_position; - anchor_offset_ += glm::rotate(cam_parent_transform_->GetRotation(), glm::vec3(-offset.x, offset.y, 0)); + StartCameraToCurrentTransform(); + anchor_offset_ += glm::rotate(cam_parent_transform_->GetRotation(), glm::vec3(-offset.x, offset.y, 0)); + } break; } default: { break; } diff --git a/app/android/jni/tango-gl/include/tango-gl/gesture_camera.h b/app/android/jni/tango-gl/include/tango-gl/gesture_camera.h index bcd487d8..19dd91ce 100644 --- a/app/android/jni/tango-gl/include/tango-gl/gesture_camera.h +++ b/app/android/jni/tango-gl/include/tango-gl/gesture_camera.h @@ -81,6 +81,7 @@ class GestureCamera : public Camera { glm::quat cam_cur_target_rot_; float cam_start_dist_; + float cam_start_fov_; float cam_cur_dist_; glm::vec3 anchor_offset_; diff --git a/app/android/res/layout/activity_rtabmap.xml b/app/android/res/layout/activity_rtabmap.xml index e31b2c5e..29b3b365 100644 --- a/app/android/res/layout/activity_rtabmap.xml +++ b/app/android/res/layout/activity_rtabmap.xml @@ -118,7 +118,7 @@ android:text="@string/close_visualization" /> 1000) - { - resetNoTouchTimer(true); - } - + public boolean onSingleTapConfirmed(MotionEvent event) { + if(!DISABLE_LOG) Log.i(TAG, "onSingleTapConfirmed"); + if(mHudVisible) + { + notouchHandler.removeCallbacks(notouchCallback); + notouchHandler.postDelayed(notouchCallback, 0); + } + else + { + resetNoTouchTimer(true); + } return true; } } @@ -1484,7 +1470,7 @@ public class RTABMapActivity extends Activity implements OnClickListener, OnItem } mButtonCameraView.setVisibility(mHudVisible?View.VISIBLE:View.INVISIBLE); mButtonBackfaceShown.setVisibility(mHudVisible && (mItemRenderingMesh.isChecked() || mItemRenderingTextureMesh.isChecked())?View.VISIBLE:View.INVISIBLE); - mSeekBarFov.setVisibility(mHudVisible && (mButtonCameraView.getSelectedItemPosition() == 0 || mButtonCameraView.getSelectedItemPosition() == 3)?View.VISIBLE:View.INVISIBLE); + mSeekBarOrthoCut.setVisibility(mHudVisible && mButtonCameraView.getSelectedItemPosition() == 3?View.VISIBLE:View.INVISIBLE); mSeekBarGrid.setVisibility(mHudVisible && mSeekBarGrid.isEnabled() && mButtonCameraView.getSelectedItemPosition() == 3?View.VISIBLE:View.INVISIBLE); }