|
This file format needs more research The BSP tables at the end need research
|
The PATH format is used to store an area's wikipedia:Navigation Mesh in the Metroid Prime series.
Like navigation meshes in many other game engines (Unity, Source, etc...), the PATH format represents an n-gon mesh
partitioned into a BSP tree for rapid queries.
Format
Data Type
|
Description
|
Notes
|
long
|
Version
|
Always 0x4 in GM8E-0-00 and Trilogy release.
|
long
|
Vertex count
|
|
#Vertex Entry
|
Vertex Table
|
|
long
|
Edge count
|
|
#Edge Entry
|
Edge Table
|
|
long
|
Polygon count
|
|
#Polygon Entry
|
Polygon Table
|
|
Unknown
|
BSP Tables
|
|
Vertex Entry
Offset
|
Length
|
Data Type
|
Description
|
Notes
|
0x0
|
12
|
float3
|
Vertex Position
|
|
0xC
|
12
|
float3
|
Vertex Normal
|
|
Edge Entry
Offset
|
Length
|
Data Type
|
Description
|
Notes
|
0x0
|
4
|
long
|
Polygon A index
|
|
0x4
|
4
|
long
|
Polygon B index
|
|
0x8
|
4
|
float
|
Edge Length
|
|
0xC
|
4
|
float
|
Unknown Normalized [0,1] Value
|
Speculation: Cost of edge traversal (i.e. edge steepness). Characters may have a set threshold when selecting edges to traverse.
|
Polygon Entry
Offset
|
Length
|
Data Type
|
Description
|
Notes
|
0x0
|
4
|
long
|
Vertex Count
|
Specifies range of vertices
|
0x4
|
4
|
long
|
Vertex Start Index
|
References into #Vertex Table
|
0x8
|
4
|
long
|
Edge Count
|
Specifies range of edges
|
0xC
|
4
|
long
|
Edge Start Index
|
References into #Edge Table
|
0x10
|
2
|
short
|
Unknown
|
Range [1,7]
|
0x12
|
2
|
short
|
Unknown meta-data
|
Possible Values (1,2,4)
|
0x14
|
4
|
float
|
Polygon area
|
|
0x18
|
12
|
float3
|
Polygon normal
|
|
0x24
|
4
|
long
|
Self-index
|
References polygon's own index in table
|
0x28
|
12
|
float3
|
AABB-min
|
|
0x34
|
12
|
float3
|
AABB-max
|
|
0x40
|
12
|
float3
|
Polygon center position
|
|
0x4C
|
4
|
long
|
Self-index
|
A duplicate of the 0x24 value for some reason
|