Difference between revisions of "User Data PLG (RW Section)"
(User data needs to have documentation, so adding a page.) |
m |
||
(3 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
− | {{RW Section|User Data PLG| | + | {{RW Section |
− | + | | NAME = User Data PLG | |
+ | | VENDORNAME = Criterion Games | ||
+ | | MODULENAME = Toolkit | ||
+ | | MODULEID = 000001 | ||
+ | | IDENTIFIER = 1F | ||
+ | | PARENTS = [[Atomic (RW Section)|Atomic]] ''([[Extension (RW Section)|Extension]])'', [[Material (RW Section)|Material]] ''([[Extension (RW Section)|Extension]])'', [[Reflection Material (RW Section)|Reflection Material]] ''([[Extension (RW Section)|Extension]])'', [[Specular Material (RW Section)|Specular Material]] ''([[Extension (RW Section)|Extension]])'', [[UV Animation PLG (RW Section)|UV Animation PLG]] ''([[Extension (RW Section)|Extension]])'', [[Texture (RW Section)|Texture]] ''([[Extension (RW Section)|Extension]])'', [[Geometry List (RW Section)|Geometry List]] ''([[Extension (RW Section)|Extension]])'' | ||
+ | }} | ||
− | + | Custom data through the User Data extension (part of the Toolkit extensions) can be used to attach certain effects such as custom render states, morph data or other effects read by a function implemented into any of the GTA games. User data is organized as a dictionary, where a unique name maps to an array of objects. | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | == | + | == Binary Layout == |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | {{N|SA|VC}} | + | The first four bytes of the sections' content store the number of entries of the dictionary. |
− | + | ||
+ | 4b - DWORD - Number of dictionary entries | ||
+ | |||
+ | This value is then followed by a set of structures, where each one stores one entry of the dictionary. | ||
+ | |||
+ | Xb - TString - Entry name (see [[#String Layout|below]] for a description of the binary string format) | ||
+ | 4b - DWORD - User data type | ||
+ | 4b - DWORD - Number of objects | ||
+ | |||
+ | This entry description is then followed by the actual array of elements stored under the entry name. Each array has a base data type. | ||
+ | |||
+ | === User Data Types === | ||
+ | |||
+ | The data type is identified by one of the following values: | ||
+ | |||
+ | 0x01 - Integer (signed 32 bit integer) | ||
+ | 0x02 - Float (32 bit single precision floating point value) | ||
+ | 0x03 - String (see below) | ||
+ | |||
+ | ==== String Layout ==== | ||
+ | |||
+ | Strings are not (null-)terminated, but rather stored with a length value, followed by the actual string: | ||
+ | |||
+ | 4b - DWORD - String length (X) | ||
+ | Xb - CHAR[X] - String character field | ||
+ | |||
+ | {{N|SA|VC|3}} |
Latest revision as of 12:25, 11 September 2020
User Data PLG | |
---|---|
RenderWare Stream Section | |
Vendor | Criterion Games |
Module | Toolkit |
Module ID | 0x000001
|
Identifier | 0x1F
|
Chunk ID | 0x0000011F
|
Versions | All |
Hierarchy | |
Parents: Atomic (Extension), Material (Extension), Reflection Material (Extension), Specular Material (Extension), UV Animation PLG (Extension), Texture (Extension), Geometry List (Extension) | |
Children: None | |
Extensions: None | |
File Format |
Custom data through the User Data extension (part of the Toolkit extensions) can be used to attach certain effects such as custom render states, morph data or other effects read by a function implemented into any of the GTA games. User data is organized as a dictionary, where a unique name maps to an array of objects.
Binary Layout
The first four bytes of the sections' content store the number of entries of the dictionary.
4b - DWORD - Number of dictionary entries
This value is then followed by a set of structures, where each one stores one entry of the dictionary.
Xb - TString - Entry name (see below for a description of the binary string format) 4b - DWORD - User data type 4b - DWORD - Number of objects
This entry description is then followed by the actual array of elements stored under the entry name. Each array has a base data type.
User Data Types
The data type is identified by one of the following values:
0x01 - Integer (signed 32 bit integer) 0x02 - Float (32 bit single precision floating point value) 0x03 - String (see below)
String Layout
Strings are not (null-)terminated, but rather stored with a length value, followed by the actual string:
4b - DWORD - String length (X) Xb - CHAR[X] - String character field