Mirror/Unity-Technologies-networking/Editor/NetworkDiscoveryEditor.cs
2018-06-24 10:53:38 -05:00

125 lines
5.8 KiB
C#

#if ENABLE_UNET
using System;
using UnityEngine;
using UnityEngine.Networking;
namespace UnityEditor
{
[CustomEditor(typeof(NetworkDiscovery), true)]
[CanEditMultipleObjects]
public class NetworkDiscoveryEditor : Editor
{
bool m_Initialized;
NetworkDiscovery m_Discovery;
SerializedProperty m_BroadcastPortProperty;
SerializedProperty m_BroadcastKeyProperty;
SerializedProperty m_BroadcastVersionProperty;
SerializedProperty m_BroadcastSubVersionProperty;
SerializedProperty m_BroadcastIntervalProperty;
SerializedProperty m_UseNetworkManagerProperty;
SerializedProperty m_BroadcastDataProperty;
SerializedProperty m_ShowGUIProperty;
SerializedProperty m_OffsetXProperty;
SerializedProperty m_OffsetYProperty;
GUIContent m_BroadcastPortLabel;
GUIContent m_BroadcastKeyLabel;
GUIContent m_BroadcastVersionLabel;
GUIContent m_BroadcastSubVersionLabel;
GUIContent m_BroadcastIntervalLabel;
GUIContent m_UseNetworkManagerLabel;
GUIContent m_BroadcastDataLabel;
GUIContent m_ShowGUILabel;
GUIContent m_OffsetXLabel;
GUIContent m_OffsetYLabel;
void Init()
{
if (!m_Initialized || m_BroadcastPortProperty == null)
{
m_Initialized = true;
m_Discovery = target as NetworkDiscovery;
m_BroadcastPortProperty = serializedObject.FindProperty("m_BroadcastPort");
m_BroadcastKeyProperty = serializedObject.FindProperty("m_BroadcastKey");
m_BroadcastVersionProperty = serializedObject.FindProperty("m_BroadcastVersion");
m_BroadcastSubVersionProperty = serializedObject.FindProperty("m_BroadcastSubVersion");
m_BroadcastIntervalProperty = serializedObject.FindProperty("m_BroadcastInterval");
m_UseNetworkManagerProperty = serializedObject.FindProperty("m_UseNetworkManager");
m_BroadcastDataProperty = serializedObject.FindProperty("m_BroadcastData");
m_ShowGUIProperty = serializedObject.FindProperty("m_ShowGUI");
m_OffsetXProperty = serializedObject.FindProperty("m_OffsetX");
m_OffsetYProperty = serializedObject.FindProperty("m_OffsetY");
m_BroadcastPortLabel = new GUIContent("Broadcast Port", "The network port to broadcast to, and listen on.");
m_BroadcastKeyLabel = new GUIContent("Broadcast Key", "The key to broadcast. This key typically identifies the application.");
m_BroadcastVersionLabel = new GUIContent("Broadcast Version", "The version of the application to broadcast. This is used to match versions of the same application.");
m_BroadcastSubVersionLabel = new GUIContent("Broadcast SubVersion", "The sub-version of the application to broadcast.");
m_BroadcastIntervalLabel = new GUIContent("Broadcast Interval", "How often in milliseconds to broadcast when running as a server.");
m_UseNetworkManagerLabel = new GUIContent("Use NetworkManager", "Broadcast information from the NetworkManager, and auto-join matching games using the NetworkManager.");
m_BroadcastDataLabel = new GUIContent("Broadcast Data", "The data to broadcast when not using the NetworkManager");
m_ShowGUILabel = new GUIContent("Show GUI", "Enable to draw the default broadcast control UI.");
m_OffsetXLabel = new GUIContent("Offset X", "The horizonal offset of the GUI.");
m_OffsetYLabel = new GUIContent("Offset Y", "The vertical offset of the GUI.");
}
}
public override void OnInspectorGUI()
{
Init();
serializedObject.Update();
DrawControls();
serializedObject.ApplyModifiedProperties();
}
void DrawControls()
{
if (m_Discovery == null)
return;
EditorGUI.BeginChangeCheck();
EditorGUILayout.PropertyField(m_BroadcastPortProperty, m_BroadcastPortLabel);
EditorGUILayout.PropertyField(m_BroadcastKeyProperty, m_BroadcastKeyLabel);
EditorGUILayout.PropertyField(m_BroadcastVersionProperty, m_BroadcastVersionLabel);
EditorGUILayout.PropertyField(m_BroadcastSubVersionProperty, m_BroadcastSubVersionLabel);
EditorGUILayout.PropertyField(m_BroadcastIntervalProperty, m_BroadcastIntervalLabel);
EditorGUILayout.PropertyField(m_UseNetworkManagerProperty, m_UseNetworkManagerLabel);
if (m_Discovery.useNetworkManager)
{
EditorGUILayout.LabelField(m_BroadcastDataLabel, new GUIContent(m_BroadcastDataProperty.stringValue));
}
else
{
EditorGUILayout.PropertyField(m_BroadcastDataProperty, m_BroadcastDataLabel);
}
EditorGUILayout.Separator();
EditorGUILayout.PropertyField(m_ShowGUIProperty, m_ShowGUILabel);
if (m_Discovery.showGUI)
{
EditorGUILayout.PropertyField(m_OffsetXProperty, m_OffsetXLabel);
EditorGUILayout.PropertyField(m_OffsetYProperty, m_OffsetYLabel);
}
if (EditorGUI.EndChangeCheck())
{
serializedObject.ApplyModifiedProperties();
}
if (Application.isPlaying)
{
EditorGUILayout.Separator();
EditorGUILayout.LabelField("hostId", m_Discovery.hostId.ToString());
EditorGUILayout.LabelField("running", m_Discovery.running.ToString());
EditorGUILayout.LabelField("isServer", m_Discovery.isServer.ToString());
EditorGUILayout.LabelField("isClient", m_Discovery.isClient.ToString());
}
}
}
}
#endif