size_t SceneGadget::objectsAt( const Imath::V3f &corner0InGadgetSpace, const Imath::V3f &corner1InGadgetSpace, IECore::PathMatcher &paths ) const { vector<IECoreGL::HitRecord> selection; { ViewportGadget::SelectionScope selectionScope( corner0InGadgetSpace, corner1InGadgetSpace, this, selection, IECoreGL::Selector::OcclusionQuery ); renderScene(); } UIntVectorDataPtr ids = new UIntVectorData; std::transform( selection.begin(), selection.end(), std::back_inserter( ids->writable() ), []( const IECoreGL::HitRecord &h ) { return h.name; } ); PathMatcher selectedPaths = convertSelection( ids ); paths.addPaths( selectedPaths ); return selectedPaths.size(); }