trait BaseConnectors:
    right_upper_corner is Math.Vec3: right_upper_connector.position
    left_upper_corner is Math.Vec3: left_upper_connector.position
    right_lower_corner is Math.Vec3: right_lower_connector.position
    left_lower_corner is Math.Vec3: left_lower_connector.position

    shovel is Terrain.Shovel:
        body: body
        top_edge: Math.Line.from_points(right_upper_corner, left_upper_corner)
        cutting_edge: Math.Line.from_points(right_lower_corner, left_lower_corner)

    left_upper_connector is Physics3D.Interactions.MateConnector
    right_upper_connector is Physics3D.Interactions.MateConnector
    left_mid_connector is Physics3D.Interactions.MateConnector
    right_mid_connector is Physics3D.Interactions.MateConnector
    left_lower_connector is Physics3D.Interactions.MateConnector
    right_lower_connector is Physics3D.Interactions.MateConnector
