/** * Toggleable version of SpotLight. * * Copyright 1998-2013 Epic Games, Inc. All Rights Reserved. */ class SpotLightToggleable extends SpotLight native(Light) ClassGroup(Lights,SpotLights) placeable; struct CheckpointRecord { var bool bEnabled; }; cpptext { public: /** * This will determine which icon should be displayed for this light. **/ virtual void DetermineAndSetEditorIcon(); /** * Static affecting Toggleables can't have UseDirectLightmaps=TRUE So even tho they are not "free" * lightmapped data, they still are classified as static as it is the best they can be. **/ virtual void SetValuesForLight_StaticAffecting(); /** * Returns true if the light supports being toggled off and on on-the-fly * * @return For 'toggleable' lights, returns true **/ virtual UBOOL IsToggleable() const { // SpotLightToggleable supports being toggled on the fly! return TRUE; } } function bool ShouldSaveForCheckpoint() { return (RemoteRole != ROLE_None); } function CreateCheckpointRecord(out CheckpointRecord Record) { Record.bEnabled = bEnabled; } function ApplyCheckpointRecord(const out CheckpointRecord Record) { bEnabled = Record.bEnabled; LightComponent.SetEnabled(bEnabled); ForceNetRelevant(); } defaultproperties { // Visual things should be ticked in parallel with physics TickGroup=TG_DuringAsyncWork Begin Object Name=Sprite Sprite=Texture2D'EditorResources.LightIcons.Light_Spot_Toggleable_Statics' End Object // Light component. Begin Object Name=SpotLightComponent0 LightAffectsClassification=LAC_STATIC_AFFECTING CastShadows=TRUE CastStaticShadows=TRUE CastDynamicShadows=FALSE bForceDynamicLight=FALSE UseDirectLightMap=FALSE `if(`__TW_LIGHTING_MODIFICATIONS_) // Custom lighting channel implementation LightingChannels=(Indoor=TRUE,Outdoor=TRUE,bInitialized=TRUE) `else LightingChannels=(BSP=TRUE,Static=TRUE,Dynamic=FALSE,bInitialized=TRUE) `endif // By default indirect light from toggleable lights won't be put into lightmaps, since it can't be toggled in-game LightmassSettings=(IndirectLightingScale=0) End Object bMovable=FALSE bStatic=FALSE bHardAttach=TRUE }