public EffectStep(Effect parent, List<Photon> photons, List<BigPhoton> bigPhotons, double stepTime, double upFadeTime, double dwellTime, double downFadeTime, int low, int high, int stepID)
            : this(parent, stepTime, upFadeTime, dwellTime, downFadeTime, low, high, stepID)
        {
            //TODO: Better way to do this?
            foreach (BigPhoton p in bigPhotons)
            {
                _bigPhotons.Add(p);
            }

            _photons.AddRange(photons);
        }
 // To restore one from a file
 public EffectStep(SerializationInfo info, StreamingContext ctxt)
 {
     _parentEffect = (Effect)info.GetValue("parent", typeof(Effect));
     _photons = (List<Photon>)info.GetValue("pairs", typeof(List<Photon>));
     _bigPhotons = (BindingList<BigPhoton>)info.GetValue("bigPhotons", typeof(BindingList<BigPhoton>));
     _stepTime = info.GetDouble("stepTime");
     _upFadeTime = info.GetDouble("upFadeTime");
     _dwellTime = info.GetDouble("dwellTime");
     _downFadeTime = info.GetDouble("downFadeTime");
     _lowLevel = info.GetInt32("lowLevel");
     _highLevel = info.GetInt32("highLevel");
     _stepID = info.GetInt32("stepID");
     _allPhotons = new List<Photon>();
     _stepTimer = new Timer();
     _stepTimer.AutoReset = false;
     _stepTimer.Elapsed += Finished;
     _downTimer = new Timer();
     _downTimer.AutoReset = false;
     _downTimer.Elapsed += StartDownFade;
 }
 private EffectStep(Effect parent, double stepTime, double upFadeTime, double dwellTime, double downFadeTime, int low, int high, int stepID)
 {
     _parentEffect = parent;
     _photons = new List<Photon>();
     _bigPhotons = new BindingList<BigPhoton>();
     _allPhotons = new List<Photon>();
     _stepTimer = new Timer();
     _stepTimer.AutoReset = false;
     _stepTimer.Elapsed += Finished;
     _downTimer = new Timer();
     _downTimer.AutoReset = false;
     _downTimer.Elapsed += StartDownFade;
     _stepTime = stepTime;
     _upFadeTime = upFadeTime;
     _dwellTime = dwellTime;
     _downFadeTime = downFadeTime;
     _lowLevel = low;
     _highLevel = high;
     _stepID = stepID;
     if (upFadeTime == 0 && dwellTime == 0 && downFadeTime == 0) _dwellTime = stepTime;
 }
 public EffectStep(Effect parent, int stepID)
     : this(parent, 0.2, 0, 0.2, 0, 0, 255, stepID)
 {
 }
 public EffectStep(Effect parent, List<Photon> pairs, int stepID)
     : this(parent, pairs, 0.2, 0, 0.2, 0, 0, 255, stepID)
 {
 }
 public EffectStep(Effect parent, List<Photon> photons, double stepTime, double upFadeTime, double dwellTime, double downFadeTime, int low, int high, int stepID)
     : this(parent, stepTime, upFadeTime, dwellTime, downFadeTime, low, high, stepID)
 {
     _photons.AddRange(photons);
     //_attribs = null;
 }