Engine
Class TriggerLight

source: e:\games\UnrealTournament\Engine\Classes\TriggerLight.uc
Core.Object
   |
   +--Engine.Actor
      |
      +--Engine.Light
         |
         +--Engine.TriggerLight
Direct Known Subclasses:None

class TriggerLight
extends Engine.Light

//============================================================================= // TriggerLight. // A lightsource which can be triggered on or off. //=============================================================================
Variables
 float ChangeTime
           Time light takes to change from on to off.
 Alpha, Direction
           Initial brightness.
 float InitialBrightness
           Initial brightness.
 float RemainOnTime
           How long the TriggerPound effect lasts
 Actor SavedTrigger
           Initial brightness.
 bool bDelayFullOn
           Delay then go full-on.
 bool bInitiallyOn
           Whether it's initially on.
 float poundTime
           Initial brightness.


Function Summary
 
simulated
BeginPlay()
     
// Called at start of gameplay.
 void Tick(float DeltaTime)
     
// Called whenever time passes.
 void Timer()
 void Trigger(Actor Other, Pawn EventInstigator)
 void Trigger(Actor Other, Pawn EventInstigator)
 void Trigger(Actor Other, Pawn EventInstigator)
 void Trigger(Actor Other, Pawn EventInstigator)
 void Trigger(Actor Other, Pawn EventInstigator)
 void UnTrigger(Actor Other, Pawn EventInstigator)



Source Code


00001	//=============================================================================
00002	// TriggerLight.
00003	// A lightsource which can be triggered on or off.
00004	//=============================================================================
00005	class TriggerLight extends Light;
00006	
00007	//-----------------------------------------------------------------------------
00008	// Variables.
00009	
00010	var() float ChangeTime;        // Time light takes to change from on to off.
00011	var() bool  bInitiallyOn;      // Whether it's initially on.
00012	var() bool  bDelayFullOn;      // Delay then go full-on.
00013	var() float RemainOnTime;      // How long the TriggerPound effect lasts
00014	
00015	var   float InitialBrightness; // Initial brightness.
00016	var   float Alpha, Direction;
00017	var   actor SavedTrigger;
00018	var   float poundTime;
00019	
00020	//-----------------------------------------------------------------------------
00021	// Engine functions.
00022	
00023	// Called at start of gameplay.
00024	simulated function BeginPlay()
00025	{
00026		// Remember initial light type and set new one.
00027		Disable( 'Tick' );
00028		InitialBrightness = LightBrightness;
00029		if( bInitiallyOn )
00030		{
00031			Alpha     = 1.0;
00032			Direction = 1.0;
00033		}
00034		else
00035		{
00036			Alpha     = 0.0;
00037			Direction = -1.0;
00038		}
00039		DrawType = DT_None;
00040	}
00041	
00042	// Called whenever time passes.
00043	function Tick( float DeltaTime )
00044	{
00045		Alpha += Direction * DeltaTime / ChangeTime;
00046		if( Alpha > 1.0 )
00047		{
00048			Alpha = 1.0;
00049			Disable( 'Tick' );
00050			if( SavedTrigger != None )
00051				SavedTrigger.EndEvent();
00052		}
00053		else if( Alpha < 0.0 )
00054		{
00055			Alpha = 0.0;
00056			Disable( 'Tick' );
00057			if( SavedTrigger != None )
00058				SavedTrigger.EndEvent();
00059		}
00060		if( !bDelayFullOn )
00061			LightBrightness = Alpha * InitialBrightness;
00062		else if( (Direction>0 && Alpha!=1) || Alpha==0 )
00063			LightBrightness = 0;
00064		else
00065			LightBrightness = InitialBrightness;
00066	}
00067	
00068	//-----------------------------------------------------------------------------
00069	// Public states.
00070	
00071	// Trigger turns the light on.
00072	state() TriggerTurnsOn
00073	{
00074		function Trigger( actor Other, pawn EventInstigator )
00075		{
00076			if( SavedTrigger!=None )
00077				SavedTrigger.EndEvent();
00078			SavedTrigger = Other;
00079			SavedTrigger.BeginEvent();
00080			Direction = 1.0;
00081			Enable( 'Tick' );
00082		}
00083	}
00084	
00085	// Trigger turns the light off.
00086	state() TriggerTurnsOff
00087	{
00088		function Trigger( actor Other, pawn EventInstigator )
00089		{
00090			if( SavedTrigger!=None )
00091				SavedTrigger.EndEvent();
00092			SavedTrigger = Other;
00093			SavedTrigger.BeginEvent();
00094			Direction = -1.0;
00095			Enable( 'Tick' );
00096		}
00097	}
00098	
00099	// Trigger toggles the light.
00100	state() TriggerToggle
00101	{
00102		function Trigger( actor Other, pawn EventInstigator )
00103		{
00104			if( SavedTrigger!=None )
00105				SavedTrigger.EndEvent();
00106			SavedTrigger = Other;
00107			SavedTrigger.BeginEvent();
00108			Direction *= -1;
00109			Enable( 'Tick' );
00110		}
00111	}
00112	
00113	// Trigger controls the light.
00114	state() TriggerControl
00115	{
00116		function Trigger( actor Other, pawn EventInstigator )
00117		{
00118			if( SavedTrigger!=None )
00119				SavedTrigger.EndEvent();
00120			SavedTrigger = Other;
00121			SavedTrigger.BeginEvent();
00122			if( bInitiallyOn ) Direction = -1.0;
00123			else               Direction = 1.0;
00124			Enable( 'Tick' );
00125		}
00126		function UnTrigger( actor Other, pawn EventInstigator )
00127		{
00128			if( SavedTrigger!=None )
00129				SavedTrigger.EndEvent();
00130			SavedTrigger = Other;
00131			SavedTrigger.BeginEvent();
00132			if( bInitiallyOn ) Direction = 1.0;
00133			else               Direction = -1.0;
00134			Enable( 'Tick' );
00135		}
00136	}
00137	
00138	state() TriggerPound {
00139	
00140		function Timer () {
00141		
00142			if (poundTime >= RemainOnTime) {
00143			
00144				Disable ('Timer');
00145			}
00146			poundTime += ChangeTime;
00147			Direction *= -1;
00148			SetTimer (ChangeTime, false);
00149		}
00150	
00151		function Trigger( actor Other, pawn EventInstigator )
00152		{
00153	
00154			if( SavedTrigger!=None )
00155				SavedTrigger.EndEvent();
00156			SavedTrigger = Other;
00157			SavedTrigger.BeginEvent();
00158			Direction = 1;
00159			poundTime = ChangeTime;			// how much time will pass till reversal
00160			SetTimer (ChangeTime, false);		// wake up when it's time to reverse
00161			Enable   ('Timer');
00162			Enable   ('Tick');
00163		}
00164	}
00165	
00166	defaultproperties
00167	{
00168	     bStatic=False
00169	     bHidden=False
00170	     RemoteRole=ROLE_SimulatedProxy
00171	     bMovable=True
00172	}

End Source Code