Advertisement
_BYTE

Types.h

Dec 14th, 2013
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 6.40 KB | None | 0 0
  1. struct vector
  2. {
  3.     float x;
  4.     float z;
  5.     float y;
  6. };
  7.  
  8. struct VERTLIST //список вершин текущего объекта
  9. {
  10.     WORD num;             // число вершин
  11.     vector *vertices;     // координаты каждой из вершин
  12. };
  13.  
  14. struct FACELIST //список граней текущего объекта
  15. {
  16.     WORD num;     // число граней
  17.     struct
  18.     {
  19.         WORD v0;    // номер первой вершины грани
  20.         WORD v1;    // номер второй вершины грани
  21.         WORD v2;    // номер третьей вершины грани
  22.         WORD flags; // флаги грани
  23.     } *faces;   // собственно список граней
  24. };
  25.  
  26. struct FACEMAT //название материала и список тех граней объекта, которым назначен этот материал
  27. {
  28.     char *name;         // название материала
  29.     WORD num;            // число граней из этого материала
  30.     WORD *face_nums; // список номеров граней из этого материала
  31. };
  32.  
  33. struct MAPLIST //текстурные координаты вершин текущего объекта
  34. {
  35.     WORD num;         // число вершин
  36.     struct
  37.     {
  38.         float u;        // координата текстуры U (по горизонтали)
  39.         float v;        // координата текстуры V (по вертикали)
  40.     } *texcoords;   // собственно список текстурных координат
  41. };
  42.  
  43. struct TRMATRIX //содержит матрицу перевода объекта
  44. {
  45.     float rotmatrix[3][3]; // матрица поворота
  46.     vector offset;         // смещение начального объекта
  47. };
  48.  
  49. struct MATNAME //название материала
  50. {
  51.     char *name; // название материала
  52. };
  53.  
  54. struct MAPFILE //имя файла с текстурой
  55. {
  56.     char *filename; // имя файла с текстурой
  57. };
  58.  
  59. struct TRACKOBJNAME //название объекта, информация о поведении которого задается в текущем блоке CHUNK_TRACKINFO
  60. {
  61.     char *name;    // название объекта
  62.     WORD flags[2]; // флаги
  63.     WORD parent;   // номер объекта-родителя
  64. };
  65.  
  66. struct TRACKPIVOT //координаты центра вращения объекта
  67. {
  68.     vector pivotpoint; // координаты центра вращения
  69. };
  70.  
  71. struct TRACKPOS //траектория объекта, заданная ключевыми значениями положения объекта
  72. {
  73.     WORD flags;           // флаги
  74.     BYTE unknown[8];      //
  75.     DWORD num;            // число ключевых значений
  76.     struct
  77.     {
  78.         DWORD frame;        // кадр данного ключевого значения
  79.         WORD splineflags;   // флаги сплайна
  80.         float *splineinfo;  // параметры сплайна (кол-во и тип зависит от значения splineflags)
  81.         vector pos;         // положение объекта
  82.     } *keys;            // собственно ключевые значения
  83. };
  84.  
  85. struct TRACKROTATE //траектория вращения объекта, заданная ключевыми значениями
  86. {                  //вектора направления оси вращения и угла поворота относительно этой оси
  87.     WORD flags;           // флаги
  88.     BYTE unknown[8];      //
  89.     DWORD num;            // число ключевых значений
  90.     struct
  91.     {
  92.         DWORD frame;        // кадр данного ключевого значения
  93.         WORD splineflags;   // флаги сплайна
  94.         float *splineinfo;  // параметры сплайна (кол-во и тип зависит от значения splineflags)
  95.         float angle;        // угол поворота (в радианах)
  96.         vector pos;         // положение объекта
  97.     } *keys;            // собственно ключевые значения
  98. };
  99.  
  100. struct TRACKFOV //поведение FOV (угла зрения) камеры, заданное ключевыми значениями
  101. {
  102.     WORD flags;           // флаги
  103.     BYTE unknown[8];      //
  104.     DWORD num;            // число ключевых значений
  105.     struct
  106.     {
  107.         DWORD frame;        // кадр данного ключевого значения
  108.         WORD splineflags;   // флаги сплайна
  109.         float *splineinfo;  // параметры сплайна (кол-во и тип зависит от значения splineflags)
  110.         float FOV;          // значение FOV
  111.     } *keys;            // собственно ключевые значения
  112. };
  113.  
  114. struct TRACKROLL //поведение roll (угла наклона) камеры, заданное ключевыми значениями
  115. {
  116.     WORD flags;           // флаги
  117.     BYTE unknown[8];      //
  118.     DWORD num;            // число ключевых значений
  119.     struct
  120.     {
  121.         DWORD frame;        // кадр данного ключевого значения
  122.         WORD splineflags;   // флаги сплайна
  123.         float *splineinfo;  // параметры сплайна (кол-во и тип зависит от значения splineflags)
  124.         float roll;         // значение roll
  125.     } *keys;            // собственно ключевые значения
  126. };
  127.  
  128. struct TRIMESH //trimesh-объект
  129. {
  130.     VERTLIST vertlist;
  131.     FACELIST facelist;
  132.     FACEMAT facemat;
  133.     MAPLIST maplist;
  134.     TRMATRIX trmatrix;
  135. };
  136.  
  137. struct TEXTURE //текстура материала
  138. {
  139.     MAPFILE mapfile;
  140. };
  141.  
  142. struct MATERIAL //материал
  143. {
  144.     MATNAME matname;
  145.     TEXTURE texture;
  146. };
  147.  
  148. struct TRACKINFO //поведение объекта
  149. {
  150.     TRACKOBJNAME trackobjname;
  151.     TRACKPIVOT trackpivot;
  152.     TRACKPOS trackpos;
  153.     TRACKROTATE trackrotate;
  154. };
  155.  
  156.  
  157. struct TRACKCAMERA //поведение камеры
  158. {
  159.     TRACKFOV trackfov;
  160.     TRACKROLL trackroll;
  161. };
  162.  
  163. struct KEYFRAMER //информация об анимации
  164. {
  165.     TRACKINFO trackinfo;
  166.     TRACKCAMERA trackcamera;
  167. };
  168.  
  169. struct OBJBLOCK //объект
  170. {
  171.     TRIMESH trimesh;
  172. };
  173.  
  174. struct OBJMESH //всяческие объекты
  175. {
  176.     OBJBLOCK objblock;
  177. };
  178.  
  179. struct SCENE //сцена
  180. {
  181.     OBJMESH objmesh;
  182.     MATERIAL material;
  183.     KEYFRAMER keyframer;
  184. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement