-// LordHavoc: 256 dynamic lights
-#define MAX_DLIGHTS 256
+#ifndef R_LIGHT_H
+#define R_LIGHT_H
+
typedef struct
{
- vec3_t origin;
- float radius;
- float die; // stop lighting after this time
- float decay; // drop this each second
- int key;
- vec3_t color; // LordHavoc: colored lighting
- qboolean dark; // subtracts light instead of adding
-} dlight_t;
+ vec3_t origin;
+ vec_t cullradius2; // only for culling comparisons, squared version
+ vec3_t light; // the brightness of the light
+ vec_t cullradius; // only for culling comparisons
+ vec_t subtract; // to avoid sudden brightness change at cullradius, subtract this
+ entity_render_t *ent; // owner of this light
+}
+rdlight_t;
+
+extern int r_numdlights;
+extern rdlight_t r_dlight[MAX_DLIGHTS];
+
+void R_BuildLightList(void);
+void R_AnimateLight(void);
+void R_MarkLights(entity_render_t *ent);
+void R_DrawCoronas(void);
+void R_CompleteLightPoint(vec3_t color, const vec3_t p, int dynamic, const mleaf_t *leaf);
+void R_LightModel(const entity_render_t *ent, int numverts, float *vertices, float *normals, float *colors, float colorr, float colorg, float colorb, int worldcoords);
+void R_UpdateEntLights(entity_render_t *ent);
-// LordHavoc: this affects the lighting scale of the whole game
-#define LIGHTOFFSET 4096.0f
+#endif
-extern void R_CompleteLightPoint (vec3_t color, vec3_t p);
-extern void R_DynamicLightPoint(vec3_t color, vec3_t org, int *dlightbits);
-extern void R_DynamicLightPointNoMask(vec3_t color, vec3_t org);
-extern void R_LightPoint (vec3_t color, vec3_t p);