#if UNITY_EDITOR using UnityEditor; using UnityEngine; namespace FishNet.Managing.Timing.Editing { [CustomEditor(typeof(TimeManager), true)] [CanEditMultipleObjects] public class TimeManagerEditor : Editor { private SerializedProperty _updateOrder; private SerializedProperty _timingType; private SerializedProperty _tickRate; private SerializedProperty _allowTickDropping; private SerializedProperty _maximumFrameTicks; private SerializedProperty _pingInterval; private SerializedProperty _timingInterval; private SerializedProperty _physicsMode; protected virtual void OnEnable() { _updateOrder = serializedObject.FindProperty("_updateOrder"); _timingType = serializedObject.FindProperty("_timingType"); _tickRate = serializedObject.FindProperty("_tickRate"); _allowTickDropping = serializedObject.FindProperty("_allowTickDropping"); _maximumFrameTicks = serializedObject.FindProperty("_maximumFrameTicks"); _pingInterval = serializedObject.FindProperty("_pingInterval"); _timingInterval = serializedObject.FindProperty("_timingInterval"); _physicsMode = serializedObject.FindProperty("_physicsMode"); } public override void OnInspectorGUI() { serializedObject.Update(); GUI.enabled = false; EditorGUILayout.ObjectField("Script:", MonoScript.FromMonoBehaviour((TimeManager)target), typeof(TimeManager), false); GUI.enabled = true; //Timing. EditorGUILayout.LabelField("Timing", EditorStyles.boldLabel); EditorGUI.indentLevel++; EditorGUILayout.PropertyField(_updateOrder); EditorGUILayout.PropertyField(_timingType); EditorGUILayout.PropertyField(_allowTickDropping); if (_allowTickDropping.boolValue == true) { EditorGUI.indentLevel++; EditorGUILayout.PropertyField(_maximumFrameTicks); EditorGUI.indentLevel--; } EditorGUILayout.PropertyField(_tickRate); EditorGUILayout.PropertyField(_pingInterval); EditorGUILayout.PropertyField(_timingInterval); EditorGUI.indentLevel--; EditorGUILayout.Space(); //Physics. EditorGUILayout.LabelField("Physics", EditorStyles.boldLabel); EditorGUI.indentLevel++; EditorGUILayout.PropertyField(_physicsMode); if (_physicsMode.intValue != (int)FishNet.Managing.Timing.PhysicsMode.TimeManager) EditorGUILayout.HelpBox("If you are using physics interactions be sure to change the PhysicsMode to TimeManager and implement physics within the TimeManager tick events.", MessageType.None); EditorGUI.indentLevel--; ////Prediction. //EditorGUILayout.LabelField("Prediction", EditorStyles.boldLabel); //EditorGUI.indentLevel++; //EditorGUILayout.PropertyField(_maximumBufferedInputs); //EditorGUI.indentLevel--; serializedObject.ApplyModifiedProperties(); } } } #endif