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

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.
All a pathnode says is "You can/can't go from this exit to that exit". It is used in the first pass of finding a path, after which it'll use the actual walkmesh and other methods (and check creatures, doors and placeables being in the way when they are close enough).
You can view the tile path nodes in game using the debug panel, selecting the rendertpn option. Tile links are with the blue and green links between tiles. Example from the Prelude, shows three rooms with the various TPN values, and a big room with TPN between each part.

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.
Note the names are case sensitive and put into the SET file as each tiles PathNode option.
Note the ASCII art is not to be considered authoriative, nor are the pictures, until the code has been better reviewed (see further on).
These pictures will be sorted later into the table:



| Tile Path Node | ASCII Art | Picture | Notes |
|---|
| A |
---------
[ | ]
[ | ]
[---+---]
[ | ]
[ | ]
--------- |
|
|
|
| B |
---------
[ | ]
[---+-+ ]
[ +-]
[-+ | ]
[ | | ]
--------- |
|
|
|
| C |
---------
[ | | ]
[ | | ]
[--+ +--]
[ | | ]
[ | | ]
--------- |
|
|
|
| D |
---------
[ | | ]
[-+ +-]
[ ]
[-+ +-]
[ | | ]
--------- |
|
|
|
| E |
---------
[ | | ]
[-+ | ]
[ +--]
[-+ | ]
[ | | ]
--------- |
|
|
|
| F |
---------
[ | | ]
[ | | ]
[--+-+--]
[ | | ]
[ | | ]
--------- |
|
|
|
| G |
---------
[ | | ]
[ | | ]
[--+++--]
[ | ]
[ | ]
--------- |
|
|
|
| H |
---------
[ ]
[ ]
[---+ ]
[ | ]
[ | ]
--------- |
|
|
|
| I |
---------
[ | ]
[ | ]
[---+ ]
[ | ]
[ | ]
--------- |
|
|
|
| J |
---------
[ | ]
[ +-]
[ ]
[-+ ]
[ | ]
--------- |
|
| NOTE: this is wrong in the ASCII need to amend |
| K |
---------
[ | | ]
[ | +-]
[-+ ]
[ +---]
[ | ]
--------- |
|
|
|
| L |
---------
[ | ]
[ | ]
[ + ]
[ | ]
[ | ]
--------- |
|
|
|
| M |
---------
[ | | ]
[ | | ]
[ + + ]
[ | | ]
[ | | ]
--------- |
|
|
|
| N |
---------
[ | ]
[ | ]
[ + ]
[ ]
[ ]
--------- |
|
|
|
| O |
---------
[ | | ]
[-+ /-]
[ + ]
[-/ +-]
[ | | ]
--------- |
|
|
|
| P | |
| "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 |
---------
[ | | ]
[ | | ]
[-+ /--]
[ + ]
[ | ]
--------- |
|
|
|
| R |
---------
[ | ]
[ + ]
[-+ \--]
[ | | ]
[ | | ]
--------- |
|
|
|
| S |
---------
[ | | ]
[ | | ]
[-+ +-]
[ ]
[ ]
--------- |
|
|
|
| T |
---------
[ ]
[ ]
[ ]
[ ]
[ ]
--------- |
|
| A blocker pathfinding node, use for all black wall tiles in interior areas or areas of sea or similar no-pathingfinding tiles |
| U |
---------
[ | ]
[ \ ]
[-+ +-]
[ / ]
[ | ]
--------- |
|
|
|
| V |
---------
[ | ]
[ + ]
[ --]
[ / ]
[ | ]
--------- |
|
|
|
| W |
---------
[ | ]
[ + ]
[-- ]
[ \ ]
[ | ]
--------- |
|
|
|
| X |
---------
[ | ]
[ + ]
[-+ ]
[ ]
[ ]
--------- |
|
|
|
| Y |
---------
[ | ]
[ + ]
[ ]
[ + ]
[ | ]
--------- |
|
|
|
| Z |
---------
[ | ]
[---+ ]
[ +-+-]
[-+/ | ]
[ | | ]
--------- |
|
|
|
| a |
---------
[ | | ]
[ | + ]
[--+++--]
[ | ]
[ | ]
--------- |
|
|
|
| b |
---------
[ | | ]
[ + | ]
[--+++--]
[ | ]
[ | ]
--------- |
|
|
|
| c |
---------
[ | | | ]
[ | | | ]
[-+-+-+-]
[ | ]
[ | ]
--------- |
|
|
|
| d |
---------
[ | | | ]
[ | + | ]
[-+ +-]
[ \ / ]
[ | ]
--------- |
|
|
|
| e |
---------
[ | ]
[---+-+ ]
[--- +-]
[-+ | | ]
[ | | | ]
--------- |
|
|
|
| f |
---------
[ | | | ]
[ | | | ]
[-+ + +-]
[ | | | ]
[ | | | ]
--------- |
|
| Added in later Bioware patches so may not be used in the earliest tilesets. |
| g |
---------
[ | | | ]
[ | | | ]
[-+-+ +-]
[ | | | ]
[ | | | ]
--------- |
|
| Added in later Bioware patches so may not be used in the earliest tilesets. |
| h |
---------
[ | ]
[---+-+ ]
[----/+-]
[-+ | | ]
[ | | | ]
--------- |
|
| 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 |
---------
[---+---]
[ | ]
[-+ | +-]
[ | ]
[---+---]
--------- |
|
| Added in later Bioware patches so may not be used in the earliest tilesets. |
| j |
---------
[---+---]
[ ]
[-+ +-]
[ ]
[---+---]
--------- |
|
| Added in later Bioware patches so may not be used in the earliest tilesets. |
| k |
---------
[ | | | ]
[-+ | | ]
[---+ +-]
[-+ | | ]
[ | | | ]
--------- |
|
| Added in later Bioware patches so may not be used in the earliest tilesets. |
| l |
---------
[ | | | ]
[-+ | +-]
[---+---]
[-+ | +-]
[ | | | ]
--------- |
|
| Added in later Bioware patches so may not be used in the earliest tilesets. |
| m |
---------
[ | | | ]
[-+ | +-]
[ + ]
[-+ | +-]
[ | | | ]
--------- |
|
| Added in later Bioware patches so may not be used in the earliest tilesets. |
| n |
---------
[ | | | ]
[-+ + +-]
[ ]
[-+ + +-]
[ | | | ]
--------- |
|
| Added in later Bioware patches so may not be used in the earliest tilesets. |
| o |
---------
[ | | | ]
[-+ | | ]
[ + +-]
[-+ | | ]
[ | | | ]
--------- |
|
| Added in later Bioware patches so may not be used in the earliest tilesets. |
| p |
---------
[ | | ]
[-+ | ]
[-+ +-]
[-+ | ]
[ | | ]
--------- |
|
| Added in later Bioware patches so may not be used in the earliest tilesets. |
| q |
---------
[ | | ]
[-+ | ]
[-----+-]
[-+ | ]
[ | | ]
--------- |
|
| Added in 1.87.8193.35. |
| r |
---------
[ | | | ]
[-+ + +-]
[-+ +-]
[-+ + +-]
[ | | | ]
--------- |
|
| Added in 1.87.8193.35. |
| s |
---------
[ | | ]
[-+ +-]
[-+ +-]
[-+ + +-]
[ | | | ]
--------- |
|
| Added in 1.87.8193.35. |
| t |
---------
[ | | ]
[-+ +-]
[ +---]
[-+ | +-]
[ | | | ]
--------- |
|
| Added in 1.87.8193.35. |
| u |
---------
[ | | | ]
[-+ | +-]
[ +---]
[-+ | +-]
[ | | | ]
--------- |
|
| Added in 1.87.8193.35. |
| v |
---------
[ | | | ]
[-+ | +-]
[-+ +---]
[-+ | +-]
[ | | | ]
--------- |
|
| Added in 1.87.8193.35. |
| w |
---------
[ | ]
[ + ]
[-+ +-]
[ + ]
[ | ]
--------- |
|
| Added in 1.87.8193.35. |
| x |
---------
[ | ]
[-+ ]
[ ]
[-+ +-]
[ | | ]
--------- |
|
| 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):
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:
They're grouped in pairs, which is {x,y}, and the center of the tile is (0, 0). Bottom left is (-5.0, -5.0), top right is (5.0, 5.0).
ASCII art shouldn't be considered authoritative
Short explanation is: First you define different regions (paths not connected to each other). Then you define all exits of a tile. And lastly, for each exit, you specify which region it belongs to. Exits belonging to the same region are considered linked
AFAICT it doesn't really matter where the region node point is set, but it's usually done at some cross between two paths (i.e. the plus)
Let me explain for A:
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;
} |
Because everything is connected, there is only one region. The node is set in dead center of the tile, at {0.0, 0.0}. It has four exits, at center of each edge. Each exit belongs to region 0 (only region)
Now C:
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; |
It has two regions that are not connected to each other. Six exits (two top, one left, two bottom, one right). Three exits belong to region 0, three belong to region 1.
As the nodes get more complicated it gets a lot harder to follow, but that's the basic gist