Files
pgs/Assets/ProCamera2D/Code/Extensions/Editor/ProCamera2DLimitSpeedEditor.cs

89 lines
3.3 KiB
C#
Raw Permalink Normal View History

2026-02-21 16:58:22 -08:00
using UnityEditor;
using UnityEngine;
namespace Com.LuisPedroFonseca.ProCamera2D
{
[CustomEditor(typeof(ProCamera2DLimitSpeed))]
public class ProCamera2DLimitSpeedEditor : Editor
{
GUIContent _tooltip;
MonoScript _script;
void OnEnable()
{
if (target == null)
return;
_script = MonoScript.FromMonoBehaviour((ProCamera2DLimitSpeed)target);
}
public override void OnInspectorGUI()
{
if (target == null)
return;
var proCamera2DLimitSpeed = (ProCamera2DLimitSpeed)target;
serializedObject.Update();
// Show script link
GUI.enabled = false;
_script = EditorGUILayout.ObjectField("Script", _script, typeof(MonoScript), false) as MonoScript;
GUI.enabled = true;
// ProCamera2D
_tooltip = new GUIContent("Pro Camera 2D", "");
EditorGUILayout.PropertyField(serializedObject.FindProperty("_pc2D"), _tooltip);
if(proCamera2DLimitSpeed.ProCamera2D == null)
EditorGUILayout.HelpBox("ProCamera2D is not set.", MessageType.Error, true);
// Max speed horizontal
EditorGUILayout.BeginHorizontal();
_tooltip = new GUIContent("Limit Horizontal Speed", "Limit how fast the camera moves per second on the horizontal axis");
EditorGUILayout.PropertyField(serializedObject.FindProperty("LimitHorizontalSpeed"), _tooltip);
if (proCamera2DLimitSpeed.LimitHorizontalSpeed)
{
_tooltip = new GUIContent(" ", "Limit how fast the camera moves per second on the horizontal axis");
EditorGUILayout.PropertyField(serializedObject.FindProperty("MaxHorizontalSpeed"), _tooltip);
}
EditorGUILayout.EndHorizontal();
// Max speed vertical
EditorGUILayout.BeginHorizontal();
_tooltip = new GUIContent("Limit Vertical Speed", "Limit how fast the camera moves per second on the vertical axis");
EditorGUILayout.PropertyField(serializedObject.FindProperty("LimitVerticalSpeed"), _tooltip);
if (proCamera2DLimitSpeed.LimitVerticalSpeed)
{
_tooltip = new GUIContent(" ", "Limit how fast the camera moves per second on the vertical axis");
EditorGUILayout.PropertyField(serializedObject.FindProperty("MaxVerticalSpeed"), _tooltip);
}
EditorGUILayout.EndHorizontal();
// Limit values
if (proCamera2DLimitSpeed.MaxHorizontalSpeed <= 0f)
proCamera2DLimitSpeed.MaxHorizontalSpeed = .01f;
if (proCamera2DLimitSpeed.MaxVerticalSpeed <= 0f)
proCamera2DLimitSpeed.MaxVerticalSpeed = .01f;
// Show current speed
EditorGUILayout.Space();
GUI.enabled = false;
EditorGUILayout.BeginHorizontal();
GUILayout.Label("Current Speed");
GUILayout.Label("H: " + Mathf.Abs(proCamera2DLimitSpeed.CurrentSpeedHorizontal).ToString("F") + " V: " + Mathf.Abs(proCamera2DLimitSpeed.CurrentSpeedVertical).ToString("F"));
EditorGUILayout.EndHorizontal();
GUI.enabled = true;
serializedObject.ApplyModifiedProperties();
}
}
}