private static Trigger CreateTrigger(XElement triggerXml)
 {
     var trigger = new Trigger();
     trigger.Description = GetAttribute(triggerXml.Attribute("description"));
     trigger.Id = GetAttribute(triggerXml.Attribute("id"));
     trigger.StartConditions.AddRange(CreateConditions(triggerXml, "startConditions"));
     trigger.EndConditions.AddRange(CreateConditions(triggerXml, "endConditions"));
     trigger.Sources.AddRange(CreateSources(triggerXml, "sources"));
     return trigger;
 }
        //private bool spent = false;

        internal TriggerManager(Trigger trigger, IMastAdapter mastInterface)
        {
            if (trigger == null)
            {
                throw new NullReferenceException("Trigger must not be null.");
            }
            if (mastInterface == null)
            {
                throw new NullReferenceException("IMastAdapter must not be null.");
            }

            Trigger = trigger;
            MastInterface = mastInterface;

            foreach (Condition c in trigger.StartConditions)
            {
                ConditionManager cm = new ConditionManager(c, MastInterface);
                //We need to wire up events, for event type conditions, and this is also used for some property calculations around time
                //if (c.type == ConditionType.@event) {
                cm.EventFired += OnConditionEventFired;
                //}
                StartConditions.Add(cm);
            }

            foreach (Condition c in trigger.EndConditions)
            {
                ConditionManager cm = new ConditionManager(c, MastInterface) { IsEndCondition = true };
                //if (c.type == ConditionType.@event) {
                cm.EventFired += OnConditionEventFired;
                //}
                EndConditions.Add(cm);
            }

            //we just need this for 'per clip' events, to reset the flag
            //ReflectionHelper.AttachEvent(MastInterface, "OnItemEnd", this, "OnItemEnd");
        }
 internal TriggerFailureEventArgs(Trigger trigger, Exception exception)
 {
     Exception = exception;
     Trigger = trigger;
 }
 internal TriggerEventArgs(Trigger trigger)
 {
     Trigger = trigger;
 }