Skip to content
master
Go to file
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
Feb 10, 2020
Feb 10, 2020
Feb 10, 2020

README.md

Connection

Build status Swift Package Manager MacOS + iOS + iPadOS + tvOS Twitter: @zntfdr

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!

Sponsor this project

 

Packages

No packages published

Languages

You can’t perform that action at this time.