11 : m_CollisionContainer(cont),
13 m_parent_interface(parent_interface) {
20 m_CollisionContainer = copy.m_CollisionContainer;
21 m_parent = copy.m_parent;
22 m_parent_interface = copy.m_parent_interface;
26 m_broadphase_factory = copy.m_broadphase_factory;
31 m_broadphase_factory = broadphase_factory;
47 *
this, *(static_cast<const FCLCollisionObject *>(obj2_entity)),
52 *
this, *(static_cast<const FCLCollisionObjectGroup *>(obj2_entity)),
67 *
this, *(static_cast<const FCLCollisionObject *>(obj2_entity)),
68 distance, check_type, tolerance);
72 *
this, *(static_cast<const FCLCollisionObjectGroup *>(obj2_entity)),
73 distance, check_type, tolerance);
115 fcl::BroadPhaseCollisionManager<FCL_PRECISION> *&mngr)
const {
117 if (!manager_cached) {
118 if (!manager_instance_cached) {
120 std::unique_ptr<fcl::BroadPhaseCollisionManager<FCL_PRECISION>>(
121 m_broadphase_factory->instantiateBroadphaseManager());
122 manager_instance_cached =
true;
124 m_group_manager->clear();
125 std::vector<fcl::CollisionObject<FCL_PRECISION> *> objects;
127 m_group_manager->registerObjects(objects);
128 m_group_manager->setup();
129 manager_cached =
true;
131 mngr = m_group_manager.get();
135 manager_cached =
false;
138 manager_instance_cached =
false;
void invalidateManagerCache(void) const
int FCL_CalculateDistance(const FCLCollisionObject &obj1, const FCLCollisionObject &obj2, FCL_PRECISION &distance, double distance_tolerance=1e-6)
BroadPhaseManagerFactoryConstPtr getDefaultBroadphaseFactory(void)
std::shared_ptr< const BroadPhaseManagerFactory > BroadPhaseManagerFactoryConstPtr
void invalidateManagerInstanceCache(void) const
int FCL_DistanceTolerance(const FCLCollisionObjectGroup &group1, const FCLCollisionObject &obj2, FCL_PRECISION &distance, FCL_TOLERANCE_CHECK_TYPE check_type=TOLERANCE_CHECK_NARROWPHASE, double distance_tolerance=1e-6)
FCL_COLLISION_ENTITY_TYPE
FCLCollisionObjectGroup(const ICollisionContainer *, const CollisionObject *, const IFCLCollisionObjectGroup *parent_interface)
std::size_t distance(const CollisionObject &obj1, const CollisionObject &obj2, DistanceResult &res, const DistanceRequest &req)
virtual int getCollisionObjects(std::vector< fcl::CollisionObject< FCL_PRECISION > *> &) const =0
int replaceBroadphaseFactory(BroadPhaseManagerFactoryConstPtr broadphase_factory)
int calculateDistanceNegTolerance(const CollisionObject &obj2, double &distance, FCL_TOLERANCE_CHECK_TYPE check_type=TOLERANCE_CHECK_NARROWPHASE, FCL_PRECISION tolerance=1e-6) const
FCL_COLLISION_ENTITY_TYPE get_object_fcl_entity_type(const CollisionObject *obj2)
int calculateDistance(const CollisionObject &obj2, FCL_PRECISION &distance, FCL_PRECISION tolerance=1e-6) const
Base class for CollisionObjects and some of their groups.
int getManager_fcl(fcl::BroadPhaseCollisionManager< FCL_PRECISION > *&) const