public void RecordEntry(long curtime, Vector3 pos, Vector3 d, float z, long etime, long timetofly, long timetopan, long timetozoom, string msg, long mtime) { FlightEntry fe = new FlightEntry(); fe.pos = pos; fe.dir = d; fe.zoom = z; fe.offsettime = etime; // at this time , fly to pos turn to dir in time specified fe.timetofly = timetofly; fe.timetopan = timetopan; fe.timetozoom = timetozoom; fe.message = msg; fe.messagetime = mtime; entries.Add(fe); lasttime = curtime; // keep these up to date in case we are doing a normal record, or swap back to it lastdir = d; lastpos = pos; lastzoom = z; }
public void Record(Vector3 pos, Vector3 d, float z) { if (playbackpos < 0 && record && !recordstep && !pause) { if (pos != lastpos || d != lastdir || z != lastzoom) { FlightEntry fe = new FlightEntry(); long curtime = timer.ElapsedMilliseconds; RecordEntry(curtime, (pos != lastpos) ? pos : FlightEntry.NullVector, (d != lastdir) ? d : FlightEntry.NullVector, (z != lastzoom) ? z : FlightEntry.NullZoom, curtime - lasttime, 0, 0, 0, "", 0); //Console.WriteLine("At {0} store {1} {2} {3}", entries[entries.Count - 1].offsettime, lastpos, lastdir, lastzoom); } } }
public bool PlayBack(out FlightEntry fe, bool inslews) { fe = null; if (!pause && playbackpos >= 0) { if (playbackpos == entries.Count) { StopPlayBack(); } else { long offsettime = entries[playbackpos].offsettime; long ms = timer.ElapsedMilliseconds; long targettime = offsettime + lasttime; if (offsettime == FlightEntry.WaitForComplete) // <0 means wait for slews { if (!inslews) { lasttime = ms; fe = entries[playbackpos++]; return(true); } } else if (ms >= targettime) { lasttime = targettime; fe = entries[playbackpos++]; return(true); } } } return(false); }
public bool ReadFromFile(string filename) { StopRecord(); StopPlayBack(); List <FlightEntry> newentries = new List <FlightEntry>(); try { using (StreamReader sr = new StreamReader(filename)) { using (JsonTextReader jr = new JsonTextReader(sr)) { bool first = true; while (jr.Read()) { if (jr.TokenType == JsonToken.StartObject) { JObject jo = JObject.Load(jr); if (first) { string vnum = (string)jo["FlightType"]; string datetime = (string)jo["Date"]; first = false; } else { FlightEntry fe = new FlightEntry(); fe.offsettime = (long)jo["T"]; JArray ja = (JArray)jo["Pos"]; if (ja != null) { fe.pos = new Vector3((float)ja[0], (float)ja[1], (float)ja[2]); fe.timetofly = ReadLong(jo, "FlyTime", 0); } else { fe.pos = FlightEntry.NullVector; } JArray jb = (JArray)jo["Dir"]; if (jb != null) { fe.dir = new Vector3((float)jb[0], (float)jb[1], (float)jb[2]); fe.timetopan = ReadLong(jo, "PanTime", 0); } else { fe.dir = FlightEntry.NullVector; } JToken jtmt = jo["Z"]; if (jtmt != null) { fe.zoom = (float)jo["Z"]; fe.timetozoom = ReadLong(jo, "ZTime", 0); } else { fe.zoom = FlightEntry.NullZoom; } fe.message = (string)jo["Msg"]; fe.messagetime = ReadLong(jo, "MsgTime", 0); newentries.Add(fe); } } } } } entries = newentries; return(true); } catch { } return(false); }
public bool ReadFromFile(string filename) { StopRecord(); StopPlayBack(); List <FlightEntry> newentries = new List <FlightEntry>(); try { string json = File.ReadAllText(filename); JArray outer = JArray.Parse(json); if (outer != null) { JObject ftype = outer[0].Object(); if (ftype != null) { for (int i = 1; i < outer.Count; i++) { JObject entry = outer[i].Object(); if (entry == null) { continue; } FlightEntry fe = new FlightEntry(); fe.offsettime = entry["T"].Long(); JArray ja = entry["Pos"].Array(); if (ja != null) { fe.pos = new Vector3((float)ja[0], (float)ja[1], (float)ja[2]); fe.timetofly = entry["FlyTime"].Long(); } else { fe.pos = FlightEntry.NullVector; } JArray jb = entry["Dir"].Array(); if (jb != null) { fe.dir = new Vector3((float)jb[0], (float)jb[1], (float)jb[2]); fe.timetopan = entry["PanTime"].Long(); } else { fe.dir = FlightEntry.NullVector; } JToken jtmt = entry["Z"]; if (jtmt != null) { fe.zoom = entry["Z"].Float(); fe.timetozoom = entry["ZTime"].Long(); } else { fe.zoom = FlightEntry.NullZoom; } fe.message = entry["Msg"].Str(); fe.messagetime = entry["MsgTime"].Long(); newentries.Add(fe); } } } entries = newentries; return(true); } catch { } return(false); }
public void RecordEntry(long curtime, Vector3 pos, Vector3 d, float z, long etime, long timetofly, long timetopan, long timetozoom, string msg , long mtime) { FlightEntry fe = new FlightEntry(); fe.pos = pos; fe.dir = d; fe.zoom = z; fe.offsettime = etime; // at this time , fly to pos turn to dir in time specified fe.timetofly = timetofly; fe.timetopan = timetopan; fe.timetozoom = timetozoom; fe.message = msg; fe.messagetime = mtime; entries.Add(fe); lasttime = curtime; // keep these up to date in case we are doing a normal record, or swap back to it lastdir = d; lastpos = pos; lastzoom = z; }
public void Record(Vector3 pos, Vector3 d, float z) { if (playbackpos<0 && record && !recordstep && !pause) { if (pos != lastpos || d != lastdir || z != lastzoom) { FlightEntry fe = new FlightEntry(); long curtime = timer.ElapsedMilliseconds; RecordEntry(curtime,(pos != lastpos) ? pos : FlightEntry.NullVector, (d != lastdir) ? d : FlightEntry.NullVector, (z != lastzoom) ? z : FlightEntry.NullZoom , curtime - lasttime, 0, 0, 0, "",0); //Console.WriteLine("At {0} store {1} {2} {3}", entries[entries.Count - 1].offsettime, lastpos, lastdir, lastzoom); } } }
public bool ReadFromFile(string filename) { StopRecord(); StopPlayBack(); List<FlightEntry> newentries = new List<FlightEntry>(); try { using (StreamReader sr = new StreamReader(filename)) { using (JsonTextReader jr = new JsonTextReader(sr)) { bool first = true; while (jr.Read()) { if (jr.TokenType == JsonToken.StartObject) { JObject jo = JObject.Load(jr); if (first) { string vnum = (string)jo["FlightType"]; string datetime = (string)jo["Date"]; first = false; } else { FlightEntry fe = new FlightEntry(); fe.offsettime = (long)jo["T"]; JArray ja = (JArray)jo["Pos"]; if (ja != null) { fe.pos = new Vector3((float)ja[0], (float)ja[1], (float)ja[2]); fe.timetofly = ReadLong(jo, "FlyTime", 0); } else fe.pos = FlightEntry.NullVector; JArray jb = (JArray)jo["Dir"]; if (jb != null) { fe.dir = new Vector3((float)jb[0], (float)jb[1], (float)jb[2]); fe.timetopan = ReadLong(jo, "PanTime", 0); } else fe.dir = FlightEntry.NullVector; JToken jtmt = jo["Z"]; if (jtmt != null) { fe.zoom = (float)jo["Z"]; fe.timetozoom = ReadLong(jo, "ZTime", 0); } else fe.zoom = FlightEntry.NullZoom; fe.message = (string)jo["Msg"]; fe.messagetime = ReadLong(jo, "MsgTime", 0); newentries.Add(fe); } } } } } entries = newentries; return true; } catch { } return false; }
public bool PlayBack(out FlightEntry fe , bool inslews ) { fe = null; if (!pause && playbackpos >= 0) { if (playbackpos == entries.Count) StopPlayBack(); else { long offsettime = entries[playbackpos].offsettime; long ms = timer.ElapsedMilliseconds; long targettime = offsettime + lasttime; if (offsettime == FlightEntry.WaitForComplete) // <0 means wait for slews { if ( !inslews ) { lasttime = ms; fe = entries[playbackpos++]; return true; } } else if ( ms >= targettime ) { lasttime = targettime; fe = entries[playbackpos++]; return true; } } } return false; }