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