public TrackReader(string path, string?mimeType = null) { this.Path = path; this.MimeType = mimeType ?? TrackUtil.GetMimeTypeFromPath(path) ?? throw new NotSupportedException(); this._stream = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read, BufferSize, StreamOptions); this.Track = new Track(this._stream, this.MimeType); }
public static void Open(ActionAsset action) { var window = GetWindow <ActionEditorWinow>(); if (window.asset != action || window.view == null) { action.OnAfterDeserialize(); TrackUtil.UpdateAllTrack(action); window.asset = action; window.view = CreateInstance <FrameLineView>(); window.view.hideFlags = HideFlags.HideAndDontSave;//防止重启虚拟机的时候丢失 window.view.Window = window; window.view.Asset = action; } }
void BtnExport_Click(object sender, System.EventArgs e) { if (MessageDialog.Show(string.Format(Properties.Resources.UI_Activity_EditTrail_Export, CommonResources.Text.ActionOk, CommonResources.Text.ActionCancel), "", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK) { DateTime startTime = DateTime.UtcNow; IActivity activity; bool hasGps = this.m_trailResult != null && this.m_trailResult.GPSRoute != null; if (hasGps) { activity = this.m_trailResult.CopyToActivity(); activity.Laps.Clear(); } else { activity = Plugin.GetApplication().Logbook.Activities.Add(startTime); activity.GPSRoute = new TrackUtil.GPSRoute(); TrackUtil.setCapacity(activity.GPSRoute, ((IList <EditTrailRow>) this.EList.RowData).Count); } activity.Name = TrailName.Text; activity.Notes += "Radius: " + UnitUtil.Elevation.ToString(m_TrailToEdit.Radius, "u"); const int lapLength = 60; //A constant time between points IList <EditTrailRow> list = (IList <EditTrailRow>) this.EList.RowData; for (int i = 0; i < list.Count - 1; i++) { if (hasGps) { activity.Laps.Add(m_trailResult.TrailPointDateTime[i], TimeSpan.FromSeconds(m_trailResult.TrailPointTime0(m_trailResult)[i + 1] - this.m_trailResult.TrailPointTime0(m_trailResult)[i])); } else { activity.GPSRoute.Add(startTime.AddSeconds(i * lapLength), new GPSPoint(list[i].TrailGPS.LatitudeDegrees, list[i].TrailGPS.LongitudeDegrees, 0)); activity.Laps.Add(startTime.AddSeconds(i * lapLength), TimeSpan.FromSeconds(lapLength)); } activity.Laps[i].Rest = !list[i].TrailGPS.Required; activity.Laps[i].Notes = list[i].TrailGPS.Name; } if (!hasGps) { int i = list.Count - 1; activity.GPSRoute.Add(startTime.AddSeconds(i * lapLength), new GPSPoint(list[i].TrailGPS.LatitudeDegrees, list[i].TrailGPS.LongitudeDegrees, 0)); } } }