A Comprehensive PathFinding Library for Objective-C
Objective-C C Ruby
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
PathFindingForObjC-Example update README Apr 8, 2015
PathFindingForObjC update Apr 10, 2015
demo update README Apr 8, 2015
.gitignore add Podfile Apr 3, 2015
LICENSE Initial commit Oct 28, 2014
PathFindingForObjC.podspec Update PathFindingForObjC.podspec Apr 8, 2015
README.md update Apr 10, 2015

README.md

PathFindingForObjC

A Comprehensive PathFinding Library for Objective-C.
Based on PathFinding.js by @qiao.

Installation

Cocoapods

  • Edit your Podfile
pod 'PathFindingForObjC'

or use the master branch of the repo :

pod 'PathFindingForObjC', :git => 'https://github.com/wbcyclist/PathFindingForObjC.git'
  • Add #import <PathFindingForObjC/PathFinding.h> to your source file.

Disable logging

add this code in Podfile

post_install do |installer|
    installer.project.targets.each do |target|
        target.build_configurations.each do |config|
            if target.name.include? 'PathFindingForObjC'
                preprocessorMacros = config.build_settings['GCC_PREPROCESSOR_DEFINITIONS']
                if preprocessorMacros.nil?
                    preprocessorMacros = ['$(inherited)', 'COCOAPODS=1'];
                end
                preprocessorMacros << 'PF_DEBUG=0'
                config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] = preprocessorMacros
            end
        end
    end
end

Manually

  1. Download the latest code version or add the repository as a git submodule to your git-tracked project.
  2. Open your project in Xcode, then drag and drop PathFindingForObjC/PathFindingForObjC into your project
  3. Add #import PathFinding.h to your source file.

Disable logging

Click on your Project Target, head over to Build Settings and search for Preprocessor Macros. add PF_DEBUG=0 to Debug Configuration.

Basic Usage

PathFinding *finder = [[PathFinding alloc] initWithMapSize:CGSizeMake(6, 5)
                                                  tileSize:CGSizeMake(1, 1)
                                               coordsOrgin:CGPointZero];
finder.heuristicType = HeuristicTypeManhattan;
finder.movementType = DiagonalMovement_Never;

// add blocks
[finder addBlockTilePositions:@[PF_CGPointToNSValue(CGPointMake(1, 2)),
                                PF_CGPointToNSValue(CGPointMake(2, 2)),
                                PF_CGPointToNSValue(CGPointMake(3, 2))
                                ]];
// set start point
finder.startPoint = CGPointMake(2, 3);
// set end point
finder.endPoint = CGPointMake(2, 1);
// get result
NSArray *foundPaths = [finder findPathing:PathfindingAlgorithm_AStar IsConvertToOriginCoords:YES];
debug log:

πŸ” πŸ” πŸ” πŸ” πŸ” πŸ”

πŸ” πŸ” πŸ™ πŸ’— πŸ’— πŸ”

πŸ” πŸ”ž πŸ”ž πŸ”ž πŸ’— πŸ”

πŸ” πŸ” πŸ™… πŸ’— πŸ’— πŸ”

πŸ” πŸ” πŸ” πŸ” πŸ” πŸ”

Options

HeuristicType :

  • HeuristicTypeManhattan
  • HeuristicTypeEuclidean
  • HeuristicTypeOctile
  • HeuristicTypeChebyshev

DiagonalMovement :

  • DiagonalMovement_Always
  • DiagonalMovement_Never
  • DiagonalMovement_IfAtMostOneObstacle
  • DiagonalMovement_OnlyWhenNoObstacles

PathfindingAlgorithm :

  • PathfindingAlgorithm_AStar
  • PathfindingAlgorithm_BestFirstSearch
  • PathfindingAlgorithm_Dijkstra
  • PathfindingAlgorithm_JumpPointSearch
  • PathfindingAlgorithm_BreadthFirstSearch
  • PathfindingAlgorithm_BiAStar
  • PathfindingAlgorithm_BiBestFirst
  • PathfindingAlgorithm_BiDijkstra
  • PathfindingAlgorithm_BiBreadthFirst

DEMO

License

  • MIT