EvilEngine/CAM: Difference between revisions
Battlepedia>Seil (→Format) |
m (Seil moved page CAM to EvilEngine/CAM) |
||
(10 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
<onlyinclude> |
|||
{{AssetInfobox |
|||
{{#vardefine:typeid|CAM}}<nowiki/> |
|||
|subtitle=Camera |
|||
{{#vardefine:name|Camera}}<nowiki/> |
|||
|type=[[Object]] |
|||
{{#vardefine:type|[[Base]]}}<nowiki/> |
|||
|objectid=0x07 |
|||
{{#vardefine:basetype|0x07}}<nowiki/> |
|||
|games=Night of 100 Frights<br>Battle for Bikini Bottom<br>The SpongeBob SquarePants Movie<br>The Incredibles<br>Rise of the Underminer}} |
|||
{{#vardefine:games|Scooby BFBB TSSM Incredibles ROTU RatProto}}<nowiki/> |
|||
{{#vardefine:sourcecode|[https://github.com/bfbbdecomp/bfbb/blob/master/src/Core/x/xCamera.h xCamera.h]}}<nowiki/> |
|||
{{#vardefine:image|}}<nowiki/> |
|||
</onlyinclude> |
|||
{{AutoAssetInfobox}} |
|||
This asset defines cameras. Usually, the game takes control from you to display a certain camera for a moment, such as when talking to NPCs or showing you something elsewhere in the level. |
This asset defines cameras. Usually, the game takes control from you to display a certain camera for a moment, such as when talking to NPCs or showing you something elsewhere in the level. |
||
==Format== |
==Format== |
||
Cameras are [[ |
Cameras are [[Base|base assets]], so they start with their 0x8 byte header, then are followed by: |
||
{| class="wikitable" |
{| class="wikitable" |
||
! Offset !! Type |
! Offset !! Type !! Description |
||
|- |
|- |
||
| 0x8 || [[Vector3]] || ''' |
| 0x8 || [[Vector3]] || '''Position''' |
||
|- |
|- |
||
| 0x14 || [[Vector3]] || ''' |
| 0x14 || [[Vector3]] || '''Normalized forward vector''' |
||
|- |
|- |
||
| 0x20 || [[Vector3]] || ''' |
| 0x20 || [[Vector3]] || '''Normalized up vector''' |
||
|- |
|- |
||
| 0x2C || [[Vector3]] || ''' |
| 0x2C || [[Vector3]] || '''Normalized left vector''' |
||
|- |
|- |
||
| 0x38 || [[Vector3]] || ''' |
| 0x38 || [[Vector3]] || '''View Offset''' |
||
|- |
|- |
||
| 0x44 || short || ''' |
| 0x44 || short || '''Offset Start Frames''' - usually 30 |
||
|- |
|- |
||
| 0x46 || short || ''' |
| 0x46 || short || '''Offset End Frames''' - usually 45 |
||
|- |
|- |
||
| 0x48 || float || ''' |
| 0x48 || float || '''FOV''' - (degrees) |
||
|- |
|- |
||
| 0x4C || float || ''' |
| 0x4C || float || '''Transition Time''' - (seconds) Time it takes to move the camera to this position. |
||
|- |
|- |
||
| 0x50 || int |
| 0x50 || int || '''Transition Type''' - usually 0, 1, 2, 5, or 6 |
||
* 0 - None |
|||
* 1 - Interp1 |
|||
* 2 - Interp2 |
|||
* 3 - Interp3 |
|||
* 4 - Interp4 |
|||
* 5 - Linear |
|||
* 6 - Interp1Rev |
|||
* 7 - Interp2Rev |
|||
* 8 - Interp3Rev |
|||
* 9 - Interp4Rev |
|||
|- |
|- |
||
| 0x54 || int || ''' |
| 0x54 || unsigned int || '''Flags''' - usually 0 |
||
|- |
|- |
||
| 0x58 || float |
| 0x58 || float || '''Fade Up''' - usually 0 |
||
|- |
|- |
||
| 0x5C || float |
| 0x5C || float || '''Fade Down''' - usually 0 |
||
|- |
|- |
||
! colspan="3" | Follow only |
|||
| 0x60 || float[6] || '''cam_follow'''<br>'''cam_shoulder'''<br>'''cam_static'''<br>'''cam_path'''<br>'''cam_staticFollow''' || ??? |
|||
|- |
|- |
||
| |
| 0x60 || float || '''Rotation''' |
||
⚫ | |||
| 0x64 || float || '''Distance''' |
|||
|- |
|||
| 0x68 || float || '''Height''' |
|||
|- |
|||
| 0x6C || float || '''Rubber Band''' |
|||
|- |
|||
| 0x70 || float || '''Start Speed''' |
|||
|- |
|||
| 0x74 || float || '''End Speed''' |
|||
|- |
|||
! colspan="3" | Shoulder only |
|||
|- |
|||
| 0x60 || float || '''Distance''' |
|||
|- |
|||
| 0x64 || float || '''Height''' |
|||
|- |
|||
| 0x68 || float || '''Realign Speed''' |
|||
|- |
|||
| 0x6C || float || '''Realign Delay''' |
|||
|- |
|||
| 0x70 || byte[0x8] || null |
|||
|- |
|||
! colspan="3" | Static only |
|||
|- |
|||
| 0x60 || unsigned int || '''Unused''' - yes this is actually called "unused" |
|||
|- |
|||
| 0x64 || byte[0x14] || null |
|||
|- |
|||
! colspan="3" | Path only |
|||
|- |
|||
| 0x60 || unsigned int || '''[[Asset ID]]''' |
|||
|- |
|||
| 0x64 || float || '''Time End''' |
|||
|- |
|||
| 0x64 || float || '''Time Delay''' |
|||
|- |
|||
| 0x68 || byte[0x10] || null |
|||
|- |
|||
! colspan="3" | Static Follow only |
|||
|- |
|||
| 0x60 || float || '''Rubber Band''' |
|||
|- |
|||
| 0x64 || byte[0x14] || null |
|||
|- |
|||
! colspan="3" | |
|||
|- |
|||
| 0x78 || unsigned int || '''Valid Flags''' |
|||
* byte 1 usually 0 |
* byte 1 usually 0 |
||
* byte 2 usually 1 |
* byte 2 usually 1 |
||
Line 47: | Line 110: | ||
* byte 4 usually 0x8F (143) or 0xC0 (192) |
* byte 4 usually 0x8F (143) or 0xC0 (192) |
||
|- |
|- |
||
| 0x7C || [[AssetID]] |
| 0x7C || [[AssetID]][2] || '''[[MRKR|Marker]] IDs''' - usually both null |
||
|- |
|- |
||
| |
| 0x84 || byte || '''Cam Type''' - usually 0, 2, or 3 |
||
* 0 - Follow |
|||
* 1 - Shoulder |
|||
* 2 - Static |
|||
* 3 - Path |
|||
* 4 - Static Follow |
|||
|- |
|- |
||
| |
| 0x85 || byte[3] || Padding (always 0) |
||
⚫ | |||
| 0x85 || byte[3] || '''pad''' || padding |
|||
|- |
|- |
||
! colspan="3" | Events |
! colspan="3" | Events |
||
Line 64: | Line 130: | ||
* [[List of Events#End Conversation|End Conversation]] |
* [[List of Events#End Conversation|End Conversation]] |
||
* [[List of Events#Switch|Switch]] |
* [[List of Events#Switch|Switch]] |
||
{{Assets}} |
|||
{{AutoGameNavs}} |
|||
[[Category:Asset]] |
[[Category:Asset]] |
Latest revision as of 22:33, 15 September 2022
This asset defines cameras. Usually, the game takes control from you to display a certain camera for a moment, such as when talking to NPCs or showing you something elsewhere in the level.
CAM | |
---|---|
Camera | |
Type | Base |
Base Type | 0x07 |
Games used | Night of 100 Frights Battle for Bikini Bottom |
Source code | xCamera.h |
Format
Cameras are base assets, so they start with their 0x8 byte header, then are followed by:
Offset | Type | Description |
---|---|---|
0x8 | Vector3 | Position |
0x14 | Vector3 | Normalized forward vector |
0x20 | Vector3 | Normalized up vector |
0x2C | Vector3 | Normalized left vector |
0x38 | Vector3 | View Offset |
0x44 | short | Offset Start Frames - usually 30 |
0x46 | short | Offset End Frames - usually 45 |
0x48 | float | FOV - (degrees) |
0x4C | float | Transition Time - (seconds) Time it takes to move the camera to this position. |
0x50 | int | Transition Type - usually 0, 1, 2, 5, or 6
|
0x54 | unsigned int | Flags - usually 0 |
0x58 | float | Fade Up - usually 0 |
0x5C | float | Fade Down - usually 0 |
Follow only | ||
0x60 | float | Rotation |
0x64 | float | Distance |
0x68 | float | Height |
0x6C | float | Rubber Band |
0x70 | float | Start Speed |
0x74 | float | End Speed |
Shoulder only | ||
0x60 | float | Distance |
0x64 | float | Height |
0x68 | float | Realign Speed |
0x6C | float | Realign Delay |
0x70 | byte[0x8] | null |
Static only | ||
0x60 | unsigned int | Unused - yes this is actually called "unused" |
0x64 | byte[0x14] | null |
Path only | ||
0x60 | unsigned int | Asset ID |
0x64 | float | Time End |
0x64 | float | Time Delay |
0x68 | byte[0x10] | null |
Static Follow only | ||
0x60 | float | Rubber Band |
0x64 | byte[0x14] | null |
0x78 | unsigned int | Valid Flags
|
0x7C | AssetID[2] | Marker IDs - usually both null |
0x84 | byte | Cam Type - usually 0, 2, or 3
|
0x85 | byte[3] | Padding (always 0) |
Events | ||
0x88 | Event[numberOfEvents] | Events |