public ServerCore(bool isVerbose, MasterSettings serverOptions, MainWindow guiParent = null) { parent = guiParent; verbose = isVerbose; serverMasterOptions = serverOptions; if (guiParent != null) { GUI = true; } }
internal static void SaveSettings(string fileName, MasterSettings settings) { XmlSerializer serializer = new XmlSerializer(typeof(MasterSettings)); using (FileStream file = new FileStream(fileName, FileMode.Create)) { serializer.Serialize(file, settings); file.Close(); file.Dispose(); } }
internal static void RunServerInConsole(bool isVerbose, bool autoStart, string startupFile) { Console.Clear(); Console.WriteLine("Welcome to the Kinect With VR (KiwiVR) Server!"); Console.WriteLine("Press the \"E\" key at any time to exit."); MasterSettings settings = new MasterSettings(); try { settings = HelperMethods.LoadSettings(startupFile); } catch { HelperMethods.WriteToLog("Cannot open settings file!"); } ServerCore server = new ServerCore(isVerbose, settings); for (int i = 0; i < server.serverMasterOptions.kinectOptions.Count; i++) //Launch the Kinects { server.kinects.Add(new KinectCore(server, null, server.serverMasterOptions.kinectOptions[i].kinectID)); } server.launchServer(); //This will still try to launch with default settings even if the settings load fails bool running = true; while (running) { Thread.Sleep(100); if (Console.KeyAvailable) { ConsoleKeyInfo key = Console.ReadKey(false); if (key.Key == ConsoleKey.E || (key.Key == ConsoleKey.C && key.Modifiers == ConsoleModifiers.Control)) { running = false; } } } Console.WriteLine("Shutting down the server. Please wait..."); server.stopServer(); NativeInterop.FreeConsole(); }
internal static MasterSettings LoadSettings(string fileName) { MasterSettings settings = null; XmlSerializer serializer = new XmlSerializer(typeof(MasterSettings)); FileInfo info = new FileInfo(fileName); if (info.Exists) { using (FileStream file = new FileStream(fileName, FileMode.Open)) { settings = (MasterSettings)serializer.Deserialize(file); file.Close(); file.Dispose(); } } else { throw new Exception("File does not exist!"); } return(settings); }
private void Window_Initialized(object sender, EventArgs e) { //Setup the timer to update the GUI with the server runtime uptimeUpdateTimer = new System.Timers.Timer(); uptimeUpdateTimer.Interval = 500; uptimeUpdateTimer.Elapsed += new System.Timers.ElapsedEventHandler(uptimeUpdateTimer_Elapsed); MasterSettings tempSettings = new MasterSettings(); //Create the server core (this does NOT start the server) server = new ServerCore(verbose, tempSettings, this); //Set all the data for the data grids VoiceButtonDataGrid.ItemsSource = server.serverMasterOptions.voiceButtonCommands; VoiceTextDataGrid.ItemsSource = server.serverMasterOptions.voiceTextCommands; KinectStatusBlock.Text = "1"; if (startupFile != null && startupFile != "") { try { server.serverMasterOptions = HelperMethods.LoadSettings(startupFile); UpdateGUISettings(); } catch { MessageBox.Show("Error: The startup settings file failed to load!", "Error", MessageBoxButton.OK, MessageBoxImage.Error); HelperMethods.WriteToLog("Startup settings (" + startupFile + ") failed to load."); } } //TODO: Handle starting Kinects based on the loaded settings file //Initialize the data for the available Kinects for (int i = 0; i < KinectSensor.KinectSensors.Count; i++) { AvailableKinectData tempData = new AvailableKinectData(); tempData.ConnectionID = KinectSensor.KinectSensors[i].DeviceConnectionId; tempData.Status = KinectSensor.KinectSensors[i].Status; if (i == 0 && tempData.Status == KinectStatus.Connected) { tempData.UseKinect = true; tempData.KinectID = 0; server.serverMasterOptions.kinectOptions.Add(new KinectSettings(tempData.ConnectionID, (int)tempData.KinectID)); server.kinects.Add(new KinectCore(server, this, (int)tempData.KinectID)); } else { tempData.UseKinect = false; tempData.KinectID = null; } tempData.PropertyChanged += useKinect_PropertyChanged; availableKinects.Add(tempData); } kinectsAvailableDataGrid.ItemsSource = availableKinects; UpdatePageListing(); GenerateImageSourcePickerLists(); KinectSensor.KinectSensors.StatusChanged += KinectSensors_StatusChanged; //Populate the skeleton data and set the binding for the data grid GenerateSkeletonDataGridData(); SkeletonSettingsDataGrid.ItemsSource = server.serverMasterOptions.skeletonOptions.individualSkeletons; //Populate and setup the voice recognition lists GenerateVoiceRecogEngineList(); GenerateAudioSourceList(); VoiceKinectComboBox.SelectedIndex = 0; //Set defaults where needed FeedbackJointTypeComboBox.SelectedIndex = 0; SkelSortModeComboBox.SelectedIndex = 5; if (startOnLaunch) { startServerButton_Click(this, new RoutedEventArgs()); } }
internal GestureCore(ref MasterSettings serverMasterSettings) { masterSettings = serverMasterSettings; }