public void StartSaveCall( ) // this call does the work, passed in when thread is created, executes on thread.start { ThreadRunning = true; ThreadComplete = false; try { // create a playback file InteractPlaybackList list = new InteractPlaybackList(); list.Save(record); // now save this file list.SaveXML(filePath); } catch { error = "error"; } ThreadRunning = false; ThreadComplete = true; }
void OnGUI() { if ( ShowGUI == false ) return; GUILayout.BeginArea(new Rect(0,40,600,300)); if ( state != State.Playing ) { GUILayout.Box ("INTERACT PLAYBACK"); if ( GUILayout.Button ("Save") ) { // create a logrecord LogRecord record = new LogRecord(); record.Add(LogMgr.GetInstance().GetCurrent()); record.SetDateTime(); // create a playback file InteractPlaybackList list = new InteractPlaybackList(); list.Save(record); // now save this file list.SaveXML(null); } if ( GUILayout.Button ("Load") ) { debug = true; if ( state != State.Playing ) { // now create a playback list InteractPlaybackList list = new InteractPlaybackList(); list.LoadXML(null); // save start RestartWithList(list); //StartList(list); } else { UnityEngine.Debug.LogError("InteractPlaybackMgr.Update() : can't start new playback while one is in progress!!"); } } } else if ( state == State.Playing ) { GUILayout.Box ("INTERACT PLAYBACK : " + InteractPlaybackFileMgr.GetInstance().Filename); if ( GUILayout.Button ("Stop") ) { state = State.Complete; Time.timeScale = 1.0f; } GUILayout.BeginHorizontal(); if ( GUILayout.Button ("1x")) Time.timeScale = 1.0f; if ( GUILayout.Button ("2x")) Time.timeScale = 2.0f; if ( GUILayout.Button ("5x")) Time.timeScale = 5.0f; GUILayout.EndHorizontal(); } if ( state != State.Playing || currentIdx == -1 || debug == false ) { if ( restartTime != 0.0f && RestartOnDoneOrError == true) GUILayout.Button("Playback Complete, Restarting in " + ((int)(restartTime-elapsedTime)).ToString () + " seconds..."); GUILayout.EndArea(); return; } GUILayout.Space(10); if ( (currentIdx-1) >= 0 ) GUILayout.Label(" PB.curr=" + List.Items[currentIdx-1].Debug ());//InteractName + "," + List.Items[currentIdx].Character); GUILayout.Label(" PB.wait=" + List.Items[currentIdx].Debug ());//InteractName + "," + List.Items[currentIdx].Character); if ( (currentIdx+1) < List.Items.Count ) GUILayout.Label(" PB.next=" + List.Items[currentIdx+1].Debug ()); //InteractName + "," + List.Items[currentIdx+1].Character); GUILayout.EndArea(); }
// create a playback list from a log file public void Load(LogRecord log) { List = new InteractPlaybackList(); List.Save(log); currentIdx = 0; elapsedTime = StartTime; // init state state = State.Init; }