qzdoom/wadsrc/static/zscript/shared/dynlights.txt
Christoph Oelckers 87b9b6111d - scriptified the BeginPlay methods of the VavoomLight classes.
- moved m_Radius back to arg[3] and arg[4], so that scripts have access to light sizes again.
2017-01-18 19:10:25 +01:00

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();
}
}