|Games used||Night of 100 Frights|
Battle for Bikini Bottom
The SpongeBob SquarePants Movie
Rise of the Underminer
This asset defines move points. Enemies usually have a few MVPT to move along. Platforms and other objects also refer to this asset.
MVPT are object assets, so they start with their 0x8 byte header, then are followed by:
|0x16||byte||on||Type: 0x00 for arena (can see you), 0x01 for zone|
|0x1A||short||numPoints||Amount of children/siblings|
|0x1C||float||delay||Movement Angle - will rotate around the point this amount, -1 means disabled|
|0x20||float||zoneRadius||will circle around the point in this distance, -1 means disabled|
|0x24||float||arenaRadius||will be able to see you from this radius (as in a sphere trigger), -1 means disabled|
|0x28||AssetID[numPoints]||unknown||Asset IDs of sibling MVPTs|
The way move points will work depends a lot on which object is using it (PLAT or VIL or even others), but generally:
- If the on value is 0x01, the point is a zone.
- This means objects will start at, or move toward this point.
- For enemies, if the zone radius is different than -1, the enemy will circle around the point in the distance set by the zoneRadius value.
- After reaching this point for the first time, if there are no siblings, the object will just stop.
- If there are one or more siblings, it will then proceed to the first point in the sibling list the first time; the second point the second time, and so on, looping back to the first one after the last one.
- One of the siblings might be an arena type MVPT so the enemy is able to detect the player from it.
- If the on value is 0x00, the point is an arena.
- This point will not define the area an enemy will move inside; the arenaRadius property defines the area in which the enemy can detect the player, much like a sphere trigger. This MVPT will probably not have any siblings.
- If both the zoneRadius and arenaRadius properties are different from -1, the point will be able to work as both a zone and arena. The enemy will circle around the zoneRadius value and detect the player by the arenaRadius value.