using UnityEngine; using UnityEditor; using AppleHillsCamera; namespace Editor.CustomEditorsAndDrawers { /// /// Custom editor for CameraScreenAdapter component. /// Shows scaling mode info and provides helper buttons. /// [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(); } } }