/// <summary>
        /// Called by SpellPhase.NotifyStart
        /// </summary>
        internal void NotifyStart()
        {
            isActive   = true;
            pulseCount = 0;
            StartTime  = Time.time;

            // initialize target collection
            Targets.InitializeTargets(ContextOwner, Phase.SpellCastContext);

            // apply aura
            if (Phase.Template.AuraTemplate != null && ContextOwner != null)
            {
                Aura.AddAura(ContextOwner.gameObject, Phase.Template.AuraTemplate, 0);
            }

            // apply StartEffects
            ApplySpellEffects(Phase.Template.StartEffects);

            // start pulsing
            if (Phase.Template.RepeatEffects != null)
            {
                isPulsing = true;
                StartCoroutine(KeepPulsing());
            }
        }