EvilEngine/UIM

From Heavy Iron Modding
Revision as of 03:39, 25 May 2021 by Seil (talk | contribs)
UIM
UI Motion
TypeBase
Games usedThe 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