protected override void OnHeaderGUI() { Rect position = GUILayoutUtility.GetRect(0, 46); if (Event.current.type == EventType.Repaint) { GUI.skin.box.Draw(position, GUIContent.none, false, false, false, false); GUI.DrawTexture(new Rect(7, 7, 32, 32), RotorzEditorStyles.Skin.Icon_PresetTileSystem); string headerText = targets.Length == 1 ? string.Format( /* 0: name of tile system preset */ TileLang.Text("{0} (Tile System Preset)"), target.name ) : string.Format( /* 0: quantity of selected tile system presets */ TileLang.Text("{0} Tile System Presets"), targets.Length ); EditorStyles.largeLabel.Draw(new Rect(48, 7, position.width - 48, position.height), headerText, false, false, false, false); } Rect menuPosition = new Rect(position.width - 25, 7, 22, 16); if (GUI.Button(menuPosition, RotorzEditorStyles.Skin.SmallGearButton, GUIStyle.none)) { this.ShowContextMenu(menuPosition); GUIUtility.ExitGUI(); } EditorGUI.BeginDisabledGroup(targets.Length != 1); { using (var content = ControlContent.Basic( TileLang.ParticularText("Action", "Create Tile System") )) { Vector2 createButtonSize = EditorStyles.miniButton.CalcSize(content); Rect createButtonPosition = new Rect(position.width - createButtonSize.x - 5, 24, createButtonSize.x, createButtonSize.y); if (GUI.Button(createButtonPosition, content, EditorStyles.miniButton)) { var tileSystemGO = TileSystemPresetUtility.CreateTileSystemFromPreset((TileSystemPreset)target); Selection.activeObject = tileSystemGO; Undo.RegisterCreatedObjectUndo(tileSystemGO, content.LabelContent.text); } } } EditorGUI.EndDisabledGroup(); GUILayout.Space(5); }
private void OnButton_Create() { this.currentPreset.SystemName = this.currentPreset.SystemName.Trim(); // Validate inputs first. if (string.IsNullOrEmpty(this.currentPreset.SystemName)) { EditorUtility.DisplayDialog( TileLang.ParticularText("Error", "Name was not specified"), TileLang.Text("Please specify name for tile system."), TileLang.ParticularText("Action", "Close") ); GUIUtility.ExitGUI(); } // Do not allow user to create useless system. if (this.currentPreset.Rows < 1 || this.currentPreset.Columns < 1) { EditorUtility.DisplayDialog( TileLang.Text("Error"), TileLang.Text("A tile system must contain at least 1 cell."), TileLang.ParticularText("Action", "Close") ); GUIUtility.ExitGUI(); return; } // Create tile system using preset and select it ready for immediate usage. var tileSystemGO = TileSystemPresetUtility.CreateTileSystemFromPreset(this.currentPreset); Selection.activeObject = tileSystemGO; // Register undo event. Undo.IncrementCurrentGroup(); Undo.RegisterCreatedObjectUndo(tileSystemGO, TileLang.ParticularText("Action", "Create Tile System")); if (this.TileSystemCreated != null) { this.TileSystemCreated(tileSystemGO.GetComponent <TileSystem>()); } this.Close(); }