StructDef.h
上传用户:hkb425
上传日期:2007-06-16
资源大小:34191k
文件大小:5k
源码类别:

游戏引擎

开发平台:

Visual C++

  1. /////////////////structdef.h/////////////
  2. #if !defined(__STRUCT__DEFINE__)
  3. #define __STRUCT__DEFINE__
  4. //////////////////////////////////////////
  5. #define  UNKNOW        -2
  6. #define  IN_BACK_OF    -1
  7. #define  COINCIDENT     0
  8. #define  IN_FRONT_OF    1
  9. #define  SPANNING       2
  10.  
  11. #define  REVERSE        3
  12. #define  PERPENDICULAR  4
  13. #define  SHARP_ANGLE    5
  14. #define  OBTUSE_ANGLE   6 
  15. #define  OUT_POLYGON   -1
  16. #define  ON_BORDER      0
  17. #define  IN_POLYGON     1
  18. //////// Ammo define
  19. #define  M16            1
  20. #define  RIFLE          2
  21. #define  ROCKET         3
  22. #define  RIFLE_P        1
  23. #define  EXPLOSION_P    2
  24. #define  ROCKET_P       3  
  25. #define  SMOKE_P        4
  26. //////////////////////////////////////////
  27. //////////////////////////////////////////
  28. struct VERTEX
  29. {
  30. VERTEX(){}
  31. VERTEX(float x,float y,float z){   xpos=x; ypos=y; zpos=z;} 
  32. float xpos;
  33. float ypos;
  34. float zpos;
  35. };
  36. struct NORMAL
  37. {
  38. NORMAL(){}
  39. NORMAL(float x,float y,float z){   nx=x; ny=y; nz=z;} 
  40. float nx;
  41. float ny;
  42. float nz;
  43. };
  44. struct TRIANGLE
  45. {
  46. TRIANGLE(){}
  47. TRIANGLE(VERTEX iv1,VERTEX iv2,VERTEX iv3){V1=iv1;V2=iv2;V3=iv3;}
  48. VERTEX V1;
  49. VERTEX V2;
  50. VERTEX V3;
  51. };
  52. struct TEXCOORD
  53. {
  54. TEXCOORD(){}
  55. TEXCOORD(float iu,float iv){u=iu;v=iv;}
  56. float u;
  57. float v;
  58. };
  59. struct PLANE
  60. {
  61. PLANE(){}
  62. PLANE(float a,float b,float c,float d){A=a;B=b;C=c;D=d;}
  63. float A;
  64. float B;
  65. float C;
  66. float D;
  67. };
  68. struct QUAD
  69. {
  70. QUAD(){}
  71. QUAD(VERTEX iv1,VERTEX iv2,VERTEX iv3,VERTEX iv4){V0=iv1;V1=iv2;V2=iv3;V3=iv4;}
  72. VERTEX V0;
  73. VERTEX V1;
  74. VERTEX V2;
  75. VERTEX V3;
  76. PLANE  plane;
  77. };
  78. struct CUBE
  79. {
  80. CUBE(){}
  81. CUBE(VERTEX iv1,VERTEX iv2,VERTEX iv3,VERTEX iv4,
  82.  VERTEX iv5,VERTEX iv6,VERTEX iv7,VERTEX iv8)
  83. {V0=iv1;V1=iv2;V2=iv3;V3=iv4;
  84.  V4=iv5;V5=iv6;V6=iv7;V7=iv8;}
  85. CUBE(float radius,VERTEX vCenter)
  86. {
  87. V0=VERTEX(vCenter.xpos-radius,vCenter.ypos-radius,vCenter.zpos+radius);
  88. V1=VERTEX(vCenter.xpos+radius,vCenter.ypos-radius,vCenter.zpos+radius);
  89. V2=VERTEX(vCenter.xpos+radius,vCenter.ypos-radius,vCenter.zpos-radius);
  90. V3=VERTEX(vCenter.xpos-radius,vCenter.ypos-radius,vCenter.zpos-radius);
  91. V4=VERTEX(vCenter.xpos-radius,vCenter.ypos+radius,vCenter.zpos+radius);
  92. V5=VERTEX(vCenter.xpos+radius,vCenter.ypos+radius,vCenter.zpos+radius);
  93. V6=VERTEX(vCenter.xpos+radius,vCenter.ypos+radius,vCenter.zpos-radius);
  94. V7=VERTEX(vCenter.xpos-radius,vCenter.ypos+radius,vCenter.zpos-radius);
  95. }
  96. VERTEX V0;                       // Down_Front_Left
  97. VERTEX V1;                       // Down_Front_Right
  98. VERTEX V2;                       // Down_Back _Right
  99. VERTEX V3;                       // Down_Back _Left
  100. VERTEX V4;                       // Up  _Front_Left
  101. VERTEX V5;                       // Up  _Front_Right
  102. VERTEX V6;                       // Up  _Back _Right
  103. VERTEX V7;                       // Up  _Back _Left
  104. };
  105. struct TRI_FACE
  106. {
  107. VERTEX v1;
  108. VERTEX v2;
  109. VERTEX v3;
  110. TEXCOORD tex1;
  111. TEXCOORD tex2;
  112. TEXCOORD tex3;
  113. NORMAL n;
  114. float  d;  // param about face 
  115. float  powABC; // the normal length=pow (a*a+b*b+c*c ,0.5)
  116. float  powBC;//the normal length=pow (b*b+c*c ,0.5)
  117. };
  118. struct TRI_TEX
  119. {
  120.     TEXCOORD uv1;
  121.     TEXCOORD uv2;
  122.     TEXCOORD uv3;
  123. };
  124. struct COLOR
  125. {
  126. COLOR(){}
  127. COLOR(float red,float green,float blue){r=red;g=green;b=blue;}
  128. float r;
  129. float g;
  130. float b;
  131. };
  132. ////////////////////////////////////////////////
  133. struct LIGHT
  134. {
  135. VERTEX          position;
  136. COLOR           color;
  137. unsigned char   brightness;
  138. unsigned char   attenuation;
  139. unsigned char   coefficient;
  140. };
  141. struct RLM_QUAD
  142. {
  143. int   texid;
  144. PLANE plane;
  145. int   vertindex[4];
  146.     TEXCOORD texcoord[4];
  147. };
  148. struct BOUNDARY_3D
  149. {
  150.     BOUNDARY_3D()
  151. {
  152. minx=miny=minz= 9999;
  153. maxx=maxy=maxz=-9999;
  154. float minx,maxx;
  155. float miny,maxy;
  156. float minz,maxz;
  157. };
  158. struct BOUNDARY_2D
  159. {
  160.     BOUNDARY_2D()
  161. {
  162. minx=minz= 9999;
  163. maxx=maxz=-9999;
  164.     BOUNDARY_2D(int min_x,int max_x,int min_z,int max_z)
  165. {
  166. minx=min_x;
  167. maxx=max_x;
  168. minz=min_z;
  169. maxz=max_z;
  170. int minx,maxx;
  171. int minz,maxz;
  172. };
  173. struct TERRAIN_SKIN
  174. {
  175. unsigned char TextureIndex;
  176. unsigned char TextureOrder; 
  177. };
  178. struct MOVE_VERTEX
  179. {
  180. unsigned char xpos; 
  181. unsigned char zpos; 
  182. };
  183. struct PARTICLE
  184. {
  185. float     life; // Particle Life
  186. float     fade; // Fade Speed
  187. float     size; // 
  188. VERTEX      pos;
  189.     NORMAL      normal;
  190. float     rotate; // X Rotate
  191. };
  192. struct GRID_BIAS
  193. {
  194. unsigned char xbias; 
  195. unsigned char zbias; 
  196. };
  197. ////////////////////////////////////////////////
  198. ////////////////////////////////////////////////
  199. ////////////////////////////////////////////////
  200. #endif 
  201.