EvilEngine/UIM
UIM | |
---|---|
UI Motion | |
Type | Base |
Games used | The Incredibles |
Format
A UI Motion asset begins with a 0x18-byte header which extends from xBaseAsset:
struct zUIMotionAsset : xBaseAsset
{
uint8 cmdCount;
uint8 in;
uint8 pad[2];
uint32 cmdSize;
float totalTime;
float loopTime;
};
Offset | Type | Variable | Description |
---|---|---|---|
0x08 | uint8 | cmdCount | Number of commands after the header |
0x09 | uint8 | in | |
0x0A | uint8[2] | pad | Padding |
0x0C | uint32 | cmdSize | |
0x10 | float | totalTime | |
0x14 | float | loopTime |
Following the header is a list of Commands (with a length of cmdCount). The format of each command is explained below.
Commands
There are 8 types of Commands defined:
- 0 - Move
- 1 - Scale
- 2 - Rotate
- 3 - Opacity
- 4 - AbsoluteScale
- 5 - Brightness
- 6 - Color
- 7 - UVScroll
Each command type has an 0x18-byte header:
struct zUIMotionCmdAsset
{
uint32 type;
float startTime;
float endTime;
float accelTime;
float decelTime;
uint8 enabled;
// 3 bytes of padding
};
Offset | Type | Variable | Description |
---|---|---|---|
0x00 | uint32 | type | Type ID (see above) |
0x04 | float | startTime | |
0x08 | float | endTime | |
0x0C | float | accelTime | |
0x10 | float | decelTime | |
0x14 | uint8 | enabled | |
0x15 | - | - | 3 bytes of padding |
Move (Type 0)
Size = 0x20 bytes
struct zUIMotionCmdMove : zUIMotionCmdAsset
{
float distX;
float distY;
};
Offset | Type | Variable | Description |
---|---|---|---|
0x18 | float | distX | |
0x1C | float | distY |
Scale (Type 1)
Size = 0x2C bytes
struct zUIMotionCmdScale : zUIMotionCmdAsset
{
float amountX;
float amountY;
uint8 centerPivot;
// 3 bytes of padding
float centerOffsetX;
float centerOffsetY;
};
Offset | Type | Variable | Description |
---|---|---|---|
0x18 | float | amountX | |
0x1C | float | amountY | |
0x20 | uint8 | centerPivot | |
0x21 | - | - | 3 bytes of padding |
0x24 | float | centerOffsetX | |
0x28 | float | centerOffsetY |
Rotate (Type 2)
Size = 0x24 bytes
struct zUIMotionCmdRotate : zUIMotionCmdAsset
{
float rotation;
float centerOffsetX;
float centerOffsetY;
};
Offset | Type | Variable | Description |
---|---|---|---|
0x18 | float | rotation | |
0x1C | float | centerOffsetX | |
0x20 | float | centerOffsetY |
Opacity (Type 3)
Size = 0x1C bytes
struct zUIMotionCmdOpacity : zUIMotionCmdAsset
{
uint8 startOpacity;
uint8 endOpacity;
// 2 bytes of padding
};
Offset | Type | Variable | Description |
---|---|---|---|
0x18 | uint8 | startOpacity | |
0x19 | uint8 | endOpacity | |
0x1A | - | - | 2 bytes of padding |
AbsoluteScale (Type 4)
Size = 0x2C bytes
struct zUIMotionCmdAbsoluteScale : zUIMotionCmdAsset
{
float startX;
float startY;
float endX;
float endY;
uint8 centerPivot;
uint8 textScale;
// 2 bytes of padding
};
Offset | Type | Variable | Description |
---|---|---|---|
0x18 | float | startX | |
0x1C | float | startY | |
0x20 | float | endX | |
0x24 | float | endY | |
0x28 | uint8 | centerPivot | |
0x29 | uint8 | textScale | |
0x2A | - | - | 2 bytes of padding |
Brightness (Type 5)
Size = 0x1C bytes
struct zUIMotionCmdBrightness : zUIMotionCmdAsset
{
uint8 startBrightness;
uint8 endBrightness;
// 2 bytes of padding
};
Offset | Type | Variable | Description |
---|---|---|---|
0x18 | uint8 | startBrightness | |
0x19 | uint8 | endBrightness | |
0x1A | - | - | 2 bytes of padding |
Color (Type 6)
Size = 0x20 bytes
struct zUIMotionCmdColor : zUIMotionCmdAsset
{
uint8 startRed;
uint8 startGreen;
uint8 startBlue;
uint8 endRed;
uint8 endGreen;
uint8 endBlue;
// 2 bytes of padding
};
Offset | Type | Variable | Description |
---|---|---|---|
0x18 | uint8 | startRed | |
0x19 | uint8 | startGreen | |
0x1A | uint8 | startBlue | |
0x1B | uint8 | endRed | |
0x1C | uint8 | endGreen | |
0x1D | uint8 | endBlue | |
0x1E | - | - | 2 bytes of padding |
UVScroll (Type 7)
Size = 0x20 bytes
struct zUIMotionCmdUVScroll : zUIMotionCmdAsset
{
float amountU;
float amountV;
};
Offset | Type | Variable | Description |
---|---|---|---|
0x18 | float | amountU | |
0x1C | float | amountV |