void BackgroundWorkerDoWork(object sender, DoWorkEventArgs e) { var args = e.Argument as TraceArgs; var coeff = new List <Dictionary <int, double> >(); WWCrossFeedFir crossfeed = args.CrossfeedFir; crossfeed.WallReflectionType = WWCrossFeedFir.ReflectionType.Diffuse; crossfeed.Start(mRoom); crossfeed.TraceAll(mRoom); coeff.AddRange(crossfeed.OutputFirCoeffs(args.SampleRate)); crossfeed.Clear(); crossfeed.WallReflectionType = WWCrossFeedFir.ReflectionType.Specular; crossfeed.Start(mRoom); crossfeed.TraceAll(mRoom); coeff.AddRange(crossfeed.OutputFirCoeffs(args.SampleRate)); crossfeed.Clear(); WWCrossFeedFir.OutputFile(args.SampleRate, coeff.ToArray(), args.FileName); }
private void mButtonRayTest_Click(object sender, RoutedEventArgs e) { if (!UpdateParameters()) { return; } var reflectionType = (WWCrossFeedFir.ReflectionType)mComboBoxReflectionType.SelectedIndex; int rayCount; Int32.TryParse(mTextBoxRayCount.Text, out rayCount); mCrossFeed = CreateCrossFeedFirFromUseInput(); mCrossFeed.WallReflectionType = reflectionType; mCrossFeed.Start(mRoom); for (int i = 0; i < rayCount; ++i) { mCrossFeed.Trace(mRoom, reflectionType, 0); mCrossFeed.Trace(mRoom, reflectionType, 1); } UpdateRoomCanvas(); }