A modern async wrapper around the Project Lighthouse API for Swift, e.g. to build games and other clients. Runs on Linux and Apple platforms (macOS, iOS, ...).
// Prepare connection
let auth = Authentication(username: username, token: token)
let lh = Lighthouse(authentication: auth, url: url)
// Connect to the lighthouse server
try await lh.connect()
log.info("Connected to the lighthouse")
// Handle incoming input events
Task {
let stream = try await lh.streamModel()
for await message in stream {
if case let .inputEvent(input) = message.payload {
log.info("Got input \(input)")
}
}
}
// Repeatedly send colored frames to the lighthouse
while true {
log.info("Sending frame")
try await lh.putModel(frame: Frame(fill: .random()))
try await Task.sleep(for: .seconds(1))
}
For more details, check out the LighthouseDemo
source code.
First make sure to have a login at lighthouse.uni-kiel.de and to have your credentials defined as environment variables:
export LIGHTHOUSE_USER=[your username]
export LIGHTHOUSE_TOKEN=[your api token]
Running the example is now as easy as invoking
swift run LighthouseDemo