]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - client.h
win32 fixes and some MSVC warnings fixed
[xonotic/darkplaces.git] / client.h
index 3513a3f7521dfed7a7b9e8adc839efe35f8cff23..99a85af37c1736f5a39c3b3b2e79508735bbf9e2 100644 (file)
--- a/client.h
+++ b/client.h
@@ -19,6 +19,9 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 */
 // client.h
 
+#ifndef CLIENT_H
+#define CLIENT_H
+
 typedef struct frameblend_s
 {
        int frame;
@@ -26,60 +29,108 @@ typedef struct frameblend_s
 }
 frameblend_t;
 
-// LordHavoc: nothing in this structure is persistant, it may be overwritten by the client every frame, for persistant data use entity_lerp_t.
+#define MAXENTLIGHTS 128
+
+// LordHavoc: disregard the following warning, entlights stuff is semi-persistent...
+// LordHavoc: nothing in this structure is persistent, it may be overwritten by the client every frame, for persistent data use entity_lerp_t.
 typedef struct entity_render_s
 {
-       vec3_t  origin;                 // location
-       vec3_t  angles;                 // orientation
-       float   alpha;                  // opacity (alpha) of the model
-       float   scale;                  // size the model is shown
-
-       model_t *model;                 // NULL = no model
-       int             frame;                  // current uninterpolated animation frame (for things which do not use interpolation)
-       int             colormap;               // entity shirt and pants colors
-       int             effects;                // light, particles, etc
-       int             skinnum;                // for Alias models
-       int             flags;                  // render flags
+       // location
+       vec3_t origin;
+       // orientation
+       vec3_t angles;
+       // opacity (alpha) of the model
+       float alpha;
+       // size the model is shown
+       float scale;
+
+       // NULL = no model
+       model_t *model;
+       // current uninterpolated animation frame (for things which do not use interpolation)
+       int frame;
+       // entity shirt and pants colors
+       int colormap;
+       // light, particles, etc
+       int effects;
+       // for Alias models
+       int skinnum;
+       // render flags
+       int flags;
 
        // these are copied from the persistent data
-       int             frame1;                 // frame that the model is interpolating from
-       int             frame2;                 // frame that the model is interpolating to
-       double  framelerp;              // interpolation factor, usually computed from frame2time
-       double  frame1time;             // time frame1 began playing (for framegroup animations)
-       double  frame2time;             // time frame2 began playing (for framegroup animations)
+
+       // frame that the model is interpolating from
+       int frame1;
+       // frame that the model is interpolating to
+       int frame2;
+       // interpolation factor, usually computed from frame2time
+       double framelerp;
+       // time frame1 began playing (for framegroup animations)
+       double frame1time;
+       // time frame2 began playing (for framegroup animations)
+       double frame2time;
 
        // calculated by the renderer (but not persistent)
-       int             visframe;               // if visframe == r_framecount, it is visible
-       vec3_t  mins, maxs;             // calculated during R_AddModelEntities
-       frameblend_t    frameblend[4]; // 4 frame numbers (-1 if not used) and their blending scalers (0-1), if interpolation is not desired, use frame instead
+
+       // if visframe == r_framecount, it is visible
+       int visframe;
+       // calculated during R_AddModelEntities
+       vec3_t mins, maxs;
+       // 4 frame numbers (-1 if not used) and their blending scalers (0-1), if interpolation is not desired, use frame instead
+       frameblend_t frameblend[4];
+
+       // caching results of static light traces (this is semi-persistent)
+       double entlightstime;
+       vec3_t entlightsorigin;
+       int numentlights;
+       unsigned short entlights[MAXENTLIGHTS];
 }
 entity_render_t;
 
 typedef struct entity_persistent_s
 {
        // particles
-       vec3_t  trail_origin;   // trail rendering
-       float   trail_time;             // trail rendering
+
+       // trail rendering
+       vec3_t trail_origin;
+       float trail_time;
+
+       // effects
+
+       // muzzleflash fading
+       float muzzleflash;
 
        // interpolated animation
-       int             modelindex;             // lerp resets when model changes
-       int             frame1;                 // frame that the model is interpolating from
-       int             frame2;                 // frame that the model is interpolating to
-       double  framelerp;              // interpolation factor, usually computed from frame2time
-       double  frame1time;             // time frame1 began playing (for framegroup animations)
-       double  frame2time;             // time frame2 began playing (for framegroup animations)
+
+       // lerp resets when model changes
+       int modelindex;
+       // frame that the model is interpolating from
+       int frame1;
+       // frame that the model is interpolating to
+       int frame2;
+       // interpolation factor, usually computed from frame2time
+       double framelerp;
+       // time frame1 began playing (for framegroup animations)
+       double frame1time;
+       // time frame2 began playing (for framegroup animations)
+       double frame2time;
 }
 entity_persistent_t;
 
 typedef struct entity_s
 {
-       entity_state_t state_baseline;  // baseline state (default values)
-       entity_state_t state_previous;  // previous state (interpolating from this)
-       entity_state_t state_current;   // current state (interpolating to this)
-
-       entity_persistent_t persistent; // used for regenerating parts of render
-
-       entity_render_t render; // the only data the renderer should know about
+       // baseline state (default values)
+       entity_state_t state_baseline;
+       // previous state (interpolating from this)
+       entity_state_t state_previous;
+       // current state (interpolating to this)
+       entity_state_t state_current;
+
+       // used for regenerating parts of render
+       entity_persistent_t persistent;
+
+       // the only data the renderer should know about
+       entity_render_t render;
 }
 entity_t;
 
