home *** CD-ROM | disk | FTP | other *** search
/ PC World 2006 July & August / PCWorld_2006-07-08_cd.bin / temacd / planearcade / planearcade.exe / Tank3.bmp / q3structs.h < prev    next >
Text File  |  2004-04-12  |  10KB  |  308 lines

  1. ///////////////////////////////////////////////
  2. //original zdrojak: Jan Koci (koci.opengl.cz)//
  3. //upravil:          Peter AdamΦφk            // 
  4. ///////////////////////////////////////////////
  5.  
  6.  
  7.      ///////////////
  8.      // Struktury //
  9.      ///////////////
  10.  
  11.      // This is our BSP header structure
  12.      // HlaviΦka souboru BSP
  13.      struct TBspHeader
  14.      {
  15.           // This should always be 'IBSP'
  16.           // Identifikßtor, kter² musφ b²t v₧dy °et∞zec IBSP
  17.           char pc_id[4];
  18.  
  19.           // This should be 0x2e for Quake 3 files
  20.           // Verze, kterß musφ mφt hodnotu 0x2e
  21.          int i_version;
  22.      };
  23.  
  24.  
  25.      // This is our BSP lump structure
  26.      // Struktura BSP identifikßtor∙
  27.      struct TBspLump
  28.      {
  29.           // The offset into the file for the start of this lump
  30.           // Informace pot°ebnß p°i naΦφtßnφ BSP souboru,
  31.           // podle kterΘ se urΦuje, kterß z polo₧ek scΘny se mß prßv∞ naΦφtat 
  32.           int i_offset;
  33.  
  34.           // The length in bytes for this lump
  35.           // Celkovß velikost identifikßtor∙
  36.           int i_length;
  37.      };
  38.  
  39.  
  40.      // This is our BSP vertex structure
  41.      // Struktura vrchol∙ BSP scΘny
  42.      struct TBspVertex
  43.      {
  44.           // (x, y, z) position.
  45.           // xyz pozice
  46.           float pf_position[3];
  47.  
  48.           // (u, v) texture coordinate
  49.           // Texturovß koordinace
  50.           float pf_texture_coord[2];
  51.  
  52.           // (u, v) lightmap coordinate
  53.           // Texturovß koordinace sv∞teln²ch map (lightmap)
  54.           float pf_lightmap_coord[2];
  55.  
  56.           // (x, y, z) normal vector
  57.           // Normßlov² vektor vrcholu
  58.           float pf_normal[3];
  59.  
  60.           // RGBA color for the vertex
  61.           // RGBA barevnß hodnota vrcholu
  62.           byte pby_color[4];
  63.      };
  64.  
  65.  
  66.      // This is our BSP face structure
  67.      // Struktura ploÜek BSP scΘny
  68.      struct TBspFace
  69.      {
  70.           // The index into the texture array
  71.           // IdentifikßΦnφ Φφslo textury
  72.           int i_texture_id;
  73.  
  74.           // The index for the effects (or -1 = n/a)
  75.           // IdentifikaΦnφ Φφslo efekt∙ (hodnoty se zatφm nenaΦφtajφ)
  76.           int i_effect;
  77.  
  78.           // 1=polygon, 2=patch, 3=mesh, 4=billboard
  79.           // Typ ploÜky viz. v²Üe
  80.           int i_type;
  81.  
  82.           // The starting index into this face's first vertex
  83.           // Index prvnφho vrcholu ploÜky
  84.           int i_start_vert_index;
  85.  
  86.           // The number of vertices for this face
  87.           // PoΦet vrchol∙ ploÜky
  88.           int i_num_of_verts;
  89.  
  90.           // The index into the first meshvertex
  91.           // Index prvnφho vrcholu skupiny vrchol∙ (hodnoty se zatφm nenaΦφtajφ)
  92.           int i_mesh_vert_index;
  93.  
  94.           // The number of mesh vertices
  95.           // PoΦet vrchol∙ ve skupin∞ vrchlol∙ (hodnoty se zatφm nenaΦφtajφ)
  96.           int i_num_mesh_verts;
  97.  
  98.           // The texture index for the lightmap
  99.           // IdentifikaΦnφ Φφslo lightmap textury
  100.           int i_lightmap_id;
  101.  
  102.           // The face's lightmap corner in the image
  103.           // RohovΘ ploÜky lightmap (hodnoty se zatφm nenaΦφtßjφ)
  104.           int pi_lightmap_corner[2];
  105.  
  106.           // The size of the lightmap section
  107.           // Velikost lightmap Φßstice (hodnoty se zatφm nenaΦφtajφ)
  108.           int pi_lightmap_size[2];
  109.  
  110.           // The 3D origin of lightmap.
  111.           // Pozice 3D lightmapy     (hodnoty se zatφm nenaΦφtajφ)
  112.           float pf_lightmap_pos[3];
  113.  
  114.           // The 3D space for s and t unit vectors.
  115.           // 3D prostor pro "st! vektorovΘ jednotky 3D lightmap (hodnoty se zatφm nenaΦφtajφ)
  116.           float ppf_lightmap_vectors[3][2];
  117.  
  118.           // The face normal.
  119.           // Normßlov² vektor ploÜky (hodnoty se zatφm nenaΦφtajφ)
  120.           float pf_normal[3];
  121.  
  122.           // The bezier patch dimensions.
  123.           // Velikost bezierovy plochy (hodnoty se zatφm nenaΦφtajφ)
  124.           int pi_bezier_size[2];
  125.      };
  126.  
  127.  
  128.      // This is our BSP texture structure
  129.      // Struktura textur BSP scΘny
  130.      struct TBspTexture
  131.      {
  132.           // The name of the texture w/o the extension
  133.           // JmΘno textury
  134.           char pc_filename[64];
  135.  
  136.           // The surface flags (unknown)
  137.           // PovrchovΘ vlajky     (hodnoty se zatφm nenaΦφtajφ)
  138.           int i_flags;
  139.  
  140.           // The content flags (unknown)
  141.           // Obsah vlajek (hodnoty se zatφm nenaΦφtajφ)
  142.           int i_flag_contents;
  143.      };
  144.  
  145.      // This is our BSP lightmap structure which stores the 128x128 RGB values
  146.      // Struktura lightmap, kterΘ jsou tvo°eny o velikosti 128x128 a RGB barev
  147.      struct TBspLightmap
  148.      {
  149.           // The RGB data in a 128x128 image
  150.           // Schrßnka pro RGB hodnoty barev lightmap a jejich velikost 128x128
  151.           byte pppby_image_bits[128][128][3];
  152.      };
  153.  
  154.      // This stores a node in the BSP tree
  155.      // Struktura uzl∙ BSP stromu
  156.      struct TBspNode
  157.      {
  158.           // The index into the planes array
  159.           // IdentifikaΦnφ Φφslo ploch
  160.           int i_plane;
  161.  
  162.           // The child index for the front node
  163.           // IdentifikaΦnφ Φφslo dce°innΘho p°ednφho uzlu
  164.           int i_front;
  165.  
  166.           // The child index for the back node
  167.           // IdentifikaΦnφ Φφslo dce°innΘho zadnφho uzlu
  168.           int i_back;
  169.  
  170.           // The bounding box min position. 
  171.           // Minimßlnφ hodnota koliznφho boxu (hodnoty se zatφm nenaΦφtajφ)
  172.           int pi_min_box[3];
  173.  
  174.           // The bounding box max position.
  175.           // Maximßlnφ hodnota koliznφho boxu (hodnoty se zatφm nenaΦφtajφ)
  176.           int pi_max_box[3];
  177.      };
  178.  
  179.      // This stores a leaf (end node) in the BSP tree
  180.      // Struktura list∙ (leaf) uzl∙ (node) BSP stromu
  181.      struct TBspLeaf
  182.      {
  183.           // The visibility cluster
  184.           // IdentifikaΦnφ Φφslo klastr∙ (cluster)
  185.           // Podle hodnoty clusteru se vyhledßvajφ listy BSP stromu
  186.           int i_cluster;
  187.  
  188.           // The area portal
  189.           // Rozsah portßlu (hodnoty se zatφm nenaΦφtajφ)
  190.           int i_area;
  191.  
  192.           // The bounding box min position
  193.           // Minimßlnφ hodnota koliznφho boxu (hodnoty se zatφm nenaΦφtajφ)
  194.           int pi_min_box[3];
  195.  
  196.           // The bounding box max position
  197.           // Maximßlnφ hodnota koliznφho boxu (hodnoty se zatφm nenaΦφtajφ)
  198.           int pi_max_box[3];
  199.  
  200.           // The first index into the face array
  201.           // IdentifikaΦnφ Φφslo ploÜky listu
  202.           int i_leaf_face;
  203.  
  204.           // The number of faces for this leaf
  205.           // PoΦet ploÜek listu
  206.           int i_num_of_leaf_faces;
  207.  
  208.           // The first index for into the brushes
  209.           // IdentifikaΦnφ Φφslo koliznφch srß₧ek (hodnoty se zatφm nenaΦφtajφ)
  210.           int i_leaf_brush;
  211.  
  212.           // The number of brushes for this leaf
  213.           // PoΦet koliznφch srß₧ek tohoto listu (hodnoty se zatφm nenaΦφtajφ)
  214.           int i_num_of_leaf_brushes;
  215.      };
  216.  
  217.      // This stores a splitter plane in the BSP tree
  218.      // Struktura d∞licφch ploch BSP stromu
  219.      struct TBspPlane
  220.      {
  221.           // Plane normal.
  222.           // Normßlov² vektor plochy
  223.           float pf_normal[3];
  224.  
  225.           // The plane distance from origin
  226.           // Vzdßlenost od plochy kdy dochßzφ k detekci bodu s d∞licφ plochou
  227.           float f_distance;
  228.      };
  229.  
  230.      // This stores the cluster data for the PVS's (Potential Visibility Sets)
  231.      // Struktura dat klastr∙ (cluster) pro PVS (Nastavenφ mo₧nΘ viditelnosti)
  232.      struct TBspVisData
  233.      {
  234.           // The number of clusters
  235.           // PoΦet klastr∙
  236.           int i_num_of_clusters;
  237.  
  238.           // The amount of bytes (8 bits) in the cluster's bitset
  239.           // Mno₧stvφ byt∙ (1byte = 8bit∙) v klastrovΘ (cluster) informaci
  240.           int i_bytes_per_cluster;
  241.  
  242.           // The array of bytes that holds the cluster bitsets
  243.           // ╪et∞zec bitov²ch informacφ klastru 
  244.           byte *pby_cluster_bitsets;
  245.      };
  246.  
  247.  
  248.      // Struktura dat srß₧ek pro detekce kolizφ
  249.     struct TBspBrush 
  250.     {
  251.         int i_brush_side;              // Startovacφ strana srß₧ky
  252.         int i_num_of_brush_sides;     // PoΦet stran srß₧ek
  253.         int i_texture_id;              // Index textury srß₧ky
  254.     };
  255.  
  256.     // Struktura d∞licφch ploch srß₧ek
  257.     struct TBspBrushSides 
  258.     {
  259.         int i_plane;                  // Index d∞licφ plochy
  260.         int i_texture_id;              // Index textury
  261.     };
  262.  
  263.     // Struktura detekΦnφch box∙
  264.     struct TBspBoundingBox
  265.     {
  266.         int pi_bounding_face[6];
  267.         int pi_bounding_vertex[8];
  268.     };
  269.  
  270.     // Struktura. stφn∙, a dalÜφch efekt∙, jako
  271.     // mlha, dve°e, okna, obloha, ohe≥, snφh...
  272.     struct TBspShader
  273.     {
  274.         char pc_name[64];    // Nßzev efektu
  275.         int i_brush_index;    // Index braÜe
  276.         int i_unknown;        // Neznßmß hodnota, snad Φas, nebo rychlos animace
  277.     };
  278.  
  279.     // Struktura. model∙..
  280.     struct TBspModel
  281.     {
  282.         // The bounding box min position 
  283.         // Minimßlnφ hodnota koliznφho boxu 
  284.         int pi_min_box[3];
  285.         
  286.         // The bounding box max position
  287.         // Maximßlnφ hodnota koliznφho boxu 
  288.         int pi_max_box[3];
  289.         
  290.         // The first index into the face array
  291.         // IdentifikaΦnφ Φφslo prvnφ ploÜky listu
  292.         int i_face_index;
  293.         
  294.         // The number of faces for this leaf 
  295.         // PoΦet ploÜek listu
  296.         int i_num_of_faces;
  297.         
  298.         // The first index for into the brushes 
  299.         // IdentifikaΦnφ Φφslo koliznφch srß₧ek 
  300.         int i_brush_index;
  301.         
  302.         // The number of brushes for this leaf
  303.         // PoΦet koliznφch srß₧ek tohoto listu 
  304.         int i_num_of_brushes;    
  305.     };
  306.  
  307.  
  308.