/* ======================================================================== * Methods to add recordings * ========================================================================*/ //Public method that allows to add a tracker recording public void AddTracker(string name, float timeTracker, string path) { if (File.Exists(path)) { BinaryFormatter bf = new BinaryFormatter(); FileStream file = File.Open(path, FileMode.Open); VRPNTracker.TrackerReports data = (VRPNTracker.TrackerReports)bf.Deserialize(file); file.Close(); VRPNTrackerRecording recording = new VRPNTrackerRecording(name, timeTracker, data); VRPNTrackerRecordings test; if (VRPNTrackerDevice.TryGetValue(data.deviceType + " " + data.deviceName, out test)) { test.recordings.Add(recording); } else { test = new VRPNTrackerRecordings(); test.recordings.Add(recording); VRPNTrackerDevice.Add(data.deviceType + " " + data.deviceName, test); } } }
//Public method that allows to stop recording //It saves the reports list in the indicated path public void StopRecording() { VRPNEventManager.StopListeningTracker(TrackerType, TrackerName, Record); BinaryFormatter bf = new BinaryFormatter(); FileStream file = File.Create(path); bf.Serialize(file, data); file.Close(); data = new VRPNTracker.TrackerReports(); firstReport = true; isRecording = false; }
//Public method that allows to start playing //It reads the data from the indicated path public void StartPlaying() { if (File.Exists(path)) { BinaryFormatter bf = new BinaryFormatter(); FileStream file = File.Open(path, FileMode.Open); data = (VRPNTracker.TrackerReports)bf.Deserialize(file); file.Close(); isPlaying = true; e = data.list.GetEnumerator(); } }
//VRPNTrackerRecording Constructor public VRPNTrackerRecording(string nName, float nTime, VRPNTracker.TrackerReports nData) { name = nName; reportTime = nTime; data = nData; e = data.list.GetEnumerator(); while (e.MoveNext()) { VRPNTracker.TrackerReportNew report = e.Current; int test; if (!sensors.TryGetValue(report.sensor, out test)) { sensors.Add(report.sensor, report.sensor); } lastTime = report.msg_time.tv_sec + (report.msg_time.tv_usec / 1000000f); } e = data.list.GetEnumerator(); }