forked from cgvr/DeltaVR
		
	
		
			
				
	
	
		
			118 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			118 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
using System.Collections.Generic;
 | 
						|
using System.Net;
 | 
						|
using UnityEngine;
 | 
						|
 | 
						|
namespace FishNet.Discovery
 | 
						|
{
 | 
						|
	public sealed class NetworkDiscoveryHUD : MonoBehaviour
 | 
						|
	{
 | 
						|
		[SerializeField]
 | 
						|
		private NetworkDiscovery networkDiscovery;
 | 
						|
 | 
						|
		private Camera _camera;
 | 
						|
 | 
						|
		private readonly List<IPEndPoint> _endPoints = new List<IPEndPoint>();
 | 
						|
 | 
						|
		private Vector2 _serversListScrollVector;
 | 
						|
 | 
						|
		private bool _useVR;
 | 
						|
 | 
						|
		private void Start()
 | 
						|
		{
 | 
						|
			if (networkDiscovery == null) networkDiscovery = FindObjectOfType<NetworkDiscovery>();
 | 
						|
 | 
						|
			_camera = GetComponentInChildren<Camera>();
 | 
						|
			
 | 
						|
			_useVR = PlayerPrefs.GetInt("UseVR", 0) == 1;
 | 
						|
			
 | 
						|
			networkDiscovery.ServerFoundCallback += (endPoint) =>
 | 
						|
			{
 | 
						|
				if (!_endPoints.Contains(endPoint)) _endPoints.Add(endPoint);
 | 
						|
			};
 | 
						|
		}
 | 
						|
 | 
						|
		private void OnGUI()
 | 
						|
		{
 | 
						|
			GUILayoutOption buttonHeight = GUILayout.Height(30.0f);
 | 
						|
 | 
						|
			using (new GUILayout.AreaScope(new Rect(Screen.width - 240.0f - 10.0f, 10.0f, 240.0f, Screen.height - 20.0f)))
 | 
						|
			{
 | 
						|
				GUILayout.Box("Settings");
 | 
						|
				
 | 
						|
				using (new GUILayout.HorizontalScope())
 | 
						|
				{
 | 
						|
					bool useVRNew = GUILayout.Toggle(_useVR, "Use VR");
 | 
						|
					
 | 
						|
					if (useVRNew != _useVR)
 | 
						|
					{
 | 
						|
						_useVR = useVRNew;
 | 
						|
						PlayerPrefs.SetInt("UseVR", _useVR ? 1 : 0);
 | 
						|
						Debug.Log($"UseVR set to {_useVR}");
 | 
						|
					}
 | 
						|
				}
 | 
						|
				
 | 
						|
				GUILayout.Box("Server");
 | 
						|
 | 
						|
				using (new GUILayout.HorizontalScope())
 | 
						|
				{
 | 
						|
					if (GUILayout.Button("Start", buttonHeight)) InstanceFinder.ServerManager.StartConnection();
 | 
						|
 | 
						|
					if (GUILayout.Button("Stop", buttonHeight)) InstanceFinder.ServerManager.StopConnection(true);
 | 
						|
				}
 | 
						|
 | 
						|
				GUILayout.Box("Advertising");
 | 
						|
 | 
						|
				using (new GUILayout.HorizontalScope())
 | 
						|
				{
 | 
						|
					if (networkDiscovery.IsAdvertising)
 | 
						|
					{
 | 
						|
						if (GUILayout.Button("Stop", buttonHeight)) networkDiscovery.StopAdvertisingServer();
 | 
						|
					}
 | 
						|
					else
 | 
						|
					{
 | 
						|
						if (GUILayout.Button("Start", buttonHeight)) networkDiscovery.StartAdvertisingServer();
 | 
						|
					}
 | 
						|
				}
 | 
						|
 | 
						|
				GUILayout.Box("Searching");
 | 
						|
 | 
						|
				using (new GUILayout.HorizontalScope())
 | 
						|
				{
 | 
						|
					if (networkDiscovery.IsSearching)
 | 
						|
					{
 | 
						|
						if (GUILayout.Button("Stop", buttonHeight)) networkDiscovery.StopSearchingForServers();
 | 
						|
					}
 | 
						|
					else
 | 
						|
					{
 | 
						|
						if (GUILayout.Button("Start", buttonHeight)) networkDiscovery.StartSearchingForServers();
 | 
						|
					}
 | 
						|
				}
 | 
						|
 | 
						|
				if (_endPoints.Count > 0)
 | 
						|
				{
 | 
						|
					GUILayout.Box("Servers");
 | 
						|
 | 
						|
					using (new GUILayout.ScrollViewScope(_serversListScrollVector))
 | 
						|
					{
 | 
						|
						for (int i = 0; i < _endPoints.Count; i++)
 | 
						|
						{
 | 
						|
							string ipAddress = _endPoints[i].Address.ToString();
 | 
						|
 | 
						|
							if (GUILayout.Button(ipAddress))
 | 
						|
							{
 | 
						|
								//networkDiscovery.StopAdvertisingServer();
 | 
						|
 | 
						|
								networkDiscovery.StopSearchingForServers();
 | 
						|
								
 | 
						|
								_camera.enabled = false;
 | 
						|
 | 
						|
								InstanceFinder.ClientManager.StartConnection(ipAddress);
 | 
						|
							}
 | 
						|
						}
 | 
						|
					}
 | 
						|
				}
 | 
						|
			}
 | 
						|
		}
 | 
						|
	}
 | 
						|
}
 |