TelescopicLinkNoVisuals is LinkNoVisuals:
    length: 0.1
    width: 0.02
    height: 0.05
    # The local position of the LinkConnector will offset the hole in local X
    input becomes Interfaces.RedirectedTelescopicLinkConnector:
        local_position: -length * 0.5
    output becomes Interfaces.RedirectedTelescopicLinkConnector:
        local_position: length * 0.5

TelescopicLinkBodyWithVisuals is Physics3D.Bodies.RigidBody:
    contact_geometry is Physics3D.Geometries.Box:
        enable_collisions: false
    visual_box is Visuals.Geometries.Box
    visual_cylinder_left is Visuals.BearingVisual
    visual_cylinder_right is Visuals.BearingVisual

TelescopicLink is TelescopicLinkNoVisuals:
    body becomes TelescopicLinkBodyWithVisuals:
        kinematics.local_transform.position.x: 0
        contact_geometry.size: Definitions.AlongBodyNormal * (length + height) + Definitions.ModelPlaneNormal * width + Definitions.ZeroAngleNormal * height
        visual_box.size: body.contact_geometry.size
        visual_cylinder_left.local_transform.position: -length * 0.5 * Definitions.AlongBodyNormal
        visual_cylinder_right.local_transform.position: length * 0.5 * Definitions.AlongBodyNormal
