Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

This page combines previous information from other locations into one source about tileset pathnodespath nodes.

Table of Contents

In Game Pathfinding Usage

The tileset pathnodes are used to do cross-tile click-to-walk and ActionMoveToLocation/ActionMoveToObject and related commands used via. scripting. If a location is outside the objects current tile (10x10 meter divisions in the map) then a path node specifies if one tile can reach another tile, and also if they were to move onto that tile would they then be able to move onto other tiles past it.

...

Note that WASD movement does not use the tile path nodes so if you are testing a new tileset or a broken old one, this is an easy way to check if things work correctly (barring other things like doors blocking pathfinding).

Pathnode Table

This is all the pathnodes in the game, visually represented. The reason they are defined as base ASCII is since they are stored in ini files it maintains maximum compatibility.

...

Tile Path NodeASCII ArtPictureNotes
A


Code Block
---------
[   |   ]
[   |   ]
[---+---]
[   |   ]
[   |   ]
---------




B


Code Block
---------
[   |   ]
[---+-+ ]
[     +-]
[-+   | ]
[ |   | ]
---------




C


Code Block
---------
[  | |  ]
[  | |  ]
[--+ +--]
[  | |  ]
[  | |  ]
---------




D


Code Block
---------
[ |   | ]
[-+   +-]
[       ]
[-+   +-]
[ |   | ]
---------




E


Code Block
---------
[ |  |  ]
[-+  |  ]
[    +--]
[-+  |  ]
[ |  |  ]
---------




F


Code Block
---------
[  | |  ]
[  | |  ]
[--+-+--]
[  | |  ]
[  | |  ]
---------




G


Code Block
---------
[  | |  ]
[  | |  ]
[--+++--]
[   |   ]
[   |   ]
---------




H


Code Block
---------
[       ]
[       ]
[---+   ]
[   |   ]
[   |   ]
---------




I


Code Block
---------
[   |   ]
[   |   ]
[---+   ]
[   |   ]
[   |   ]
---------




J


Code Block
---------
[     | ]
[     +-]
[       ]
[-+     ]
[ |     ]
---------



NOTE: this is wrong in the ASCII need to amend
K


Code Block
---------
[ |   | ]
[ |   +-]
[-+     ]
[   +---]
[   |   ]
---------




L


Code Block
---------
[   |   ]
[   |   ]
[   +   ]
[   |   ]
[   |   ]
---------




M


Code Block
---------
[  | |  ]
[  | |  ]
[  + +  ]
[  | |  ]
[  | |  ]
---------




N


Code Block
---------
[   |   ]
[   |   ]
[   +   ]
[       ]
[       ]
---------




O


Code Block
---------
[ |   | ]
[-+   /-]
[   +   ]
[-/   +-]
[ |   | ]
---------




P


Code Block
Deleted definition



"Removed" so unused so don't use it (who knows might be at somepoint reused). Instead use T for a total pathfinding blocker (eg all black wall tiles in interior areas)
Q


Code Block
---------
[ |   | ]
[ |   | ]
[-+  /--]
[   +   ]
[   |   ]
---------




R


Code Block
---------
[   |   ]
[   +   ]
[-+  \--]
[ |   | ]
[ |   | ]
---------




S


Code Block
---------
[ |   | ]
[ |   | ]
[-+   +-]
[       ]
[       ]
---------




T


Code Block
---------
[       ]
[       ]
[       ]
[       ]
[       ]
---------



A blocker pathfinding node, use for all black wall tiles in interior areas or areas of sea or similar no-pathingfinding tiles
U


Code Block
---------
[   |   ]
[    \  ]
[-+   +-]
[    /  ]
[   |   ]
---------




V


Code Block
---------
[   |   ]
[   +   ]
[     --]
[    /  ]
[   |   ]
---------




W


Code Block
---------
[   |   ]
[   +   ]
[--     ]
[  \    ]
[   |   ]
---------




X


Code Block
---------
[   |   ]
[   +   ]
[-+     ]
[       ]
[       ]
---------




Y


Code Block
---------
[   |   ]
[   +   ]
[       ]
[   +   ]
[   |   ]
---------




Z


Code Block
---------
[   |   ]
[---+   ]
[   +-+-]
[-+/  | ]
[ |   | ]
---------




a


Code Block
---------
[  | |  ]
[  | +  ]
[--+++--]
[   |   ]
[   |   ]
---------




b


Code Block
---------
[  | |  ]
[  + |  ]
[--+++--]
[   |   ]
[   |   ]
---------




c


Code Block
---------
[ | | | ]
[ | | | ]
[-+-+-+-]
[   |   ]
[   |   ]
---------




d


Code Block
---------
[ | | | ]
[ | + | ]
[-+   +-]
[  \ /  ]
[   |   ]
---------




e


Code Block
---------
[   |   ]
[---+-+ ]
[---  +-]
[-+ | | ]
[ | | | ]
---------




f


Code Block
---------
[ | | | ]
[ | | | ]
[-+ + +-]
[ | | | ]
[ | | | ]
---------



Added in later Bioware patches so may not be used in the earliest tilesets.
g


Code Block
---------
[ | | | ]
[ | | | ]
[-+-+ +-]
[ | | | ]
[ | | | ]
---------



Added in later Bioware patches so may not be used in the earliest tilesets.
h


Code Block
---------
[   |   ]
[---+-+ ]
[----/+-]
[-+ | | ]
[ | | | ]
---------



Added in later Bioware patches so may not be used in the earliest tilesets.

Similar to e only with two of the areas connected.

i


Code Block
---------
[---+---]
[   |   ]
[-+ | +-]
[   |   ]
[---+---]
---------



Added in later Bioware patches so may not be used in the earliest tilesets.
j


Code Block
---------
[---+---]
[       ]
[-+   +-]
[       ]
[---+---]
---------



Added in later Bioware patches so may not be used in the earliest tilesets.
k


Code Block
---------
[ | | | ]
[-+ | | ]
[---+ +-]
[-+ | | ]
[ | | | ]
---------



Added in later Bioware patches so may not be used in the earliest tilesets.
l


Code Block
---------
[ | | | ]
[-+ | +-]
[---+---]
[-+ | +-]
[ | | | ]
---------



Added in later Bioware patches so may not be used in the earliest tilesets.
m


Code Block
---------
[ | | | ]
[-+ | +-]
[   +   ]
[-+ | +-]
[ | | | ]
---------



Added in later Bioware patches so may not be used in the earliest tilesets.
n


Code Block
---------
[ | | | ]
[-+ + +-]
[       ]
[-+ + +-]
[ | | | ]
---------



Added in later Bioware patches so may not be used in the earliest tilesets.
o


Code Block
---------
[ | | | ]
[-+ | | ]
[   + +-]
[-+ | | ]
[ | | | ]
---------



Added in later Bioware patches so may not be used in the earliest tilesets.
p


Code Block
---------
[ |   | ]
[-+   | ]
[-+   +-]
[-+   | ]
[ |   | ]
---------



Added in later Bioware patches so may not be used in the earliest tilesets.
q


Code Block
---------
[ |   | ]
[-+   | ]
[-----+-]
[-+   | ]
[ |   | ]
---------



Added in 1.87.8193.35.
r


Code Block
---------
[ | | | ]
[-+ + +-]
[-+   +-]
[-+ + +-]
[ | | | ]
---------



Added in 1.87.8193.35.
s


Code Block
---------
[ |   | ]
[-+   +-]
[-+   +-]
[-+ + +-]
[ | | | ]
---------



Added in 1.87.8193.35.
t


Code Block
---------
[ |   | ]
[-+   +-]
[   +---]
[-+ | +-]
[ | | | ]
---------



Added in 1.87.8193.35.
u


Code Block
---------
[ | | | ]
[-+ | +-]
[   +---]
[-+ | +-]
[ | | | ]
---------



Added in 1.87.8193.35.
v


Code Block
---------
[ | | | ]
[-+ | +-]
[-+ +---]
[-+ | +-]
[ | | | ]
---------



Added in 1.87.8193.35.
w


Code Block
---------
[   |   ]
[   +   ]
[-+   +-]
[   +   ]
[   |   ]
---------



Added in 1.87.8193.35.
x


Code Block
---------
[ |     ]
[-+     ]
[       ]
[-+   +-]
[ |   | ]
---------



Added in 1.87.8193.35.

Technical Engine Definition

The game hardcodes the pathnode definitions - Bioware added several post-release as have Beamdog covering the majority of tile connection possibilities. The code defining them has been provided by the developers but is hard to parse (Although the comments do show a rough outline of which each one is defined as):

