private void SwitchMode(BuildMode mode) { _currentMode = mode; BuildScriptPrefs.SetCurrentMode(_currentMode); base.Repaint(); GUIUtility.ExitGUI(); }
private void OnServerGUI() { EditorGUI.BeginChangeCheck(); _socketPort = EditorGUILayout.IntField(new GUIContent("Socket Port", "The socket port used to host this server through."), _socketPort); if (EditorGUI.EndChangeCheck()) { BuildScriptPrefs.SetSocketPort(_socketPort); } EditorGUILayout.Separator(); var ip = IPUtils.GetLocalIPv4(NetworkInterfaceType.Ethernet); if (!string.IsNullOrEmpty(ip)) { EditorGUILayout.DelayedTextField(new GUIContent("Ethernet IP v4 Address:", "Automatically identified local IP V4 address for Ethernet (Read Only)."), ip); } ip = IPUtils.GetLocalIPv4(NetworkInterfaceType.Wireless80211); if (!string.IsNullOrEmpty(ip)) { EditorGUILayout.DelayedTextField(new GUIContent("Wireless IP v4 Address:", "Automatically identified local IP V4 address for Wireless (Read Only)."), ip); } EditorGUILayout.Separator(); EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("Build for Server")) { if (!Directory.Exists(_buildFolder)) { SetBuildFolder(); } if (_buildAndRun) { BuildScripts.BuildAndRunServer64(_serverOnlyScene, _buildFolder, _devBuild, _buildTarget, _socketPort); } else { BuildScripts.BuildServer64(_serverOnlyScene, _buildFolder, _devBuild, _buildTarget, _socketPort); } GUIUtility.ExitGUI(); } if (GUILayout.Button("Run as Server")) { BuildScripts.PlayAsServer(_serverOnlyScene, _socketPort); GUIUtility.ExitGUI(); } EditorGUILayout.EndHorizontal(); }
private string SetBuildFolder() { var fullPath = EditorUtility.OpenFolderPanel("Build Folder", Application.dataPath.Replace("Assets", string.Empty), "bin"); if (!string.IsNullOrEmpty(fullPath)) { _buildFolder = fullPath; BuildScriptPrefs.SetBuildFolder(_buildFolder); base.Repaint(); } return(fullPath); }
public void LoadPrefs() { if (string.IsNullOrEmpty(_serverOnlyScene)) { _serverOnlyScene = BuildScriptPrefs.GetServerOnlyScene(); } if (string.IsNullOrEmpty(_clientOnlyScene)) { _clientOnlyScene = BuildScriptPrefs.GetClientOnlyScene(); } if (string.IsNullOrEmpty(_singleOnlyScene)) { _singleOnlyScene = BuildScriptPrefs.GetSingleOnlyScene(); } if (string.IsNullOrEmpty(_buildFolder)) { _buildFolder = BuildScriptPrefs.GetBuildFolder(); } if (string.IsNullOrEmpty(_serverIp)) { _serverIp = BuildScriptPrefs.GetServerIP(); } if (_serverPort == -1) { _serverPort = BuildScriptPrefs.GetServerPort(); } if (_socketPort == -1) { _socketPort = BuildScriptPrefs.GetSocketPort(); } _currentMode = BuildScriptPrefs.GetCurrentMode(); _buildAndRun = BuildScriptPrefs.GetBuildAndRun(); _useLocal = BuildScriptPrefs.GetUseLocal(); _useHetzner = BuildScriptPrefs.GetUseHetzner(); _devBuild = BuildScriptPrefs.GetDevelopmentBuild(); _buildTarget = BuildScriptPrefs.GetBuildTarget(); _autoConnectOnEnable = BuildScriptPrefs.GetAutoConnectOnEnable(); }
private void RenderBuildFolder() { EditorGUILayout.LabelField(new GUIContent("Build Folder", "The folder to place builds in."), EditorStyles.centeredGreyMiniLabel); EditorGUILayout.BeginHorizontal(); EditorGUI.BeginChangeCheck(); _buildFolder = EditorGUILayout.TextField(new GUIContent("Build Folder:", "The folder to place builds in."), _buildFolder); if (EditorGUI.EndChangeCheck()) { BuildScriptPrefs.SetBuildFolder(_buildFolder); } if (GUILayout.Button(new GUIContent("Browse", "Browse for folders in the project."), EditorStyles.miniButtonRight, GUILayout.Width(EditorGUIUtility.fieldWidth))) { SetBuildFolder(); GUIUtility.ExitGUI(); } EditorGUILayout.EndHorizontal(); }
private void OnClientGUI() { EditorGUI.BeginChangeCheck(); _autoConnectOnEnable = EditorGUILayout.Toggle(new GUIContent("Auto Connect On Enable?", "Whether the ClientNetSender automatically connects on enable to the set IP and port."), _autoConnectOnEnable); if (EditorGUI.EndChangeCheck()) { BuildScriptPrefs.SetAutoConnectOnEnable(_autoConnectOnEnable); } if (_autoConnectOnEnable) { EditorGUI.BeginChangeCheck(); _useLocal = EditorGUILayout.Toggle(new GUIContent("Connect to Localhost?", "Whether the client should connect to a localhost (127.0.0.1), or another custom IP address."), _useLocal); if (EditorGUI.EndChangeCheck()) { if (_useHetzner && _useLocal) { _useHetzner = false; BuildScriptPrefs.SetUseHetzner(_useHetzner); } BuildScriptPrefs.SetUseLocal(_useLocal); } EditorGUI.BeginChangeCheck(); _useHetzner = EditorGUILayout.Toggle(new GUIContent("Connect to Hetzner Server?", "Whether the client should connect to the hetzner remote server (88.198.75.133), or another custom IP address."), _useHetzner); if (EditorGUI.EndChangeCheck()) { if (_useLocal && _useHetzner) { _useLocal = false; BuildScriptPrefs.SetUseLocal(_useLocal); } BuildScriptPrefs.SetUseHetzner(_useHetzner); } EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField(new GUIContent("Server Address:", "The IP + port address of the server, which the client should connect to."), GUILayout.Width(EditorGUIUtility.labelWidth)); if (!_useLocal && !_useHetzner) { EditorGUI.BeginChangeCheck(); _serverIp = EditorGUILayout.TextField(_serverIp); if (EditorGUI.EndChangeCheck()) { BuildScriptPrefs.SetServerIP(_serverIp); } } else if (_useLocal) { EditorGUILayout.SelectableLabel(BuildConstants.localhost); } else if (_useHetzner) { EditorGUILayout.SelectableLabel(BuildConstants.hetznerIp); } EditorGUI.BeginChangeCheck(); _serverPort = EditorGUILayout.IntField(_serverPort); if (EditorGUI.EndChangeCheck()) { BuildScriptPrefs.SetServerPort(_serverPort); } EditorGUILayout.EndHorizontal(); } else { EditorGUI.BeginChangeCheck(); _serverPort = EditorGUILayout.IntField(new GUIContent("Server Port: ", "The server port to connect to. Should be the same port as on the server ;)"), _serverPort); if (EditorGUI.EndChangeCheck()) { BuildScriptPrefs.SetServerPort(_serverPort); } } EditorGUILayout.Separator(); EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("Build for Client")) { if (!Directory.Exists(_buildFolder)) { SetBuildFolder(); } if (_useLocal) { if (_buildAndRun) { BuildScripts.BuildAndRunClientLocal(_clientOnlyScene, _buildFolder, _devBuild, _buildTarget, _serverPort, _autoConnectOnEnable); } else { BuildScripts.BuildClientLocal(_clientOnlyScene, _buildFolder, _devBuild, _buildTarget, _serverPort, _autoConnectOnEnable); } } else if (_useHetzner) { if (_buildAndRun) { BuildScripts.BuildAndRunForHetzner(_clientOnlyScene, _buildFolder, _devBuild, _buildTarget, _serverPort, _autoConnectOnEnable); } else { BuildScripts.BuildClientForHetzner(_clientOnlyScene, _buildFolder, _devBuild, _buildTarget, _serverPort, _autoConnectOnEnable); } } else { if (_buildAndRun) { BuildScripts.BuildAndRunClientForIP(_serverIp, _serverPort, _clientOnlyScene, _buildFolder, _devBuild, _buildTarget, _autoConnectOnEnable); } else { BuildScripts.BuildClientForIP(_serverIp, _serverPort, _clientOnlyScene, _buildFolder, _devBuild, _buildTarget, _autoConnectOnEnable); } } GUIUtility.ExitGUI(); } if (GUILayout.Button("Run as Client")) { if (_useLocal) { BuildScripts.PlayAsClientLocal(_serverPort, _clientOnlyScene, _autoConnectOnEnable); } else if (_useHetzner) { BuildScripts.PlayAsHetzner(_serverPort, _clientOnlyScene, _autoConnectOnEnable); } else { BuildScripts.PlayAsClientForIP(_serverIp, _serverPort, _clientOnlyScene, _autoConnectOnEnable); } GUIUtility.ExitGUI(); } EditorGUILayout.EndHorizontal(); }
private void RenderBuildAndRunning() { EditorGUILayout.LabelField(new GUIContent("Building & Running (" + _currentMode.ToString() + ")", "Building and optionally auto-running builds."), EditorStyles.centeredGreyMiniLabel); EditorGUI.BeginChangeCheck(); _buildTarget = (BuildTarget)EditorGUILayout.EnumPopup(new GUIContent("Build Target", "Which platform to build for."), _buildTarget); if (EditorGUI.EndChangeCheck()) { BuildScriptPrefs.SetBuildTarget(_buildTarget); } EditorGUI.BeginChangeCheck(); _devBuild = EditorGUILayout.Toggle(new GUIContent("Development Build", "Toggle to build as development build."), _devBuild); if (EditorGUI.EndChangeCheck()) { BuildScriptPrefs.SetDevelopmentBuild(_devBuild); } EditorGUI.BeginChangeCheck(); _buildAndRun = EditorGUILayout.Toggle(new GUIContent("Build and Run?", "Whether to auto-run the game after building, if successful."), _buildAndRun); if (EditorGUI.EndChangeCheck()) { BuildScriptPrefs.SetBuildAndRun(_buildAndRun); } // Actual mode pages switch (_currentMode) { case BuildMode.Singleplayer: { OnSingleplayerGUI(); break; } case BuildMode.Client: { OnClientGUI(); break; } case BuildMode.Server: { OnServerGUI(); break; } } // vr mode using (var vrrow = new EditorGUILayout.HorizontalScope()) { GUI.enabled = !Application.isPlaying; var vrSupport = EditorGUILayout.Toggle("VR Mode", PlayerSettings.virtualRealitySupported); if (!Application.isPlaying) { PlayerSettings.virtualRealitySupported = vrSupport; } GUI.enabled = true; // buttons for VR platform definition - easier to access than player settings var supDevices = UnityEngine.XR.XRSettings.supportedDevices; var goodColor = Color.green; var badColor = Color.red; GUI.color = supDevices.Contains("OpenVR") ? goodColor : badColor; if (GUILayout.Button("OpenVR")) { if (supDevices.Contains("OpenVR")) { // do nothing... } else { // add a new array containing only OpenVR var buildTargetGroup = BuildPipeline.GetBuildTargetGroup(this._buildTarget); UnityEditorInternal.VR.VREditor.SetVREnabledDevicesOnTargetGroup(buildTargetGroup, new string[] { "OpenVR" }); } } GUI.color = supDevices.Contains("Oculus") ? goodColor : badColor; if (GUILayout.Button("Oculus")) { if (supDevices.Contains("Oculus")) { // do nothing... } else { // add a new array containing only Oculus var buildTargetGroup = BuildPipeline.GetBuildTargetGroup(this._buildTarget); UnityEditorInternal.VR.VREditor.SetVREnabledDevicesOnTargetGroup(buildTargetGroup, new string[] { "Oculus" }); } } GUI.color = Color.white; } }
private void RenderAdditivelyLoadedScene() { EditorGUILayout.LabelField(new GUIContent("Additively Loaded Scene Path", "In order to facilitate different modes of play (Multiplayer Client & Server + Singleplayer), a scene is additively loaded to the 'base' scene with the specifics for that mode of play. The path for that scene is found underneath."), EditorStyles.centeredGreyMiniLabel); if (_currentMode == BuildMode.Singleplayer) { EditorGUILayout.BeginHorizontal(); EditorGUI.BeginChangeCheck(); _singleOnlyScene = EditorGUILayout.TextField(new GUIContent("Singleplayer Only Scene:", "The path for the additively loaded scene used for the Singleplayer mode of play."), _singleOnlyScene, EditorStyles.textField); if (EditorGUI.EndChangeCheck()) { BuildScriptPrefs.SetSingleOnlyScene(_singleOnlyScene); } if (GUILayout.Button(new GUIContent("Browse", "Browse for scenes in the Unity project."), EditorStyles.miniButtonRight, GUILayout.Width(EditorGUIUtility.fieldWidth))) { var sceneBrowse = BrowseScene(); if (!string.IsNullOrEmpty(sceneBrowse)) { _singleOnlyScene = sceneBrowse; BuildScriptPrefs.SetSingleOnlyScene(_singleOnlyScene); } GUIUtility.ExitGUI(); } EditorGUILayout.EndHorizontal(); DrawLoadUnloadScene(_singleOnlyScene); } else if (_currentMode == BuildMode.Client) { EditorGUILayout.BeginHorizontal(); EditorGUI.BeginChangeCheck(); _clientOnlyScene = EditorGUILayout.TextField(new GUIContent("Client Only Scene:", "The path for the additively loaded scene used for the Client mode of play."), _clientOnlyScene, EditorStyles.textField); if (EditorGUI.EndChangeCheck()) { BuildScriptPrefs.SetClientOnlyScene(_clientOnlyScene); } if (GUILayout.Button(new GUIContent("Browse", "Browse for scenes in the Unity project."), EditorStyles.miniButtonRight, GUILayout.Width(EditorGUIUtility.fieldWidth))) { var sceneBrowse = BrowseScene(); if (!string.IsNullOrEmpty(sceneBrowse)) { _clientOnlyScene = sceneBrowse; BuildScriptPrefs.SetClientOnlyScene(_clientOnlyScene); } GUIUtility.ExitGUI(); } EditorGUILayout.EndHorizontal(); DrawLoadUnloadScene(_clientOnlyScene); } else if (_currentMode == BuildMode.Server) { EditorGUILayout.BeginHorizontal(); EditorGUI.BeginChangeCheck(); _serverOnlyScene = EditorGUILayout.TextField(new GUIContent("Server Only Scene:", "The path for the additively loaded scene used for the Server mode of play."), _serverOnlyScene, EditorStyles.textField); if (EditorGUI.EndChangeCheck()) { BuildScriptPrefs.SetServerOnlyScene(_serverOnlyScene); } if (GUILayout.Button(new GUIContent("Browse", "Browse for scenes in the Unity project."), EditorStyles.miniButtonRight, GUILayout.Width(EditorGUIUtility.fieldWidth))) { var sceneBrowse = BrowseScene(); if (!string.IsNullOrEmpty(sceneBrowse)) { _serverOnlyScene = sceneBrowse; BuildScriptPrefs.SetServerOnlyScene(_serverOnlyScene); } GUIUtility.ExitGUI(); } EditorGUILayout.EndHorizontal(); DrawLoadUnloadScene(_serverOnlyScene); } }
public static string GetServerDirectoryPath(BuildTarget target = BuildTarget.StandaloneLinux64) { return(Path.Combine(Path.Combine(BuildScriptPrefs.GetBuildFolder(), BuildScripts.serverBuildName), target.ToString())); }