Files
AppleHillsProduction/Assets/Editor/CustomEditorsAndDrawers/CameraScreenAdapterEditor.cs

85 lines
3.1 KiB
C#
Raw Normal View History

using UnityEngine;
using UnityEditor;
using AppleHillsCamera;
namespace Editor.CustomEditorsAndDrawers
{
/// <summary>
/// Custom editor for CameraScreenAdapter component.
/// Shows scaling mode info and provides helper buttons.
/// </summary>
[CustomEditor(typeof(CameraScreenAdapter))]
public class CameraScreenAdapterEditor : UnityEditor.Editor
{
private SerializedProperty _referenceMarkerProp;
private SerializedProperty _adjustOnStartProp;
private SerializedProperty _adjustOnScreenResizeProp;
private SerializedProperty _debugLoggingProp;
private void OnEnable()
{
_referenceMarkerProp = serializedObject.FindProperty("referenceMarker");
_adjustOnStartProp = serializedObject.FindProperty("adjustOnStart");
_adjustOnScreenResizeProp = serializedObject.FindProperty("adjustOnScreenResize");
_debugLoggingProp = serializedObject.FindProperty("debugLogging");
}
public override void OnInspectorGUI()
{
serializedObject.Update();
CameraScreenAdapter adapter = (CameraScreenAdapter)target;
// Reference Marker
EditorGUILayout.PropertyField(_referenceMarkerProp);
// Show current scaling mode info if reference marker is assigned
if (adapter.referenceMarker != null)
{
EditorGUILayout.Space(5);
ScreenReferenceMarker.ScalingMode mode = adapter.referenceMarker.scalingMode;
string modeStr = mode == ScreenReferenceMarker.ScalingMode.Width ? "Width" : "Height";
EditorGUILayout.HelpBox(
$"Current Scaling Mode: {modeStr}\n" +
(mode == ScreenReferenceMarker.ScalingMode.Width
? $"Target Width: {adapter.referenceMarker.targetWidth:F2} units"
: $"Target Height: {adapter.referenceMarker.targetHeight:F2} units"),
MessageType.Info
);
}
else
{
EditorGUILayout.Space(5);
EditorGUILayout.HelpBox(
"Assign a ScreenReferenceMarker to configure camera scaling.",
MessageType.Warning
);
}
EditorGUILayout.Space(10);
// Settings
EditorGUILayout.LabelField("Settings", EditorStyles.boldLabel);
EditorGUILayout.PropertyField(_adjustOnStartProp);
EditorGUILayout.PropertyField(_adjustOnScreenResizeProp);
EditorGUILayout.PropertyField(_debugLoggingProp);
EditorGUILayout.Space(10);
// Manual adjustment button
GUI.enabled = adapter.referenceMarker != null;
if (GUILayout.Button("Adjust Camera Now"))
{
adapter.AdjustCamera();
SceneView.RepaintAll(); // Refresh scene view to show changes
}
GUI.enabled = true;
serializedObject.ApplyModifiedProperties();
}
}
}