The Camera Extradata resource defines how the camera behaves during a throw animation. It is referenced by a Throw Camera entry and influences the cinematic experience of a throw.
Each Camera Extradata entry consists of the following fields:
Determines the chance of this entry being selected.
Valid values:
1 — Normal probability2 — Twice as likely to be picked as entries with a value of 1Specifies which kind of camera behavior to use:
| Value | Meaning |
|---|---|
21 |
Use a predefined camera animation |
22 |
Use a customized, dynamic camera setup |
The behavior of these fields depends on the Camera Type:
Camera values are encoded as a 4-digit hexadecimal: XXYZ
Note: All Values are in Hexadecimal
| Segment | Meaning |
|---|---|
XX |
Usually 08. Reserved/prefix byte. |
Y |
Transition Timing |
| - Even = Smooth start | |
| - Odd = Instant start | |
- Y ≥ 7 = Transition from a distance (if XX == 08) |
|
Z |
Camera Angle Preset |
Z Values – Angle Presets| Z | Camera Angle |
|---|---|
| 0x0 | Mid / Right |
| 0x1 | Mid / Center |
| 0x2 | Mid / Left |
| 0x3 | Mid / Center |
| 0x4 | Bottom / Right |
| 0x5 | Bottom / Center |
| 0x6 | Bottom / Left |
| 0x7 | Bottom / Center |
| 0x8 | Top / Right |
| 0x9 | Top / Center |
| 0xA | Top / Left |
| 0xB | Top / Center |
| 0xC | Mid / Right (alt) |
| 0xD | Mid / Center (alt) |
| 0xE | Mid / Left (alt) |
| 0xF | Mid / Center (alt) |
Value format: 0xXYYY
X — Source type (typically refers to the “mota” or animation file group)YYY — Animation index within the fileThis setup directly indexes into the Camera Animation resource.
Below is sample Camera Extra Data List fetched from one of Paul's throws
0x0001 0x0016 0x0814 0x0814 0x0000
0x0001 0x0016 0x0815 0x0815 0x0000
0x0001 0x0016 0x0816 0x0816 0x0000
0x0001 0x0016 0x0804 0x0804 0x0000
0x0001 0x0016 0x0805 0x0805 0x0000
0x0001 0x0016 0x0806 0x0806 0x0000
0x0000 0x0000 0x0000 0x0000 0x0000 (End of List)
Smooth Transitioning while 3 use Instant Transition because of the Y value in 3rd and 4th columnsBottom / Right, Bottom / Center and Bottom / Left because of the Z value in the 3rd and 4th columnsstruct tk_throw_extra
{
uint16_t pick_probability; // 1 = normal, 2 = higher chance
uint16_t camera_type; // 21 = animation, 22 = customized
uint16_t left_side_camera_data; // Depends on camera_type
uint16_t right_side_camera_data; // Depends on camera_type
uint16_t additional_rotation; // Degrees of rotation
};
struct tk_throw
{
uint64_t end_side; // Where camera ends (0 = same, 1 = opposite, 2 = any)
tk_throw_extra* camera_data; // Pointer to camera extradata list
};