Wrp File Format - OPRWv17 to 24: Difference between revisions
No edit summary |
(OPRW18) |
||
Line 1: | Line 1: | ||
[[Category:Sandbox | [[Category:Sandbox]] | ||
Current state of my researches on OPRW18 file format. Any additions, suggestions, etc. are appreciated. | |||
<code><nowiki>char[4] sig //"OPWR" | |||
ulong version //0x12 | |||
ulong [2] x,y //texture cell dimension. | |||
ulong [2] x,y //elevations cell dimensions. | |||
float gridSize //in meters | |||
//still unknown stuff here | |||
Peak List | |||
{ | |||
ulong size //maybe + 1 | |||
float[size][3] XYZ //Position of the Peak(Y is heigth) | |||
} | |||
ushort[][] TextureIndices //need still some research here | |||
ushort[gridX][gridY] unknown //packed | |||
byte[gridX][gridY] envSounds? //packed | |||
float[gridX][gridY] elevation //packed | |||
Rvmat List | |||
{ | |||
ulong number of rvmats + 1 | |||
ushort 0x0 | |||
Rvmat entry | |||
{ | |||
asciiz rvmat name | |||
byte 0x00 | |||
} | |||
} | |||
Model List (w/o class names) | |||
{ | |||
ulong size //number of models | |||
asciiz[size] model_path //e.g. ca\buildings\kostelik.p3d | |||
} | |||
Model List (w/ class names) | |||
{ | |||
ulong size //number of models | |||
Model | |||
{ | |||
asciiz class_name //e.g. Land_Hangar | |||
asciiz model_path | |||
float[3] unknown | |||
ulong unknown | |||
} | |||
} | |||
//probably 2 blocks in between | |||
//lot of road blocks, which are divided by blocks of 0x00 | |||
Roadblock | |||
{ | |||
ulong size //number of roadparts | |||
roadpart | |||
{ | |||
ushort 0x02 | |||
float PosX_Start | |||
float elev_Start | |||
float PosZ_Start | |||
float PosX_End | |||
float elev_End | |||
float PosZ_End | |||
ulong || ushort[2] unknown //sorta index or ID?? or some flag thingy | |||
asciiz model_path | |||
float[12] matrix | |||
} | |||
} | |||
//Block of 0x00 | |||
Object List | |||
{ | |||
object entry | |||
{ | |||
ulong ObjectID | |||
ulong modelIndex | |||
float[12] matrix | |||
ulong 0x02 ?? | |||
} | |||
} | |||
//probably data about how objects are displayed in the editor(grey rectangles for buildings, circles for bushes and trees and so on) | |||
unknown Block | |||
{ | |||
block entry | |||
{ | |||
ulong type | |||
if(type in [0x18,0x1F,0x20]) type1 | |||
if(type in [0x03,0x04,0x14) type2 | |||
if(type in [0x19]) type3 | |||
if(type in [0x02, 0x0A, 0x0B, 0x16]) type4 | |||
//for 0x18, 0x1F, 0x20 | |||
type1 | |||
{ | |||
ulong ObjectID | |||
float[4][2] rectangle //boundaries of object | |||
} | |||
//for 0x03, 0x04, 0x14 | |||
type2 | |||
{ | |||
ulong ObjectID | |||
float[4][2] rectangle //boundaries of object | |||
ulong color?? | |||
} | |||
//for 0x19 | |||
type3 | |||
{ | |||
ulong 0xFFFFFFFF | |||
ulong unknown | |||
float[4] unknown | |||
} | |||
for 0x02, 0x0A, 0x0B, 0x16 | |||
type4 | |||
{ | |||
ulong ObjectID | |||
float[2] pos | |||
} | |||
} | |||
</nowiki></code> |
Revision as of 19:10, 1 October 2008
Current state of my researches on OPRW18 file format. Any additions, suggestions, etc. are appreciated.
char[4] sig //"OPWR"
ulong version //0x12
ulong [2] x,y //texture cell dimension.
ulong [2] x,y //elevations cell dimensions.
float gridSize //in meters
//still unknown stuff here
Peak List
{
ulong size //maybe + 1
float[size][3] XYZ //Position of the Peak(Y is heigth)
}
ushort[][] TextureIndices //need still some research here
ushort[gridX][gridY] unknown //packed
byte[gridX][gridY] envSounds? //packed
float[gridX][gridY] elevation //packed
Rvmat List
{
ulong number of rvmats + 1
ushort 0x0
Rvmat entry
{
asciiz rvmat name
byte 0x00
}
}
Model List (w/o class names)
{
ulong size //number of models
asciiz[size] model_path //e.g. ca\buildings\kostelik.p3d
}
Model List (w/ class names)
{
ulong size //number of models
Model
{
asciiz class_name //e.g. Land_Hangar
asciiz model_path
float[3] unknown
ulong unknown
}
}
//probably 2 blocks in between
//lot of road blocks, which are divided by blocks of 0x00
Roadblock
{
ulong size //number of roadparts
roadpart
{
ushort 0x02
float PosX_Start
float elev_Start
float PosZ_Start
float PosX_End
float elev_End
float PosZ_End
ulong || ushort[2] unknown //sorta index or ID?? or some flag thingy
asciiz model_path
float[12] matrix
}
}
//Block of 0x00
Object List
{
object entry
{
ulong ObjectID
ulong modelIndex
float[12] matrix
ulong 0x02 ??
}
}
//probably data about how objects are displayed in the editor(grey rectangles for buildings, circles for bushes and trees and so on)
unknown Block
{
block entry
{
ulong type
if(type in [0x18,0x1F,0x20]) type1
if(type in [0x03,0x04,0x14) type2
if(type in [0x19]) type3
if(type in [0x02, 0x0A, 0x0B, 0x16]) type4
//for 0x18, 0x1F, 0x20
type1
{
ulong ObjectID
float[4][2] rectangle //boundaries of object
}
//for 0x03, 0x04, 0x14
type2
{
ulong ObjectID
float[4][2] rectangle //boundaries of object
ulong color??
}
//for 0x19
type3
{
ulong 0xFFFFFFFF
ulong unknown
float[4] unknown
}
for 0x02, 0x0A, 0x0B, 0x16
type4
{
ulong ObjectID
float[2] pos
}
}