std::shared_ptr<NodeData> EnvirePhysics::getCollidableNode(const smurf::Collidable& collidable, const envire::core::FrameId& frame) { NodeData * node = new NodeData; std::shared_ptr<NodeData> nodePtr(node); urdf::Collision collision = collidable.getCollision(); node->init(collision.name); node->fromGeometry(collision.geometry); node->density = 0.0; node->mass = 0.00001; setPos(frame, nodePtr); node->movable = true; node->c_params.fromSmurfCP(collidable.getContactParams()); node->groupID = collidable.getGroupId(); return nodePtr; }
void EnvirePhysics::itemAdded(const TypedItemAddedEvent<Item<urdf::Collision>>& e) { #ifdef DEBUG LOG_DEBUG(("[EnvirePhysics::ItemAdded] urdf::Collision item received in frame *** " + e.frame + "***").c_str()); #endif urdf::Collision collision = e.item->getData(); NodeData * node = new NodeData; node->init(collision.name); node->fromGeometry(collision.geometry); node->mass = 0.00001; node->density = 0.0; std::shared_ptr<NodeData> nodePtr(node); setPos(e.frame, nodePtr); node->movable = true; if (instantiateNode(nodePtr, e.frame)) { #ifdef DEBUG LOG_DEBUG(("[EnvirePhysics::ItemAdded] Smurf::Collision - Instantiated and stored the nodeInterface in frame ***" + e.frame +"***").c_str()); #endif } }