arma:file_formats:pew
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| arma:file_formats:pew [2009/07/07 23:08] – added new info. snakeman | arma:file_formats:pew [2024/08/01 08:06] (current) – links added. snakeman | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | Introduction | + | ====== ArmA 1 PEW File Format ====== |
| - | Pew are Visitor' | + | [[https:// |
| - | Visitor is a Gui tool interface | + | **ArmA 1** aka Armed Assault (ArmA) |
| + | |||
| + | |||
| + | ====== Introduction ====== | ||
| + | |||
| + | PEW are Visitor' | ||
| + | |||
| + | Visitor is a GUI tool that interacts with Bulldozer, an inbuilt ' | ||
| The contents of the project file, pew, are not directly related to the ultimate output, a wrp file. However, that data, of course, contains all similar elements, such as road networks, elevations, cell matrices, models and textures. | The contents of the project file, pew, are not directly related to the ultimate output, a wrp file. However, that data, of course, contains all similar elements, such as road networks, elevations, cell matrices, models and textures. | ||
| Line 10: | Line 17: | ||
| While there have been several pew versions, the one's listed here are | While there have been several pew versions, the one's listed here are | ||
| - | + | < | |
| - | * POSEW59 and | + | *POSEW59 and |
| - | * POSEW60 | + | *POSEW60 |
| + | </ | ||
| there are only a few subtle differences to their makeup. | there are only a few subtle differences to their makeup. | ||
| + | ====== Legend ====== | ||
| - | Legend | + | see Generic FileFormat Data Types |
| - | Little endian byte order, lsb first for numeric values, text is stored in Big endian byte order. | ||
| - | Type Description | ||
| - | byte 8 bit (1 byte) | ||
| - | short 16 bit signed short (2 bytes) | ||
| - | int 32 bit signed integer (4 bytes) | ||
| - | float 32 bit signed single precision floating point value (4 bytes) | ||
| - | double 64 bit signed single precision floating point value (8 bytes) | ||
| - | asciiz Null terminated (0x00) variable length ascii string | ||
| - | ascii fixed length ascii string(UTF-8) | ||
| - | XYPair | + | ====== File Format ====== |
| + | This file format is principally used with Armed Assault v1.09 and later plus the ArmA Tools Suite Final release (v1.14). | ||
| <code cpp> | <code cpp> | ||
| - | XYPair | + | POSEW59 |
| - | { | + | |
| - | | + | |
| - | } | + | |
| - | </code> | + | |
| + | OFPTexture | ||
| + | ulong nObjectTemplates; | ||
| + | ObjectTemplate | ||
| + | shortBool | ||
| + | if (!NoOfpTerrains) | ||
| + | { | ||
| + | ulong nOFPTerrains; | ||
| + | | ||
| + | | ||
| + | | ||
| + | if (!NoOFPForests) | ||
| + | { | ||
| + | ulong nOFPForests; | ||
| + | OFPForest | ||
| + | } | ||
| + | RoadNets | ||
| + | Elevation | ||
| + | ulong NoOfObjects; | ||
| + | Object | ||
| + | ulong NoOfLayers; | ||
| + | String | ||
| + | Layer Layers[[NoOfLayers]] ; | ||
| - | RGBAColor | + | if (POSEW60) |
| + | { | ||
| + | | ||
| + | } | ||
| + | else // pose59 | ||
| + | { | ||
| + | ulong nNamedZones; | ||
| + | NamedZone | ||
| + | } | ||
| - | <code cpp> | + | ulong nRoadBlocks; |
| - | RGBAColor | + | |
| - | { | + | |
| - | byte r,g,b,a; // // 0xFF: | + | if (POSEW60) |
| - | } | + | |
| + | | ||
| + | NamedZone | ||
| + | } | ||
| + | else // pose59 | ||
| + | { | ||
| + | | ||
| + | } | ||
| + | ulong nKeyPoints; | ||
| + | KeyPoint | ||
| + | ulong NoOfBackgrounds; | ||
| + | Background | ||
| + | ulong TotalSizeOfSelections; | ||
| + | ulong nSelections; | ||
| + | Selection | ||
| + | } | ||
| </ | </ | ||
| - | * RGBA colors correspond to Microsoft' | ||
| - | * They normally come in pairs innside the pew structures | ||
| - | + | ====== PoseHeader ====== | |
| - | String | + | |
| <code cpp> | <code cpp> | ||
| - | String | + | |
| - | { | + | { |
| - | ulong | + | |
| - | Asciiz Characters;// null terminated regardless. | + | |
| + | ulong | ||
| + | | ||
| + | String | ||
| + | // Folderlocation of the rvmat material list | ||
| + | String | ||
| + | float | ||
| + | float | ||
| + | String | ||
| + | }; | ||
| </ | </ | ||
| - | Length always =strlen(Characters)+1; | ||
| - | This is a pre-calculated convenience to reduce load times (and skip over the variable length block). | + | ====== OFPTexture ====== |
| - | + | ||
| - | File Format | + | |
| - | + | ||
| - | * This file format is principally used with Armed Assault v1.09 and later plus the ArmA Tools Suite Final release (v1.14). | + | |
| <code cpp> | <code cpp> | ||
| - | POSEW59 | + | OFPTexture |
| - | | + | |
| { | { | ||
| - | | + | ulong TextureID; |
| - | ulong | + | |
| - | Texture | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | if (!NoTerrains) | + | |
| - | { | + | |
| - | | + | |
| - | | + | |
| - | } | + | |
| - | | + | |
| - | if (!NoForests) | + | |
| - | { | + | |
| - | | + | |
| - | | + | |
| - | } | + | |
| - | | + | |
| - | Terrain | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | if (POSEW60) | + | |
| - | { | + | |
| - | ulong | + | |
| - | Background | + | |
| - | } | + | |
| - | else // pose59 | + | |
| - | { | + | |
| - | | + | |
| - | | + | |
| - | } | + | |
| - | + | ||
| - | | + | |
| - | | + | |
| - | + | ||
| - | | + | |
| - | { | + | |
| - | | + | |
| - | | + | |
| - | } | + | |
| - | else // pose59 | + | |
| - | { | + | |
| - | ulong | + | |
| - | Background | + | |
| - | } | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| } | } | ||
| </ | </ | ||
| - | PoseHeader | + | ====== ObjectTemplate ====== |
| <code cpp> | <code cpp> | ||
| - | Header | + | ObjectTemplate |
| - | { | + | { |
| - | char | + | |
| - | + | | |
| - | | + | ulong |
| - | ulong UnknownLong; // | + | // 0 Undefined - This type should never be encountered. |
| - | String | + | // 1 Natural |
| - | String | + | // 2 Artificial |
| - | float GridSize; //50.0 | + | // 3 Road (RoadFlag will be true) |
| - | float SellSize; //400.0 (SegmentSize - SegmentOverlap) | + | // 4 Forest |
| - | String | + | // 5 Road2 (RoadFlag will be false) |
| - | }; | + | RGBAColor |
| + | | ||
| + | double | ||
| + | | ||
| + | XYZTriplet | ||
| + | double | ||
| + | | ||
| + | shortBool Generally0x01; | ||
| + | shortBool | ||
| + | double | ||
| + | | ||
| + | double | ||
| + | | ||
| + | double | ||
| + | shortBool | ||
| + | if (RoadFlag) | ||
| + | { | ||
| + | TransformMatrix RoadNamedSelections; // (LB, PB, LE, PE) | ||
| + | | ||
| + | | ||
| + | ulong nNamedVectors; | ||
| + | NamedVector | ||
| + | ulong MarkerType; | ||
| + | } | ||
| </ | </ | ||
| - | Texture | + | ====== NamedVector ====== |
| <code cpp> | <code cpp> | ||
| - | Texture | + | NamedVector |
| - | { | + | { |
| - | ulong | + | |
| - | String | + | LongBool |
| - | String | + | ulong nTriplets; // always 2 |
| - | String | + | XYZTriplet StartEndPos[[nTriplets]]; |
| - | byte UnknownBytes[14]; // (typically 0) | + | } |
| - | | + | |
| - | } | + | |
| </ | </ | ||
| - | ObjectType | + | |
| + | ====== OFPTerrain ====== | ||
| <code cpp> | <code cpp> | ||
| - | ObjectType | + | OFPTerrain |
| { | { | ||
| - | String | + | |
| - | String | + | |
| - | | + | ulong |
| - | | + | |
| - | RGBAColor | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | ulong ModelID; | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | double Scale0; | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | if (RoadFlag) | + | |
| - | { | + | |
| - | | + | |
| - | | + | |
| - | }; | + | |
| - | // ulong MarkerType; | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| } | } | ||
| </ | </ | ||
| - | ArtificialObject | + | ====== OFPSurface ====== |
| <code cpp> | <code cpp> | ||
| - | ArtificialObject | + | OFPSurface |
| { | { | ||
| - | | + | |
| - | | + | |
| - | | + | |
| - | XYZTriplet StartEndPos[nTriplets]; | + | |
| } | } | ||
| </ | </ | ||
| - | TerrainType | ||
| - | <code cpp> | + | ====== OFPForest ====== |
| - | TerrainType | + | |
| - | { | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | } | + | |
| - | </ | + | |
| - | + | ||
| - | Surface | + | |
| <code cpp> | <code cpp> | ||
| - | Surface | + | |
| - | { | + | { |
| - | | + | String |
| - | float Surfacefloat[4]; | + | |
| - | byte | + | |
| - | } | + | ulong |
| + | ulong | ||
| + | ulong | ||
| + | ulong | ||
| + | ulong | ||
| + | } | ||
| </ | </ | ||
| - | Forest | ||
| - | |||
| - | <code cpp> | ||
| - | Forest | ||
| - | { | ||
| - | | ||
| - | | ||
| - | | ||
| - | | ||
| - | | ||
| - | | ||
| - | | ||
| - | | ||
| - | } | ||
| - | </ | ||
| + | ====== RoadNet ====== | ||
| <code cpp> | <code cpp> | ||
| - | RoadNet | + | |
| - | + | if (!NoRoads) | |
| - | shortBool NoRoads; | + | { |
| - | | + | ulong nTypes; |
| - | | + | RoadType RoadTypes[[nTypes]]; |
| - | | + | ulong nXRoads; |
| - | | + | XRoad XRoads[[nXRoads]]; |
| - | | + | } |
| - | | + | |
| - | | + | |
| </ | </ | ||
| - | RoadType | + | ====== |
| <code cpp> | <code cpp> | ||
| - | RoadType | + | |
| - | { | + | { |
| - | | + | String |
| - | | + | RGBA |
| - | RGBA | + | |
| - | | + | shortBool |
| - | | + | double |
| - | | + | double |
| - | | + | ulong nStraights; |
| - | | + | RoadList |
| - | | + | ulong nCurves; |
| - | | + | RoadList |
| - | | + | ulong nSpecials; |
| - | | + | RoadList |
| - | | + | ulong nTerminators; |
| - | | + | RoadList |
| - | | + | } |
| - | } | + | } |
| </ | </ | ||
| - | RoadList | + | ====== |
| <code cpp> | <code cpp> | ||
| - | RoadList | + | |
| - | { | + | { |
| - | String | + | |
| - | ulong | + | |
| - | ushort | + | |
| - | shortBool | + | |
| - | } | + | } |
| - | </ | + | |
| MeterType | MeterType | ||
| - | + | :Type Straights Curves | |
| - | | + | :0 6 |
| - | 0 6 25 meters | + | :1 |
| - | 1 12 50 | + | :2 |
| - | 2 25 75 | + | :3 |
| - | 3 100 | + | </ |
| Broadly speaking, there are a few basic road types | Broadly speaking, there are a few basic road types | ||
| - | | + | < |
| - | * silnice Paved | + | *asfalt |
| - | * cesta dirt | + | *silnice |
| + | *cesta | ||
| + | </ | ||
| Each RoadType describes the general characteristics of a Dirt Road as opposed to (say) an Asphalt one. | Each RoadType describes the general characteristics of a Dirt Road as opposed to (say) an Asphalt one. | ||
| - | Each of these RoadTypes (such as asphalt) can have multiple curved, straight, special, and termination p3d models associated with them. | + | Each of these RoadTypes |
| Generally speaking, there are | Generally speaking, there are | ||
| - | + | < | |
| - | * 3 ' | + | *3 ' |
| - | * 4 ' | + | *4 ' |
| - | * 1 ' | + | *1 ' |
| + | </ | ||
| The termination type is a road like any other but tends to be a fixed 6 meter fade out of the general road texture. | The termination type is a road like any other but tends to be a fixed 6 meter fade out of the general road texture. | ||
| - | XRoad | + | |
| + | ====== | ||
| <code cpp> | <code cpp> | ||
| - | XRoad | + | XRoad |
| - | { | + | { |
| - | | + | String |
| - | | + | ushort |
| - | | + | RGBA color; |
| - | | + | shortBool CanChangeBankAngle; |
| - | | + | ulong |
| - | | + | String |
| - | } | + | } |
| </ | </ | ||
| Although CrossRoads could, conceivably, | Although CrossRoads could, conceivably, | ||
| - | | + | < |
| - | * Type 3: A Genuine crossroad (4 way intersection) | + | *Type 1: A T_Junction (3 intersections) |
| + | *Type 3: A Genuine crossroad (4 way intersection) | ||
| + | </ | ||
| For T_Junctions, | For T_Junctions, | ||
| Line 358: | Line 329: | ||
| Without taking too literal an interpretation, | Without taking too literal an interpretation, | ||
| - | | + | < |
| - | * silnice: Paved | + | *asfaltka: |
| - | * cesta: Dirt | + | *silnice: Paved |
| + | *cesta: | ||
| + | </ | ||
| Thus the names of each intersection reflect the road type of that intersection, | Thus the names of each intersection reflect the road type of that intersection, | ||
| - | The overall name of the crossroad itself, tries to reflect the nature of it's makeup thus kr_asfaltka_asfaltka_t: | + | The overall name of the crossroad itself, tries to reflect the nature of it's makeup thus |
| - | Terrain | + | kr_asfaltka_asfaltka_t: |
| + | |||
| + | kr_silince_x_cesta: | ||
| + | |||
| + | |||
| + | ====== Elevation ====== | ||
| <code cpp> | <code cpp> | ||
| - | Terrain | + | |
| - | { | + | { |
| - | | + | XYPair |
| - | | + | float |
| - | | + | float BlueEdgeTerrainHeights[[NoOfBlueFloats]] ; //Always zero values |
| - | | + | // NoOfBlueFloats = (GridSize_Y |
| - | | + | ulong Always0; |
| - | } | + | } |
| </ | </ | ||
| - | Object | + | |
| + | ====== | ||
| <code cpp> | <code cpp> | ||
| - | Object | + | |
| - | { | + | { |
| - | ShortBool IsPresent; | + | ShortBool IsPresent; |
| - | if (IsPresent) | + | if (IsPresent) |
| - | { ShortBool | + | { |
| - | ulong InstanceId; | + | |
| - | float TransformColumn[3][4]; | + | ulong |
| - | // this is a standard DirectX Transform matrix | + | float |
| - | // but in COLUMN format; | + | |
| - | double ObjectRelativeSize; | + | |
| - | String InstanceName; | + | double |
| - | float RelativeSurfaceElevation; | + | String |
| - | RGBA OutlineColour; | + | float |
| - | RGBA ObjectColour; | + | RGBA OutlineColour; |
| - | ulong ObjectID; | + | RGBA ObjectColour; |
| - | }; | + | ulong ObjectTemplateID; |
| - | }; | + | }; |
| + | }; | ||
| </ | </ | ||
| - | Layer | + | |
| + | ====== | ||
| <code cpp> | <code cpp> | ||
| - | Layer | + | |
| - | | + | { |
| - | String | + | ulong |
| - | ulong | + | String |
| - | // TextureXSize = TerrainXSize >> SizeType; | + | |
| - | // | + | if (DefaultIndicator == 0) |
| - | // | + | { |
| - | String | + | ulong SurfaceTable[[TableSize.x*y]]; |
| - | ushort | + | ulong TextureTable[[TableSize.x*y]]; |
| - | | + | |
| - | | + | |
| - | | + | }; |
| - | | + | if (DefaultIndicator == 1) |
| - | char uchar[16384]; | + | { |
| - | char uchar[2]; | + | ulong |
| - | | + | TerrainMaterial[[NoOfTerrainMaterials]] |
| - | | + | { |
| - | | + | ulong BitFlags; |
| - | | + | String MaterialName; |
| - | | + | ulong TypeID; |
| - | | + | }; |
| - | | + | ulong RvmatTable[[TableSize.x*y]]; |
| - | | + | }; |
| - | | + | }; |
| - | | + | |
| - | | + | TableSize = Terrain.GridSize>> |
| - | | + | |
| - | | + | |
| </ | </ | ||
| - | Background | + | |
| + | ====== RoadBlock ====== | ||
| <code cpp> | <code cpp> | ||
| - | Background // this structure has not been seen | + | RoadBlock |
| { | { | ||
| - | String BackgroundFilename; | + | ShortBool IsPresent; |
| - | | + | if IsPresent |
| - | | + | { |
| - | | + | ShortBool Always1; |
| - | | + | |
| - | | + | /* typical data |
| - | ulong | + | **00 00 00 00 00 |
| - | ulong | + | 00 00 F0 2C |
| + | 46 00 98 23 | ||
| + | 46 C6 6F C6 | ||
| + | 42 0E 01 00 | ||
| + | 00 01 00 00 | ||
| + | F0 2C 46 00 | ||
| + | 98 | ||
| + | 23 46 C6 6F | ||
| + | C6 42 0E 01 | ||
| + | 00 00 4B 00 | ||
| + | 00 00 00 00 | ||
| + | 00 00 | ||
| + | */ | ||
| + | ushort | ||
| + | | ||
| + | | ||
| + | | ||
| + | ShortBool Always1; | ||
| + | | ||
| + | FamilyList FamilyLists[[Count]]; | ||
| + | ulong Unknown[[27]]; | ||
| + | /* typical data | ||
| + | **FA D4 30 BF 94 58 08 3D 00 00 C8 C0 00 00 60 C0 | ||
| + | **00 00 00 00 00 00 48 C1 00 00 60 40 00 00 00 00 | ||
| + | **00 00 48 C1 00 00 60 C0 00 00 00 00 00 00 00 00 | ||
| + | **00 00 60 40 00 00 00 00 00 00 00 00 00 00 C8 C0 | ||
| + | **00 00 00 00 00 00 30 C0 00 00 C8 C0 00 00 00 00 | ||
| + | **00 00 1C C1 04 01 00 00 00 00 00 00 00 00 00 00 | ||
| + | **09 00 00 00 0B 80 00 00 04 00 00 00 | ||
| + | */ | ||
| + | ulong Count; | ||
| + | ModelList ModelLists[[Count]]; | ||
| + | } | ||
| } | } | ||
| + | Type | ||
| + | *0 Road Ending with FamilyName and it's ModelName_konec | ||
| + | *1 TJunction ModelName Only | ||
| + | *2 Road similar to type 0 | ||
| + | *3 Xroad with ModelName Only | ||
| </ | </ | ||
| - | RoadBlock | + | |
| + | ====== FamilyList ====== | ||
| <code cpp> | <code cpp> | ||
| - | RoadBlock | + | |
| - | { | + | |
| - | | + | |
| - | if IsPresent | + | |
| { | { | ||
| - | ShortBool Always1; | + | |
| - | | + | String Name; // "silnice hlavni silnic\0& |
| - | /* typical data | + | |
| - | **00 00 00 00 00 00 00 F0 2C 46 00 98 23 46 C6 6F | + | |
| - | **C6 42 0E 01 00 00 01 00 00 F0 2C 46 00 98 23 46 | + | |
| - | **C6 6F C6 42 0E 01 00 00 4B 00 00 00 00 00 00 00 | + | |
| - | */ | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | /* typical data | + | |
| - | **FA D4 30 BF 94 58 08 3D 00 00 C8 C0 00 00 60 C0 | + | |
| - | **00 00 00 00 00 00 48 C1 00 00 60 40 00 00 00 00 | + | |
| - | **00 00 48 C1 00 00 60 C0 00 00 00 00 00 00 00 00 | + | |
| - | **00 00 60 40 00 00 00 00 00 00 00 00 00 00 C8 C0 | + | |
| - | **00 00 00 00 00 00 30 C0 00 00 C8 C0 00 00 00 00 | + | |
| - | **00 00 1C C1 04 01 00 00 00 00 00 00 00 00 00 00 | + | |
| - | **09 00 00 00 0B 80 00 00 04 00 00 00 | + | |
| - | */ | + | |
| - | | + | |
| - | | + | |
| } | } | ||
| - | } | ||
| </ | </ | ||
| - | Type | + | This struct is principally used for Xroads and Tjunctions. It typically lists the order of all RoadFamilyName' |
| - | * 0 Road Ending with FamilyName and it's ModelName_konec | ||
| - | * 1 TJunction ModelName Only | ||
| - | * 2 Road similar to type 0 | ||
| - | * 3 Xroad with ModelName Only | ||
| - | + | ====== ModelList ====== | |
| - | FamilyList | + | |
| <code cpp> | <code cpp> | ||
| - | FamilyList | + | |
| - | { | + | { |
| - | ulong Unknown[4];// | + | ulong |
| - | | + | BlockModel BlockModel[[Count]]; |
| - | } | + | String |
| + | ulong | ||
| + | | ||
| + | ShortBool | ||
| + | ulong buf2[[4]]; | ||
| + | } | ||
| </ | </ | ||
| - | This struct is principally used for Xroads and Tjunctions. It typically lists the order of all RoadFamilyName' | ||
| - | ModelList | + | ====== BlockModel ====== |
| <code cpp> | <code cpp> | ||
| - | ModelList | + | BlockModel |
| - | { | + | { |
| - | | + | ulong |
| - | BlockModel BlockModel[Count]; | + | |
| - | | + | |
| - | | + | ulong |
| - | RGBA | + | ushort |
| - | | + | |
| - | | + | ulong |
| - | } | + | /*typical data |
| + | **00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ||
| + | **C4 76 C2 3F 0E EB 8A C1 00 00 00 00 BE 00 00 00 | ||
| + | **CC ED 26 BE CA 0F 12 40 56 30 28 3F 00 00 00 00 | ||
| + | **18 CA 04 C1 48 8B 3D C0 00 00 00 00 2D 3D 91 C1 | ||
| + | **06 01 C0 40 00 00 00 00 EE 98 84 C1 99 99 91 C0 | ||
| + | **00 00 00 00 64 4A 5F 35 99 99 91 40 00 00 00 00 | ||
| + | **64 4A 5F B5 01 00 | ||
| + | */ | ||
| + | ShortBool | ||
| + | } | ||
| </ | </ | ||
| - | BlockModel | ||
| - | <code cpp> | + | ====== NamedZone ====== |
| - | | + | |
| - | { | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | /*typical data | + | |
| - | **00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | + | |
| - | **C4 76 C2 3F 0E EB 8A C1 00 00 00 00 BE 00 00 00 | + | |
| - | **CC ED 26 BE CA 0F 12 40 56 30 28 3F 00 00 00 00 | + | |
| - | **18 CA 04 C1 48 8B 3D C0 00 00 00 00 2D 3D 91 C1 | + | |
| - | **06 01 C0 40 00 00 00 00 EE 98 84 C1 99 99 91 C0 | + | |
| - | **00 00 00 00 64 4A 5F 35 99 99 91 40 00 00 00 00 | + | |
| - | **64 4A 5F B5 01 00 | + | |
| - | */ | + | |
| - | | + | |
| - | } | + | |
| - | </ | + | |
| - | + | ||
| - | Forest Block | + | |
| <code cpp> | <code cpp> | ||
| - | UnknownStruct2 | + | |
| - | { | + | |
| - | | + | |
| - | if IsPresent | + | |
| { | { | ||
| - | ShortBool | + | ShortBool |
| - | BisString Name1; | + | if IsPresent |
| - | ulong | + | |
| - | ulong | + | |
| - | float | + | |
| - | /* Typical Data | + | |
| - | **00 00 61 45 00 78 1B 46 00 20 64 45 00 20 19 46 | + | |
| - | **00 20 64 45 00 78 1B 46 00 40 67 45 00 58 18 46 | + | |
| - | **00 40 67 45 00 78 1B 46 00 60 6A 45 00 58 18 46 | + | |
| - | **00 60 6A 45 00 78 1B 46 00 80 6D 45 00 90 17 46 | + | |
| - | **00 80 6D 45 00 B0 1A 46 00 A0 70 45 00 C8 16 46 | + | |
| - | **00 A0 70 45 00 E8 19 46 00 C0 73 45 00 00 16 46 | + | |
| - | */ | + | |
| - | ulong | + | |
| - | if POSEW60 | + | |
| { | { | ||
| - | | + | |
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | { | ||
| + | float TopLeft.xy; | ||
| + | float BottomRight.xy; | ||
| + | | ||
| + | /* Typical Data | ||
| + | **00 00 61 45 00 78 1B 46 00 20 64 45 00 20 19 46 | ||
| + | **00 20 64 45 00 78 1B 46 00 40 67 45 00 58 18 46 | ||
| + | **00 40 67 45 00 78 1B 46 00 60 6A 45 00 58 18 46 | ||
| + | **00 60 6A 45 00 78 1B 46 00 80 6D 45 00 90 17 46 | ||
| + | **00 80 6D 45 00 B0 1A 46 00 A0 70 45 00 C8 16 46 | ||
| + | **00 A0 70 45 00 E8 19 46 00 C0 73 45 00 00 16 46 | ||
| + | */ | ||
| + | | ||
| + | if POSEW60 | ||
| + | { | ||
| + | | ||
| + | } | ||
| + | | ||
| + | { | ||
| + | BisString Name2; // | ||
| + | } | ||
| } | } | ||
| - | else | + | }; |
| - | { | + | |
| - | | + | |
| - | } | + | |
| - | } | + | |
| - | }; | + | |
| </ | </ | ||
| - | Locale | + | |
| + | ====== KeyPoint ====== | ||
| <code cpp> | <code cpp> | ||
| - | Locale | + | |
| - | { | + | { |
| - | | + | LongBool |
| - | | + | String |
| - | | + | RGBA |
| - | | + | |
| - | | + | |
| - | | + | float |
| - | | + | float Size[[2]]; // 250 x 250.0 eg (widht and height) |
| - | | + | ulong |
| - | | + | BisString TownName; |
| - | | + | BisString LocaleType; //"NameCity& |
| - | } | + | BisString |
| + | } | ||
| </ | </ | ||
| Each of these locales have a LocaleType. Some of which are: | Each of these locales have a LocaleType. Some of which are: | ||
| - | | + | *NameCity |
| - | * NameCityCapital | + | |
| - | * NameVillage | + | |
| - | * VegetationBroadLeaf (Forest) | + | |
| + | *NameCityCapital | ||
| + | |||
| + | *NameVillage | ||
| + | |||
| + | *VegetationBroadLeaf (Forest) | ||
| There is always a classname associated with this locale, | There is always a classname associated with this locale, | ||
| - | | + | *Forest_Owls |
| - | * Abel_LaTrinite | + | |
| + | *Abel_LaTrinite | ||
| and in most cases a text name | and in most cases a text name | ||
| Line 617: | Line 602: | ||
| "La Refuge Des Chassuers" | "La Refuge Des Chassuers" | ||
| - | (Type Viewpoints and Marine eg) do not have names associated with them. There is no "place" | + | (Type Viewpoints and Marine eg) do not have names associated with them. There is no "place& |
| - | Icon | + | |
| + | ====== Background ====== | ||
| <code cpp> | <code cpp> | ||
| - | Icon | + | Background // this structure has not been seen |
| - | { | + | { |
| - | BisString IconName; //"sat_lco.bmp" | + | String BackgroundFilename;//"sat_lco.bmp" |
| - | BisString Name; //"overlay1" | + | String BackgroundName; //"overlay1" |
| - | | + | float OffsetXY[[2]]; |
| + | | ||
| + | | ||
| + | | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | |||
| + | ====== Selection ====== | ||
| + | |||
| + | <code cpp> | ||
| + | | ||
| + | { | ||
| + | ushort | ||
| + | char[[]] | ||
| + | ulong nSubSelections; | ||
| + | SubSelection SubSelections[[nSubSelections]] | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ====== SubSelection ====== | ||
| + | |||
| + | <code cpp> | ||
| + | | ||
| + | { | ||
| + | ulong ObjectId; | ||
| + | | ||
| + | byte Unknown[[7]]; | ||
| } | } | ||
| </ | </ | ||
| - | Enums | ||
| - | ObjectClassEnum | + | ====== Enums ====== |
| + | |||
| + | ====== | ||
| <code cpp> | <code cpp> | ||
| - | enum ObjectClassEnum { Natural = 1, Artificial = 2, Road = 3, Forest = 4, ArtificialAndDefinedInRoad = 5 } | + | |
| + | | ||
| + | Natural = 1, | ||
| + | Artificial = 2, | ||
| + | Road = 3, | ||
| + | Forest = 4, | ||
| + | ArtificialAndDefinedInRoad = 5 | ||
| + | | ||
| </ | </ | ||
| - | MarkerTypeEnum | + | |
| + | ====== | ||
| <code cpp> | <code cpp> | ||
| - | enum MarkerTypeEnum { Rectangular = 0, Elliptical = 1 } | + | |
| + | | ||
| + | Rectangular = 0, | ||
| + | Elliptical = 1 | ||
| + | | ||
| </ | </ | ||
| + | |||
| + | As of v60 a rarely used sub structure with ObjTemplates. | ||
arma/file_formats/pew.1247008127.txt.gz · Last modified: 2009/07/07 23:08 (external edit)
