home *** CD-ROM | disk | FTP | other *** search
/ Xentax forum attachments archive / xentax.7z / 5257 / source.7z / x_smc.h < prev    next >
Encoding:
C/C++ Source or Header  |  2012-03-19  |  2.1 KB  |  107 lines

  1. #ifndef __XENTAX_SMC_H
  2. #define __XENTAX_SMC_H
  3.  
  4. #include "x_skel.h"
  5.  
  6. //
  7. // VERTEX DATA
  8. //
  9.  
  10. #define VERTEX_POSITION 0x01
  11. #define VERTEX_NORMAL   0x02
  12. #define VERTEX_UV       0x04
  13. #define VERTEX_WEIGHTS  0x08
  14. #define VERTEX_BONEIDX  0x10
  15. #define VERTEX_WMAPIDX  0x20
  16. #define VERTEX_SKELETON 0x40
  17.  
  18. #define INVALID_VERTEX_BONE_INDEX 0xFFFF
  19. #define INVALID_VERTEX_WMAP_INDEX 0xFFFF
  20. #define INVALID_VERTEX_SKEL_INDEX 0xFFFF
  21.  
  22. struct SMC_VERTEX {
  23.  real32 vx, vy, vz;
  24.  real32 nx, ny, nz;
  25.  real32 tu, tv;
  26.  uint16 wv[8];
  27.  union { uint16 bi[8]; uint16 mi[8]; };
  28.  uint16 si[8];
  29. };
  30.  
  31. struct SMC_VERTEX_BUFFER {
  32.  unsigned char flags;
  33.  std::string name;
  34.  uint32 elem;
  35.  boost::shared_array<SMC_VERTEX> data;
  36. };
  37.  
  38. //
  39. // RENDER DATA
  40. //
  41.  
  42. #define FACE_FORMAT_UINT_08   0x1
  43. #define FACE_FORMAT_UINT_16   0x2
  44. #define FACE_FORMAT_UINT_32   0x4
  45.  
  46. #define FACE_TYPE_TRIANGLES   0x1
  47. #define FACE_TYPE_TRISTRIP    0x2
  48. #define FACE_TYPE_TRISTRIPCUT 0x4
  49.  
  50. struct SMC_INDEX_BUFFER {
  51.  unsigned char format;
  52.  unsigned char type;
  53.  std::string name;
  54.  uint32 elem;
  55.  boost::shared_array<char> data;
  56.  uint32 tris;
  57.  uint16 material;
  58. };
  59.  
  60. //
  61. // MATERIAL DATA
  62. //
  63.  
  64. #define INVALID_MATERIAL 0xFFFF
  65. #define INVALID_TEXTURE_INDEX 0xFFFF
  66.  
  67. struct SMC_MATERIAL {
  68.  std::string id; // identifier
  69.  uint08 twoside; // double-sided
  70.  uint16 basemap; // reference to texture id
  71.  uint16 specmap; // reference to texture id
  72.  uint16 tranmap; // reference to texture id
  73.  uint16 bumpmap; // reference to texture id
  74.  uint16 normmap; // reference to texture id
  75.  uint16 resmap1; // reserved1
  76.  uint16 resmap2; // reserved2
  77.  uint16 resmap3; // reserved3
  78.  uint16 resmap4; // reserved4
  79. };
  80.  
  81. struct SMC_TEXTURE {
  82.  std::string id;
  83.  std::string filename;
  84. };
  85.  
  86. //
  87. // SKELETON DATA
  88. //
  89.  
  90. typedef SKELETON SMC_SKELETON;
  91.  
  92. //
  93. // MODEL DATA
  94. //
  95.  
  96. struct SIMPLEMODELCONTAINER {
  97.  SMC_VERTEX_BUFFER vbuffer;
  98.  std::deque<SMC_INDEX_BUFFER> ibuffer;
  99.  std::deque<SMC_TEXTURE> textures;
  100.  std::deque<SMC_MATERIAL> materials;
  101.  std::deque<SMC_SKELETON> skeletons;
  102. };
  103.  
  104. bool SaveLWO(const char* path, const char* name, const SIMPLEMODELCONTAINER& data);
  105.  
  106. #endif
  107.