| 108 | } |
| 109 | |
| 110 | ObjAndPick MoveObjectByMouse::MoveObjectByMouseWithSelected::pickObjects_( std::vector<std::shared_ptr<Object>>& objects, int modifiers ) const |
| 111 | { |
| 112 | Viewer& viewerRef = getViewerInstance(); |
| 113 | Viewport& viewport = viewerRef.viewport( viewerRef.getHoveredViewportId() ); |
| 114 | // Pick a single object under cursor |
| 115 | ObjAndPick res = viewport.pickRenderObject(); |
| 116 | auto& [obj, pick] = res; |
| 117 | if ( obj && obj->isAncillary() ) |
| 118 | obj = nullptr; |
| 119 | |
| 120 | if ( int( modXfTarget ) == int( XfTarget::Selected ) || ( modifiers & GLFW_MOD_SHIFT ) == GLFW_MOD_SHIFT ) |
| 121 | { |
| 122 | // Move selected objects regardless of pick |
| 123 | objects = getAllObjectsInTree<Object>( SceneRoot::get(), ObjectSelectivityType::Selected ); |
| 124 | if ( std::find( objects.begin(), objects.end(), obj ) == objects.end() ) |
| 125 | obj = nullptr; // Use picked object only if it is selected |
| 126 | } |
| 127 | else |
| 128 | { |
| 129 | // Move picked object |
| 130 | if ( !obj ) |
| 131 | { |
| 132 | objects = {}; |
| 133 | return res; |
| 134 | } |
| 135 | objects = { obj }; |
| 136 | } |
| 137 | return res; |
| 138 | } |
| 139 | |
| 140 | MoveObjectByMouseImpl::TransformMode MoveObjectByMouse::MoveObjectByMouseWithSelected::modeFromPickModifiers_( int modifiers ) const |
| 141 | { |
nothing calls this directly
no test coverage detected