public EventList Generate(float strength, float timeOffset)
        {
            EventList events = new EventList();

            foreach (var pattern in Experience.Patterns)
            {
                if (pattern != null)
                {
                    float finalStrength = strength * pattern.Strength;
                    float finalTime     = timeOffset + pattern.Time;

                    EventList subEvents = pattern.Generate(finalStrength, finalTime);
                    events.AddAll(subEvents);
                }
            }
            return(events);
        }
        internal EventList Generate(float strength, float timeOffset)
        {
            EventList events = new EventList();

            foreach (var sequence in Pattern.Sequences)
            {
                if (sequence != null)
                {
                    float finalStrength = strength * sequence.Strength;
                    float finalTime     = timeOffset + sequence.Time;

                    EventList subEvents = sequence.Generate(finalStrength, finalTime);
                    events.AddAll(subEvents);
                }
            }
            return(events);
        }