Connection
A path-finding library powered by GameplayKit 👾
git clone https://github.com/jasonnam/Connection.gitjasonnam/ConnectionConnection
Welcome to Connection, a Swift path-finding library. Its primary goal is to extend Apple's GameplayKit framework.
Features
- Weighted connections.
- Total path weight.
- Associated values support.
- Find the shortest path between multiple origins and destinations.
Usage
Connection defines two new generic classes: Node and Graph, which are, respectively, GKGraphNode and GKGraph counterparts.
import Connection // Create nodes. let nodeA = Node(value: "A") let nodeB = Node(value: "B") let nodeC = Node(value: "C") // Make connections. nodeA.addConnection(to: nodeB, bidirectional: false, weight: 1) nodeB.addConnection(to: nodeC, bidirectional: true, weight: 2) // Create graph. let graph = Graph([nodeA, nodeB, nodeC]) // Find path. let shortestAtoCPath = graph.findPath(from: nodeA, to: nodeC) print(shortestAtoCPath) // ["A", "B", "C"]
You can find many more examples in the Tests folder.
Installation
Connection is distributed using the Swift Package Manager. To install it into a project, follow this tutorial and use this repository URL: https://github.com/zntfdr/Connection.git.
Credits
Connection was built by Federico Zanetello as a component of Bangkok Metro.
If you'd like to dive deeper into iOS path-finding algorithms, please read this two-part serie:
Contributions and Support
All users are welcome and encouraged to become active participants in the project continued development — by fixing any bug that they encounter, or by improving the documentation wherever it’s found to be lacking.
If you'd like to make a change, please open a Pull Request, even if it just contains a draft of the changes you’re planning, or a test that reproduces an issue.
Thank you and please enjoy using Connection!
more like this
agentlytics
Comprehensive analytics dashboard for AI coding agents — Cursor, Windsurf, Claude Code, VS Code Copilot, Zed, Antigravi…
r2
Free open-source Cloudflare R2 desktop client and S3 GUI for macOS, Windows, and Linux. Manage Cloudflare R2, AWS S3, M…
meine
meine 🌒 - A CLI file manager and system utility built with Textual. It combines intuitive command parsing with rich t…