@@ -151,7 +202,7 @@ typedef enum
 cactive_t;
 
 //
-// the client_static_t structure is persistant through an arbitrary number
+// the client_static_t structure is persistent through an arbitrary number
 // of server connections
 //
 typedef struct
@@ -267,7 +318,6 @@ typedef struct
 
 // refresh related state
        struct model_s  *worldmodel;    // cl_entitites[0].model
-//     int                     num_entities;   // held in cl_entities array
        int                     num_statics;    // held in cl_staticentities array
        entity_t        viewent;                        // the gun model
 
@@ -435,20 +485,6 @@ void CL_InitTEnts (void);
 #define PARTICLE_UPRIGHT_FACING 2
 #define PARTICLE_ORIENTED_DOUBLESIDED 3
 
-typedef struct renderparticle_s
-{
-       int tex;
-       int orientation;
-       int additive;
-       int dynlight;
-       float scalex;
-       float scaley;
-       float org[3];
-       float dir[3];
-       float color[4];
-}
-renderparticle_t;
-
 void CL_Particles_Clear(void);
 void CL_Particles_Init(void);
 
@@ -459,6 +495,7 @@ void CL_RocketTrail2 (vec3_t start, vec3_t end, int color, entity_t *ent);
 void CL_SparkShower (vec3_t org, vec3_t dir, int count);
 void CL_PlasmaBurn (vec3_t org);
 void CL_BloodPuff (vec3_t org, vec3_t vel, int count);
+void CL_Stardust (vec3_t mins, vec3_t maxs, int count);
 void CL_FlameCube (vec3_t mins, vec3_t maxs, int count);
 void CL_Flames (vec3_t org, vec3_t vel, int count);
 void CL_BloodShower (vec3_t mins, vec3_t maxs, float velspeed, int count);
@@ -474,13 +511,6 @@ void CL_MoveParticles(void);
 void R_MoveExplosions(void);
 void R_NewExplosion(vec3_t org);
 
-// if contents is not zero, it will impact on content changes
-// (leafs matching contents are considered empty, others are solid)
-extern int traceline_endcontents; // set by TraceLine
-// need to call this sometime before using TraceLine with hitbmodels
-void TraceLine_ScanForBModels(void);
-float TraceLine (vec3_t start, vec3_t end, vec3_t impact, vec3_t normal, int contents, int hitbmodels);
-
 #include "cl_screen.h"
 
 #define MAX_VISEDICTS (MAX_EDICTS + MAX_STATIC_ENTITIES + MAX_TEMP_ENTITIES)
@@ -504,10 +534,7 @@ typedef struct
        int numentities;
        entity_render_t **entities;
 
-       int numparticles;
-       struct renderparticle_s *particles;
-
-       byte drawqueue[MAX_DRAWQUEUE];
+       qbyte drawqueue[MAX_DRAWQUEUE];
        int drawqueuesize;
 }
 refdef_t;
@@ -517,3 +544,6 @@ refdef_t r_refdef;
 extern mempool_t *cl_refdef_mempool;
 
 #include "cgamevm.h"
+
+#endif
+