CLO File Structure - SWTOR-Slicers/WikiPedia GitHub Wiki
CLO files contain two sets of bones: "cloth" bones and "reference" bones. Each bone has a match within a sibling GR2 file. Apparently, only cloth bones are used for cloth simulation.
File Layout
- File Header
- Data Header
- 128-byte aligned array of 32-char bone names, length equals total number of bones
- Array of Bone Data 1 structs, length equals number of "cloth" bones
- Array of Bone Data 2 structs, length equals number of "cloth" bones
- Array of Bone Data 3 structs
- Array of Bone Data 4 structs
File Header
Total size: 16 bytes
Offset (h) | Type | Count | Description | Values |
---|---|---|---|---|
00 | char | 4 | Signature | OLCB |
04 | uint32 | 1 | Unknown | 1,2 |
08 | uint32 | 1 | Offset to data | 10h |
0c | uint32 | 1 | Size of data | Filesize - 16 |
Data Header
Total size: 112 bytes
Offset (h) | Type | Count | Description | Values |
---|---|---|---|---|
00 | uint32 | 1 | Unknown | 0 |
04 | float | 1 | Unknown | -0.98, -2.5 |
08 | float | 3 | Unknown | 0.0 |
14 | float | 1 | Unknown | N/A |
18 | float | 4 | Unknown | -1.0 |
28 | uint32 | 1 | Total number of bones | N/A |
2c | uint32 | 1 | Offset to bone names - 10h | 70h |
30 | uint32 | 1 | Number of "cloth" bones | N/A |
34 | uint32 | 1 | Offset to Bone Data 1 - 10h | N/A |
38 | uint32 | 1 | Number of "cloth" bones | N/A |
3c | uint32 | 1 | Offset to Bone Data 2 - 10h | N/A |
40 | uint32 | 3 | Unknown | 0 |
4c | uint32 | 1 | Number of elements in Bone Data 3 | N/A |
50 | uint32 | 1 | Offset to Bone Data 3 - 10h | N/A |
54 | uint32 | 4 | Unknown | 0 |
64 | uint32 | 1 | Number of elements in Bone Data 4 | N/A |
68 | uint32 | 1 | Offset to Bone Data 4 - 10h | N/A |
6c | uint32 | 1 | Unknown | 0 |
Bone Data 1
Total size: 96 bytes
Offset (h) | Type | Count | Description | Values |
---|---|---|---|---|
00 | float | 4 | Constraints (max/min) | N/A |
10 | float | 6 | Constraints (max/min) | N/A |
28 | float | 6 | Constraints (max/min) | N/A |
40 | float | 4 | Unknown | N/A |
50 | int32 | 2 | Unknown indices | N/A |
54 | uint32 | 1 | Bone Index (Cloth) | 0 to total number of bones - 1 |
58 | uint32 | 1 | Parent Bone Index (Reference) | 0 to total number of bones - 1 |
Bone Data 2
Struct size is variable, but it always ends with FFFFFFFFh.
Offset (h) | Type | Count | Description | Values |
---|---|---|---|---|
00 | float | 2 | Unknown | N/A |
08 | uint32 | 1 | Unknown | N/A |
0c | float | 1 | Unknown | N/A |
10 | uint32 | 2 | Unknown | N/A |
18 | uint32 | 2 | Unknown | 0 |
Bone Data 3
Total size: 24 bytes
Offset (h) | Type | Count | Description | Values |
---|---|---|---|---|
00 | uint32 | 1 | Unknown index | N/A |
04 | uint32 | 1 | Unknown index | N/A |
08 | float | 3 | Unknown | N/A |
14 | uint32 | 1 | Unknown | N/A |
Bone Data 4
Total size: 16 bytes
Offset (h) | Type | Count | Description | Values |
---|---|---|---|---|
00 | uint32 | 4 | Unknown indices | N/A |