Contents

thatfactory/gcoverseer

[AsyncSequence](https://developer.apple.com/documentation/swift/asyncsequence) wrapper around Apple's [Game Controller Framework](https://developer.apple.com/documentation/gamecontroller).

Usage Examples

Handle Controller Connection/Disconnection Events

import SpriteKit
import GCOverseer

class GameScene: SKScene {

    let gcOverseer = GCOverseer()

    override init(size: CGSize) {
        super.init(size: size)

        // 🎮 Handle game controller connection/disconnection asynchronously
        Task {
            for await controllerEvent in gcOverseer.connectionStream {
                switch controllerEvent {
                case .connected:
                    print("A game controller connected.")
                case .disconnected:
                    print("A game controller disconnected.")
                }
            }
        }
    }
}

Available Properties

Property | Description -------- | ----------- var connectionStream: AsyncStream<GameControllerEvent> | Provides an AsyncSequence for observing connect/disconnect events of game controllers. var controllers: [GCController] | Returns all controllers connected to the device. E.g. DualShock, Xbox, Siri Remote controllers, etc.

Available APIs

API | Description --- | ----------- extendedGamepadControllers() | Returns all controllers supporting the extendedGamepad profile connected to the device. E.g., DualShock, Xbox controllers, etc. dualShockControllers() | Returns all DualShock controllers that are connected to the device. dualSenseControllers() | Returns all DualSense controllers that are connected to the device. xboxControllers() | Returns all Xbox controllers that are connected to the device. microGamepadControllers() | Returns all controllers supporting the microGamepad profile connected to the device. E.g. Apple's Siri Remote. motionControllers() | Returns all controllers supporting the motion profile connected to the device. controllerFor(playerIndex:) | Returns the controller for the player 1, player 2, etc. enableLogging() / disableLogging() | Enables/disables logging output.

Integration

Xcode

Use Xcode's built-in support for SPM.

or...

Package.swift

In your Package.swift, add GCOverseer as a dependency:

dependencies: [
    .package(
        url: "https://github.com/thatfactory/gcoverseer",
        from: "0.1.0"
    )
]

Associate the dependency with your target:

targets: [
    .target(
        name: "YourTarget",
        dependencies: [
            .product(
                name: "GCOverseer",
                package: "gcoverseer"
            )
        ]
    )
]

Run: swift build

Package Metadata

Repository: thatfactory/gcoverseer

Default branch: main

README: README.md