diff --git a/src/frame_base.h b/src/frame_base.h index 408b6b0bc9f061fd3e6bb703bd829a88f80bef09..d96a8fead8698b86a47fead5c94162141cf703df 100644 --- a/src/frame_base.h +++ b/src/frame_base.h @@ -133,6 +133,8 @@ class FrameBase : public NodeBase, public std::enable_shared_from_this<FrameBase CaptureBaseList& getCaptureList(); CaptureBasePtr addCapture(CaptureBasePtr _capt_ptr); CaptureBasePtr getCaptureOf(const SensorBasePtr _sensor_ptr); + CaptureBasePtr getCaptureOf(const SensorBasePtr _sensor_ptr, const std::string& type); + CaptureBaseList getCapturesOf(const SensorBasePtr _sensor_ptr); void unlinkCapture(CaptureBasePtr _cap_ptr); void getConstraintList(ConstraintBaseList& _ctr_list); @@ -317,6 +319,27 @@ inline CaptureBasePtr FrameBase::getCaptureOf(const SensorBasePtr _sensor_ptr) return nullptr; } +inline CaptureBasePtr +FrameBase::getCaptureOf(const SensorBasePtr _sensor_ptr, const std::string& type) +{ + for (CaptureBasePtr capture_ptr : getCaptureList()) + if (capture_ptr->getSensorPtr() == _sensor_ptr && + capture_ptr->getType() == type) + return capture_ptr; + return nullptr; +} + +inline CaptureBaseList FrameBase::getCapturesOf(const SensorBasePtr _sensor_ptr) +{ + CaptureBaseList captures; + + for (CaptureBasePtr capture_ptr : getCaptureList()) + if (capture_ptr->getSensorPtr() == _sensor_ptr) + captures.push_back(capture_ptr); + + return captures; +} + inline void FrameBase::unlinkCapture(CaptureBasePtr _cap_ptr) { _cap_ptr->unlinkFromFrame();