ExternalCraneSystemComponent is HeavyMachineBundle.MachineComponents.CraneSystemComponentNoVisuals:
    external_drive_connector is Physics3D.Interactions.MateConnector
    external_input_connector is Physics3D.Interactions.MateConnector
    external_output_connector is Physics3D.Interactions.MateConnector
    external_guide_connector is Physics3D.Interactions.MateConnector
    external_ground_connector is Physics3D.Interactions.MateConnector

    main_axis_sign is Real: 1

    local_model_plane_normal: main_axis_sign * external_input_connector.main_axis
    local_along_normal: external_input_connector.normal
    # Update positions and align all axes
    snap_drive.position:   external_drive_connector.position
    snap_drive.main_axis:  local_model_plane_normal
    snap_drive.normal:     local_along_normal
    snap_input.position:   external_input_connector.position
    snap_input.main_axis:  local_model_plane_normal
    snap_input.normal:     local_along_normal
    snap_output.position:  external_output_connector.position
    snap_output.main_axis: local_model_plane_normal
    snap_output.normal:    local_along_normal
    snap_guide.position:   external_guide_connector.position
    snap_guide.main_axis:  local_model_plane_normal
    snap_guide.normal:     local_along_normal
    snap_ground.position:  external_ground_connector.position
    snap_ground.main_axis: local_model_plane_normal
    snap_ground.normal:    local_along_normal
