//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); }
//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())); }