implement zoom shortcut with ctrl+rmb, update nanort with merged size_t pull request
This commit is contained in:
Submodule libs/nanort updated: 4f0df84625...44a429067c
@@ -34,9 +34,11 @@ void CanvasModeBasicCamera::on_MouseEvent(MouseEvent* me, glm::vec2& loc)
|
|||||||
case kEventType::MouseDownR:
|
case kEventType::MouseDownR:
|
||||||
if (App::I.keys[(int)kKey::KeyAlt])
|
if (App::I.keys[(int)kKey::KeyAlt])
|
||||||
break;
|
break;
|
||||||
|
m_zooming = App::I.keys[(int)kKey::KeyCtrl];
|
||||||
m_draggingR = true;
|
m_draggingR = true;
|
||||||
m_dragR_start = me->m_pos;
|
m_dragR_start = me->m_pos;
|
||||||
m_pan_start = canvas->m_pan;
|
m_pan_start = canvas->m_pan;
|
||||||
|
m_fov_start = canvas->m_cam_fov;
|
||||||
node->mouse_capture();
|
node->mouse_capture();
|
||||||
break;
|
break;
|
||||||
case kEventType::MouseUpR:
|
case kEventType::MouseUpR:
|
||||||
@@ -46,10 +48,17 @@ void CanvasModeBasicCamera::on_MouseEvent(MouseEvent* me, glm::vec2& loc)
|
|||||||
case kEventType::MouseMove:
|
case kEventType::MouseMove:
|
||||||
if (m_draggingR)
|
if (m_draggingR)
|
||||||
{
|
{
|
||||||
auto dir = (App::I.has_vr && App::I.vr_active) ? glm::vec2(1, 1) : glm::vec2(-1, -1);
|
if (m_zooming)
|
||||||
canvas->m_pan = m_pan_start + (me->m_pos - m_dragR_start) * dir * (canvas->m_cam_fov / 85.f);
|
{
|
||||||
auto angle = canvas->m_pan * 0.003f;
|
canvas->m_cam_fov = m_fov_start - (me->m_pos.x - m_dragR_start.x) * 0.05f;
|
||||||
canvas->m_cam_rot = glm::eulerAngleXY(angle.y, angle.x);
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
auto dir = (App::I.has_vr && App::I.vr_active) ? glm::vec2(1, 1) : glm::vec2(-1, -1);
|
||||||
|
canvas->m_pan = m_pan_start + (me->m_pos - m_dragR_start) * dir * (canvas->m_cam_fov / 85.f);
|
||||||
|
auto angle = canvas->m_pan * 0.003f;
|
||||||
|
canvas->m_cam_rot = glm::eulerAngleXY(angle.y, angle.x);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case kEventType::MouseScroll:
|
case kEventType::MouseScroll:
|
||||||
|
|||||||
@@ -38,8 +38,10 @@ class CanvasModeBasicCamera : public CanvasMode
|
|||||||
{
|
{
|
||||||
bool m_draggingR = false;
|
bool m_draggingR = false;
|
||||||
bool m_draggingT = false; // touch drag
|
bool m_draggingT = false; // touch drag
|
||||||
|
bool m_zooming = false;
|
||||||
glm::vec2 m_dragR_start;
|
glm::vec2 m_dragR_start;
|
||||||
glm::vec2 m_pan_start;
|
glm::vec2 m_pan_start;
|
||||||
|
float m_fov_start;
|
||||||
float m_camera_fov;
|
float m_camera_fov;
|
||||||
float m_zoom_canvas = 1.f;
|
float m_zoom_canvas = 1.f;
|
||||||
float m_zoom_start;
|
float m_zoom_start;
|
||||||
|
|||||||
Reference in New Issue
Block a user