public BlinkColorSource(IColorSource onSource, long onMillis, IColorSource offSource, long offMillis, float phase)
 {
     this.blink     = Animations.Blink.of(onMillis, offMillis, phase);
     this.onSource  = onSource;
     this.offSource = offSource;
     if (phase == 0F)
     {
         this.id = string.Format(
             "{0}({1},{2},{3},{4})",
             TYPE_NAME,
             onSource.ColorSourceID,
             onMillis,
             offSource.ColorSourceID,
             offMillis);
     }
     else
     {
         this.id = string.Format(
             "{0}({1},{2},{3},{4},{5})",
             TYPE_NAME,
             onSource.ColorSourceID,
             onMillis,
             offSource.ColorSourceID,
             offMillis,
             phase);
     }
 }
        public override void OnStart(StartState state)
        {
            base.OnStart(state);

            blink = Animations.Blink.of((long)onMillis, (long)offMillis, phase);

            BlinkEnabledField.uiControlEditor.onFieldChanged = OnBlinkEnabledChanged;
            OnMillisField.uiControlEditor.onFieldChanged     = OnMillisChanged;
            OffMillisField.uiControlEditor.onFieldChanged    = OnMillisChanged;
            PhaseField.uiControlEditor.onFieldChanged        = OnMillisChanged;

            SetUiState();
        }