mirror of
https://github.com/ZDoom/gzdoom.git
synced 2024-11-27 14:22:13 +00:00
87b9b6111d
- moved m_Radius back to arg[3] and arg[4], so that scripts have access to light sizes again.
243 lines
3 KiB
Text
243 lines
3 KiB
Text
class DynamicLight : Actor native
|
|
{
|
|
enum EArgs
|
|
{
|
|
LIGHT_RED = 0,
|
|
LIGHT_GREEN = 1,
|
|
LIGHT_BLUE = 2,
|
|
LIGHT_INTENSITY = 3,
|
|
LIGHT_SECONDARY_INTENSITY = 4,
|
|
LIGHT_SCALE = 3,
|
|
};
|
|
|
|
enum ELightType
|
|
{
|
|
PointLight,
|
|
PulseLight,
|
|
FlickerLight,
|
|
RandomFlickerLight,
|
|
SectorLight,
|
|
SpotLight,
|
|
ColorPulseLight,
|
|
ColorFlickerLight,
|
|
RandomColorFlickerLight
|
|
};
|
|
|
|
Default
|
|
{
|
|
Height 0;
|
|
Radius 0.1;
|
|
FloatBobPhase 0;
|
|
RenderRadius -1;
|
|
+NOBLOCKMAP
|
|
+NOGRAVITY
|
|
+FIXMAPTHINGPOS
|
|
+INVISIBLE
|
|
}
|
|
}
|
|
|
|
|
|
class PointLight : DynamicLight
|
|
{
|
|
Default
|
|
{
|
|
DynamicLight.Type "Point";
|
|
}
|
|
}
|
|
|
|
class PointLightPulse : PointLight
|
|
{
|
|
Default
|
|
{
|
|
DynamicLight.Type "Pulse";
|
|
}
|
|
}
|
|
|
|
class PointLightFlicker : PointLight
|
|
{
|
|
Default
|
|
{
|
|
DynamicLight.Type "Flicker";
|
|
}
|
|
}
|
|
|
|
class SectorPointLight : PointLight
|
|
{
|
|
Default
|
|
{
|
|
DynamicLight.Type "Sector";
|
|
}
|
|
}
|
|
|
|
class PointLightFlickerRandom : PointLight
|
|
{
|
|
Default
|
|
{
|
|
DynamicLight.Type "RandomFlicker";
|
|
}
|
|
}
|
|
|
|
// MISSILEMORE and MISSILEEVENMORE are used by the lights for additive and subtractive lights
|
|
|
|
class PointLightAdditive : PointLight
|
|
{
|
|
Default
|
|
{
|
|
+MISSILEMORE
|
|
}
|
|
}
|
|
|
|
class PointLightPulseAdditive : PointLightPulse
|
|
{
|
|
Default
|
|
{
|
|
+MISSILEMORE
|
|
}
|
|
}
|
|
|
|
class PointLightFlickerAdditive : PointLightFlicker
|
|
{
|
|
Default
|
|
{
|
|
+MISSILEMORE
|
|
}
|
|
}
|
|
|
|
class SectorPointLightAdditive : SectorPointLight
|
|
{
|
|
Default
|
|
{
|
|
+MISSILEMORE
|
|
}
|
|
}
|
|
|
|
class PointLightFlickerRandomAdditive :PointLightFlickerRandom
|
|
{
|
|
Default
|
|
{
|
|
+MISSILEMORE
|
|
}
|
|
}
|
|
|
|
class PointLightSubtractive : PointLight
|
|
{
|
|
Default
|
|
{
|
|
+MISSILEEVENMORE
|
|
}
|
|
}
|
|
|
|
class PointLightPulseSubtractive : PointLightPulse
|
|
{
|
|
Default
|
|
{
|
|
+MISSILEEVENMORE
|
|
}
|
|
}
|
|
|
|
class PointLightFlickerSubtractive : PointLightFlicker
|
|
{
|
|
Default
|
|
{
|
|
+MISSILEEVENMORE
|
|
}
|
|
}
|
|
|
|
class SectorPointLightSubtractive : SectorPointLight
|
|
{
|
|
Default
|
|
{
|
|
+MISSILEEVENMORE
|
|
}
|
|
}
|
|
|
|
class PointLightFlickerRandomSubtractive : PointLightFlickerRandom
|
|
{
|
|
Default
|
|
{
|
|
+MISSILEEVENMORE
|
|
}
|
|
}
|
|
|
|
class PointLightAttenuated : PointLight
|
|
{
|
|
Default
|
|
{
|
|
+INCOMBAT
|
|
}
|
|
}
|
|
|
|
class PointLightPulseAttenuated : PointLightPulse
|
|
{
|
|
Default
|
|
{
|
|
+INCOMBAT
|
|
}
|
|
}
|
|
|
|
class PointLightFlickerAttenuated : PointLightFlicker
|
|
{
|
|
Default
|
|
{
|
|
+INCOMBAT
|
|
}
|
|
}
|
|
|
|
class SectorPointLightAttenuated : SectorPointLight
|
|
{
|
|
Default
|
|
{
|
|
+INCOMBAT
|
|
}
|
|
}
|
|
|
|
class PointLightFlickerRandomAttenuated :PointLightFlickerRandom
|
|
{
|
|
Default
|
|
{
|
|
+INCOMBAT
|
|
}
|
|
}
|
|
|
|
|
|
class VavoomLight : DynamicLight
|
|
{
|
|
Default
|
|
{
|
|
DynamicLight.Type "Point";
|
|
}
|
|
|
|
override void BeginPlay ()
|
|
{
|
|
if (CurSector) AddZ(-CurSector.floorplane.ZatPoint(pos.XY), false); // z is absolute for Vavoom lights
|
|
Super.BeginPlay();
|
|
}
|
|
}
|
|
|
|
class VavoomLightWhite : VavoomLight
|
|
{
|
|
override void BeginPlay ()
|
|
{
|
|
args[LIGHT_INTENSITY] = args[0] * 4;
|
|
args[LIGHT_RED] = 128;
|
|
args[LIGHT_GREEN] = 128;
|
|
args[LIGHT_BLUE] = 128;
|
|
|
|
Super.BeginPlay();
|
|
}
|
|
}
|
|
|
|
class VavoomLightColor : VavoomLight
|
|
{
|
|
override void BeginPlay ()
|
|
{
|
|
int radius = args[0] * 4;
|
|
args[LIGHT_RED] = args[1] >> 1;
|
|
args[LIGHT_GREEN] = args[2] >> 1;
|
|
args[LIGHT_BLUE] = args[3] >> 1;
|
|
args[LIGHT_INTENSITY] = radius;
|
|
Super.BeginPlay();
|
|
}
|
|
}
|
|
|
|
|