//private void _ReadEffectNodes(XElement element, Sequence sequence) {
        //    //Get the effect module instances from the module data.
        //    var effectModules = sequence.ModuleDataSet.GetInstances<IEffectModuleInstance>().ToDictionary(x => x.InstanceId);

        //    // Create a channel node lookup of channels that are currently valid.
        //    var channelNodes = VixenSystem.Nodes.Distinct().ToDictionary(x => x.Id);

        //    sequence.Data.ClearStream();

        //    foreach(XElement effectNodeElement in element.Element(ELEMENT_EFFECT_NODES).Elements(ELEMENT_EFFECT_NODE)) {
        //        Guid typeId = Guid.Parse(effectNodeElement.Attribute(ATTR_TYPE_ID).Value);
        //        Guid instanceId = Guid.Parse(effectNodeElement.Attribute(ATTR_INSTANCE_ID).Value);
        //        TimeSpan startTime = TimeSpan.FromTicks(long.Parse(effectNodeElement.Element(ELEMENT_START_TIME).Value));
        //        TimeSpan timeSpan = TimeSpan.FromTicks(long.Parse(effectNodeElement.Element(ELEMENT_TIME_SPAN).Value));
        //        IEnumerable<Guid> targetNodeIds = effectNodeElement
        //            .Element(ELEMENT_TARGET_NODES)
        //            .Elements(ELEMENT_TARGET_NODE)
        //            .Select(x => Guid.Parse(x.Attribute(ATTR_ID).Value));

        //        // Get the effect module instance.
        //        IEffectModuleInstance effect = effectModules[instanceId];
        //        // Set effect members.
        //        // (Target nodes may or may not exist.)
        //        effect.TimeSpan = timeSpan;
        //        IEnumerable<Guid> validChannelIds = targetNodeIds.Intersect(channelNodes.Keys);
        //        effect.TargetNodes = validChannelIds.Select(x => channelNodes[x]).ToArray();
        //        // Wipe out the reference to the default data object so that the sequence
        //        // can assign its data object.
        //        effect.ModuleData = null;
        //        // Wrap the effect in an effect node.
        //        EffectNode effectNode = new EffectNode(effect, startTime);
        //        // Add it to the sequence.
        //        sequence.InsertData(effectNode);
        //    }
        //}

        private void _ReadFilterNodes(XElement element, Sequence sequence)
        {
            XmlPreFilterNodeCollectionSerializer serializer     = new XmlPreFilterNodeCollectionSerializer();
            IEnumerable <PreFilterNode>          preFilterNodes = serializer.ReadObject(element);

            //*** this needs to be done when the filter is added to the sequence
            //// Set the module's data.
            //sequence.ModuleDataSet.GetModuleInstanceData(filter);
            //// Add it to the sequence.
            //sequence.AddPreFilter(filter, timeSpan);
            sequence.ClearPreFilters();
            sequence.AddPreFilters(preFilterNodes);
        }
Пример #2
0
        //private XElement _WriteEffectNodes(Sequence sequence) {
        //    return new XElement(ELEMENT_EFFECT_NODES,
        //        sequence.Data.GetMainStreamData().Cast<EffectNode>().Select(x =>
        //            new XElement(ELEMENT_EFFECT_NODE,
        //                new XAttribute(ATTR_TYPE_ID, x.Effect.Descriptor.TypeId),
        //                new XAttribute(ATTR_INSTANCE_ID, x.Effect.InstanceId),
        //                new XElement(ELEMENT_START_TIME, x.StartTime.Ticks),
        //                new XElement(ELEMENT_TIME_SPAN, x.TimeSpan.Ticks),
        //                new XElement(ELEMENT_TARGET_NODES,
        //                    x.Effect.TargetNodes.Select(y =>
        //                        new XElement(ELEMENT_TARGET_NODE,
        //                            new XAttribute(ATTR_ID, y.Id)))))));
        //}

        private XElement _WriteFilterNodes(Sequence sequence)
        {
            XmlPreFilterNodeCollectionSerializer serializer = new XmlPreFilterNodeCollectionSerializer();

            return(serializer.WriteObject(sequence.GetPreFilters()));
        }