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.
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.
Connection
Welcome to Connection, a Swift path-finding library. Its primary goal is to extend Apple’s
GameplayKit
framework.Features
Usage
Connection defines two new generic classes:
Node
andGraph
, which are, respectively,GKGraphNode
andGKGraph
counterparts.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!