+#ifndef CLIENT_H
+#define CLIENT_H
+
+#include "matrixlib.h"
+
+// LordHavoc: 256 dynamic lights
+#define MAX_DLIGHTS 256
+// LordHavoc: this affects the lighting scale of the whole game
+#define LIGHTOFFSET 1024.0f
+// max lights shining on one entity
+#define MAXENTLIGHTS 128
+
+extern int cl_max_entities;
+extern int cl_max_static_entities;
+extern int cl_max_temp_entities;
+extern int cl_max_effects;
+extern int cl_max_beams;
+
+typedef struct effect_s
+{
+ int active;
+ vec3_t origin;
+ float starttime;
+ float framerate;
+ int modelindex;
+ int startframe;
+ int endframe;
+ // these are for interpolation
+ int frame;
+ double frame1time;
+ double frame2time;
+}
+cl_effect_t;
+
+typedef struct
+{
+ int entity;
+ // draw this as lightning polygons, or a model?
+ int lightning;
+ struct model_s *model;
+ float endtime;
+ vec3_t start, end;
+ // if this beam is owned by an entity, this is the beam start relative to
+ // that entity's matrix for per frame start updates
+ vec3_t relativestart;
+ vec3_t relativeend;
+ // indicates whether relativestart is valid
+ int relativestartvalid;
+}
+beam_t;
+
+typedef struct
+{
+ // location
+ vec3_t origin;
+ // stop lighting after this time
+ float die;
+ // color of light
+ vec3_t color;
+ // brightness (not really radius anymore)
+ float radius;
+ // drop this each second
+ float decay;
+ // the entity that owns this light (can be NULL)
+ struct entity_render_s *ent;
+}
+dlight_t;
+