// ----------------------------------------------------------------
    //  Initialize
    // ----------------------------------------------------------------
    public void Initialize(IOnOffable myProp, OnOfferData data)
    {
        this.myProp = myProp;
        DurOn       = data.durOn;
        DurOff      = data.durOff;
        StartOffset = data.startOffset;

        // Make appliedOffset, which is StartOffset between 0 and total-dur.
        float durTotal      = DurOn + DurOff;
        float appliedOffset = StartOffset;

        if (appliedOffset < 0)
        {
            appliedOffset += durTotal;
        }
        appliedOffset = appliedOffset % (durTotal);

        // Use StartOffset!
        timeUntilToggle  = DurOn;
        timeUntilToggle -= appliedOffset;
        if (timeUntilToggle >= 0)   // start ON with this much time left.
        {
            myProp.SetIsOn(true);
        }
        else   // start OFF with this much time left.
        {
            timeUntilToggle += DurOff;
            myProp.SetIsOn(false);
        }

        // Move OnOffer component just under my Script, for easiness.
        #if UNITY_EDITOR
        UnityEditorInternal.ComponentUtility.MoveComponentUp(this);
        UnityEditorInternal.ComponentUtility.MoveComponentUp(this);
        UnityEditorInternal.ComponentUtility.MoveComponentUp(this);
        UnityEditorInternal.ComponentUtility.MoveComponentUp(this);
        UnityEditorInternal.ComponentUtility.MoveComponentUp(this);
        UnityEditorInternal.ComponentUtility.MoveComponentUp(this);
        UnityEditorInternal.ComponentUtility.MoveComponentDown(this);
        #endif
    }
 private void TurnOn()
 {
     timeUntilToggle += DurOn;
     myProp.SetIsOn(true);
 }