Tech ENABLE_NEW_CAMERA_MOVEMENTS_CTRL_ROTATE - Fixed volumes moving after releasing CTRL key
Tech ENABLE_NEW_CAMERA_MOVEMENTS_SHIFT_SELECTION - Selection rectangle not started while hovering on a volume
This commit is contained in:
parent
4a5ad304ad
commit
2342002151
@ -2928,8 +2928,7 @@ void GLCanvas3D::on_key(wxKeyEvent& evt)
|
|||||||
if (imgui->update_key_data(evt)) {
|
if (imgui->update_key_data(evt)) {
|
||||||
render();
|
render();
|
||||||
}
|
}
|
||||||
else
|
else {
|
||||||
{
|
|
||||||
if (!m_gizmos.on_key(evt)) {
|
if (!m_gizmos.on_key(evt)) {
|
||||||
if (evt.GetEventType() == wxEVT_KEY_UP) {
|
if (evt.GetEventType() == wxEVT_KEY_UP) {
|
||||||
if (evt.ShiftDown() && evt.ControlDown() && keyCode == WXK_SPACE) {
|
if (evt.ShiftDown() && evt.ControlDown() && keyCode == WXK_SPACE) {
|
||||||
@ -2970,8 +2969,17 @@ void GLCanvas3D::on_key(wxKeyEvent& evt)
|
|||||||
}
|
}
|
||||||
// set_cursor(Standard);
|
// set_cursor(Standard);
|
||||||
}
|
}
|
||||||
else if (keyCode == WXK_CONTROL)
|
else if (keyCode == WXK_CONTROL) {
|
||||||
|
#if ENABLE_NEW_CAMERA_MOVEMENTS_CTRL_ROTATE
|
||||||
|
if (m_mouse.dragging) {
|
||||||
|
// if the user releases CTRL while rotating the 3D scene
|
||||||
|
// prevent from moving the selected volume
|
||||||
|
m_mouse.drag.move_volume_idx = -1;
|
||||||
|
m_mouse.set_start_position_3D_as_invalid();
|
||||||
|
}
|
||||||
|
#endif // ENABLE_NEW_CAMERA_MOVEMENTS_CTRL_ROTATE
|
||||||
m_dirty = true;
|
m_dirty = true;
|
||||||
|
}
|
||||||
else if (m_gizmos.is_enabled() && !m_selection.is_empty()) {
|
else if (m_gizmos.is_enabled() && !m_selection.is_empty()) {
|
||||||
translationProcessor.process(evt);
|
translationProcessor.process(evt);
|
||||||
|
|
||||||
@ -3444,10 +3452,10 @@ void GLCanvas3D::on_mouse(wxMouseEvent& evt)
|
|||||||
else {
|
else {
|
||||||
#if ENABLE_NEW_CAMERA_MOVEMENTS_SHIFT_SELECTION
|
#if ENABLE_NEW_CAMERA_MOVEMENTS_SHIFT_SELECTION
|
||||||
if (evt.LeftDown() && (evt.ShiftDown() || evt.AltDown()) && m_picking_enabled) {
|
if (evt.LeftDown() && (evt.ShiftDown() || evt.AltDown()) && m_picking_enabled) {
|
||||||
if (m_gizmos.get_current_type() != GLGizmosManager::SlaSupports
|
if (m_gizmos.get_current_type() != GLGizmosManager::SlaSupports &&
|
||||||
&& m_gizmos.get_current_type() != GLGizmosManager::FdmSupports
|
m_gizmos.get_current_type() != GLGizmosManager::FdmSupports &&
|
||||||
&& m_gizmos.get_current_type() != GLGizmosManager::Seam
|
m_gizmos.get_current_type() != GLGizmosManager::Seam &&
|
||||||
&& m_gizmos.get_current_type() != GLGizmosManager::MmuSegmentation) {
|
m_gizmos.get_current_type() != GLGizmosManager::MmuSegmentation) {
|
||||||
m_rectangle_selection.start_dragging(m_mouse.position, evt.ShiftDown() ? GLSelectionRectangle::EState::Select : GLSelectionRectangle::EState::Deselect);
|
m_rectangle_selection.start_dragging(m_mouse.position, evt.ShiftDown() ? GLSelectionRectangle::EState::Select : GLSelectionRectangle::EState::Deselect);
|
||||||
m_dirty = true;
|
m_dirty = true;
|
||||||
}
|
}
|
||||||
@ -3459,7 +3467,8 @@ void GLCanvas3D::on_mouse(wxMouseEvent& evt)
|
|||||||
// during the scene manipulation.
|
// during the scene manipulation.
|
||||||
|
|
||||||
#if ENABLE_NEW_CAMERA_MOVEMENTS_SHIFT_SELECTION
|
#if ENABLE_NEW_CAMERA_MOVEMENTS_SHIFT_SELECTION
|
||||||
if (m_picking_enabled && (!any_gizmo_active || !evt.ShiftDown()) && (!m_hover_volume_idxs.empty() || !is_layers_editing_enabled())) {
|
if (m_picking_enabled && (!any_gizmo_active || !evt.ShiftDown()) && (!m_hover_volume_idxs.empty() || !is_layers_editing_enabled()) &&
|
||||||
|
!m_rectangle_selection.is_dragging()) {
|
||||||
#else
|
#else
|
||||||
if (m_picking_enabled && (!any_gizmo_active || !evt.CmdDown()) && (!m_hover_volume_idxs.empty() || !is_layers_editing_enabled())) {
|
if (m_picking_enabled && (!any_gizmo_active || !evt.CmdDown()) && (!m_hover_volume_idxs.empty() || !is_layers_editing_enabled())) {
|
||||||
#endif // ENABLE_NEW_CAMERA_MOVEMENTS_SHIFT_SELECTION
|
#endif // ENABLE_NEW_CAMERA_MOVEMENTS_SHIFT_SELECTION
|
||||||
@ -3507,7 +3516,11 @@ void GLCanvas3D::on_mouse(wxMouseEvent& evt)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if ENABLE_NEW_CAMERA_MOVEMENTS_SHIFT_SELECTION
|
||||||
|
if (!m_hover_volume_idxs.empty() && !m_rectangle_selection.is_dragging()) {
|
||||||
|
#else
|
||||||
if (!m_hover_volume_idxs.empty()) {
|
if (!m_hover_volume_idxs.empty()) {
|
||||||
|
#endif // ENABLE_NEW_CAMERA_MOVEMENTS_SHIFT_SELECTION
|
||||||
if (evt.LeftDown() && m_moving_enabled && m_mouse.drag.move_volume_idx == -1) {
|
if (evt.LeftDown() && m_moving_enabled && m_mouse.drag.move_volume_idx == -1) {
|
||||||
// Only accept the initial position, if it is inside the volume bounding box.
|
// Only accept the initial position, if it is inside the volume bounding box.
|
||||||
const int volume_idx = get_first_hover_volume_idx();
|
const int volume_idx = get_first_hover_volume_idx();
|
||||||
@ -3518,6 +3531,7 @@ void GLCanvas3D::on_mouse(wxMouseEvent& evt)
|
|||||||
// The dragging operation is initiated.
|
// The dragging operation is initiated.
|
||||||
m_mouse.drag.move_volume_idx = volume_idx;
|
m_mouse.drag.move_volume_idx = volume_idx;
|
||||||
#if ENABLE_NEW_CAMERA_MOVEMENTS_CTRL_ROTATE
|
#if ENABLE_NEW_CAMERA_MOVEMENTS_CTRL_ROTATE
|
||||||
|
m_selection.setup_cache();
|
||||||
if (!evt.CmdDown())
|
if (!evt.CmdDown())
|
||||||
#endif // ENABLE_NEW_CAMERA_MOVEMENTS_CTRL_ROTATE
|
#endif // ENABLE_NEW_CAMERA_MOVEMENTS_CTRL_ROTATE
|
||||||
m_mouse.drag.start_position_3D = m_mouse.scene_position;
|
m_mouse.drag.start_position_3D = m_mouse.scene_position;
|
||||||
@ -3529,7 +3543,8 @@ void GLCanvas3D::on_mouse(wxMouseEvent& evt)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
#if ENABLE_NEW_CAMERA_MOVEMENTS_CTRL_ROTATE
|
#if ENABLE_NEW_CAMERA_MOVEMENTS_CTRL_ROTATE
|
||||||
else if (evt.Dragging() && evt.LeftIsDown() && !evt.CmdDown() && m_layers_editing.state == LayersEditing::Unknown && m_mouse.drag.move_volume_idx != -1) {
|
else if (evt.Dragging() && evt.LeftIsDown() && !evt.CmdDown() && m_layers_editing.state == LayersEditing::Unknown &&
|
||||||
|
m_mouse.drag.move_volume_idx != -1 && m_mouse.is_start_position_3D_defined()) {
|
||||||
#else
|
#else
|
||||||
else if (evt.Dragging() && evt.LeftIsDown() && m_layers_editing.state == LayersEditing::Unknown && m_mouse.drag.move_volume_idx != -1) {
|
else if (evt.Dragging() && evt.LeftIsDown() && m_layers_editing.state == LayersEditing::Unknown && m_mouse.drag.move_volume_idx != -1) {
|
||||||
#endif // ENABLE_NEW_CAMERA_MOVEMENTS_CTRL_ROTATE
|
#endif // ENABLE_NEW_CAMERA_MOVEMENTS_CTRL_ROTATE
|
||||||
@ -3578,7 +3593,13 @@ void GLCanvas3D::on_mouse(wxMouseEvent& evt)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (evt.Dragging() && evt.LeftIsDown() && m_picking_enabled && m_rectangle_selection.is_dragging()) {
|
else if (evt.Dragging() && evt.LeftIsDown() && m_picking_enabled && m_rectangle_selection.is_dragging()) {
|
||||||
|
#if ENABLE_NEW_CAMERA_MOVEMENTS_SHIFT_SELECTION
|
||||||
|
// keeps the mouse position updated while dragging the selection rectangle
|
||||||
|
m_mouse.position = pos.cast<double>();
|
||||||
|
m_rectangle_selection.dragging(m_mouse.position);
|
||||||
|
#else
|
||||||
m_rectangle_selection.dragging(pos.cast<double>());
|
m_rectangle_selection.dragging(pos.cast<double>());
|
||||||
|
#endif // ENABLE_NEW_CAMERA_MOVEMENTS_SHIFT_SELECTION
|
||||||
m_dirty = true;
|
m_dirty = true;
|
||||||
}
|
}
|
||||||
else if (evt.Dragging()) {
|
else if (evt.Dragging()) {
|
||||||
|
Loading…
Reference in New Issue
Block a user