Code Block
titlePathnodes
collapsetrue
         case NWTILE_PATH_FINDING_TYPE_A:
        {
            //    ---------
            //    [   |   ]
            //    [   |   ]
            //    [---+---]
            //    [   |   ]
            //    [   |   ]
            //    ---------
            (*pfRegionNodes)[i++] = 0.0;
            (*pfRegionNodes)[i++] = 0.0;

            (*pfTileExits)[j++] = 0.0;
            (*pfTileExits)[j++] = 5.0;

            (*pfTileExits)[j++] = -5.0;
            (*pfTileExits)[j++] = 0.0;

            (*pfTileExits)[j++] = 5.0;
            (*pfTileExits)[j++] = 0.0;

            (*pfTileExits)[j++] = 0.0;
            (*pfTileExits)[j++] = -5.0;

            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 0;
        }
        break;
        case NWTILE_PATH_FINDING_TYPE_B:
        {
            //    ---------
            //    [   |   ]
            //    [---+-+ ]
            //    [     +-]
            //    [-+   | ]
            //    [ |   | ]
            //    ---------
            (*pfRegionNodes)[i++] = 4.0;
            (*pfRegionNodes)[i++] = 4.0;

            (*pfRegionNodes)[i++] = -2.5;
            (*pfRegionNodes)[i++] = -2.5;

            (*pfTileExits)[j++] = 0.0;
            (*pfTileExits)[j++] = 5.0;

            (*pfTileExits)[j++] = -5.0;
            (*pfTileExits)[j++] = 2.5;

            (*pfTileExits)[j++] = -5.0;
            (*pfTileExits)[j++] = -2.5;

            (*pfTileExits)[j++] = -2.5;
            (*pfTileExits)[j++] = -5.0;

            (*pfTileExits)[j++] = 2.5;
            (*pfTileExits)[j++] = -5.0;

            (*pfTileExits)[j++] = 5.0;
            (*pfTileExits)[j++] = 0.0;

            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 1;
            (*pnTileExitRegion)[k++] = 1;
            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 0;
        }
        break;
        case NWTILE_PATH_FINDING_TYPE_C:
        {
            //    ---------
            //    [  | |  ]
            //    [  | |  ]
            //    [--+ +--]
            //    [  | |  ]
            //    [  | |  ]
            //    ---------

            (*pfRegionNodes)[i++] = -2.5;
            (*pfRegionNodes)[i++] = 0.0;

            (*pfRegionNodes)[i++] = 2.5;
            (*pfRegionNodes)[i++] = 0.0;

            (*pfTileExits)[j++] = -2.5;
            (*pfTileExits)[j++] = 5.0;

            (*pfTileExits)[j++] = -5.0;
            (*pfTileExits)[j++] = 0.0;

            (*pfTileExits)[j++] = -2.5;
            (*pfTileExits)[j++] = -5.0;

            (*pfTileExits)[j++] = 2.5;
            (*pfTileExits)[j++] = -5.0;

            (*pfTileExits)[j++] = 5.0;
            (*pfTileExits)[j++] = 0.0;

            (*pfTileExits)[j++] = 2.5;
            (*pfTileExits)[j++] = 5.0;

            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 1;
            (*pnTileExitRegion)[k++] = 1;
            (*pnTileExitRegion)[k++] = 1;
        }
        break;
        case NWTILE_PATH_FINDING_TYPE_D:
        {
            //    ---------
            //    [ |   | ]
            //    [-+   +-]
            //    [       ]
            //    [-+   +-]
            //    [ |   | ]
            //    ---------

            (*pfRegionNodes)[i++] = -2.5;
            (*pfRegionNodes)[i++] = 2.5;

            (*pfRegionNodes)[i++] = -2.5;
            (*pfRegionNodes)[i++] = -2.5;

            (*pfRegionNodes)[i++] = 2.5;
            (*pfRegionNodes)[i++] = -2.5;

            (*pfRegionNodes)[i++] = 2.5;
            (*pfRegionNodes)[i++] = 2.5;

            (*pfTileExits)[j++] = -2.5;
            (*pfTileExits)[j++] = 5.0;

            (*pfTileExits)[j++] = -5.0;
            (*pfTileExits)[j++] = 2.5;

            (*pfTileExits)[j++] = -5.0;
            (*pfTileExits)[j++] = -2.5;

            (*pfTileExits)[j++] = -2.5;
            (*pfTileExits)[j++] = -5.0;

            (*pfTileExits)[j++] = 2.5;
            (*pfTileExits)[j++] = -5.0;

            (*pfTileExits)[j++] = 5.0;
            (*pfTileExits)[j++] = -2.5;

            (*pfTileExits)[j++] = 5.0;
            (*pfTileExits)[j++] = 2.5;

            (*pfTileExits)[j++] = 2.5;
            (*pfTileExits)[j++] = 5.0;

            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 1;
            (*pnTileExitRegion)[k++] = 1;
            (*pnTileExitRegion)[k++] = 2;
            (*pnTileExitRegion)[k++] = 2;
            (*pnTileExitRegion)[k++] = 3;
            (*pnTileExitRegion)[k++] = 3;
        }
        break;
        case NWTILE_PATH_FINDING_TYPE_E:
        {
            //    ---------
            //    [ |  |  ]
            //    [-+  |  ]
            //    [    +--]
            //    [-+  |  ]
            //    [ |  |  ]
            //    ---------

            (*pfRegionNodes)[i++] = -2.5;
            (*pfRegionNodes)[i++] = 2.5;

            (*pfRegionNodes)[i++] = -2.5;
            (*pfRegionNodes)[i++] = -2.5;

            (*pfRegionNodes)[i++] = 2.5;
            (*pfRegionNodes)[i++] = 0.0;

            (*pfTileExits)[j++] = -2.5;
            (*pfTileExits)[j++] = 5.0;

            (*pfTileExits)[j++] = -5.0;
            (*pfTileExits)[j++] = 2.5;

            (*pfTileExits)[j++] = -5.0;
            (*pfTileExits)[j++] = -2.5;

            (*pfTileExits)[j++] = -2.5;
            (*pfTileExits)[j++] = -5.0;

            (*pfTileExits)[j++] = 2.5;
            (*pfTileExits)[j++] = -5.0;

            (*pfTileExits)[j++] = 5.0;
            (*pfTileExits)[j++] = 0.0;

            (*pfTileExits)[j++] = 2.5;
            (*pfTileExits)[j++] = 5.0;

            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 1;
            (*pnTileExitRegion)[k++] = 1;
            (*pnTileExitRegion)[k++] = 2;
            (*pnTileExitRegion)[k++] = 2;
            (*pnTileExitRegion)[k++] = 2;
        }
        break;

        case NWTILE_PATH_FINDING_TYPE_F:
        {
            //    ---------
            //    [  | |  ]
            //    [  | |  ]
            //    [--+-+--]
            //    [  | |  ]
            //    [  | |  ]
            //    ---------

            (*pfRegionNodes)[i++] = 0.0;
            (*pfRegionNodes)[i++] = 0.0;

            (*pfTileExits)[j++] = -2.5;
            (*pfTileExits)[j++] = 5.0;

            (*pfTileExits)[j++] = -5.0;
            (*pfTileExits)[j++] = 0.0;

            (*pfTileExits)[j++] = -2.5;
            (*pfTileExits)[j++] = -5.0;

            (*pfTileExits)[j++] = 2.5;
            (*pfTileExits)[j++] = -5.0;

            (*pfTileExits)[j++] = 5.0;
            (*pfTileExits)[j++] = 0.0;

            (*pfTileExits)[j++] = 2.5;
            (*pfTileExits)[j++] = 5.0;

            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 0;
        }
        break;
        case NWTILE_PATH_FINDING_TYPE_G:
        {
            //    ---------
            //    [  | |  ]
            //    [  | |  ]
            //    [--+++--]
            //    [   |   ]
            //    [   |   ]
            //    ---------
            (*pfRegionNodes)[i++] = 0.0;
            (*pfRegionNodes)[i++] = 0.0;

            (*pfTileExits)[j++] = -2.5;
            (*pfTileExits)[j++] = 5.0;

            (*pfTileExits)[j++] = -5.0;
            (*pfTileExits)[j++] = 0.0;

            (*pfTileExits)[j++] = 0.0;
            (*pfTileExits)[j++] = -5.0;

            (*pfTileExits)[j++] = 5.0;
            (*pfTileExits)[j++] = 0.0;

            (*pfTileExits)[j++] = 2.5;
            (*pfTileExits)[j++] = 5.0;

            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 0;
        }
        break;
        case NWTILE_PATH_FINDING_TYPE_H:
        {
            //    ---------
            //    [       ]
            //    [       ]
            //    [---+   ]
            //    [   |   ]
            //    [   |   ]
            //    ---------

            (*pfRegionNodes)[i++] = 0.0;
            (*pfRegionNodes)[i++] = 0.0;

            (*pfTileExits)[j++] = -5.0;
            (*pfTileExits)[j++] = 0.0;

            (*pfTileExits)[j++] = 0.0;
            (*pfTileExits)[j++] = -5.0;

            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 0;
        }
        break;
        case NWTILE_PATH_FINDING_TYPE_I:
        {
            //    ---------
            //    [   |   ]
            //    [   |   ]
            //    [---+   ]
            //    [   |   ]
            //    [   |   ]
            //    ---------

            (*pfRegionNodes)[i++] = 0.0;
            (*pfRegionNodes)[i++] = 0.0;

            (*pfTileExits)[j++] = 0.0;
            (*pfTileExits)[j++] = 5.0;

            (*pfTileExits)[j++] = -5.0;
            (*pfTileExits)[j++] = 0.0;

            (*pfTileExits)[j++] = 0.0;
            (*pfTileExits)[j++] = -5.0;

            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 0;
        }
        break;
        case NWTILE_PATH_FINDING_TYPE_J:
        {
            //    ---------
            //    [     | ]
            //    [     +-]
            //    [       ]
            //    [-+     ]
            //    [ |     ]
            //    ---------

            (*pfRegionNodes)[i++] = -2.5;
            (*pfRegionNodes)[i++] = -2.5;

            (*pfRegionNodes)[i++] = 2.5;
            (*pfRegionNodes)[i++] = 2.5;

            (*pfTileExits)[j++] = -5.0;
            (*pfTileExits)[j++] = 0.0;

            (*pfTileExits)[j++] = 0.0;
            (*pfTileExits)[j++] = -5.0;

            (*pfTileExits)[j++] = 5.0;
            (*pfTileExits)[j++] = 0.0;

            (*pfTileExits)[j++] = 0.0;
            (*pfTileExits)[j++] = 5.0;

            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 1;
            (*pnTileExitRegion)[k++] = 1;
        }
        break;
        case NWTILE_PATH_FINDING_TYPE_K:
        {
            //    ---------
            //    [ |   | ]
            //    [ |   +-]
            //    [-+     ]
            //    [   +---]
            //    [   |   ]
            //    ---------

            (*pfRegionNodes)[i++] = -2.5;
            (*pfRegionNodes)[i++] = 0.0;

            (*pfRegionNodes)[i++] = 0.0;
            (*pfRegionNodes)[i++] = -2.5;

            (*pfRegionNodes)[i++] = 2.5;
            (*pfRegionNodes)[i++] = 2.5;

            (*pfTileExits)[j++] = -2.5;
            (*pfTileExits)[j++] = 5.0;

            (*pfTileExits)[j++] = -5.0;
            (*pfTileExits)[j++] = 0.0;

            (*pfTileExits)[j++] = 0.0;
            (*pfTileExits)[j++] = -5.0;

            (*pfTileExits)[j++] = 5.0;
            (*pfTileExits)[j++] = -2.5;

            (*pfTileExits)[j++] = 5.0;
            (*pfTileExits)[j++] = 2.5;

            (*pfTileExits)[j++] = 2.5;
            (*pfTileExits)[j++] = 5.0;

            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 1;
            (*pnTileExitRegion)[k++] = 1;
            (*pnTileExitRegion)[k++] = 2;
            (*pnTileExitRegion)[k++] = 2;
        }
        break;
        case NWTILE_PATH_FINDING_TYPE_L:
        {
            //    ---------
            //    [   |   ]
            //    [   |   ]
            //    [   +   ]
            //    [   |   ]
            //    [   |   ]
            //    ---------

            (*pfRegionNodes)[i++] = 0.0;
            (*pfRegionNodes)[i++] = 0.0;

            (*pfTileExits)[j++] = 0.0;
            (*pfTileExits)[j++] = 5.0;

            (*pfTileExits)[j++] = 0.0;
            (*pfTileExits)[j++] = -5.0;

            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 0;
        }
        break;
        case NWTILE_PATH_FINDING_TYPE_M:
        {
            //    ---------
            //    [  | |  ]
            //    [  | |  ]
            //    [  + +  ]
            //    [  | |  ]
            //    [  | |  ]
            //    ---------

            (*pfRegionNodes)[i++] = -2.5;
            (*pfRegionNodes)[i++] = 0.0;

            (*pfRegionNodes)[i++] = 2.5;
            (*pfRegionNodes)[i++] = 0.0;

            (*pfTileExits)[j++] = -2.5;
            (*pfTileExits)[j++] = 5.0;

            (*pfTileExits)[j++] = -2.5;
            (*pfTileExits)[j++] = -5.0;

            (*pfTileExits)[j++] = 2.5;
            (*pfTileExits)[j++] = 5.0;

            (*pfTileExits)[j++] = 2.5;
            (*pfTileExits)[j++] = -5.0;

            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 0;

            (*pnTileExitRegion)[k++] = 1;
            (*pnTileExitRegion)[k++] = 1;
        }
        break;
        case NWTILE_PATH_FINDING_TYPE_N:
        {
            //    ---------
            //    [   |   ]
            //    [   |   ]
            //    [   +   ]
            //    [       ]
            //    [       ]
            //    ---------

            (*pfRegionNodes)[i++] = 0.0;
            (*pfRegionNodes)[i++] = 0.0;

            (*pfTileExits)[j++] = 0.0;
            (*pfTileExits)[j++] = 5.0;

            (*pnTileExitRegion)[k++] = 0;
        }
        break;
        case NWTILE_PATH_FINDING_TYPE_O:
        {
            //    ---------
            //    [ |   | ]
            //    [-+   /-]
            //    [   +   ]
            //    [-/   +-]
            //    [ |   | ]
            //    ---------

            (*pfRegionNodes)[i++] = -2.5;
            (*pfRegionNodes)[i++] = 2.5;

            (*pfRegionNodes)[i++] = 0;
            (*pfRegionNodes)[i++] = 0;

            (*pfRegionNodes)[i++] = 2.5;
            (*pfRegionNodes)[i++] = -2.5;

            (*pfTileExits)[j++] = -2.5;
            (*pfTileExits)[j++] = 5.0;

            (*pfTileExits)[j++] = -5.0;
            (*pfTileExits)[j++] = 2.5;

            (*pfTileExits)[j++] = -5.0;
            (*pfTileExits)[j++] = -2.5;

            (*pfTileExits)[j++] = -2.5;
            (*pfTileExits)[j++] = -5.0;

            (*pfTileExits)[j++] = 2.5;
            (*pfTileExits)[j++] = -5.0;

            (*pfTileExits)[j++] = 5.0;
            (*pfTileExits)[j++] = -2.5;

            (*pfTileExits)[j++] = 5.0;
            (*pfTileExits)[j++] = 2.5;

            (*pfTileExits)[j++] = 2.5;
            (*pfTileExits)[j++] = 5.0;

            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 1;
            (*pnTileExitRegion)[k++] = 1;
            (*pnTileExitRegion)[k++] = 2;
            (*pnTileExitRegion)[k++] = 2;
            (*pnTileExitRegion)[k++] = 1;
            (*pnTileExitRegion)[k++] = 1;
        }
        break;

        case NWTILE_PATH_FINDING_TYPE_P:
        {
            // Deleted tile
        }
        break;
        case NWTILE_PATH_FINDING_TYPE_Q:
        {
            //    ---------
            //    [ |   | ]
            //    [ |   | ]
            //    [-+  /--]
            //    [   +   ]
            //    [   |   ]
            //    ---------

            (*pfRegionNodes)[i++] = -2.5;
            (*pfRegionNodes)[i++] = 1.0;

            (*pfRegionNodes)[i++] = 0.0;
            (*pfRegionNodes)[i++] = 0.0;

            (*pfTileExits)[j++] = -2.5;
            (*pfTileExits)[j++] = 5.0;

            (*pfTileExits)[j++] = -5.0;
            (*pfTileExits)[j++] = 0.0;

            (*pfTileExits)[j++] = 0.0;
            (*pfTileExits)[j++] = -5.0;

            (*pfTileExits)[j++] = 5.0;
            (*pfTileExits)[j++] = 0.0;

            (*pfTileExits)[j++] = 2.5;
            (*pfTileExits)[j++] = 5.0;

            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 1;
            (*pnTileExitRegion)[k++] = 1;
            (*pnTileExitRegion)[k++] = 1;
        }
        break;

        case NWTILE_PATH_FINDING_TYPE_R:
        {
            //    ---------
            //    [   |   ]
            //    [   +   ]
            //    [-+  \--]
            //    [ |   | ]
            //    [ |   | ]
            //    ---------

            (*pfRegionNodes)[i++] = -2.5;
            (*pfRegionNodes)[i++] = 1.0;

            (*pfRegionNodes)[i++] = 0.0;
            (*pfRegionNodes)[i++] = 0.0;

            (*pfTileExits)[j++] = -2.5;
            (*pfTileExits)[j++] = -5.0;

            (*pfTileExits)[j++] = -5.0;
            (*pfTileExits)[j++] = 0.0;

            (*pfTileExits)[j++] = 0.0;
            (*pfTileExits)[j++] = 5.0;

            (*pfTileExits)[j++] = 5.0;
            (*pfTileExits)[j++] = 0.0;

            (*pfTileExits)[j++] = 2.5;
            (*pfTileExits)[j++] = -5.0;

            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 1;
            (*pnTileExitRegion)[k++] = 1;
            (*pnTileExitRegion)[k++] = 1;
        }
        break;

        case NWTILE_PATH_FINDING_TYPE_S:
        {
            //    ---------
            //    [ |   | ]
            //    [ |   | ]
            //    [-+   +-]
            //    [       ]
            //    [       ]
            //    ---------

            (*pfRegionNodes)[i++] = -2.5;
            (*pfRegionNodes)[i++] = 0.0;

            (*pfRegionNodes)[i++] = 2.5;
            (*pfRegionNodes)[i++] = 0.0;

            (*pfTileExits)[j++] = -2.5;
            (*pfTileExits)[j++] = 5.0;

            (*pfTileExits)[j++] = -5.0;
            (*pfTileExits)[j++] = 0.0;

            (*pfTileExits)[j++] = 2.5;
            (*pfTileExits)[j++] = 5.0;

            (*pfTileExits)[j++] = 5.0;
            (*pfTileExits)[j++] = 0.0;

            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 1;
            (*pnTileExitRegion)[k++] = 1;
        }
        break;

        case NWTILE_PATH_FINDING_TYPE_T:
        {
            //    ---------
            //    [       ]
            //    [       ]
            //    [       ]
            //    [       ]
            //    [       ]
            //    ---------
        }
        break;

        case NWTILE_PATH_FINDING_TYPE_U:
        {
            //    ---------
            //    [   |   ]
            //    [    \  ]
            //    [-+   +-]
            //    [    /  ]
            //    [   |   ]
            //    ---------
            (*pfRegionNodes)[i++] = -2.5;
            (*pfRegionNodes)[i++] = 0.0;

            (*pfRegionNodes)[i++] = 2.5;
            (*pfRegionNodes)[i++] = 0.0;

            (*pfTileExits)[j++] = -5.0;
            (*pfTileExits)[j++] = 0.0;

            (*pfTileExits)[j++] = 0.0;
            (*pfTileExits)[j++] = -5.0;

            (*pfTileExits)[j++] = 0.0;
            (*pfTileExits)[j++] = 5.0;

            (*pfTileExits)[j++] = 5.0;
            (*pfTileExits)[j++] = 0.0;

            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 1;
            (*pnTileExitRegion)[k++] = 1;
            (*pnTileExitRegion)[k++] = 1;
        }
        break;

        case NWTILE_PATH_FINDING_TYPE_V:
        {
            //    ---------
            //    [   |   ]
            //    [   +   ]
            //    [     --]
            //    [    /  ]
            //    [   |   ]
            //    ---------
            (*pfRegionNodes)[i++] = 0.0;
            (*pfRegionNodes)[i++] = 2.5;

            (*pfRegionNodes)[i++] = 0.0;
            (*pfRegionNodes)[i++] = -1.25;

            (*pfTileExits)[j++] = 0.0;
            (*pfTileExits)[j++] = 5.0;

            (*pfTileExits)[j++] = 0.0;
            (*pfTileExits)[j++] = -5.0;

            (*pfTileExits)[j++] = 5.0;
            (*pfTileExits)[j++] = 0.0;

            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 1;
            (*pnTileExitRegion)[k++] = 1;
        }
        break;

        case NWTILE_PATH_FINDING_TYPE_W:
        {
            //    ---------
            //    [   |   ]
            //    [   +   ]
            //    [--     ]
            //    [  \    ]
            //    [   |   ]
            //    ---------
            (*pfRegionNodes)[i++] = 0.0;
            (*pfRegionNodes)[i++] = 2.5;

            (*pfRegionNodes)[i++] = 0.0;
            (*pfRegionNodes)[i++] = -1.25;

            (*pfTileExits)[j++] = 0.0;
            (*pfTileExits)[j++] = 5.0;

            (*pfTileExits)[j++] = 0.0;
            (*pfTileExits)[j++] = -5.0;

            (*pfTileExits)[j++] = -5.0;
            (*pfTileExits)[j++] = 0.0;

            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 1;
            (*pnTileExitRegion)[k++] = 1;
        }
        break;

        case NWTILE_PATH_FINDING_TYPE_X:
        {
            //    ---------
            //    [   |   ]
            //    [   +   ]
            //    [-+     ]
            //    [       ]
            //    [       ]
            //    ---------
            (*pfRegionNodes)[i++] = 0.0;
            (*pfRegionNodes)[i++] = 2.5;

            (*pfRegionNodes)[i++] = -2.5;
            (*pfRegionNodes)[i++] = 0.0;

            (*pfTileExits)[j++] = 0.0;
            (*pfTileExits)[j++] = 5.0;

            (*pfTileExits)[j++] = -5.0;
            (*pfTileExits)[j++] = 0.0;

            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 1;
        }
        break;

        case NWTILE_PATH_FINDING_TYPE_Y:
        {
            //    ---------
            //    [   |   ]
            //    [   +   ]
            //    [       ]
            //    [   +   ]
            //    [   |   ]
            //    ---------
            (*pfRegionNodes)[i++] = 0.0;
            (*pfRegionNodes)[i++] = 2.5;

            (*pfRegionNodes)[i++] = 0.0;
            (*pfRegionNodes)[i++] = -2.5;

            (*pfTileExits)[j++] = 0.0;
            (*pfTileExits)[j++] = 5.0;

            (*pfTileExits)[j++] = 0.0;
            (*pfTileExits)[j++] = -5.0;

            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 1;
        }
        break;

        case NWTILE_PATH_FINDING_TYPE_Z:
        {
            //    ---------
            //    [   |   ]
            //    [---+   ]
            //    [   +-+-]
            //    [-+/  | ]
            //    [ |   | ]
            //    ---------

            (*pfRegionNodes)[i++] = 0.0;
            (*pfRegionNodes)[i++] = 0.0;

            (*pfTileExits)[j++] = -5.0;
            (*pfTileExits)[j++] = 2.5;

            (*pfTileExits)[j++] = -5.0;
            (*pfTileExits)[j++] = -2.5;

            (*pfTileExits)[j++] = -2.5;
            (*pfTileExits)[j++] = -5.0;

            (*pfTileExits)[j++] = 2.5;
            (*pfTileExits)[j++] = -5.0;

            (*pfTileExits)[j++] = 5.0;
            (*pfTileExits)[j++] = 0.0;

            (*pfTileExits)[j++] = 0.0;
            (*pfTileExits)[j++] = 5.0;

            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 0;
        }
        break;

        case NWTILE_PATH_FINDING_TYPE_a:
        {
            //    ---------
            //    [  | |  ]
            //    [  | +  ]
            //    [--+++--]
            //    [   |   ]
            //    [   |   ]
            //    ---------
            (*pfRegionNodes)[i++] = 0.0;
            (*pfRegionNodes)[i++] = 0.0;

            (*pfRegionNodes)[i++] = 2.5;
            (*pfRegionNodes)[i++] = 2.5;

            (*pfTileExits)[j++] = -2.5;
            (*pfTileExits)[j++] = 5.0;

            (*pfTileExits)[j++] = -5.0;
            (*pfTileExits)[j++] = 0.0;

            (*pfTileExits)[j++] = 0.0;
            (*pfTileExits)[j++] = -5.0;

            (*pfTileExits)[j++] = 5.0;
            (*pfTileExits)[j++] = 0.0;

            (*pfTileExits)[j++] = 2.5;
            (*pfTileExits)[j++] = 5.0;

            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 1;
        }
        break;

        case NWTILE_PATH_FINDING_TYPE_b:
        {
            //    ---------
            //    [  | |  ]
            //    [  + |  ]
            //    [--+++--]
            //    [   |   ]
            //    [   |   ]
            //    ---------

            (*pfRegionNodes)[i++] = -2.5;
            (*pfRegionNodes)[i++] = 2.5;

            (*pfRegionNodes)[i++] = 0.0;
            (*pfRegionNodes)[i++] = 0.0;

            (*pfTileExits)[j++] = -2.5;
            (*pfTileExits)[j++] = 5.0;

            (*pfTileExits)[j++] = -5.0;
            (*pfTileExits)[j++] = 0.0;

            (*pfTileExits)[j++] = 0.0;
            (*pfTileExits)[j++] = -5.0;

            (*pfTileExits)[j++] = 5.0;
            (*pfTileExits)[j++] = 0.0;

            (*pfTileExits)[j++] = 2.5;
            (*pfTileExits)[j++] = 5.0;

            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 1;
            (*pnTileExitRegion)[k++] = 1;
            (*pnTileExitRegion)[k++] = 1;
            (*pnTileExitRegion)[k++] = 1;
        }
        break;

        case NWTILE_PATH_FINDING_TYPE_c:
        {
            //    ---------
            //    [ | | | ]
            //    [ | | | ]
            //    [-+-+-+-]
            //    [   |   ]
            //    [   |   ]
            //    ---------
            (*pfRegionNodes)[i++] = 0.0;
            (*pfRegionNodes)[i++] = 0.0;

            (*pfTileExits)[j++] = -4.0;
            (*pfTileExits)[j++] = 5.0;

            (*pfTileExits)[j++] = -5.0;
            (*pfTileExits)[j++] = 0.0;

            (*pfTileExits)[j++] = 0.0;
            (*pfTileExits)[j++] = -5.0;

            (*pfTileExits)[j++] = 5.0;
            (*pfTileExits)[j++] = 0.0;

            (*pfTileExits)[j++] = 4.0;
            (*pfTileExits)[j++] = 5.0;

            (*pfTileExits)[j++] = 0.0;
            (*pfTileExits)[j++] = 5.0;

            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 0;
        }
        break;

        case NWTILE_PATH_FINDING_TYPE_d:
        {
            //    ---------
            //    [ | | | ]
            //    [ | + | ]
            //    [-+   +-]
            //    [  \ /  ]
            //    [   |   ]
            //    ---------
            (*pfRegionNodes)[i++] = 0.0;
            (*pfRegionNodes)[i++] = 0.0;

            (*pfRegionNodes)[i++] = 0.0;
            (*pfRegionNodes)[i++] = 4.0;

            (*pfTileExits)[j++] = -4.0;
            (*pfTileExits)[j++] = 5.0;

            (*pfTileExits)[j++] = -5.0;
            (*pfTileExits)[j++] = 0.0;

            (*pfTileExits)[j++] = 0.0;
            (*pfTileExits)[j++] = -5.0;

            (*pfTileExits)[j++] = 5.0;
            (*pfTileExits)[j++] = 0.0;

            (*pfTileExits)[j++] = 4.0;
            (*pfTileExits)[j++] = 5.0;

            (*pfTileExits)[j++] = 0.0;
            (*pfTileExits)[j++] = 5.0;

            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 1;
        }
        break;

        case NWTILE_PATH_FINDING_TYPE_e:
        {
            //    ---------
            //    [   |   ]
            //    [---+-+ ]
            //    [---  +-]
            //    [-+ | | ]
            //    [ | | | ]
            //    ---------
            (*pfRegionNodes)[i++] = 4.0;
            (*pfRegionNodes)[i++] = 4.0;

            (*pfRegionNodes)[i++] = 0.0;
            (*pfRegionNodes)[i++] = 0.0;

            (*pfRegionNodes)[i++] = -4.0;
            (*pfRegionNodes)[i++] = -4.0;

            (*pfTileExits)[j++] = 0.0;
            (*pfTileExits)[j++] = 5.0;

            (*pfTileExits)[j++] = -5.0;
            (*pfTileExits)[j++] = 4.0;

            (*pfTileExits)[j++] = -5.0;
            (*pfTileExits)[j++] = 0.0;

            (*pfTileExits)[j++] = -5.0;
            (*pfTileExits)[j++] = -4.0;

            (*pfTileExits)[j++] = -4.0;
            (*pfTileExits)[j++] = -5.0;

            (*pfTileExits)[j++] = 0.0;
            (*pfTileExits)[j++] = -5.0;

            (*pfTileExits)[j++] = 4.0;
            (*pfTileExits)[j++] = -5.0;

            (*pfTileExits)[j++] = 5.0;
            (*pfTileExits)[j++] = 0.0;

            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 1;
            (*pnTileExitRegion)[k++] = 2;
            (*pnTileExitRegion)[k++] = 2;
            (*pnTileExitRegion)[k++] = 1;
            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 0;
        }
        break;
        case NWTILE_PATH_FINDING_TYPE_f:
        {
            //    ---------
            //    [ | | | ]
            //    [ | | | ]
            //    [-+ + +-]
            //    [ | | | ]
            //    [ | | | ]
            //    ---------
            (*pfRegionNodes)[i++] = 4.0;
            (*pfRegionNodes)[i++] = 0.0;

            (*pfRegionNodes)[i++] = 0.0;
            (*pfRegionNodes)[i++] = 0.0;

            (*pfRegionNodes)[i++] = -4.0;
            (*pfRegionNodes)[i++] = 0.0;

            (*pfTileExits)[j++] = -4.0;
            (*pfTileExits)[j++] = 5.0;

            (*pfTileExits)[j++] = -5.0;
            (*pfTileExits)[j++] = 0.0;

            (*pfTileExits)[j++] = -4.0;
            (*pfTileExits)[j++] = -5.0;

            (*pfTileExits)[j++] = 0.0;
            (*pfTileExits)[j++] = -5.0;

            (*pfTileExits)[j++] = 4.0;
            (*pfTileExits)[j++] = -5.0;

            (*pfTileExits)[j++] = 5.0;
            (*pfTileExits)[j++] = 0.0;

            (*pfTileExits)[j++] = 4.0;
            (*pfTileExits)[j++] = 5.0;

            (*pfTileExits)[j++] = 0.0;
            (*pfTileExits)[j++] = 5.0;

            (*pnTileExitRegion)[k++] = 2;
            (*pnTileExitRegion)[k++] = 2;
            (*pnTileExitRegion)[k++] = 2;
            (*pnTileExitRegion)[k++] = 1;
            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 1;
        }
        break;
        case NWTILE_PATH_FINDING_TYPE_g:
        {
            //    ---------
            //    [ | | | ]
            //    [ | | | ]
            //    [-+-+ +-]
            //    [ | | | ]
            //    [ | | | ]
            //    ---------
            (*pfRegionNodes)[i++] = 4.0;
            (*pfRegionNodes)[i++] = 0.0;

            (*pfRegionNodes)[i++] = -4.0;
            (*pfRegionNodes)[i++] = 0.0;

            (*pfTileExits)[j++] = -4.0;
            (*pfTileExits)[j++] = 5.0;

            (*pfTileExits)[j++] = -5.0;
            (*pfTileExits)[j++] = 0.0;

            (*pfTileExits)[j++] = -4.0;
            (*pfTileExits)[j++] = -5.0;

            (*pfTileExits)[j++] = 0.0;
            (*pfTileExits)[j++] = -5.0;

            (*pfTileExits)[j++] = 4.0;
            (*pfTileExits)[j++] = -5.0;

            (*pfTileExits)[j++] = 5.0;
            (*pfTileExits)[j++] = 0.0;

            (*pfTileExits)[j++] = 4.0;
            (*pfTileExits)[j++] = 5.0;

            (*pfTileExits)[j++] = 0.0;
            (*pfTileExits)[j++] = 5.0;

            (*pnTileExitRegion)[k++] = 1;
            (*pnTileExitRegion)[k++] = 1;
            (*pnTileExitRegion)[k++] = 1;
            (*pnTileExitRegion)[k++] = 1;
            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 1;
        }
        break;
        case NWTILE_PATH_FINDING_TYPE_h:
        {
            // Similar to NWTILE_PATH_FINDING_TYPE_e only with two of the areas connected.
            //    ---------
            //    [   |   ]
            //    [---+-+ ]
            //    [----/+-]
            //    [-+ | | ]
            //    [ | | | ]
            //    ---------
            (*pfRegionNodes)[i++] = 4.0;
            (*pfRegionNodes)[i++] = 4.0;

            (*pfRegionNodes)[i++] = -4.0;
            (*pfRegionNodes)[i++] = -4.0;

            (*pfTileExits)[j++] = 0.0;
            (*pfTileExits)[j++] = 5.0;

            (*pfTileExits)[j++] = -5.0;
            (*pfTileExits)[j++] = 4.0;

            (*pfTileExits)[j++] = -5.0;
            (*pfTileExits)[j++] = 0.0;

            (*pfTileExits)[j++] = -5.0;
            (*pfTileExits)[j++] = -4.0;

            (*pfTileExits)[j++] = -4.0;
            (*pfTileExits)[j++] = -5.0;

            (*pfTileExits)[j++] = 0.0;
            (*pfTileExits)[j++] = -5.0;

            (*pfTileExits)[j++] = 4.0;
            (*pfTileExits)[j++] = -5.0;

            (*pfTileExits)[j++] = 5.0;
            (*pfTileExits)[j++] = 0.0;

            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 1;
            (*pnTileExitRegion)[k++] = 1;
            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 0;
        }
        break;
        case NWTILE_PATH_FINDING_TYPE_i:
        {
            //    ---------
            //    [---+---]
            //    [   |   ]
            //    [-+ | +-]
            //    [   |   ]
            //    [---+---]
            //    ---------
            (*pfRegionNodes)[i++] = 4.0;
            (*pfRegionNodes)[i++] = 0.0;

            (*pfRegionNodes)[i++] = 0.0;
            (*pfRegionNodes)[i++] = 0.0;

            (*pfRegionNodes)[i++] = -4.0;
            (*pfRegionNodes)[i++] = 0.0;

            (*pfTileExits)[j++] = 0.0;
            (*pfTileExits)[j++] = 5.0;

            (*pfTileExits)[j++] = -5.0;
            (*pfTileExits)[j++] = 4.0;

            (*pfTileExits)[j++] = -5.0;
            (*pfTileExits)[j++] = 0.0;

            (*pfTileExits)[j++] = -5.0;
            (*pfTileExits)[j++] = -4.0;

            (*pfTileExits)[j++] = 0.0;
            (*pfTileExits)[j++] = -5.0;

            (*pfTileExits)[j++] = 5.0;
            (*pfTileExits)[j++] = -4.0;

            (*pfTileExits)[j++] = 5.0;
            (*pfTileExits)[j++] = 0.0;

            (*pfTileExits)[j++] = 5.0;
            (*pfTileExits)[j++] = 4.0;

            (*pnTileExitRegion)[k++] = 1;
            (*pnTileExitRegion)[k++] = 1;
            (*pnTileExitRegion)[k++] = 2;
            (*pnTileExitRegion)[k++] = 1;
            (*pnTileExitRegion)[k++] = 1;
            (*pnTileExitRegion)[k++] = 1;
            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 1;
        }
        break;
        case NWTILE_PATH_FINDING_TYPE_j:
        {
            //    ---------
            //    [---+---]
            //    [       ]
            //    [-+   +-]
            //    [       ]
            //    [---+---]
            //    ---------
            (*pfRegionNodes)[i++] = 4.0;
            (*pfRegionNodes)[i++] = 0.0;

            (*pfRegionNodes)[i++] = 0.0;
            (*pfRegionNodes)[i++] = 4.0;

            (*pfRegionNodes)[i++] = -4.0;
            (*pfRegionNodes)[i++] = 0.0;

            (*pfRegionNodes)[i++] = 0.0;
            (*pfRegionNodes)[i++] = -4.0;

            (*pfTileExits)[j++] = 0.0;
            (*pfTileExits)[j++] = 5.0;

            (*pfTileExits)[j++] = -5.0;
            (*pfTileExits)[j++] = 4.0;

            (*pfTileExits)[j++] = -5.0;
            (*pfTileExits)[j++] = 0.0;

            (*pfTileExits)[j++] = -5.0;
            (*pfTileExits)[j++] = -4.0;

            (*pfTileExits)[j++] = 0.0;
            (*pfTileExits)[j++] = -5.0;

            (*pfTileExits)[j++] = 5.0;
            (*pfTileExits)[j++] = -4.0;

            (*pfTileExits)[j++] = 5.0;
            (*pfTileExits)[j++] = 0.0;

            (*pfTileExits)[j++] = 5.0;
            (*pfTileExits)[j++] = 4.0;

            (*pnTileExitRegion)[k++] = 1;
            (*pnTileExitRegion)[k++] = 1;
            (*pnTileExitRegion)[k++] = 2;
            (*pnTileExitRegion)[k++] = 3;
            (*pnTileExitRegion)[k++] = 3;
            (*pnTileExitRegion)[k++] = 3;
            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 1;
        }
        break;
        case NWTILE_PATH_FINDING_TYPE_k:
        {
            //    ---------
            //    [ | | | ]
            //    [-+ | | ]
            //    [---+ +-]
            //    [-+ | | ]
            //    [ | | | ]
            //    ---------
            (*pfRegionNodes)[i++] = 4.0;
            (*pfRegionNodes)[i++] = 0.0;

            (*pfRegionNodes)[i++] = 0.0;
            (*pfRegionNodes)[i++] = 0.0;

            (*pfRegionNodes)[i++] = -4.0;
            (*pfRegionNodes)[i++] = 4.0;

            (*pfRegionNodes)[i++] = -4.0;
            (*pfRegionNodes)[i++] = -4.0;

            (*pfTileExits)[j++] = -4.0;
            (*pfTileExits)[j++] = 5.0;

            (*pfTileExits)[j++] = -5.0;
            (*pfTileExits)[j++] = 4.0;

            (*pfTileExits)[j++] = -5.0;
            (*pfTileExits)[j++] = 0.0;

            (*pfTileExits)[j++] = -5.0;
            (*pfTileExits)[j++] = -4.0;

            (*pfTileExits)[j++] = -4.0;
            (*pfTileExits)[j++] = -5.0;

            (*pfTileExits)[j++] = 0.0;
            (*pfTileExits)[j++] = -5.0;

            (*pfTileExits)[j++] = 4.0;
            (*pfTileExits)[j++] = -5.0;

            (*pfTileExits)[j++] = 5.0;
            (*pfTileExits)[j++] = 0.0;

            (*pfTileExits)[j++] = 4.0;
            (*pfTileExits)[j++] = 5.0;

            (*pfTileExits)[j++] = 0.0;
            (*pfTileExits)[j++] = 5.0;

            (*pnTileExitRegion)[k++] = 2;
            (*pnTileExitRegion)[k++] = 2;
            (*pnTileExitRegion)[k++] = 1;
            (*pnTileExitRegion)[k++] = 3;
            (*pnTileExitRegion)[k++] = 3;
            (*pnTileExitRegion)[k++] = 1;
            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 1;
        }
        break;
        case NWTILE_PATH_FINDING_TYPE_l:
        {
            //    ---------
            //    [ | | | ]
            //    [-+ | +-]
            //    [---+---]
            //    [-+ | +-]
            //    [ | | | ]
            //    ---------
            (*pfRegionNodes)[i++] = 0.0;
            (*pfRegionNodes)[i++] = 0.0;

            (*pfRegionNodes)[i++] = 4.0;
            (*pfRegionNodes)[i++] = 4.0;

            (*pfRegionNodes)[i++] = -4.0;
            (*pfRegionNodes)[i++] = 4.0;

            (*pfRegionNodes)[i++] = -4.0;
            (*pfRegionNodes)[i++] = -4.0;

            (*pfRegionNodes)[i++] = 4.0;
            (*pfRegionNodes)[i++] = -4.0;

            (*pfTileExits)[j++] = -4.0;
            (*pfTileExits)[j++] = 5.0;

            (*pfTileExits)[j++] = -5.0;
            (*pfTileExits)[j++] = 4.0;

            (*pfTileExits)[j++] = -5.0;
            (*pfTileExits)[j++] = 0.0;

            (*pfTileExits)[j++] = -5.0;
            (*pfTileExits)[j++] = -4.0;

            (*pfTileExits)[j++] = -4.0;
            (*pfTileExits)[j++] = -5.0;

            (*pfTileExits)[j++] = 0.0;
            (*pfTileExits)[j++] = -5.0;

            (*pfTileExits)[j++] = 4.0;
            (*pfTileExits)[j++] = -5.0;

            (*pfTileExits)[j++] = 5.0;
            (*pfTileExits)[j++] = -4.0;

            (*pfTileExits)[j++] = 5.0;
            (*pfTileExits)[j++] = 0.0;

            (*pfTileExits)[j++] = 5.0;
            (*pfTileExits)[j++] = 4.0;

            (*pfTileExits)[j++] = 4.0;
            (*pfTileExits)[j++] = 5.0;

            (*pfTileExits)[j++] = 0.0;
            (*pfTileExits)[j++] = 5.0;

            (*pnTileExitRegion)[k++] = 2;
            (*pnTileExitRegion)[k++] = 2;
            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 3;
            (*pnTileExitRegion)[k++] = 3;
            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 4;
            (*pnTileExitRegion)[k++] = 4;
            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 1;
            (*pnTileExitRegion)[k++] = 1;
            (*pnTileExitRegion)[k++] = 0;
        }
        break;

        case NWTILE_PATH_FINDING_TYPE_m:
        {
            //    ---------
            //    [ | | | ]
            //    [-+ | +-]
            //    [   +   ]
            //    [-+ | +-]
            //    [ | | | ]
            //    ---------
            (*pfRegionNodes)[i++] = 0.0;
            (*pfRegionNodes)[i++] = 0.0;

            (*pfRegionNodes)[i++] = 4.0;
            (*pfRegionNodes)[i++] = 4.0;

            (*pfRegionNodes)[i++] = -4.0;
            (*pfRegionNodes)[i++] = 4.0;

            (*pfRegionNodes)[i++] = -4.0;
            (*pfRegionNodes)[i++] = -4.0;

            (*pfRegionNodes)[i++] = 4.0;
            (*pfRegionNodes)[i++] = -4.0;

            (*pfTileExits)[j++] = -4.0;
            (*pfTileExits)[j++] = 5.0;

            (*pfTileExits)[j++] = -5.0;
            (*pfTileExits)[j++] = 4.0;

            (*pfTileExits)[j++] = -5.0;
            (*pfTileExits)[j++] = -4.0;

            (*pfTileExits)[j++] = -4.0;
            (*pfTileExits)[j++] = -5.0;

            (*pfTileExits)[j++] = 0.0;
            (*pfTileExits)[j++] = -5.0;

            (*pfTileExits)[j++] = 4.0;
            (*pfTileExits)[j++] = -5.0;

            (*pfTileExits)[j++] = 5.0;
            (*pfTileExits)[j++] = -4.0;

            (*pfTileExits)[j++] = 5.0;
            (*pfTileExits)[j++] = 4.0;

            (*pfTileExits)[j++] = 4.0;
            (*pfTileExits)[j++] = 5.0;

            (*pfTileExits)[j++] = 0.0;
            (*pfTileExits)[j++] = 5.0;

            (*pnTileExitRegion)[k++] = 2;
            (*pnTileExitRegion)[k++] = 2;
            (*pnTileExitRegion)[k++] = 3;
            (*pnTileExitRegion)[k++] = 3;
            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 4;
            (*pnTileExitRegion)[k++] = 4;
            (*pnTileExitRegion)[k++] = 1;
            (*pnTileExitRegion)[k++] = 1;
            (*pnTileExitRegion)[k++] = 0;
        }
        break;

        case NWTILE_PATH_FINDING_TYPE_n:
        {
            //    ---------
            //    [ | | | ]
            //    [-+ + +-]
            //    [       ]
            //    [-+ + +-]
            //    [ | | | ]
            //    ---------
            (*pfRegionNodes)[i++] = 0.0;
            (*pfRegionNodes)[i++] = 4.0;

            (*pfRegionNodes)[i++] = 4.0;
            (*pfRegionNodes)[i++] = 4.0;

            (*pfRegionNodes)[i++] = -4.0;
            (*pfRegionNodes)[i++] = 4.0;

            (*pfRegionNodes)[i++] = -4.0;
            (*pfRegionNodes)[i++] = -4.0;

            (*pfRegionNodes)[i++] = 0.0;
            (*pfRegionNodes)[i++] = -4.0;

            (*pfRegionNodes)[i++] = 4.0;
            (*pfRegionNodes)[i++] = -4.0;

            (*pfTileExits)[j++] = -4.0;
            (*pfTileExits)[j++] = 5.0;

            (*pfTileExits)[j++] = -5.0;
            (*pfTileExits)[j++] = 4.0;

            (*pfTileExits)[j++] = -5.0;
            (*pfTileExits)[j++] = -4.0;

            (*pfTileExits)[j++] = -4.0;
            (*pfTileExits)[j++] = -5.0;

            (*pfTileExits)[j++] = 0.0;
            (*pfTileExits)[j++] = -5.0;

            (*pfTileExits)[j++] = 4.0;
            (*pfTileExits)[j++] = -5.0;

            (*pfTileExits)[j++] = 5.0;
            (*pfTileExits)[j++] = -4.0;

            (*pfTileExits)[j++] = 5.0;
            (*pfTileExits)[j++] = 4.0;

            (*pfTileExits)[j++] = 4.0;
            (*pfTileExits)[j++] = 5.0;

            (*pfTileExits)[j++] = 0.0;
            (*pfTileExits)[j++] = 5.0;

            (*pnTileExitRegion)[k++] = 2;
            (*pnTileExitRegion)[k++] = 2;
            (*pnTileExitRegion)[k++] = 3;
            (*pnTileExitRegion)[k++] = 3;
            (*pnTileExitRegion)[k++] = 4;
            (*pnTileExitRegion)[k++] = 5;
            (*pnTileExitRegion)[k++] = 5;
            (*pnTileExitRegion)[k++] = 1;
            (*pnTileExitRegion)[k++] = 1;
            (*pnTileExitRegion)[k++] = 0;
        }
        break;

        case NWTILE_PATH_FINDING_TYPE_o:
        {
            //    ---------
            //    [ | | | ]
            //    [-+ | | ]
            //    [   + +-]
            //    [-+ | | ]
            //    [ | | | ]
            //    ---------
            (*pfRegionNodes)[i++] = 4.0;
            (*pfRegionNodes)[i++] = 0.0;

            (*pfRegionNodes)[i++] = 0.0;
            (*pfRegionNodes)[i++] = 0.0;

            (*pfRegionNodes)[i++] = -4.0;
            (*pfRegionNodes)[i++] = 4.0;

            (*pfRegionNodes)[i++] = -4.0;
            (*pfRegionNodes)[i++] = -4.0;

            (*pfTileExits)[j++] = -4.0;
            (*pfTileExits)[j++] = 5.0;

            (*pfTileExits)[j++] = -5.0;
            (*pfTileExits)[j++] = 4.0;

            (*pfTileExits)[j++] = -5.0;
            (*pfTileExits)[j++] = -4.0;

            (*pfTileExits)[j++] = -4.0;
            (*pfTileExits)[j++] = -5.0;

            (*pfTileExits)[j++] = 0.0;
            (*pfTileExits)[j++] = -5.0;

            (*pfTileExits)[j++] = 4.0;
            (*pfTileExits)[j++] = -5.0;

            (*pfTileExits)[j++] = 5.0;
            (*pfTileExits)[j++] = 0.0;

            (*pfTileExits)[j++] = 4.0;
            (*pfTileExits)[j++] = 5.0;

            (*pfTileExits)[j++] = 0.0;
            (*pfTileExits)[j++] = 5.0;

            (*pnTileExitRegion)[k++] = 2;
            (*pnTileExitRegion)[k++] = 2;
            (*pnTileExitRegion)[k++] = 3;
            (*pnTileExitRegion)[k++] = 3;
            (*pnTileExitRegion)[k++] = 1;
            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 1;
        }
        break;

        case NWTILE_PATH_FINDING_TYPE_p:
        {
            //    ---------
            //    [ |   | ]
            //    [-+   | ]
            //    [-+   +-]
            //    [-+   | ]
            //    [ |   | ]
            //    ---------
            (*pfRegionNodes)[i++] = 4.0;
            (*pfRegionNodes)[i++] = 0.0;

            (*pfRegionNodes)[i++] = -4.0;
            (*pfRegionNodes)[i++] = 0.0;

            (*pfRegionNodes)[i++] = -4.0;
            (*pfRegionNodes)[i++] = 4.0;

            (*pfRegionNodes)[i++] = -4.0;
            (*pfRegionNodes)[i++] = -4.0;

            (*pfTileExits)[j++] = -4.0;
            (*pfTileExits)[j++] = 5.0;

            (*pfTileExits)[j++] = -5.0;
            (*pfTileExits)[j++] = 4.0;

            (*pfTileExits)[j++] = -5.0;
            (*pfTileExits)[j++] = 0.0;

            (*pfTileExits)[j++] = -5.0;
            (*pfTileExits)[j++] = -4.0;

            (*pfTileExits)[j++] = -4.0;
            (*pfTileExits)[j++] = -5.0;

            (*pfTileExits)[j++] = 4.0;
            (*pfTileExits)[j++] = -5.0;

            (*pfTileExits)[j++] = 5.0;
            (*pfTileExits)[j++] = 0.0;

            (*pfTileExits)[j++] = 4.0;
            (*pfTileExits)[j++] = 5.0;

            (*pnTileExitRegion)[k++] = 2;
            (*pnTileExitRegion)[k++] = 2;
            (*pnTileExitRegion)[k++] = 1;
            (*pnTileExitRegion)[k++] = 3;
            (*pnTileExitRegion)[k++] = 3;
            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 0;
        }
        break;

        case NWTILE_PATH_FINDING_TYPE_q:
        {
            //    ---------
            //    [ |   | ]
            //    [-+   | ]
            //    [-----+-]
            //    [-+   | ]
            //    [ |   | ]
            //    ---------
            (*pfRegionNodes)[i++] = 4.0;
            (*pfRegionNodes)[i++] = 0.0;

            (*pfRegionNodes)[i++] = -4.0;
            (*pfRegionNodes)[i++] = 4.0;

            (*pfRegionNodes)[i++] = -4.0;
            (*pfRegionNodes)[i++] = -4.0;

            (*pfTileExits)[j++] = -4.0;
            (*pfTileExits)[j++] = 5.0;

            (*pfTileExits)[j++] = -5.0;
            (*pfTileExits)[j++] = 4.0;

            (*pfTileExits)[j++] = -5.0;
            (*pfTileExits)[j++] = 0.0;

            (*pfTileExits)[j++] = -5.0;
            (*pfTileExits)[j++] = -4.0;

            (*pfTileExits)[j++] = -4.0;
            (*pfTileExits)[j++] = -5.0;

            (*pfTileExits)[j++] = 4.0;
            (*pfTileExits)[j++] = -5.0;

            (*pfTileExits)[j++] = 5.0;
            (*pfTileExits)[j++] = 0.0;

            (*pfTileExits)[j++] = 4.0;
            (*pfTileExits)[j++] = 5.0;

            (*pnTileExitRegion)[k++] = 1;
            (*pnTileExitRegion)[k++] = 1;
            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 2;
            (*pnTileExitRegion)[k++] = 2;
            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 0;
        }
        break;

        case NWTILE_PATH_FINDING_TYPE_r:
        {
            //    ---------
            //    [ | | | ]
            //    [-+ + +-]
            //    [-+   +-]
            //    [-+ + +-]
            //    [ | | | ]
            //    ---------
            (*pfRegionNodes)[i++] = -4.0;
            (*pfRegionNodes)[i++] = 4.0;

            (*pfRegionNodes)[i++] = -5.0;
            (*pfRegionNodes)[i++] = 0.0;

            (*pfRegionNodes)[i++] = -4.0;
            (*pfRegionNodes)[i++] = -4.0;

            (*pfRegionNodes)[i++] = 0.0;
            (*pfRegionNodes)[i++] = -5.0;

            (*pfRegionNodes)[i++] = 4.0;
            (*pfRegionNodes)[i++] = -4.0;

            (*pfRegionNodes)[i++] = 5.0;
            (*pfRegionNodes)[i++] = 0.0;

            (*pfRegionNodes)[i++] = 4.0;
            (*pfRegionNodes)[i++] = 4.0;

            (*pfRegionNodes)[i++] = 0.0;
            (*pfRegionNodes)[i++] = 5.0;

            (*pfTileExits)[j++] = -4.0;
            (*pfTileExits)[j++] = 5.0;

            (*pfTileExits)[j++] = -5.0;
            (*pfTileExits)[j++] = 4.0;

            (*pfTileExits)[j++] = -5.0;
            (*pfTileExits)[j++] = 0.0;

            (*pfTileExits)[j++] = -5.0;
            (*pfTileExits)[j++] = -4.0;

            (*pfTileExits)[j++] = -4.0;
            (*pfTileExits)[j++] = -5.0;

            (*pfTileExits)[j++] = 0.0;
            (*pfTileExits)[j++] = -5.0;

            (*pfTileExits)[j++] = 4.0;
            (*pfTileExits)[j++] = -5.0;

            (*pfTileExits)[j++] = 5.0;
            (*pfTileExits)[j++] = -4.0;

            (*pfTileExits)[j++] = 5.0;
            (*pfTileExits)[j++] = 0.0;

            (*pfTileExits)[j++] = 5.0;
            (*pfTileExits)[j++] = 4.0;

            (*pfTileExits)[j++] = 4.0;
            (*pfTileExits)[j++] = 5.0;

            (*pfTileExits)[j++] = 0.0;
            (*pfTileExits)[j++] = 5.0;

            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 1;
            (*pnTileExitRegion)[k++] = 2;
            (*pnTileExitRegion)[k++] = 2;
            (*pnTileExitRegion)[k++] = 3;
            (*pnTileExitRegion)[k++] = 4;
            (*pnTileExitRegion)[k++] = 4;
            (*pnTileExitRegion)[k++] = 5;
            (*pnTileExitRegion)[k++] = 6;
            (*pnTileExitRegion)[k++] = 6;
            (*pnTileExitRegion)[k++] = 7;
        }
        break;

        case NWTILE_PATH_FINDING_TYPE_s:
        {
            //    ---------
            //    [ |   | ]
            //    [-+   +-]
            //    [-+   +-]
            //    [-+ + +-]
            //    [ | | | ]
            //    ---------
            (*pfRegionNodes)[i++] = -4.0;
            (*pfRegionNodes)[i++] = 4.0;

            (*pfRegionNodes)[i++] = -5.0;
            (*pfRegionNodes)[i++] = 0.0;

            (*pfRegionNodes)[i++] = -4.0;
            (*pfRegionNodes)[i++] = -4.0;

            (*pfRegionNodes)[i++] = 0.0;
            (*pfRegionNodes)[i++] = -5.0;

            (*pfRegionNodes)[i++] = 4.0;
            (*pfRegionNodes)[i++] = -4.0;

            (*pfRegionNodes)[i++] = 5.0;
            (*pfRegionNodes)[i++] = 0.0;

            (*pfRegionNodes)[i++] = 4.0;
            (*pfRegionNodes)[i++] = 4.0;

            (*pfTileExits)[j++] = -4.0;
            (*pfTileExits)[j++] = 5.0;

            (*pfTileExits)[j++] = -5.0;
            (*pfTileExits)[j++] = 4.0;

            (*pfTileExits)[j++] = -5.0;
            (*pfTileExits)[j++] = 0.0;

            (*pfTileExits)[j++] = -5.0;
            (*pfTileExits)[j++] = -4.0;

            (*pfTileExits)[j++] = -4.0;
            (*pfTileExits)[j++] = -5.0;

            (*pfTileExits)[j++] = 0.0;
            (*pfTileExits)[j++] = -5.0;

            (*pfTileExits)[j++] = 4.0;
            (*pfTileExits)[j++] = -5.0;

            (*pfTileExits)[j++] = 5.0;
            (*pfTileExits)[j++] = -4.0;

            (*pfTileExits)[j++] = 5.0;
            (*pfTileExits)[j++] = 0.0;

            (*pfTileExits)[j++] = 5.0;
            (*pfTileExits)[j++] = 4.0;

            (*pfTileExits)[j++] = 4.0;
            (*pfTileExits)[j++] = 5.0;

            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 1;
            (*pnTileExitRegion)[k++] = 2;
            (*pnTileExitRegion)[k++] = 2;
            (*pnTileExitRegion)[k++] = 3;
            (*pnTileExitRegion)[k++] = 4;
            (*pnTileExitRegion)[k++] = 4;
            (*pnTileExitRegion)[k++] = 5;
            (*pnTileExitRegion)[k++] = 6;
            (*pnTileExitRegion)[k++] = 6;
        }
        break;

        case NWTILE_PATH_FINDING_TYPE_t:
        {
            //    ---------
            //    [ |   | ]
            //    [-+   +-]
            //    [   +---]
            //    [-+ | +-]
            //    [ | | | ]
            //    ---------
            (*pfRegionNodes)[i++] = 0.0;
            (*pfRegionNodes)[i++] = 0.0;

            (*pfRegionNodes)[i++] = -4.0;
            (*pfRegionNodes)[i++] = 4.0;

            (*pfRegionNodes)[i++] = -4.0;
            (*pfRegionNodes)[i++] = -4.0;

            (*pfRegionNodes)[i++] = 4.0;
            (*pfRegionNodes)[i++] = -4.0;

            (*pfRegionNodes)[i++] = 4.0;
            (*pfRegionNodes)[i++] = 4.0;

            (*pfTileExits)[j++] = -4.0;
            (*pfTileExits)[j++] = 5.0;

            (*pfTileExits)[j++] = -5.0;
            (*pfTileExits)[j++] = 4.0;

            (*pfTileExits)[j++] = -5.0;
            (*pfTileExits)[j++] = -4.0;

            (*pfTileExits)[j++] = -4.0;
            (*pfTileExits)[j++] = -5.0;

            (*pfTileExits)[j++] = 0.0;
            (*pfTileExits)[j++] = -5.0;

            (*pfTileExits)[j++] = 4.0;
            (*pfTileExits)[j++] = -5.0;

            (*pfTileExits)[j++] = 5.0;
            (*pfTileExits)[j++] = -4.0;

            (*pfTileExits)[j++] = 5.0;
            (*pfTileExits)[j++] = 0.0;

            (*pfTileExits)[j++] = 5.0;
            (*pfTileExits)[j++] = 4.0;

            (*pfTileExits)[j++] = 4.0;
            (*pfTileExits)[j++] = 5.0;

            (*pnTileExitRegion)[k++] = 1;
            (*pnTileExitRegion)[k++] = 1;
            (*pnTileExitRegion)[k++] = 2;
            (*pnTileExitRegion)[k++] = 2;
            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 3;
            (*pnTileExitRegion)[k++] = 3;
            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 4;
            (*pnTileExitRegion)[k++] = 4;
        }
        break;

        case NWTILE_PATH_FINDING_TYPE_u:
        {
            //    ---------
            //    [ | | | ]
            //    [-+ | +-]
            //    [   +---]
            //    [-+ | +-]
            //    [ | | | ]
            //    ---------
            (*pfRegionNodes)[i++] = 0.0;
            (*pfRegionNodes)[i++] = 0.0;

            (*pfRegionNodes)[i++] = -4.0;
            (*pfRegionNodes)[i++] = 4.0;

            (*pfRegionNodes)[i++] = -4.0;
            (*pfRegionNodes)[i++] = -4.0;

            (*pfRegionNodes)[i++] = 4.0;
            (*pfRegionNodes)[i++] = -4.0;

            (*pfRegionNodes)[i++] = 4.0;
            (*pfRegionNodes)[i++] = 4.0;

            (*pfTileExits)[j++] = -4.0;
            (*pfTileExits)[j++] = 5.0;

            (*pfTileExits)[j++] = -5.0;
            (*pfTileExits)[j++] = 4.0;

            (*pfTileExits)[j++] = -5.0;
            (*pfTileExits)[j++] = -4.0;

            (*pfTileExits)[j++] = -4.0;
            (*pfTileExits)[j++] = -5.0;

            (*pfTileExits)[j++] = 0.0;
            (*pfTileExits)[j++] = -5.0;

            (*pfTileExits)[j++] = 4.0;
            (*pfTileExits)[j++] = -5.0;

            (*pfTileExits)[j++] = 5.0;
            (*pfTileExits)[j++] = -4.0;

            (*pfTileExits)[j++] = 5.0;
            (*pfTileExits)[j++] = 0.0;

            (*pfTileExits)[j++] = 5.0;
            (*pfTileExits)[j++] = 4.0;

            (*pfTileExits)[j++] = 4.0;
            (*pfTileExits)[j++] = 5.0;

            (*pfTileExits)[j++] = 0.0;
            (*pfTileExits)[j++] = 5.0;

            (*pnTileExitRegion)[k++] = 1;
            (*pnTileExitRegion)[k++] = 1;
            (*pnTileExitRegion)[k++] = 2;
            (*pnTileExitRegion)[k++] = 2;
            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 3;
            (*pnTileExitRegion)[k++] = 3;
            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 4;
            (*pnTileExitRegion)[k++] = 4;
            (*pnTileExitRegion)[k++] = 0;
        }
        break;

        case NWTILE_PATH_FINDING_TYPE_v:
        {
            //    ---------
            //    [ | | | ]
            //    [-+ | +-]
            //    [-+ +---]
            //    [-+ | +-]
            //    [ | | | ]
            //    ---------
            (*pfRegionNodes)[i++] = 0.0;
            (*pfRegionNodes)[i++] = 0.0;

            (*pfRegionNodes)[i++] = -4.0;
            (*pfRegionNodes)[i++] = 0.0;

            (*pfRegionNodes)[i++] = -4.0;
            (*pfRegionNodes)[i++] = 4.0;

            (*pfRegionNodes)[i++] = -4.0;
            (*pfRegionNodes)[i++] = -4.0;

            (*pfRegionNodes)[i++] = 4.0;
            (*pfRegionNodes)[i++] = -4.0;

            (*pfRegionNodes)[i++] = 4.0;
            (*pfRegionNodes)[i++] = 4.0;

            (*pfTileExits)[j++] = -4.0;
            (*pfTileExits)[j++] = 5.0;

            (*pfTileExits)[j++] = -5.0;
            (*pfTileExits)[j++] = 4.0;

            (*pfTileExits)[j++] = -5.0;
            (*pfTileExits)[j++] = 0.0;

            (*pfTileExits)[j++] = -5.0;
            (*pfTileExits)[j++] = -4.0;

            (*pfTileExits)[j++] = -4.0;
            (*pfTileExits)[j++] = -5.0;

            (*pfTileExits)[j++] = 0.0;
            (*pfTileExits)[j++] = -5.0;

            (*pfTileExits)[j++] = 4.0;
            (*pfTileExits)[j++] = -5.0;

            (*pfTileExits)[j++] = 5.0;
            (*pfTileExits)[j++] = -4.0;

            (*pfTileExits)[j++] = 5.0;
            (*pfTileExits)[j++] = 0.0;

            (*pfTileExits)[j++] = 5.0;
            (*pfTileExits)[j++] = 4.0;

            (*pfTileExits)[j++] = 4.0;
            (*pfTileExits)[j++] = 5.0;

            (*pfTileExits)[j++] = 0.0;
            (*pfTileExits)[j++] = 5.0;

            (*pnTileExitRegion)[k++] = 2;
            (*pnTileExitRegion)[k++] = 2;
            (*pnTileExitRegion)[k++] = 1;
            (*pnTileExitRegion)[k++] = 3;
            (*pnTileExitRegion)[k++] = 3;
            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 4;
            (*pnTileExitRegion)[k++] = 4;
            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 5;
            (*pnTileExitRegion)[k++] = 5;
            (*pnTileExitRegion)[k++] = 0;
        }
        break;

        case NWTILE_PATH_FINDING_TYPE_w:
        {
            //    ---------
            //    [   |   ]
            //    [   +   ]
            //    [-+   +-]
            //    [   +   ]
            //    [   |   ]
            //    ---------
            (*pfRegionNodes)[i++] = 0.0;
            (*pfRegionNodes)[i++] = 4.0;

            (*pfRegionNodes)[i++] = -4.0;
            (*pfRegionNodes)[i++] = 0.0;

            (*pfRegionNodes)[i++] = 0.0;
            (*pfRegionNodes)[i++] = -4.0;

            (*pfRegionNodes)[i++] = 4.0;
            (*pfRegionNodes)[i++] = 0.0;

            (*pfTileExits)[j++] = 0.0;
            (*pfTileExits)[j++] = 5.0;

            (*pfTileExits)[j++] = -5.0;
            (*pfTileExits)[j++] = 0.0;

            (*pfTileExits)[j++] = 5.0;
            (*pfTileExits)[j++] = 0.0;

            (*pfTileExits)[j++] = 0.0;
            (*pfTileExits)[j++] = -5.0;

            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 1;
            (*pnTileExitRegion)[k++] = 2;
            (*pnTileExitRegion)[k++] = 3;
        }
        break;

        case NWTILE_PATH_FINDING_TYPE_x:
        {
            //    ---------
            //    [ |     ]
            //    [-+     ]
            //    [       ]
            //    [-+   +-]
            //    [ |   | ]
            //    ---------

            (*pfRegionNodes)[i++] = -2.5;
            (*pfRegionNodes)[i++] = 2.5;

            (*pfRegionNodes)[i++] = -2.5;
            (*pfRegionNodes)[i++] = -2.5;

            (*pfRegionNodes)[i++] = 2.5;
            (*pfRegionNodes)[i++] = -2.5;

            (*pfTileExits)[j++] = -2.5;
            (*pfTileExits)[j++] = 5.0;

            (*pfTileExits)[j++] = -5.0;
            (*pfTileExits)[j++] = 2.5;

            (*pfTileExits)[j++] = -5.0;
            (*pfTileExits)[j++] = -2.5;

            (*pfTileExits)[j++] = -2.5;
            (*pfTileExits)[j++] = -5.0;

            (*pfTileExits)[j++] = 2.5;
            (*pfTileExits)[j++] = -5.0;

            (*pfTileExits)[j++] = 5.0;
            (*pfTileExits)[j++] = -2.5;

            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 0;
            (*pnTileExitRegion)[k++] = 1;
            (*pnTileExitRegion)[k++] = 1;
            (*pnTileExitRegion)[k++] = 2;
            (*pnTileExitRegion)[k++] = 2;
        }
        break; 

Technical Explaination

An explaination of the code for those who want to understand it perfectly:

...