public PassWave( int sampleLength, int sampleRate, WaveShapes.WaveGenerator wave, WaveKeyframe[] keyframes ) { m_sampleLength = sampleLength; m_sampleRate = sampleRate; m_waveGenerator = wave; m_keyframes = keyframes; }
public void SetTarget( WaveKeyframe target ) { m_target = target; }
private static PassWave ParseWave( XmlNode node, int sampleRate, int sampleLength, Dictionary< string, ObservableProperty< float > > paramList ) { XmlNodeList keyframeNodes = node.SelectNodes( "Key" ); WaveKeyframe[] keyframes = new WaveKeyframe[ keyframeNodes.Count + 1 ]; keyframes[ 0 ] = ParseWaveKeyframe( node ); for ( int i = 0; i < keyframeNodes.Count; i++ ) { keyframes[ i + 1 ] = ParseWaveKeyframe( keyframeNodes[ i ] ); } // Parse bindings XmlNodeList bindingNodes = node.SelectNodes( "Bind" ); foreach( XmlNode bindingNode in bindingNodes ) { int targetKey; string sourceKey; if ( !TryParseString( bindingNode, "source", out sourceKey ) ) { continue; } if ( !paramList.ContainsKey( sourceKey ) ) { continue; } if ( !TryParseInt( bindingNode, "target", out targetKey ) ) { continue; } // Parse binding WaveKeyframeDataBinding binding = ParseWaveKeyframeDataBinding( bindingNode ); if ( binding == null ) { continue; } binding.SetSource( paramList[ sourceKey ] ); binding.SetTarget( keyframes[ targetKey ] ); keyframes[ targetKey ].AddDataBinding( binding ); } return new PassWave( sampleLength, sampleRate, ParseWaveShape( node ), keyframes ); }