-
Notifications
You must be signed in to change notification settings - Fork 0
Meta Models
_nebula edited this page Oct 24, 2024
·
7 revisions
(Header)
Constant - 0x4D4D646C "MMdl" magic.
int - File format version. 0xA for TSG and GF1, 0xE for GF2
int - File size.
int - Flags. (Unknown purpose)
16 bytes - GUID
4 bytes - Hashed Name
4 bytes - Hashed Path
4 bytes - Hashed Source Path
int - Asset Offset
int - State Offset
int - Variable Offset
int - Attribute Offset
int - Predicate Offset
int - Object Offset
int - Attribute data
int - User data
short - Number of Assets
short - Number of States
short - Number of Variables
short - Number of Attributes
short - Number of Predicates
short - Number of Parts
(Assets)
For each asset:
4 bytes - Name hash
4 bytes - Path hash
4 bytes - Type ID (hash?)
16 bytes - GUID
int - User data
(States)
For each state:
4 bytes - Class ID hash.
int - Pointer to Class Name (from start of file)
int - Pointer to State Name
int - Attributes pointer
short - Number of attributes.
short - Object Type.
int - Part pointer.
int - Predicate pointer.
short - Number of parts.
short - Number of predicates.
(Variables)
For each variable:
int - Pointer to Variable Name.
4 bytes - Variable ID (Hash?)
short - Value Type
(Attributes)
(Predicates)
(Objects)
MM_VALUE_TYPE_BOGUS = 0x0
MM_VALUE_TYPE_BOOL = 0x1
MM_VALUE_TYPE_UINT32 = 0x2
MM_VALUE_TYPE_FLOAT = 0x4
MM_VALUE_TYPE_STRING = 0x8
MM_VALUE_TYPE_ASSET = 0x10
MM_VALUE_TYPE_MATRIX = 0x20
MM_OBJECT_TYPE_BOGUS = 0x0
MM_STATE_OBJECT = 0x1
MM_SIMPLE_PART_OBJECT = 0x2
MM_METAMODEL_PART_OBJECT = 0x4
MM_ENTITY_PART_OBJECT = 0x8
PRED_BOGUS = -1
PRED_GT = 0x0
PRED_LT = 0x1
PRED_GE = 0x2
PRED_LE = 0x3
PRED_EQ = 0x4
PRED_NEQ = 0x5
PRED_AND_OR_EQ = 0x6
Comparison PRED_AND_OR_EQ is defined as:
((a & b) != 0 || a == b) & 0xFF