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; DynamicLight.SpotInnerAngle 10; DynamicLight.SpotOuterAngle 25; +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(); } }