public static bool Read_Pac1(string filename, ref Direct_Sound[] Direct_Data, ref ImageSourceData[] IS_Data, ref Environment.Receiver_Bank[] Receiver) { System.IO.BinaryReader sr = new System.IO.BinaryReader(System.IO.File.Open(filename, System.IO.FileMode.Open)); try { //1. Date & Time string Savedate = sr.ReadString(); //2. Plugin Version string Pach_version = sr.ReadString(); //3. Cut off Time and SampleRate double CO_TIME = sr.ReadDouble(); int SampleRate = sr.ReadInt32(); //4. Source Count int SrcCt = 1; if (double.Parse(Pach_version.Substring(0, 3)) >= 1.1) { SrcCt = sr.ReadInt32(); } //4.1 Source Location x //4.2 Source Location y //4.3 Source Location z Hare.Geometry.Point[] SrcPt = new Hare.Geometry.Point[SrcCt]; for (int s = 0; s < SrcCt; s++) { SrcPt[s] = new Hare.Geometry.Point(sr.ReadDouble(), sr.ReadDouble(), sr.ReadDouble()); } //5. No of Receivers int Rec_Ct = sr.ReadInt32(); //6. Write the coordinates of each receiver point //6b. Write the environmental characteristics at each receiver point (Rho * C); V2.0 only... Hare.Geometry.Point[] Recs = new Hare.Geometry.Point[Rec_Ct]; double[] Rho_C = new double[Rec_Ct]; for (int q = 0; q < Rec_Ct; q++) { Recs[q] = new Hare.Geometry.Point(sr.ReadDouble(), sr.ReadDouble(), sr.ReadDouble()); if (double.Parse(Pach_version.Substring(0, 3)) >= 2.0) { Rho_C[q] = sr.ReadDouble(); } else { Rho_C[q] = 400; } } Direct_Data = new Direct_Sound[SrcCt]; IS_Data = new ImageSourceData[SrcCt]; Receiver = new Environment.Receiver_Bank[SrcCt]; int DDCT = 0; int ISCT = 0; int RTCT = 0; do { string readin = sr.ReadString(); switch (readin) { case "Direct_Sound": case "Direct_Sound w sourcedata": //9. Read Direct Sound Data Direct_Data[DDCT] = Direct_Sound.Read_Data(ref sr, Recs, SrcPt[DDCT], Rho_C, Pach_version); Direct_Data[DDCT].CO_Time = CO_TIME; Direct_Data[DDCT].SampleFreq = (int)SampleRate; DDCT++; break; case "Image-Source_Data": //10. Read Image Source Sound Data IS_Data[ISCT] = ImageSourceData.Read_Data(ref sr, Recs.Length, Direct_Data[DDCT - 1], false, ISCT, Pach_version); ISCT++; break; case "Ray-Traced_Data": //11. Read Ray Traced Sound Data Receiver[RTCT] = Environment.Receiver_Bank.Read_Data(ref sr, Direct_Data[RTCT].SWL, Rec_Ct, Recs, Rho_C, Direct_Data[RTCT].Delay_ms, ref SampleRate, Pach_version); RTCT++; break; case "End": sr.Close(); return(true); } } while (true); } catch (System.Exception X) { sr.Close(); System.Windows.Forms.MessageBox.Show("File Read Failed...", String.Format("Results file was corrupt or incomplete. We apologize for this inconvenience. Please report this to the software author. It will be much appreciated. \r\n Exception Message: {0}. \r\n Method: {1}", X.Message, X.TargetSite)); return(false); } }