Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | RSS feed

  1. /*
  2. Copyright (C) 1996-1997 Id Software, Inc.
  3.  
  4. This program is free software; you can redistribute it and/or
  5. modify it under the terms of the GNU General Public License
  6. as published by the Free Software Foundation; either version 2
  7. of the License, or (at your option) any later version.
  8.  
  9. This program is distributed in the hope that it will be useful,
  10. but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
  12.  
  13. See the GNU General Public License for more details.
  14.  
  15. You should have received a copy of the GNU General Public License
  16. along with this program; if not, write to the Free Software
  17. Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
  18.  
  19. */
  20. //
  21. // modelgen.h: header file for model generation program
  22. //
  23.  
  24. // *********************************************************
  25. // * This file must be identical in the modelgen directory *
  26. // * and in the Quake directory, because it's used to      *
  27. // * pass data from one to the other via model files.      *
  28. // *********************************************************
  29.  
  30. #ifdef INCLUDELIBS
  31.  
  32. #include <stdlib.h>
  33. #include <stdio.h>
  34. #include <math.h>
  35. #include <string.h>
  36.  
  37. #include "cmdlib.h"
  38. #include "scriplib.h"
  39. #include "trilib.h"
  40. #include "lbmlib.h"
  41. #include "mathlib.h"
  42.  
  43. #endif
  44.  
  45. #define ALIAS_VERSION   6
  46.  
  47. #define ALIAS_ONSEAM                            0x0020
  48.  
  49. // must match definition in spritegn.h
  50. #ifndef SYNCTYPE_T
  51. #define SYNCTYPE_T
  52. typedef enum {ST_SYNC=0, ST_RAND } synctype_t;
  53. #endif
  54.  
  55. typedef enum { ALIAS_SINGLE=0, ALIAS_GROUP } aliasframetype_t;
  56.  
  57. typedef enum { ALIAS_SKIN_SINGLE=0, ALIAS_SKIN_GROUP } aliasskintype_t;
  58.  
  59. typedef struct {
  60.         int                     ident;
  61.         int                     version;
  62.         vec3_t          scale;
  63.         vec3_t          scale_origin;
  64.         float           boundingradius;
  65.         vec3_t          eyeposition;
  66.         int                     numskins;
  67.         int                     skinwidth;
  68.         int                     skinheight;
  69.         int                     numverts;
  70.         int                     numtris;
  71.         int                     numframes;
  72.         synctype_t      synctype;
  73.         int                     flags;
  74.         float           size;
  75. } mdl_t;
  76.  
  77. // TODO: could be shorts
  78.  
  79. typedef struct {
  80.         int             onseam;
  81.         int             s;
  82.         int             t;
  83. } stvert_t;
  84.  
  85. typedef struct dtriangle_s {
  86.         int                                     facesfront;
  87.         int                                     vertindex[3];
  88. } dtriangle_t;
  89.  
  90. #define DT_FACES_FRONT                          0x0010
  91.  
  92. // This mirrors trivert_t in trilib.h, is present so Quake knows how to
  93. // load this data
  94.  
  95. typedef struct {
  96.         byte    v[3];
  97.         byte    lightnormalindex;
  98. } trivertx_t;
  99.  
  100. typedef struct {
  101.         trivertx_t      bboxmin;        // lightnormal isn't used
  102.         trivertx_t      bboxmax;        // lightnormal isn't used
  103.         char            name[16];       // frame name from grabbing
  104. } daliasframe_t;
  105.  
  106. typedef struct {
  107.         int                     numframes;
  108.         trivertx_t      bboxmin;        // lightnormal isn't used
  109.         trivertx_t      bboxmax;        // lightnormal isn't used
  110. } daliasgroup_t;
  111.  
  112. typedef struct {
  113.         int                     numskins;
  114. } daliasskingroup_t;
  115.  
  116. typedef struct {
  117.         float   interval;
  118. } daliasinterval_t;
  119.  
  120. typedef struct {
  121.         float   interval;
  122. } daliasskininterval_t;
  123.  
  124. typedef struct {
  125.         aliasframetype_t        type;
  126. } daliasframetype_t;
  127.  
  128. typedef struct {
  129.         aliasskintype_t type;
  130. } daliasskintype_t;
  131.  
  132. #define IDPOLYHEADER    (('O'<<24)+('P'<<16)+('D'<<8)+'I')
  133.                                                                                                                 // little-endian "IDPO"
  134.  
  135.