2019-05-30 21:24:47 +02:00
|
|
|
#pragma once
|
|
|
|
|
2019-06-01 19:18:19 +02:00
|
|
|
class CRegisteredPointLight
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
CVector coors;
|
|
|
|
CVector dir;
|
|
|
|
float radius;
|
|
|
|
float red;
|
|
|
|
float green;
|
|
|
|
float blue;
|
|
|
|
int8 type;
|
|
|
|
int8 fogType;
|
|
|
|
bool castExtraShadows;
|
|
|
|
};
|
2020-05-10 17:49:33 +02:00
|
|
|
VALIDATE_SIZE(CRegisteredPointLight, 0x2C);
|
2019-06-01 19:18:19 +02:00
|
|
|
|
2019-05-30 21:24:47 +02:00
|
|
|
class CPointLights
|
|
|
|
{
|
2019-07-24 18:55:43 +02:00
|
|
|
public:
|
2020-04-17 07:54:14 +02:00
|
|
|
static int16 NumLights;
|
|
|
|
static CRegisteredPointLight aLights[NUMPOINTLIGHTS];
|
2020-08-09 15:45:38 +02:00
|
|
|
static CVector aCachedMapReads[32];
|
|
|
|
static float aCachedMapReadResults[32];
|
|
|
|
static int32 NextCachedValue;
|
2019-07-24 18:55:43 +02:00
|
|
|
|
2019-06-01 19:18:19 +02:00
|
|
|
enum {
|
|
|
|
LIGHT_POINT,
|
|
|
|
LIGHT_DIRECTIONAL,
|
|
|
|
LIGHT_DARKEN, // no effects at all
|
|
|
|
// these have only fog, otherwise no difference?
|
2019-06-30 21:06:55 +02:00
|
|
|
// only used by CEntity::ProcessLightsForEntity it seems
|
|
|
|
// and there used together with fog type
|
|
|
|
LIGHT_FOGONLY_ALWAYS,
|
|
|
|
LIGHT_FOGONLY,
|
2019-06-01 19:18:19 +02:00
|
|
|
};
|
|
|
|
enum {
|
|
|
|
FOG_NONE,
|
|
|
|
FOG_NORMAL, // taken from Foggyness
|
|
|
|
FOG_ALWAYS
|
|
|
|
};
|
|
|
|
|
2020-08-09 15:45:38 +02:00
|
|
|
static void Init(void);
|
2019-05-31 11:44:43 +02:00
|
|
|
static void InitPerFrame(void);
|
2019-06-01 19:18:19 +02:00
|
|
|
static void AddLight(uint8 type, CVector coors, CVector dir, float radius, float red, float green, float blue, uint8 fogType, bool castExtraShadows);
|
2020-04-30 12:48:01 +02:00
|
|
|
static float GenerateLightsAffectingObject(Const CVector *objCoors);
|
2019-06-01 19:18:19 +02:00
|
|
|
static void RemoveLightsAffectingObject(void);
|
2019-05-30 21:24:47 +02:00
|
|
|
static void RenderFogEffect(void);
|
2020-08-09 15:45:38 +02:00
|
|
|
static bool ProcessVerticalLineUsingCache(CVector coors, float *groundZ);
|
2019-05-30 21:24:47 +02:00
|
|
|
};
|