No Description
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

GridSelectionEditor.cs 3.1KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. using System;
  2. using UnityEngine;
  3. namespace UnityEditor.Tilemaps
  4. {
  5. [CustomEditor(typeof(GridSelection))]
  6. internal class GridSelectionEditor : Editor
  7. {
  8. private const float iconSize = 32f;
  9. static class Styles
  10. {
  11. public static readonly GUIContent gridSelectionLabel = EditorGUIUtility.TrTextContent("Grid Selection");
  12. public static readonly string iconPath = "Packages/com.unity.2d.tilemap/Editor/Icons/GridSelection.png";
  13. }
  14. private void OnValidate()
  15. {
  16. var position = GridSelection.position;
  17. GridSelection.position = new BoundsInt(position.min, position.max - position.min);
  18. }
  19. private void OnEnable()
  20. {
  21. // Give focus to Inspector window for keyboard actions
  22. EditorApplication.delayCall += () => EditorWindow.FocusWindowIfItsOpen<InspectorWindow>();
  23. }
  24. public override void OnInspectorGUI()
  25. {
  26. EditorGUI.BeginChangeCheck();
  27. if (GridPaintingState.activeBrushEditor && GridSelection.active)
  28. {
  29. GridPaintingState.activeBrushEditor.OnSelectionInspectorGUI();
  30. }
  31. if (EditorGUI.EndChangeCheck())
  32. {
  33. if (GridPaintingState.IsPartOfActivePalette(GridSelection.target))
  34. {
  35. GridPaintingState.UnlockGridPaintPaletteClipboardForEditing();
  36. GridPaintingState.RepaintGridPaintPaletteWindow();
  37. }
  38. else
  39. {
  40. GridSelection.SaveStandalone();
  41. }
  42. }
  43. }
  44. protected override void OnHeaderGUI()
  45. {
  46. EditorGUILayout.BeginHorizontal(EditorStyles.inspectorBig);
  47. Texture2D icon = EditorGUIUtility.LoadIcon(Styles.iconPath);
  48. GUILayout.Label(icon, GUILayout.Width(iconSize), GUILayout.Height(iconSize));
  49. EditorGUILayout.BeginVertical();
  50. GUILayout.Label(Styles.gridSelectionLabel);
  51. EditorGUI.BeginChangeCheck();
  52. GridSelection.position = EditorGUILayout.BoundsIntField(GUIContent.none, GridSelection.position);
  53. if (EditorGUI.EndChangeCheck())
  54. {
  55. OnValidate();
  56. }
  57. EditorGUILayout.EndVertical();
  58. EditorGUILayout.EndHorizontal();
  59. DrawHeaderHelpAndSettingsGUI(GUILayoutUtility.GetLastRect());
  60. }
  61. public bool HasFrameBounds()
  62. {
  63. return GridSelection.active;
  64. }
  65. public Bounds OnGetFrameBounds()
  66. {
  67. Bounds bounds = new Bounds();
  68. if (GridSelection.active)
  69. {
  70. Vector3Int gridMin = GridSelection.position.min;
  71. Vector3Int gridMax = GridSelection.position.max;
  72. Vector3 min = GridSelection.grid.CellToWorld(gridMin);
  73. Vector3 max = GridSelection.grid.CellToWorld(gridMax);
  74. bounds = new Bounds((max + min) * .5f, max - min);
  75. }
  76. return bounds;
  77. }
  78. }
  79. }