mirror of
https://github.com/ZDoom/gzdoom.git
synced 2024-11-27 14:22:13 +00:00
409 lines
5.2 KiB
Text
409 lines
5.2 KiB
Text
class DynamicLight : Actor native
|
|
{
|
|
native double SpotInnerAngle;
|
|
native double SpotOuterAngle;
|
|
|
|
property SpotInnerAngle: SpotInnerAngle;
|
|
property SpotOuterAngle: SpotOuterAngle;
|
|
|
|
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,
|
|
DummyLight,
|
|
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";
|
|
}
|
|
}
|
|
|
|
// DYNAMICLIGHT.ADDITIVE and DYNAMICLIGHT.SUBTRACTIVE are used by the lights for additive and subtractive lights
|
|
|
|
class PointLightAdditive : PointLight
|
|
{
|
|
Default
|
|
{
|
|
+DYNAMICLIGHT.ADDITIVE
|
|
}
|
|
}
|
|
|
|
class PointLightPulseAdditive : PointLightPulse
|
|
{
|
|
Default
|
|
{
|
|
+DYNAMICLIGHT.ADDITIVE
|
|
}
|
|
}
|
|
|
|
class PointLightFlickerAdditive : PointLightFlicker
|
|
{
|
|
Default
|
|
{
|
|
+DYNAMICLIGHT.ADDITIVE
|
|
}
|
|
}
|
|
|
|
class SectorPointLightAdditive : SectorPointLight
|
|
{
|
|
Default
|
|
{
|
|
+DYNAMICLIGHT.ADDITIVE
|
|
}
|
|
}
|
|
|
|
class PointLightFlickerRandomAdditive :PointLightFlickerRandom
|
|
{
|
|
Default
|
|
{
|
|
+DYNAMICLIGHT.ADDITIVE
|
|
}
|
|
}
|
|
|
|
class PointLightSubtractive : PointLight
|
|
{
|
|
Default
|
|
{
|
|
+DYNAMICLIGHT.SUBTRACTIVE
|
|
}
|
|
}
|
|
|
|
class PointLightPulseSubtractive : PointLightPulse
|
|
{
|
|
Default
|
|
{
|
|
+DYNAMICLIGHT.SUBTRACTIVE
|
|
}
|
|
}
|
|
|
|
class PointLightFlickerSubtractive : PointLightFlicker
|
|
{
|
|
Default
|
|
{
|
|
+DYNAMICLIGHT.SUBTRACTIVE
|
|
}
|
|
}
|
|
|
|
class SectorPointLightSubtractive : SectorPointLight
|
|
{
|
|
Default
|
|
{
|
|
+DYNAMICLIGHT.SUBTRACTIVE
|
|
}
|
|
}
|
|
|
|
class PointLightFlickerRandomSubtractive : PointLightFlickerRandom
|
|
{
|
|
Default
|
|
{
|
|
+DYNAMICLIGHT.SUBTRACTIVE
|
|
}
|
|
}
|
|
|
|
class PointLightAttenuated : PointLight
|
|
{
|
|
Default
|
|
{
|
|
+DYNAMICLIGHT.ATTENUATE
|
|
}
|
|
}
|
|
|
|
class PointLightPulseAttenuated : PointLightPulse
|
|
{
|
|
Default
|
|
{
|
|
+DYNAMICLIGHT.ATTENUATE
|
|
}
|
|
}
|
|
|
|
class PointLightFlickerAttenuated : PointLightFlicker
|
|
{
|
|
Default
|
|
{
|
|
+DYNAMICLIGHT.ATTENUATE
|
|
}
|
|
}
|
|
|
|
class SectorPointLightAttenuated : SectorPointLight
|
|
{
|
|
Default
|
|
{
|
|
+DYNAMICLIGHT.ATTENUATE
|
|
}
|
|
}
|
|
|
|
class PointLightFlickerRandomAttenuated :PointLightFlickerRandom
|
|
{
|
|
Default
|
|
{
|
|
+DYNAMICLIGHT.ATTENUATE
|
|
}
|
|
}
|
|
|
|
class SpotLight : DynamicLight
|
|
{
|
|
Default
|
|
{
|
|
DynamicLight.Type "Point";
|
|
+DYNAMICLIGHT.SPOT
|
|
}
|
|
}
|
|
|
|
class SpotLightPulse : SpotLight
|
|
{
|
|
Default
|
|
{
|
|
DynamicLight.Type "Pulse";
|
|
}
|
|
}
|
|
|
|
class SpotLightFlicker : SpotLight
|
|
{
|
|
Default
|
|
{
|
|
DynamicLight.Type "Flicker";
|
|
}
|
|
}
|
|
|
|
class SectorSpotLight : SpotLight
|
|
{
|
|
Default
|
|
{
|
|
DynamicLight.Type "Sector";
|
|
}
|
|
}
|
|
|
|
class SpotLightFlickerRandom : SpotLight
|
|
{
|
|
Default
|
|
{
|
|
DynamicLight.Type "RandomFlicker";
|
|
}
|
|
}
|
|
|
|
class SpotLightAdditive : SpotLight
|
|
{
|
|
Default
|
|
{
|
|
+DYNAMICLIGHT.ADDITIVE
|
|
}
|
|
}
|
|
|
|
class SpotLightPulseAdditive : SpotLightPulse
|
|
{
|
|
Default
|
|
{
|
|
+DYNAMICLIGHT.ADDITIVE
|
|
}
|
|
}
|
|
|
|
class SpotLightFlickerAdditive : SpotLightFlicker
|
|
{
|
|
Default
|
|
{
|
|
+DYNAMICLIGHT.ADDITIVE
|
|
}
|
|
}
|
|
|
|
class SectorSpotLightAdditive : SectorSpotLight
|
|
{
|
|
Default
|
|
{
|
|
+DYNAMICLIGHT.ADDITIVE
|
|
}
|
|
}
|
|
|
|
class SpotLightFlickerRandomAdditive : SpotLightFlickerRandom
|
|
{
|
|
Default
|
|
{
|
|
+DYNAMICLIGHT.ADDITIVE
|
|
}
|
|
}
|
|
|
|
class SpotLightSubtractive : SpotLight
|
|
{
|
|
Default
|
|
{
|
|
+DYNAMICLIGHT.SUBTRACTIVE
|
|
}
|
|
}
|
|
|
|
class SpotLightPulseSubtractive : SpotLightPulse
|
|
{
|
|
Default
|
|
{
|
|
+DYNAMICLIGHT.SUBTRACTIVE
|
|
}
|
|
}
|
|
|
|
class SpotLightFlickerSubtractive : SpotLightFlicker
|
|
{
|
|
Default
|
|
{
|
|
+DYNAMICLIGHT.SUBTRACTIVE
|
|
}
|
|
}
|
|
|
|
class SectorSpotLightSubtractive : SectorSpotLight
|
|
{
|
|
Default
|
|
{
|
|
+DYNAMICLIGHT.SUBTRACTIVE
|
|
}
|
|
}
|
|
|
|
class SpotLightFlickerRandomSubtractive : SpotLightFlickerRandom
|
|
{
|
|
Default
|
|
{
|
|
+DYNAMICLIGHT.SUBTRACTIVE
|
|
}
|
|
}
|
|
|
|
class SpotLightAttenuated : SpotLight
|
|
{
|
|
Default
|
|
{
|
|
+DYNAMICLIGHT.ATTENUATE
|
|
}
|
|
}
|
|
|
|
class SpotLightPulseAttenuated : SpotLightPulse
|
|
{
|
|
Default
|
|
{
|
|
+DYNAMICLIGHT.ATTENUATE
|
|
}
|
|
}
|
|
|
|
class SpotLightFlickerAttenuated : SpotLightFlicker
|
|
{
|
|
Default
|
|
{
|
|
+DYNAMICLIGHT.ATTENUATE
|
|
}
|
|
}
|
|
|
|
class SectorSpotLightAttenuated : SectorSpotLight
|
|
{
|
|
Default
|
|
{
|
|
+DYNAMICLIGHT.ATTENUATE
|
|
}
|
|
}
|
|
|
|
class SpotLightFlickerRandomAttenuated : SpotLightFlickerRandom
|
|
{
|
|
Default
|
|
{
|
|
+DYNAMICLIGHT.ATTENUATE
|
|
}
|
|
}
|
|
|
|
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();
|
|
}
|
|
}
|
|
|
|
|