The zone list resource type is used in the PVS (potentially visible segments) bundle. Its purpose is to tell the game which track units to load when the player enters a certain track unit.

Structures

CgsSceneManager::ZoneList

32-bit

Offset Length Type Name Description Comments
0x0 0x4 Vector2* mpPoints
0x4 0x4 Zone* mpZones
0x8 0x4 uint32_t* mpuZonePointStarts
0xC 0x4 int16_t* mpiZonePointCounts
0x10 0x4 uint32_t muTotalZones
0x14 0x4 uint32_t muTotalPoints

64-bit

Offset Length Type Name Description Comments
0x0 0x8 Vector2* mpPoints
0x8 0x8 Zone* mpZones
0x10 0x8 uint32_t* mpuZonePointStarts
0x18 0x8 int16_t* mpiZonePointCounts
0x20 0x4 uint32_t muTotalZones
0x24 0x4 uint32_t muTotalPoints

CgsSceneManager::Zone

32-bit

Offset Size Type Name Description Comments
0x0 0x4 Vector2* mpPoints
0x4 0x4 Neighbour* mpSafeNeighbours
0x8 0x4 Neighbour* mpUnsafeNeighbours
0xC 0x4 padding
0x10 0x8 uint64_t muZoneId
0x18 0x2 int16_t miZoneType Always 4
0x1A 0x2 int16_t miNumPoints
0x1C 0x2 int16_t miNumSafeNeighbours
0x1E 0x2 int16_t miNumUnsafeNeighbours
0x20 0x4 uint32_t muFlags Unused
0x24 0xC padding

64-bit

Offset Length Type Name Description Comments
0x0 0x8 Vector2* mpPoints
0x8 0x8 Neighbour* mpSafeNeighbours
0x10 0x8 Neighbour* mpUnsafeNeighbours
0x18 0x8 uint64_t muZoneId
0x20 0x2 int16_t miZoneType Always 4
0x22 0x2 int16_t miNumPoints
0x24 0x2 int16_t miNumSafeNeighbours
0x26 0x2 int16_t miNumUnsafeNeighbours
0x28 0x4 uint32_t muFlags Unused
0x2C 0x4 padding

CgsSceneManager::Neighbour

32-bit

Offset Size Type Name Description Comments
0x0 0x4 Zone* mpZone
0x4 0x4 uint32_t muFlags See eNeighbourFlags
0x8 0x8 padding

64-bit

Offset Size Type Name Description Comments
0x0 0x8 Zone* mpZone
0x8 0x4 uint32_t muFlags See eNeighbourFlags
0xC 0x4 padding

Enumerations

CgsSceneManager::Neighbour::eNeighbourFlags

Name Value Comments
E_RENDERFLAG_NONE 0x0
E_NEIGHBOURFLAG_RENDER 0x1
E_NEIGHBOURFLAG_IMMEDIATE 0x2