public UI_SimulationBatch() { _settings = new Simulation.Settings(); _editSettings = new UI_SimulationSettings(_settings); _files = new List <string>(); _folders = new List <string>(); _windows = new Stack <GUI.WindowFunction>(); _windows.Push(BatchListWindow); // hide window initially hidden = true; }
/// <summary> /// Simulation settings window function called by UI_Toolbar. /// </summary> void MainWindow(int windowID) { float lw = 200f; // simulation information GUILayout.BeginHorizontal(GUILayout.Width(UI_Toolbar.I.innerWidth)); GUILayout.Label(Simulation.settings.title + "(" + Simulation.simulationNumber + "/" + Simulation.batch.Count + ") ", GUILayout.Width(lw)); GUILayout.Label("Test " + Simulation.testNumber + "/" + Simulation.settings.numberOfTests); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(GUILayout.Width(UI_Toolbar.I.innerWidth)); GUILayout.Label("Time (s): " + Simulation.time.ToString("G3") + "/" + Simulation.settings.maximumTestTime, GUILayout.Width(lw)); GUILayout.EndHorizontal(); // exhbition mode tickbox GUILayout.BeginHorizontal(GUILayout.Width(UI_Toolbar.I.innerWidth)); GUILayout.Label("Exhibition Mode: ", GUILayout.Width(lw)); Simulation.exhibitionMode = GUILayout.Toggle(Simulation.exhibitionMode, ""); GUILayout.EndHorizontal(); // timescale slider GUILayout.BeginHorizontal(GUILayout.Width(UI_Toolbar.I.innerWidth)); GUILayout.Label("Simulation Timescale: ", GUILayout.Width(lw)); Simulation.timeScale = GUILayout.HorizontalSlider( Simulation.timeScale, 0.5f, 4f); GUILayout.EndHorizontal(); // contextual control buttons if (Simulation.isRunning) { GUILayout.BeginHorizontal(); if (Simulation.paused) { if (GUILayout.Button("Play")) { Simulation.paused = false; } } else { if (GUILayout.Button("Pause")) { Simulation.paused = true; } } if (GUILayout.Button("Stop")) { Simulation.exhibitionMode = false; Simulation.End(); } GUILayout.EndHorizontal(); if (GUILayout.Button("Next Test")) { Simulation.NextTest(); } } if (Simulation.isFinished) { if (GUILayout.Button("Start Again")) { Simulation.Begin(); } if (GUILayout.Button("New Simulation...")) { Simulation.End(); } } // show/hide button for edit settings window if (_liveEditSettings) { if (GUILayout.Button("Hide Settings")) { _liveEditSettings = false; UI_Toolbar.I.additionalWindows.Remove((IWindowFunction)_editSettings); } } else { if (GUILayout.Button("Show Settings")) { _editSettings = new UI_SimulationSettings(Simulation.settings); _liveEditSettings = true; UI_Toolbar.I.additionalWindows.Add((IWindowFunction)_editSettings); } } // update controls when _editSettings is completed if (_liveEditSettings) { if (_editSettings.windowFunction == null) { _liveEditSettings = false; } } }
/// <summary> /// List Simulation.Settings in Simulation.batch and provide controls and editing the Simulation.batch /// </summary> void BatchListWindow(int windowID) { GUILayout.BeginHorizontal(GUILayout.Width(UI_Toolbar.I.innerWidth)); // add a new simulation to batch if (GUILayout.Button("Add new simulation")) { _settings = new Simulation.Settings(); _editSettings = new UI_SimulationSettings(_settings); UI_Toolbar.I.additionalWindows.Add((IWindowFunction)_editSettings); } // load a simulation from xml file if (GUILayout.Button("Add to batch from file...")) { Refresh(); _windows.Push(XmlBrowser); } GUILayout.EndHorizontal(); // Batch list GUILayout.Label("Currently in batch:"); if (Simulation.batch.Count < 1) { GUILayout.Label("None"); } for (int i = 0; i < Simulation.batch.Count; i++) { Simulation.Settings batchItem = Simulation.batch[i]; // batch list table row by row GUILayout.BeginHorizontal(GUILayout.Width(UI_Toolbar.I.innerWidth)); // display batch position if (i + 1 == Simulation.simulationNumber) { GUILayout.Label("->"); } // label string label = i + 1 + ". " + batchItem.title + ", " + batchItem.time; if (batchItem.active) { label += ", RUNNING"; } GUILayout.Label(label); // edit these settings if (GUILayout.Button("Edit")) { _settings = batchItem; _editSettings = new UI_SimulationSettings(_settings); UI_Toolbar.I.additionalWindows.Add((IWindowFunction)_editSettings); } if (GUILayout.Button("X")) { Simulation.batch.RemoveAt(i); } // indicate which have been executed already // if (batchItem.executed) GUILayout.EndHorizontal(); } GUILayout.Space(10); // start simulating if (Simulation.batch.Count > 0) { if (GUILayout.Button("Start Batch")) { BotNavSim.state = BotNavSim.State.Simulating; Simulation.Begin(); } GUILayout.Space(20); // remove all simulations from batch GUILayout.Space(20); if (GUILayout.Button("Clear Batch")) { Simulation.batch.Clear(); } } }
public UI_SimulationControl() { _editSettings = new UI_SimulationSettings(Simulation.settings); hidden = true; }