text: ﻿// Properties
  var waveFunction : String = "sin"; // possible values: sin, tri(angle), sqr(square), saw(tooth), inv(verted sawtooth), noise (random)
  var base : float = 0.0; // start
  var amplitude : float = 1.0; // amplitude of the wave
  var phase : float = 0.0; // start point inside on wave cycle
  var frequency : float = 0.5; // cycle frequency per second
   
  // Keep a copy of the original color
  private var originalColor : Color;
   
  // Store the original color
  function Start () {
      originalColor = GetComponent(Light).color;
  }
   
  function Update () {
      var light : Light = GetComponent(Light);
      light.color = originalColor * (EvalWave());
  }
   
  function EvalWave () {
      var x : float = (Time.time + phase)*frequency;
      var y : float;
   
      x = x - Mathf.Floor(x); // normalized value (0..1)
   
      if (waveFunction=="sin") {
          y = Mathf.Sin(x*2*Mathf.PI);
      }
      else if (waveFunction=="tri") {
          if (x < 0.5)
              y = 4.0 * x - 1.0;
          else
              y = -4.0 * x + 3.0;  
      }    
      else if (waveFunction=="sqr") {
          if (x < 0.5)
              y = 1.0;
          else
              y = -1.0;  
      }    
      else if (waveFunction=="saw") {
          y = x;
      }    
      else if (waveFunction=="inv") {
          y = 1.0 - x;
      }    
      else if (waveFunction=="noise") {
          y = 1 - (Random.value*2);
      }
      else {
          y = 1.0;
      }        
      return (y*amplitude)+base;     
  }
   