public CombinerComponents ReadCombinerV( int vertexIndex, Dictionary<int, List<InputSourceCollection>> inputSources, XmlNode node ) { CombinerComponents cc = new CombinerComponents( vertexIndex, inputSources ); string[] indices = node.InnerText.Split( (char[]) null, StringSplitOptions.RemoveEmptyEntries ); int inputCount = inputSources.Count; // technically, i want the maximum key int influenceCount = indices.Length / inputCount; for( int influence = 0; influence < influenceCount; ++influence ) { CombinerEntry entry = new CombinerEntry(); cc.Add( entry ); // Build the entry to be the right size while( entry.Count < inputSources.Count ) entry.Add( -1 ); foreach( int inputIndex in inputSources.Keys ) entry[ inputIndex ] = int.Parse( indices[ influence * inputCount + inputIndex ] ); } return cc; }
public List<CombinerComponents> ReadV( Dictionary<int, List<InputSourceCollection>> inputSources, List<int> vertexCounts, XmlNode node ) { List<CombinerComponents> combComps = new List<CombinerComponents>(); string[] indices = node.InnerText.Split( (char[]) null, StringSplitOptions.RemoveEmptyEntries ); int offset = 0; for( int vertexIndex = 0; vertexIndex < vertexCounts.Count; ++vertexIndex ) { CombinerComponents cc = new CombinerComponents( vertexIndex, inputSources ); combComps.Add( cc ); for( int influence = 0; influence < vertexCounts[ vertexIndex ]; ++influence ) { CombinerEntry entry = new CombinerEntry(); cc.Add( entry ); // Build the entry to be the right size while( entry.Count < inputSources.Count ) entry.Add( -1 ); foreach( int inputIndex in inputSources.Keys ) entry[ inputIndex ] = int.Parse( indices[ offset + influence * inputSources.Count + inputIndex ] ); } offset += vertexCounts[ vertexIndex ] * inputSources.Count; } return combComps; }