EvilEngine/COLL: Difference between revisions

From Heavy Iron Modding
Content added Content deleted
m (4 revisions imported)
No edit summary
 
(3 intermediate revisions by 2 users not shown)
Line 1: Line 1:
<onlyinclude>
{{AssetInfobox
{{#vardefine:typeid|COLL}}<nowiki/>
|subtitle=Collision Table
{{#vardefine:name|Collision Table}}<nowiki/>
|type=[[Binary]]
{{#vardefine:type|[[Binary]]}}<nowiki/>
|games=Battle for Bikini Bottom<br>The SpongeBob SquarePants Movie<br>The Incredibles<br>Rise of the Underminer
{{#vardefine:basetype|}}<nowiki/>
|sourcecode=[https://github.com/bfbbdecomp/bfbb/blob/master/src/Game/zCollGeom.h zCollGeom.h]}}
{{#vardefine:games|BFBB TSSM Incredibles ROTU RatProto}}<nowiki/>
{{#vardefine:sourcecode|[https://github.com/bfbbdecomp/bfbb/blob/master/src/Game/zCollGeom.h zCollGeom.h]}}<nowiki/>
{{#vardefine:image|}}<nowiki/>
</onlyinclude>
{{AutoAssetInfobox}}


A '''collision table''' is used to give some [[MODL|models]] a specific mesh for collision detection by other objects and the in-game camera. This is commonly used to give high-poly models much less lower detailed versions of themselves, in order to reduce the amount of processing required during collision detection.
A '''collision table''' is used to give some [[MODL|models]] a specific mesh for collision detection by other objects and the in-game camera. This is commonly used to give high-poly models much less lower detailed versions of themselves, in order to reduce the amount of processing required during collision detection.
Line 10: Line 15:


==Format==
==Format==
The asset data starts with an int which defines the amount of entries in the collision table, then the entries themselves. Each entry has the following format:
The asset data starts with an int which defines the amount of entries in the collision table, then the entries themselves.


===zCollisionGeomTableEntry===
{| class="wikitable"
{| class="wikitable"
! Offset !! Type !! Description
! Offset !! Type !! Variable !! Description
|-
|-
| 0x00 || [[AssetID]] ([[MODL|Model]]) || '''Model'''
| 0x00 || uint || '''sTableCount''' || Amount of COLL table entries.
|}

====zCollGeomTable====
{| class="wikitable"
! Offset !! Type !! Variable !! Description
|-
| 0x00 || [[AssetID]] || '''baseModel''' || Model
|-
|-
| 0x04 || [[AssetID]] ([[MODL|Model]]) || '''Collision model'''. If null, defaults to the same model.
| 0x04 || [[AssetID]] || '''colModel''' || Collision model. If null, defaults to the same model.
|-
|-
| 0x08 || [[AssetID]] ([[MODL|Model]]) || '''Camera collision model'''. If null, defaults to no model (camera can pass through it).
| 0x08 || [[AssetID]] || '''camcolModel''' ||Camera collision model. If null, defaults to no model (camera can pass through it).
|}
|}


{{Assets}}
{{Assets}}
{{AutoGameNavs}}


[[Category:Asset]]
[[Category:Asset]]

Latest revision as of 02:36, 29 October 2022

COLL
Collision Table
TypeBinary
Games usedBattle for Bikini Bottom

The SpongeBob SquarePants Movie
The Incredibles
Rise of the Underminer

Ratatouille Prototype
Source codezCollGeom.h

A collision table is used to give some models a specific mesh for collision detection by other objects and the in-game camera. This is commonly used to give high-poly models much less lower detailed versions of themselves, in order to reduce the amount of processing required during collision detection.

By default, any model not included in this table uses itself as its collision mesh against other objects, and no collision mesh against the camera (meaning the camera can pass through it).

Format

The asset data starts with an int which defines the amount of entries in the collision table, then the entries themselves.

zCollisionGeomTableEntry

Offset Type Variable Description
0x00 uint sTableCount Amount of COLL table entries.

zCollGeomTable

Offset Type Variable Description
0x00 AssetID baseModel Model
0x04 AssetID colModel Collision model. If null, defaults to the same model.
0x08 AssetID camcolModel Camera collision model. If null, defaults to no model (camera can pass through it).