/// <summary> /// Indicates that a plugin should not be loaded by the DarkRift server. /// </summary> /// <param name="type">The type of plugin to exclude.</param> /// <returns>The configuration builder to continue construction.</returns> public DarkRiftServerConfigurationBuilder ExceptPlugin(string type) { ServerSpawnData.PluginsSettings.PluginSettings pluginSettings = new ServerSpawnData.PluginsSettings.PluginSettings { Type = type, Load = false }; ServerSpawnData.Plugins.Plugins.Add(pluginSettings); return(this); }
/// <summary> /// Configures a plugin on the DarkRift server. /// </summary> /// <param name="type">The type of plugin.</param> /// <param name="settings">The settings to pass to the plugin.</param> /// <returns>The configuration builder to continue construction.</returns> public DarkRiftServerConfigurationBuilder AddPlugin(string type, NameValueCollection settings) { ServerSpawnData.PluginsSettings.PluginSettings pluginSettings = new ServerSpawnData.PluginsSettings.PluginSettings { Type = type, Load = true }; foreach (string key in settings.AllKeys) { pluginSettings.Settings[key] = settings[key]; } ServerSpawnData.Plugins.Plugins.Add(pluginSettings); return(this); }
public override void OnInspectorGUI() { serializedObject.Update(); EditorGUILayout.PropertyField(createOnEnable); //Alert to changes when this is unticked! bool old = eventsFromDispatcher.boolValue; EditorGUILayout.PropertyField(eventsFromDispatcher); if (eventsFromDispatcher.boolValue != old && !eventsFromDispatcher.boolValue) { eventsFromDispatcher.boolValue = !EditorUtility.DisplayDialog( "Danger!", "Unchecking " + eventsFromDispatcher.displayName + " will cause DarkRift to fire events from the .NET thread pool, unless you are confident using multithreading with Unity you should not disable this. Are you 100% sure you want to proceed?", "Yes", "No (Save me!)" ); } if (showServer = EditorGUILayout.Foldout(showServer, "Server Setttings")) { EditorGUI.indentLevel++; //Display IP address address = EditorGUILayout.TextField(new GUIContent("Address", "The address the client will connect to."), address); try { server.Address = IPAddress.Parse(address); } catch (FormatException) { EditorGUILayout.HelpBox("Invalid IP address.", MessageType.Error); } EditorGUILayout.PropertyField(port); //Draw IP versions manually else it gets formatted as "Ip Version" and "I Pv4" -_- ipVersion.enumValueIndex = EditorGUILayout.Popup(new GUIContent("IP Version", "The IP protocol version the server will listen on."), ipVersion.enumValueIndex, Array.ConvertAll(ipVersion.enumNames, i => new GUIContent(i))); EditorGUILayout.PropertyField(maxStrikes); EditorGUI.indentLevel--; } if (showData = EditorGUILayout.Foldout(showData, "Data Setttings")) { EditorGUI.indentLevel++; EditorGUILayout.PropertyField(dataDirectory); EditorGUI.indentLevel--; } if (showLogging = EditorGUILayout.Foldout(showLogging, "Logging Setttings")) { EditorGUI.indentLevel++; EditorGUILayout.PropertyField(logToFile); EditorGUI.indentLevel++; if (logToFile.boolValue) { EditorGUILayout.PropertyField(logFileString); } EditorGUI.indentLevel--; EditorGUILayout.PropertyField(logToUnityConsole); EditorGUILayout.PropertyField(logToDebug); EditorGUI.indentLevel--; } //Draw plugins list if (showPlugins = EditorGUILayout.Foldout(showPlugins, "Plugin Setttings")) { EditorGUI.indentLevel++; EditorGUILayout.PropertyField(loadByDefault); IEnumerable <Type> types = UnityServerHelper.SearchForPlugins(); foreach (Type type in types) { ServerSpawnData.PluginsSettings.PluginSettings plugin = server.Plugins.SingleOrDefault(p => p.Type == type.Name); if (plugin == null) { plugin = new ServerSpawnData.PluginsSettings.PluginSettings { Type = type.Name, Load = true }; server.Plugins.Add(plugin); } EditorGUILayout.HelpBox("The following are plugins in your project, tick those to be loaded.", MessageType.Info); plugin.Load = EditorGUILayout.Toggle(type.Name, plugin.Load); EditorGUILayout.Space(); } EditorGUI.indentLevel--; } //Draw databases manually if (showDatabases = EditorGUILayout.Foldout(showDatabases, "Databases")) { EditorGUI.indentLevel++; for (int i = 0; i < server.Databases.Count; i++) { ServerSpawnData.DatabaseSettings.DatabaseConnectionData database = server.Databases[i]; database.Name = EditorGUILayout.TextField("Name", database.Name); database.ConnectionString = EditorGUILayout.TextField("Connection String", database.ConnectionString); Rect removeRect = EditorGUI.IndentedRect(EditorGUILayout.GetControlRect()); //So indent level affects the button if (GUI.Button(removeRect, "Remove")) { server.Databases.Remove(database); i--; } EditorGUILayout.Space(); } Rect addRect = EditorGUI.IndentedRect(EditorGUILayout.GetControlRect(true)); if (GUI.Button(addRect, "Add Database")) { server.Databases.Add(new ServerSpawnData.DatabaseSettings.DatabaseConnectionData("NewDatabase", "Server=myServerAddress;Database=myDataBase;Uid=myUsername;Pwd=myPassword;")); } EditorGUI.indentLevel--; } if (showCache = EditorGUILayout.Foldout(showCache, "Cache")) { EditorGUILayout.PropertyField(maxCachedWriters); EditorGUILayout.PropertyField(maxCachedReaders); EditorGUILayout.PropertyField(maxCachedMessages); EditorGUILayout.PropertyField(maxCachedSocketAsyncEventArgs); EditorGUILayout.PropertyField(maxCachedActionDispatcherTasks); } serializedObject.ApplyModifiedProperties(); }