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