Difference between revisions of "Breakable (RW Section)"

From GTAMods Wiki
Jump to navigation Jump to search
m (Wesser moved page Breakable model (RW Section) to Breakable (RW Section): Gave an appropriate denomination coming from mobile function symbols which does not differentiate that much though.)
 
(2 intermediate revisions by one other user not shown)
Line 1: Line 1:
{{RW Section|Breakable|0x0253F2FD}}
+
{{RW Section
 +
| NAME = Breakable
 +
| VENDORNAME = Rockstar Games
 +
| MODULENAME = Plug-In
 +
| MODULEID = 0253F2
 +
| IDENTIFIER = FD
 +
| VERSION = 3.6.0.3 (and higher)
 +
| PARENTS = [[Geometry (RW Section)|Geometry]] ''([[Extension (RW Section)|Extension]])''
 +
}}
  
'''Breakable''', formerly '''Breakable Model''', is one of Rockstar's [[List of RW section IDs#Rockstar.27s_Custom_Sections|custom sections]] used in [[GTA San Andreas]]. It contains information on how to split breakable objects when they are hit. An object including this section has to be defined in [[object.dat]].
+
'''Breakable''', formerly '''Breakable Model''', is one of Rockstar's [[List of RW section IDs|custom sections]] used in [[GTA San Andreas]]. It contains information on how to split breakable objects when they are hit. An object including this section has to be defined in [[object.dat]].
 
 
The typical location in a SA [[model file|dff]] section hierarchy is ''[[Clump (RW Section)|Clump]] > [[Geometry List (RW Section)|Geometry List]] > [[Geometry (RW Section)|Geometry]] > [[Extension (RW Section)|Extension]] > Breakable.
 
  
 
==Magic number==
 
==Magic number==
Line 11: Line 17:
 
  UINT32  magicNumber
 
  UINT32  magicNumber
  
If zero, the section ends here. A non-zero value has no particular meaning and can be any (see [[Talk:Breakable_model_(RW_Section)#Meaningless values|Meaningless values]]).
+
If zero, the section ends here. A non-zero value has no particular meaning and can be any (see [[Talk:Breakable_(RW_Section)#Meaningless values|Meaningless values]]).
  
 
==Header==
 
==Header==
Line 37: Line 43:
 
  UINT32  (assumed offset to ambientColors, unused)
 
  UINT32  (assumed offset to ambientColors, unused)
  
The position rule imposes whether to calculate the position relatively to the collision model or to the clump/atomic ''RwFrame''. See [[Talk:Breakable_model_(RW_Section)#Meaningless values|Meaningless values]] for clarifications about the unused fields.
+
The position rule imposes whether to calculate the position relatively to the collision model or to the clump/atomic ''RwFrame''. See [[Talk:Breakable_(RW_Section)#Meaningless values|Meaningless values]] for clarifications about the unused fields.
  
 
==Vertex data==
 
==Vertex data==
Line 59: Line 65:
  
 
==Tools and Scripts==
 
==Tools and Scripts==
* {{GTAF|269717|Breakable Objects Export Script}} by {{U|Deniska}}. A script for 3dsMax which allows to export Breakable model information to seperate files.
+
 
 +
* {{GTAF|269717|Breakable Objects Export Script}} by {{U|Deniska}}. A script for 3dsMax which allows to export Breakable model information to separate files.
 +
 
 +
{{N|SA}}

Latest revision as of 13:02, 11 September 2020

Breakable
RenderWare Stream Section
Vendor Rockstar Games
Module Plug-In
Module ID 0x0253F2
Identifier 0xFD
Chunk ID 0x0253F2FD
Versions 3.6.0.3 (and higher)
Hierarchy
Parents:
Geometry (Extension)
Children:
None
Extensions:
None
File Format

Breakable, formerly Breakable Model, is one of Rockstar's custom sections used in GTA San Andreas. It contains information on how to split breakable objects when they are hit. An object including this section has to be defined in object.dat.

Magic number

The initial 4 bytes sequence signals the usage of the extension:

UINT32  magicNumber

If zero, the section ends here. A non-zero value has no particular meaning and can be any (see Meaningless values).

Header

There is a 52 byte header which holds information about the amount of data arrays that follow:

UINT32  posnRule (0 = OBJECT_ORIGIN, 1 = COLLISION_ORIGIN)
// Vertex data
UINT16  numVertices
UINT16  
UINT32  (assumed offset to verts, unused)
UINT32  (assumed offset to texCoords, unused)
UINT32  (assumed offset to preLitLum, unused)
// Triangle data
UINT16  numTriangles
UINT16  
UINT32  (assumed offset to vertIndices, unused)
UINT32  (assumed offset to matIndices, unused)
// Material data
UINT16  numMaterials
UINT16  
UINT32  (assumed offset to textures, unused)
UINT32  (assumed offset to textureNames, unused)
UINT32  (assumed offset to textureMasks, unused)
UINT32  (assumed offset to ambientColors, unused)

The position rule imposes whether to calculate the position relatively to the collision model or to the clump/atomic RwFrame. See Meaningless values for clarifications about the unused fields.

Vertex data

FLOAT[3]    verts[numVertices]
FLOAT[2]    texCoords[numVertices]
BYTE[4]     preLitLum[numVertices] (RGBA)

Triangle data

UINT16[3]   vertIndices[numTriangles]
UINT16      matIndices[numTriangles]

Material data

Each polygon group sharing the same material is treated as a separate fragment when the object is split up:

CHAR[32]    textureNames[numMaterials]
CHAR[32]    textureMasks[numMaterials]
FLOAT[3]    ambientColors[numMaterials] (RGB normalized in range [0,1])

Tools and Scripts