EvilEngine/MVPT
This asset defines move points. Enemies usually have a few MVPT to move along. Platforms and other objects also refer to this asset.
MVPT | |
---|---|
Move Point | |
Type | Base |
Base Type | 0x0D |
Games used | Night of 100 Frights Battle for Bikini Bottom |
Source code | xMovePoint.h |
Format
MVPT are base assets, so they start with their 0x8 byte header, then are followed by:
Offset | Type | Variable | Description |
---|---|---|---|
0x8 | Vector3 | pos | Position |
0x14 | ushort | wt | usually 0x2710 |
0x16 | char | on | Type: 0x00 for arena (can see you), 0x01 for zone |
0x17 | char | bezIndex | usually 0x00 |
0x18 | char | flg_props | |
0x19 | char | pad | padding |
0x1A | ushort | 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. Not present in Scooby |
0x24 | float | arenaRadius | will be able to see you from this radius (as in a sphere trigger), -1 means disabled. Not present in Scooby |
0x28 | AssetID[numPoints] | unknown | Asset IDs of sibling MVPTs |
Events | |||
- | Event[numberOfEvents] | Events |
Behavior
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.
Events
- Arrive