Add horizontal camera scaling for devices
This commit is contained in:
@@ -0,0 +1,84 @@
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user