85 lines
3.1 KiB
C#
85 lines
3.1 KiB
C#
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();
|
|
}
|
|
}
|
|
}
|
|
|