BetterAspectRatioFitterEditor.cs 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using UnityEditor;
  6. using UnityEngine.UI;
  7. namespace TheraBytes.BetterUi.Editor
  8. {
  9. [CustomEditor(typeof(BetterAspectRatioFitter)), CanEditMultipleObjects]
  10. public class BetterAspectRatioFitterEditor : UnityEditor.Editor
  11. {
  12. SerializedProperty settingsFallback, settingsList;
  13. void OnEnable()
  14. {
  15. this.settingsFallback = serializedObject.FindProperty("settingsFallback");
  16. this.settingsList = serializedObject.FindProperty("customSettings");
  17. }
  18. public override void OnInspectorGUI()
  19. {
  20. ScreenConfigConnectionHelper.DrawGui("Settings", settingsList, ref settingsFallback, DrawSettings);
  21. }
  22. private void DrawSettings(string configName, SerializedProperty settings)
  23. {
  24. SerializedProperty mode = settings.FindPropertyRelative("AspectMode");
  25. SerializedProperty ratio = settings.FindPropertyRelative("AspectRatio");
  26. EditorGUILayout.BeginVertical("box");
  27. EditorGUILayout.PropertyField(mode);
  28. EditorGUILayout.PropertyField(ratio);
  29. EditorGUILayout.EndVertical();
  30. }
  31. [MenuItem("CONTEXT/AspectRatioFitter/♠ Make Better")]
  32. public static void MakeBetter(MenuCommand command)
  33. {
  34. AspectRatioFitter fitter = command.context as AspectRatioFitter;
  35. var mode = fitter.aspectMode;
  36. float ratio = fitter.aspectRatio;
  37. var newFitter = Betterizer.MakeBetter<AspectRatioFitter, BetterAspectRatioFitter>(fitter) as BetterAspectRatioFitter;
  38. if(newFitter != null)
  39. {
  40. newFitter.CurrentSettings.AspectMode = mode;
  41. newFitter.CurrentSettings.AspectRatio = ratio;
  42. }
  43. }
  44. }
  45. }