void SurrogateRead(StreamingContext context) { SelectedTimingProvider = _selectedTimingProviderSurrogate.CreateSelectedTimingProvider(); Media = new MediaCollection(_mediaSurrogates.Select(x => x.CreateMedia())); // Rehydrate the local module data store. LocalDataSet = new ModuleLocalDataSet(); LocalDataSet.DataModels = _dataModels; // Rehydrate the modules. IEffectNode[] effectNodes = _effectNodeSurrogates.Select(x => x.CreateEffectNode()).ToArray(); ISequenceFilterNode[] sequenceFilterNodes = _filterNodeSurrogates.Select(x => x.CreateFilterNode()).ToArray(); // Connect them to their respective data from the data store. // This was previously being done by adding the data to the sequence after loading the data. foreach (var effectNode in effectNodes) { LocalDataSet.AssignModuleInstanceData(effectNode.Effect); } foreach (var sequenceFilterNode in sequenceFilterNodes) { LocalDataSet.AssignModuleInstanceData(sequenceFilterNode.Filter); } // Get the modules back into their collections. _InitDataStreams(); EffectData.AddData(effectNodes); SequenceFilterData.AddData(sequenceFilterNodes); }
private void SurrogateRead(StreamingContext context) { SelectedTimingProvider = _selectedTimingProviderSurrogate.CreateSelectedTimingProvider(); Media = new MediaCollection(_mediaSurrogates.Select(x => x.CreateMedia())); // Rehydrate the local module data store. LocalDataSet = new ModuleLocalDataSet(); LocalDataSet.DataModels = _dataModels; // Rehydrate the modules. var elementNodes = VixenSystem.Nodes.Distinct().ToDictionary(x => x.Id); IEffectNode[] effectNodes = _effectNodeSurrogates.Select(x => x.CreateEffectNode(elementNodes)).ToArray(); // weed out effects without nodes.. effectNodes = effectNodes.Where(x => x.Effect.TargetNodes.Count() != 0).ToArray(); ISequenceFilterNode[] sequenceFilterNodes = _filterNodeSurrogates.Select(x => x.CreateFilterNode()).ToArray(); // Connect them to their respective data from the data store. // This was previously being done by adding the data to the sequence after loading the data. foreach (var effectNode in effectNodes) { LocalDataSet.AssignModuleInstanceData(effectNode.Effect); } foreach (var sequenceFilterNode in sequenceFilterNodes) { LocalDataSet.AssignModuleInstanceData(sequenceFilterNode.Filter); } // Get the modules back into their collections. _InitDataStreams(); EffectData.AddData(effectNodes); SequenceFilterData.AddData(sequenceFilterNodes); }
public SequenceTypeDataModelBase() { Media = new MediaCollection(); LocalDataSet = new ModuleLocalDataSet(); SequenceLayers = new SequenceLayers(); _InitDataStreams(); }
protected Sequence() { FilePath = ""; InsertDataListener = new InsertDataListenerStack(); InsertDataListener += _DataListener; Data = new DataStreams(); _sequenceFilterStreamId = Data.CreateStream("SequenceFilter"); TimingProvider = new TimingProviders(this); RuntimeBehaviors = Modules.ModuleManagement.GetAllRuntimeBehavior(); ModuleDataSet = new ModuleLocalDataSet(); _media = new MediaCollection(); }
private IModuleDataSet _GetTransformModuleData(XElement element) { IModuleDataSet moduleDataSet = new ModuleLocalDataSet(); if (!element.IsEmpty) { string moduleDataString = element.InnerXml(); moduleDataSet.Deserialize(moduleDataString); } return(moduleDataSet); }
private IModuleDataSet _GetModuleData(XElement element) { IModuleDataSet moduleDataSet = new ModuleLocalDataSet(); element = element.Element(ELEMENT_MODULE_DATA); if (!element.IsEmpty) { string moduleDataString = element.InnerXml(); moduleDataSet.Deserialize(moduleDataString); } return(moduleDataSet); }
/// <summary> /// Creates a default data object for the module without adding it to any dataset. /// </summary> /// <param name="instance"></param> /// <returns></returns> static private IModuleDataModel _GetModuleData(IModuleInstance instance) { // Remember, the data is orphaned initially! IModuleDataModel dataModel = null; if (instance.Descriptor.ModuleDataClass != null) { dataModel = ModuleLocalDataSet.CreateModuleDataInstance(instance); if (dataModel == null) { VixenSystem.Logging.Error("Module \"" + instance.Descriptor.TypeName + "\" in " + instance.Descriptor.FileName + " has a reference to type " + instance.Descriptor.ModuleDataClass.Name + " for its module data class, but it's not an implementation of " + typeof(IModuleDataModel).Name + "."); } } return(dataModel); }
/// <summary> /// Creates a default data object for the module without adding it to any dataset. /// </summary> /// <param name="instance"></param> /// <returns></returns> private static IModuleDataModel _GetModuleData(IModuleInstance instance) { // Remember, the data is orphaned initially! IModuleDataModel dataModel = null; if (instance.Descriptor.ModuleDataClass != null) { dataModel = ModuleLocalDataSet.CreateModuleDataInstance(instance); if (dataModel == null) { Logging.Error(string.Format("Module \"{0}\" in {1} has a reference to type {2} for its module data class, but it's not an implementation of {3}.", instance.Descriptor.TypeName, instance.Descriptor.FileName, instance.Descriptor.ModuleDataClass.Name, typeof(IModuleDataModel).Name)); } } return(dataModel); }
private void SurrogateWrite(StreamingContext context) { // while saving module instance data, load the instance IDs of the modules in the sequence into a set. Then, when saving the // data set for all the modules, we can check if the module data is actually *being used* by anything; if not, we can remove it. HashSet <Guid> activeInstances = new HashSet <Guid>(); _selectedTimingProviderSurrogate = new SelectedTimingProviderSurrogate(SelectedTimingProvider); if (Media != null) { _mediaSurrogates = Media.Select(x => new MediaSurrogate(x)).ToArray(); Media.ForEach(x => activeInstances.Add(x.InstanceId)); } if (EffectData != null) { _effectNodeSurrogates = EffectData.Select(x => new EffectNodeSurrogate((IEffectNode)x)).ToArray(); foreach (IDataNode dataNode in EffectData) { activeInstances.Add(((IEffectNode)dataNode).Effect.InstanceId); } } if (SequenceLayers != null) { _layerMixingFilterSurrogates = SequenceLayers.Layers.Where(x => x.LayerMixingFilter != null).Select(x => new LayerMixingFilterSurrogate(x)).ToArray(); ModuleLocalDataSet data = new ModuleLocalDataSet(); foreach (var layer in SequenceLayers.Layers) { if (layer != null) { data.AssignModuleInstanceData(layer.LayerMixingFilter); } } _layerMixingFilterDataModels = data.DataModels.ToArray(); } if (LocalDataSet != null) { _dataModels = LocalDataSet.DataModels.Where(x => activeInstances.Contains(x.ModuleInstanceId)).ToArray(); } if (SequenceFilterData != null) { _filterNodeSurrogates = SequenceFilterData.Select(x => new FilterNodeSurrogate((ISequenceFilterNode)x)).ToArray(); } }
private ISequenceTypeDataModel _CreateSequenceDataInstance(string fileType) { ISequenceTypeModuleInstance sequenceFactory = SequenceTypeService.Instance.CreateSequenceFactory(fileType); if (sequenceFactory != null) { IModuleDataModel sequenceTypeData = ModuleLocalDataSet.CreateModuleDataInstance(sequenceFactory); if (sequenceTypeData != null && !(sequenceTypeData is ISequenceTypeDataModel)) { VixenSystem.Logging.Warning("Could not create appropriate sequence data for new sequence due to the object type. File type: " + fileType); } else { if (sequenceTypeData != null) { sequenceTypeData.ModuleTypeId = sequenceFactory.TypeId; sequenceTypeData.ModuleInstanceId = sequenceFactory.InstanceId; } return((ISequenceTypeDataModel)sequenceTypeData); } } return(null); }
public SequenceTypeDataModelBase() { Media = new MediaCollection(); LocalDataSet = new ModuleLocalDataSet(); _InitDataStreams(); }
public ModuleStore() { TypeData = new ModuleStaticDataSet(); InstanceData = new ModuleLocalDataSet(); }