| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using UnityEditor;
- using UnityEngine;
- namespace TheraBytes.BetterUi.Editor
- {
- [CustomEditor(typeof(OverrideScreenProperties)), CanEditMultipleObjects]
- public class OverrideScreenPropertiesEditor : UnityEditor.Editor
- {
- SerializedProperty settingsFallback, settingsList;
- void OnEnable()
- {
- OverrideScreenProperties osp = target as OverrideScreenProperties;
- this.settingsFallback = serializedObject.FindProperty("settingsFallback");
- this.settingsList = serializedObject.FindProperty("customSettings");
- if (osp.FallbackSettings.PropertyIterator().All(o => (int)o.Mode == 0 && o.Value == 0))
- {
- InitElement(osp.FallbackSettings.ScreenConfigName, settingsFallback);
- }
- }
- public override void OnInspectorGUI()
- {
- ScreenConfigConnectionHelper.DrawGui("Settings", settingsList, ref settingsFallback, DrawSettings, InitElement);
- }
- private void InitElement(string configName, SerializedProperty settings)
- {
- SerializedProperty width = settings.FindPropertyRelative("OptimizedWidthOverride");
- SerializedProperty height = settings.FindPropertyRelative("OptimizedHeightOverride");
- SerializedProperty dpi = settings.FindPropertyRelative("OptimizedDpiOverride");
- var info = ResolutionMonitor.GetOpimizedScreenInfo(configName);
- SetValue(width, OverrideScreenProperties.OverrideMode.Override, info.Resolution.x);
- SetValue(height, OverrideScreenProperties.OverrideMode.Override, info.Resolution.y);
- SetValue(dpi, OverrideScreenProperties.OverrideMode.Inherit, info.Dpi);
- serializedObject.ApplyModifiedProperties();
- }
- private void DrawSettings(string configName, SerializedProperty settings)
- {
- SerializedProperty width = settings.FindPropertyRelative("OptimizedWidthOverride");
- SerializedProperty height = settings.FindPropertyRelative("OptimizedHeightOverride");
- SerializedProperty dpi = settings.FindPropertyRelative("OptimizedDpiOverride");
- EditorGUILayout.BeginVertical("box");
- DrawProperty("Width", width);
- DrawProperty("Height", height);
- DrawProperty("DPI", dpi);
- EditorGUILayout.EndVertical();
- }
- private void DrawProperty(string label, SerializedProperty property)
- {
- SerializedProperty value = property.FindPropertyRelative("value");
- SerializedProperty mode = property.FindPropertyRelative("mode");
- EditorGUILayout.BeginHorizontal();
- float labelWidth = EditorGUIUtility.labelWidth;
- EditorGUILayout.PropertyField(mode, new GUIContent(label));
- if(mode.intValue == (int)OverrideScreenProperties.OverrideMode.Override)
- {
- EditorGUIUtility.labelWidth = 1;
- EditorGUILayout.PropertyField(value, new GUIContent());
- EditorGUIUtility.labelWidth = labelWidth;
- }
- EditorGUILayout.EndHorizontal();
- }
- public void SetValue(SerializedProperty property, OverrideScreenProperties.OverrideMode mode, float value)
- {
- SerializedProperty modeProp = property.FindPropertyRelative("mode");
- SerializedProperty valueProp = property.FindPropertyRelative("value");
- modeProp.intValue = (int)mode;
- valueProp.floatValue = value;
- }
- }
- }
|