diff options
| author | wyatt8740 <wyatt8740@yahoo.com> | 2014-01-06 12:02:16 -0500 |
|---|---|---|
| committer | wyatt8740 <wyatt8740@yahoo.com> | 2014-01-06 12:02:16 -0500 |
| commit | a8f828a066773a59fdf646299359d35ae0e845af (patch) | |
| tree | 86123409fc6f231cf4136e81159b63cb1e9ec102 /WinQuake/gl_model.h | |
| parent | b2951690415054ae8705c07f8df7a4ba7cde382a (diff) | |
| download | quake-pum-a8f828a066773a59fdf646299359d35ae0e845af.tar.gz | |
Removed accidental upload of copyrighted map files
Diffstat (limited to 'WinQuake/gl_model.h')
| -rw-r--r-- | WinQuake/gl_model.h | 860 |
1 files changed, 430 insertions, 430 deletions
diff --git a/WinQuake/gl_model.h b/WinQuake/gl_model.h index ae576b8..64403b6 100644 --- a/WinQuake/gl_model.h +++ b/WinQuake/gl_model.h @@ -1,430 +1,430 @@ -/* -Copyright (C) 1996-1997 Id Software, Inc. - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -as published by the Free Software Foundation; either version 2 -of the License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - -See the GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - -*/ - -#ifndef __MODEL__ -#define __MODEL__ - -#include "modelgen.h" -#include "spritegn.h" - -/* - -d*_t structures are on-disk representations -m*_t structures are in-memory - -*/ - -// entity effects - -#define EF_BRIGHTFIELD 1 -#define EF_MUZZLEFLASH 2 -#define EF_BRIGHTLIGHT 4 -#define EF_DIMLIGHT 8 - - -/* -============================================================================== - -BRUSH MODELS - -============================================================================== -*/ - - -// -// in memory representation -// -// !!! if this is changed, it must be changed in asm_draw.h too !!! -typedef struct -{ - vec3_t position; -} mvertex_t; - -#define SIDE_FRONT 0 -#define SIDE_BACK 1 -#define SIDE_ON 2 - - -// plane_t structure -// !!! if this is changed, it must be changed in asm_i386.h too !!! -typedef struct mplane_s -{ - vec3_t normal; - float dist; - byte type; // for texture axis selection and fast side tests - byte signbits; // signx + signy<<1 + signz<<1 - byte pad[2]; -} mplane_t; - -typedef struct texture_s -{ - char name[16]; - unsigned width, height; - int gl_texturenum; - struct msurface_s *texturechain; // for gl_texsort drawing - int anim_total; // total tenths in sequence ( 0 = no) - int anim_min, anim_max; // time for this frame min <=time< max - struct texture_s *anim_next; // in the animation sequence - struct texture_s *alternate_anims; // bmodels in frmae 1 use these - unsigned offsets[MIPLEVELS]; // four mip maps stored -} texture_t; - - -#define SURF_PLANEBACK 2 -#define SURF_DRAWSKY 4 -#define SURF_DRAWSPRITE 8 -#define SURF_DRAWTURB 0x10 -#define SURF_DRAWTILED 0x20 -#define SURF_DRAWBACKGROUND 0x40 -#define SURF_UNDERWATER 0x80 - -// !!! if this is changed, it must be changed in asm_draw.h too !!! -typedef struct -{ - unsigned short v[2]; - unsigned int cachededgeoffset; -} medge_t; - -typedef struct -{ - float vecs[2][4]; - float mipadjust; - texture_t *texture; - int flags; -} mtexinfo_t; - -#define VERTEXSIZE 7 - -typedef struct glpoly_s -{ - struct glpoly_s *next; - struct glpoly_s *chain; - int numverts; - int flags; // for SURF_UNDERWATER - float verts[4][VERTEXSIZE]; // variable sized (xyz s1t1 s2t2) -} glpoly_t; - -typedef struct msurface_s -{ - int visframe; // should be drawn when node is crossed - - mplane_t *plane; - int flags; - - int firstedge; // look up in model->surfedges[], negative numbers - int numedges; // are backwards edges - - short texturemins[2]; - short extents[2]; - - int light_s, light_t; // gl lightmap coordinates - - glpoly_t *polys; // multiple if warped - struct msurface_s *texturechain; - - mtexinfo_t *texinfo; - -// lighting info - int dlightframe; - int dlightbits; - - int lightmaptexturenum; - byte styles[MAXLIGHTMAPS]; - int cached_light[MAXLIGHTMAPS]; // values currently used in lightmap - qboolean cached_dlight; // true if dynamic light in cache - byte *samples; // [numstyles*surfsize] -} msurface_t; - -typedef struct mnode_s -{ -// common with leaf - int contents; // 0, to differentiate from leafs - int visframe; // node needs to be traversed if current - - float minmaxs[6]; // for bounding box culling - - struct mnode_s *parent; - -// node specific - mplane_t *plane; - struct mnode_s *children[2]; - - unsigned short firstsurface; - unsigned short numsurfaces; -} mnode_t; - - - -typedef struct mleaf_s -{ -// common with node - int contents; // wil be a negative contents number - int visframe; // node needs to be traversed if current - - float minmaxs[6]; // for bounding box culling - - struct mnode_s *parent; - -// leaf specific - byte *compressed_vis; - efrag_t *efrags; - - msurface_t **firstmarksurface; - int nummarksurfaces; - int key; // BSP sequence number for leaf's contents - byte ambient_sound_level[NUM_AMBIENTS]; -} mleaf_t; - -// !!! if this is changed, it must be changed in asm_i386.h too !!! -typedef struct -{ - dclipnode_t *clipnodes; - mplane_t *planes; - int firstclipnode; - int lastclipnode; - vec3_t clip_mins; - vec3_t clip_maxs; -} hull_t; - -/* -============================================================================== - -SPRITE MODELS - -============================================================================== -*/ - - -// FIXME: shorten these? -typedef struct mspriteframe_s -{ - int width; - int height; - float up, down, left, right; - int gl_texturenum; -} mspriteframe_t; - -typedef struct -{ - int numframes; - float *intervals; - mspriteframe_t *frames[1]; -} mspritegroup_t; - -typedef struct -{ - spriteframetype_t type; - mspriteframe_t *frameptr; -} mspriteframedesc_t; - -typedef struct -{ - int type; - int maxwidth; - int maxheight; - int numframes; - float beamlength; // remove? - void *cachespot; // remove? - mspriteframedesc_t frames[1]; -} msprite_t; - - -/* -============================================================================== - -ALIAS MODELS - -Alias models are position independent, so the cache manager can move them. -============================================================================== -*/ - -typedef struct -{ - int firstpose; - int numposes; - float interval; - trivertx_t bboxmin; - trivertx_t bboxmax; - int frame; - char name[16]; -} maliasframedesc_t; - -typedef struct -{ - trivertx_t bboxmin; - trivertx_t bboxmax; - int frame; -} maliasgroupframedesc_t; - -typedef struct -{ - int numframes; - int intervals; - maliasgroupframedesc_t frames[1]; -} maliasgroup_t; - -// !!! if this is changed, it must be changed in asm_draw.h too !!! -typedef struct mtriangle_s { - int facesfront; - int vertindex[3]; -} mtriangle_t; - - -#define MAX_SKINS 32 -typedef struct { - int ident; - int version; - vec3_t scale; - vec3_t scale_origin; - float boundingradius; - vec3_t eyeposition; - int numskins; - int skinwidth; - int skinheight; - int numverts; - int numtris; - int numframes; - synctype_t synctype; - int flags; - float size; - - int numposes; - int poseverts; - int posedata; // numposes*poseverts trivert_t - int commands; // gl command list with embedded s/t - int gl_texturenum[MAX_SKINS][4]; - int texels[MAX_SKINS]; // only for player skins - maliasframedesc_t frames[1]; // variable sized -} aliashdr_t; - -#define MAXALIASVERTS 1024 -#define MAXALIASFRAMES 256 -#define MAXALIASTRIS 2048 -extern aliashdr_t *pheader; -extern stvert_t stverts[MAXALIASVERTS]; -extern mtriangle_t triangles[MAXALIASTRIS]; -extern trivertx_t *poseverts[MAXALIASFRAMES]; - -//=================================================================== - -// -// Whole model -// - -typedef enum {mod_brush, mod_sprite, mod_alias} modtype_t; - -#define EF_ROCKET 1 // leave a trail -#define EF_GRENADE 2 // leave a trail -#define EF_GIB 4 // leave a trail -#define EF_ROTATE 8 // rotate (bonus items) -#define EF_TRACER 16 // green split trail -#define EF_ZOMGIB 32 // small blood trail -#define EF_TRACER2 64 // orange split trail + rotate -#define EF_TRACER3 128 // purple trail - -typedef struct model_s -{ - char name[MAX_QPATH]; - qboolean needload; // bmodels and sprites don't cache normally - - modtype_t type; - int numframes; - synctype_t synctype; - - int flags; - -// -// volume occupied by the model graphics -// - vec3_t mins, maxs; - float radius; - -// -// solid volume for clipping -// - qboolean clipbox; - vec3_t clipmins, clipmaxs; - -// -// brush model -// - int firstmodelsurface, nummodelsurfaces; - - int numsubmodels; - dmodel_t *submodels; - - int numplanes; - mplane_t *planes; - - int numleafs; // number of visible leafs, not counting 0 - mleaf_t *leafs; - - int numvertexes; - mvertex_t *vertexes; - - int numedges; - medge_t *edges; - - int numnodes; - mnode_t *nodes; - - int numtexinfo; - mtexinfo_t *texinfo; - - int numsurfaces; - msurface_t *surfaces; - - int numsurfedges; - int *surfedges; - - int numclipnodes; - dclipnode_t *clipnodes; - - int nummarksurfaces; - msurface_t **marksurfaces; - - hull_t hulls[MAX_MAP_HULLS]; - - int numtextures; - texture_t **textures; - - byte *visdata; - byte *lightdata; - char *entities; - -// -// additional model data -// - cache_user_t cache; // only access through Mod_Extradata - -} model_t; - -//============================================================================ - -void Mod_Init (void); -void Mod_ClearAll (void); -model_t *Mod_ForName (char *name, qboolean crash); -void *Mod_Extradata (model_t *mod); // handles caching -void Mod_TouchModel (char *name); - -mleaf_t *Mod_PointInLeaf (float *p, model_t *model); -byte *Mod_LeafPVS (mleaf_t *leaf, model_t *model); - -#endif // __MODEL__ +/*
+Copyright (C) 1996-1997 Id Software, Inc.
+
+This program is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License
+as published by the Free Software Foundation; either version 2
+of the License, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+*/
+
+#ifndef __MODEL__
+#define __MODEL__
+
+#include "modelgen.h"
+#include "spritegn.h"
+
+/*
+
+d*_t structures are on-disk representations
+m*_t structures are in-memory
+
+*/
+
+// entity effects
+
+#define EF_BRIGHTFIELD 1
+#define EF_MUZZLEFLASH 2
+#define EF_BRIGHTLIGHT 4
+#define EF_DIMLIGHT 8
+
+
+/*
+==============================================================================
+
+BRUSH MODELS
+
+==============================================================================
+*/
+
+
+//
+// in memory representation
+//
+// !!! if this is changed, it must be changed in asm_draw.h too !!!
+typedef struct
+{
+ vec3_t position;
+} mvertex_t;
+
+#define SIDE_FRONT 0
+#define SIDE_BACK 1
+#define SIDE_ON 2
+
+
+// plane_t structure
+// !!! if this is changed, it must be changed in asm_i386.h too !!!
+typedef struct mplane_s
+{
+ vec3_t normal;
+ float dist;
+ byte type; // for texture axis selection and fast side tests
+ byte signbits; // signx + signy<<1 + signz<<1
+ byte pad[2];
+} mplane_t;
+
+typedef struct texture_s
+{
+ char name[16];
+ unsigned width, height;
+ int gl_texturenum;
+ struct msurface_s *texturechain; // for gl_texsort drawing
+ int anim_total; // total tenths in sequence ( 0 = no)
+ int anim_min, anim_max; // time for this frame min <=time< max
+ struct texture_s *anim_next; // in the animation sequence
+ struct texture_s *alternate_anims; // bmodels in frmae 1 use these
+ unsigned offsets[MIPLEVELS]; // four mip maps stored
+} texture_t;
+
+
+#define SURF_PLANEBACK 2
+#define SURF_DRAWSKY 4
+#define SURF_DRAWSPRITE 8
+#define SURF_DRAWTURB 0x10
+#define SURF_DRAWTILED 0x20
+#define SURF_DRAWBACKGROUND 0x40
+#define SURF_UNDERWATER 0x80
+
+// !!! if this is changed, it must be changed in asm_draw.h too !!!
+typedef struct
+{
+ unsigned short v[2];
+ unsigned int cachededgeoffset;
+} medge_t;
+
+typedef struct
+{
+ float vecs[2][4];
+ float mipadjust;
+ texture_t *texture;
+ int flags;
+} mtexinfo_t;
+
+#define VERTEXSIZE 7
+
+typedef struct glpoly_s
+{
+ struct glpoly_s *next;
+ struct glpoly_s *chain;
+ int numverts;
+ int flags; // for SURF_UNDERWATER
+ float verts[4][VERTEXSIZE]; // variable sized (xyz s1t1 s2t2)
+} glpoly_t;
+
+typedef struct msurface_s
+{
+ int visframe; // should be drawn when node is crossed
+
+ mplane_t *plane;
+ int flags;
+
+ int firstedge; // look up in model->surfedges[], negative numbers
+ int numedges; // are backwards edges
+
+ short texturemins[2];
+ short extents[2];
+
+ int light_s, light_t; // gl lightmap coordinates
+
+ glpoly_t *polys; // multiple if warped
+ struct msurface_s *texturechain;
+
+ mtexinfo_t *texinfo;
+
+// lighting info
+ int dlightframe;
+ int dlightbits;
+
+ int lightmaptexturenum;
+ byte styles[MAXLIGHTMAPS];
+ int cached_light[MAXLIGHTMAPS]; // values currently used in lightmap
+ qboolean cached_dlight; // true if dynamic light in cache
+ byte *samples; // [numstyles*surfsize]
+} msurface_t;
+
+typedef struct mnode_s
+{
+// common with leaf
+ int contents; // 0, to differentiate from leafs
+ int visframe; // node needs to be traversed if current
+
+ float minmaxs[6]; // for bounding box culling
+
+ struct mnode_s *parent;
+
+// node specific
+ mplane_t *plane;
+ struct mnode_s *children[2];
+
+ unsigned short firstsurface;
+ unsigned short numsurfaces;
+} mnode_t;
+
+
+
+typedef struct mleaf_s
+{
+// common with node
+ int contents; // wil be a negative contents number
+ int visframe; // node needs to be traversed if current
+
+ float minmaxs[6]; // for bounding box culling
+
+ struct mnode_s *parent;
+
+// leaf specific
+ byte *compressed_vis;
+ efrag_t *efrags;
+
+ msurface_t **firstmarksurface;
+ int nummarksurfaces;
+ int key; // BSP sequence number for leaf's contents
+ byte ambient_sound_level[NUM_AMBIENTS];
+} mleaf_t;
+
+// !!! if this is changed, it must be changed in asm_i386.h too !!!
+typedef struct
+{
+ dclipnode_t *clipnodes;
+ mplane_t *planes;
+ int firstclipnode;
+ int lastclipnode;
+ vec3_t clip_mins;
+ vec3_t clip_maxs;
+} hull_t;
+
+/*
+==============================================================================
+
+SPRITE MODELS
+
+==============================================================================
+*/
+
+
+// FIXME: shorten these?
+typedef struct mspriteframe_s
+{
+ int width;
+ int height;
+ float up, down, left, right;
+ int gl_texturenum;
+} mspriteframe_t;
+
+typedef struct
+{
+ int numframes;
+ float *intervals;
+ mspriteframe_t *frames[1];
+} mspritegroup_t;
+
+typedef struct
+{
+ spriteframetype_t type;
+ mspriteframe_t *frameptr;
+} mspriteframedesc_t;
+
+typedef struct
+{
+ int type;
+ int maxwidth;
+ int maxheight;
+ int numframes;
+ float beamlength; // remove?
+ void *cachespot; // remove?
+ mspriteframedesc_t frames[1];
+} msprite_t;
+
+
+/*
+==============================================================================
+
+ALIAS MODELS
+
+Alias models are position independent, so the cache manager can move them.
+==============================================================================
+*/
+
+typedef struct
+{
+ int firstpose;
+ int numposes;
+ float interval;
+ trivertx_t bboxmin;
+ trivertx_t bboxmax;
+ int frame;
+ char name[16];
+} maliasframedesc_t;
+
+typedef struct
+{
+ trivertx_t bboxmin;
+ trivertx_t bboxmax;
+ int frame;
+} maliasgroupframedesc_t;
+
+typedef struct
+{
+ int numframes;
+ int intervals;
+ maliasgroupframedesc_t frames[1];
+} maliasgroup_t;
+
+// !!! if this is changed, it must be changed in asm_draw.h too !!!
+typedef struct mtriangle_s {
+ int facesfront;
+ int vertindex[3];
+} mtriangle_t;
+
+
+#define MAX_SKINS 32
+typedef struct {
+ int ident;
+ int version;
+ vec3_t scale;
+ vec3_t scale_origin;
+ float boundingradius;
+ vec3_t eyeposition;
+ int numskins;
+ int skinwidth;
+ int skinheight;
+ int numverts;
+ int numtris;
+ int numframes;
+ synctype_t synctype;
+ int flags;
+ float size;
+
+ int numposes;
+ int poseverts;
+ int posedata; // numposes*poseverts trivert_t
+ int commands; // gl command list with embedded s/t
+ int gl_texturenum[MAX_SKINS][4];
+ int texels[MAX_SKINS]; // only for player skins
+ maliasframedesc_t frames[1]; // variable sized
+} aliashdr_t;
+
+#define MAXALIASVERTS 1024
+#define MAXALIASFRAMES 256
+#define MAXALIASTRIS 2048
+extern aliashdr_t *pheader;
+extern stvert_t stverts[MAXALIASVERTS];
+extern mtriangle_t triangles[MAXALIASTRIS];
+extern trivertx_t *poseverts[MAXALIASFRAMES];
+
+//===================================================================
+
+//
+// Whole model
+//
+
+typedef enum {mod_brush, mod_sprite, mod_alias} modtype_t;
+
+#define EF_ROCKET 1 // leave a trail
+#define EF_GRENADE 2 // leave a trail
+#define EF_GIB 4 // leave a trail
+#define EF_ROTATE 8 // rotate (bonus items)
+#define EF_TRACER 16 // green split trail
+#define EF_ZOMGIB 32 // small blood trail
+#define EF_TRACER2 64 // orange split trail + rotate
+#define EF_TRACER3 128 // purple trail
+
+typedef struct model_s
+{
+ char name[MAX_QPATH];
+ qboolean needload; // bmodels and sprites don't cache normally
+
+ modtype_t type;
+ int numframes;
+ synctype_t synctype;
+
+ int flags;
+
+//
+// volume occupied by the model graphics
+//
+ vec3_t mins, maxs;
+ float radius;
+
+//
+// solid volume for clipping
+//
+ qboolean clipbox;
+ vec3_t clipmins, clipmaxs;
+
+//
+// brush model
+//
+ int firstmodelsurface, nummodelsurfaces;
+
+ int numsubmodels;
+ dmodel_t *submodels;
+
+ int numplanes;
+ mplane_t *planes;
+
+ int numleafs; // number of visible leafs, not counting 0
+ mleaf_t *leafs;
+
+ int numvertexes;
+ mvertex_t *vertexes;
+
+ int numedges;
+ medge_t *edges;
+
+ int numnodes;
+ mnode_t *nodes;
+
+ int numtexinfo;
+ mtexinfo_t *texinfo;
+
+ int numsurfaces;
+ msurface_t *surfaces;
+
+ int numsurfedges;
+ int *surfedges;
+
+ int numclipnodes;
+ dclipnode_t *clipnodes;
+
+ int nummarksurfaces;
+ msurface_t **marksurfaces;
+
+ hull_t hulls[MAX_MAP_HULLS];
+
+ int numtextures;
+ texture_t **textures;
+
+ byte *visdata;
+ byte *lightdata;
+ char *entities;
+
+//
+// additional model data
+//
+ cache_user_t cache; // only access through Mod_Extradata
+
+} model_t;
+
+//============================================================================
+
+void Mod_Init (void);
+void Mod_ClearAll (void);
+model_t *Mod_ForName (char *name, qboolean crash);
+void *Mod_Extradata (model_t *mod); // handles caching
+void Mod_TouchModel (char *name);
+
+mleaf_t *Mod_PointInLeaf (float *p, model_t *model);
+byte *Mod_LeafPVS (mleaf_t *leaf, model_t *model);
+
+#endif // __MODEL__
|
