2023-05-08 15:56:10 +03:00

79 lines
3.2 KiB
C#

#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