The .graph format stores navigation nodes and connections (edges) for AI pathfinding.
| Offset | Type | Name | Description |
|---|---|---|---|
| 0x00 | Byte[12] | Unknown | Skipped padding or header data. |
| 0x0C | UInt16 | NodeCount | Number of navigation nodes. |
| 0x0E | UInt16 | ConnectionCount | Number of connections between nodes. |
| 0x10 | Byte[16] | GUID | Unique identifier for the graph. |
| 0x20 | UInt32 | NodeArrayOffset | Absolute offset to the start of the node array. |
| 0x24 | UInt32 | ConnectionArrayOffset | Absolute offset to the start of the connection array. |
Each node entry is 32 bytes long.
| Offset | Type | Name | Description |
|---|---|---|---|
| 0x00 | Float | X | Position X coordinate. |
| 0x04 | Float | Y | Position Y coordinate. |
| 0x08 | Float | Z | Position Z coordinate. |
| 0x0C | Float | Radius | Node radius. |
| 0x10 | Int16 | ConnStartIndex | Index into Connection Array for the first connection. |
| 0x12 | Int16 | PropInstance | Index of associated property instance. |
| 0x14 | UInt8 | ConnCount | Number of connections starting from this node. |
| 0x15 | UInt8 | NeighborCount | Number of neighbors. |
| 0x16 | Int16 | NeighborStartIndex | Index for neighbors (usage context dependent). |
| 0x18 | UInt16 | Flags | Node flags (bitfield). |
| 0x1A | Byte[6] | Padding | Unused. |
Each connection entry is 16 bytes long.
| Offset | Type | Name | Description |
|---|---|---|---|
| 0x00 | Float | Length | Distance/Cost of the edge. |
| 0x04 | Int16 | DestNodeIndex | Index of the target node. |
| 0x06 | Int16 | SrcNodeIndex | Index of the source node. |
| 0x08 | Int16 | PropInstance | Associated property instance. |
| 0x0A | UInt16 | Flags | Edge flags. |
| 0x0C | UInt8 | Blocked | 1 if blocked, 0 otherwise. |
| 0x0D | Byte[3] | Padding | Unused. |