home *** CD-ROM | disk | FTP | other *** search
/ Game Level Design / GLDesign.bin / Software / UnrealEngine2Runtime / UE2Runtime-22262001_Demo.exe / Gameplay / Classes / TriggerLight.uc < prev    next >
Text File  |  2003-12-11  |  4KB  |  172 lines

  1. //=============================================================================
  2. // TriggerLight.
  3. // A lightsource which can be triggered on or off.
  4. //=============================================================================
  5. class TriggerLight extends Light;
  6.  
  7. //-----------------------------------------------------------------------------
  8. // Variables.
  9.  
  10. var() float ChangeTime;        // Time light takes to change from on to off.
  11. var() bool  bInitiallyOn;      // Whether it's initially on.
  12. var() bool  bDelayFullOn;      // Delay then go full-on.
  13. var() float RemainOnTime;      // How long the TriggerPound effect lasts
  14.  
  15. var   float InitialBrightness; // Initial brightness.
  16. var   float Alpha, Direction;
  17. var   actor SavedTrigger;
  18. var   float poundTime;
  19.  
  20. //-----------------------------------------------------------------------------
  21. // Engine functions.
  22.  
  23. // Called at start of gameplay.
  24. simulated function BeginPlay()
  25. {
  26.     // Remember initial light type and set new one.
  27.     InitialBrightness = LightBrightness;
  28.     if( bInitiallyOn )
  29.     {
  30.         Alpha     = 1.0;
  31.         Direction = 1.0;
  32.     }
  33.     else
  34.     {
  35.         Alpha     = 0.0;
  36.         Direction = -1.0;
  37.     }
  38.     SetDrawType(DT_None);
  39. }
  40.  
  41. // Called whenever time passes.
  42. function Tick( float DeltaTime )
  43. {
  44.     Alpha += Direction * DeltaTime / ChangeTime;
  45.     if( Alpha > 1.0 )
  46.     {
  47.         Alpha = 1.0;
  48.         Disable( 'Tick' );
  49.         if( SavedTrigger != None )
  50.             SavedTrigger.EndEvent();
  51.     }
  52.     else if( Alpha < 0.0 )
  53.     {
  54.         Alpha = 0.0;
  55.         Disable( 'Tick' );
  56.         if( SavedTrigger != None )
  57.             SavedTrigger.EndEvent();
  58.     }
  59.     if( !bDelayFullOn )
  60.         LightBrightness = Alpha * InitialBrightness;
  61.     else if( (Direction>0 && Alpha!=1) || Alpha==0 )
  62.         LightBrightness = 0;
  63.     else
  64.         LightBrightness = InitialBrightness;
  65. }
  66.  
  67. //-----------------------------------------------------------------------------
  68. // Public states.
  69.  
  70. // Trigger turns the light on.
  71. state() TriggerTurnsOn
  72. {
  73.     function Trigger( actor Other, pawn EventInstigator )
  74.     {
  75.         if( SavedTrigger!=None )
  76.             SavedTrigger.EndEvent();
  77.         SavedTrigger = Other;
  78.         SavedTrigger.BeginEvent();
  79.         Direction = 1.0;
  80.         Enable( 'Tick' );
  81.     }
  82. }
  83.  
  84. // Trigger turns the light off.
  85. state() TriggerTurnsOff
  86. {
  87.     function Trigger( actor Other, pawn EventInstigator )
  88.     {
  89.         if( SavedTrigger!=None )
  90.             SavedTrigger.EndEvent();
  91.         SavedTrigger = Other;
  92.         SavedTrigger.BeginEvent();
  93.         Direction = -1.0;
  94.         Enable( 'Tick' );
  95.     }
  96. }
  97.  
  98. // Trigger toggles the light.
  99. state() TriggerToggle
  100. {
  101.     function Trigger( actor Other, pawn EventInstigator )
  102.     {
  103.         if( SavedTrigger!=None )
  104.             SavedTrigger.EndEvent();
  105.         SavedTrigger = Other;
  106.         SavedTrigger.BeginEvent();
  107.         Direction *= -1;
  108.         Enable( 'Tick' );
  109.     }
  110. }
  111.  
  112. // Trigger controls the light.
  113. state() TriggerControl
  114. {
  115.     function Trigger( actor Other, pawn EventInstigator )
  116.     {
  117.         if( SavedTrigger!=None )
  118.             SavedTrigger.EndEvent();
  119.         SavedTrigger = Other;
  120.         SavedTrigger.BeginEvent();
  121.         if( bInitiallyOn ) Direction = -1.0;
  122.         else               Direction = 1.0;
  123.         Enable( 'Tick' );
  124.     }
  125.     function UnTrigger( actor Other, pawn EventInstigator )
  126.     {
  127.         if( SavedTrigger!=None )
  128.             SavedTrigger.EndEvent();
  129.         SavedTrigger = Other;
  130.         SavedTrigger.BeginEvent();
  131.         if( bInitiallyOn ) Direction = 1.0;
  132.         else               Direction = -1.0;
  133.         Enable( 'Tick' );
  134.     }
  135. }
  136.  
  137. state() TriggerPound {
  138.  
  139.     function Timer () {
  140.     
  141.         if (poundTime >= RemainOnTime) {
  142.         
  143.             Disable ('Timer');
  144.         }
  145.         poundTime += ChangeTime;
  146.         Direction *= -1;
  147.         SetTimer (ChangeTime, false);
  148.     }
  149.  
  150.     function Trigger( actor Other, pawn EventInstigator )
  151.     {
  152.  
  153.         if( SavedTrigger!=None )
  154.             SavedTrigger.EndEvent();
  155.         SavedTrigger = Other;
  156.         SavedTrigger.BeginEvent();
  157.         Direction = 1;
  158.         poundTime = ChangeTime;            // how much time will pass till reversal
  159.         SetTimer (ChangeTime, false);        // wake up when it's time to reverse
  160.         Enable   ('Timer');
  161.         Enable   ('Tick');
  162.     }
  163. }
  164.  
  165. defaultproperties
  166. {
  167.     RemoteRole=ROLE_SimulatedProxy
  168.      bHidden=False
  169.      bStatic=False
  170.      bMovable=True
  171. }
  172.