public override void OnInspectorGUI() { serializedObject.Update(); HedgehogEditorGUIUtility.DrawProperties(serializedObject, "PaletteMaterial", "IgnoreTransparent"); Instance.SetColorFrom = EditorGUILayout.Toggle("Set Color From", Instance.SetColorFrom); if (Instance.SetColorFrom) { HedgehogEditorGUIUtility.DrawProperties(serializedObject, "ColorFromIndex"); } ShowPalettes = EditorGUILayout.Foldout(ShowPalettes, "Palettes"); if (ShowPalettes) { Palettes.DoLayoutList(); if (!Application.isPlaying && Palettes.HasKeyboardControl()) { Instance.SetPalette(Palettes.index); } } serializedObject.ApplyModifiedProperties(); }
public override void OnInspectorGUI() { // NOTE: this happens during undo/redo if (m_target.transform.childCount != m_target.Tilemaps.Count) { m_target.Refresh(); } serializedObject.Update(); if (m_tilemapReordList.HasKeyboardControl()) { DoKeyboardChecks(); } // clamp index to valid value m_selectedIndexProp.intValue = Mathf.Clamp(m_selectedIndexProp.intValue, -1, m_target.Tilemaps.Count - 1); // Draw Tilemap List m_tilemapReordList.index = m_selectedIndexProp.intValue; m_tilemapReordList.DoLayoutList(); EditorGUILayout.PropertyField(serializedObject.FindProperty("m_unselectedColorMultiplier"), new GUIContent("Highlight Alpha")); EditorGUIUtility.labelWidth = 200f; EditorGUILayout.PropertyField(m_defaultTilemapWindowVisibleProperty, new GUIContent("Display Default Tilemap Window")); EditorGUIUtility.labelWidth = 0f; EditorGUILayout.Space(); // Draw Tilemap Inspector TilemapEditor tilemapEditor = GetTilemapEditor(); if (tilemapEditor) { tilemapEditor.OnInspectorGUI(); } m_displayTilemapRList.boolValue = m_sceneViewTilemapRList.elementHeight > 0f; serializedObject.ApplyModifiedProperties(); //fix: argument exception when removing the last tilemap in the list if (Event.current.type == EventType.Layout) { for (int i = 0; i < m_tilemapRemovingList.Count; ++i) { Undo.DestroyObjectImmediate(m_tilemapRemovingList[i]); } m_tilemapRemovingList.Clear(); } if (GUI.changed) { EditorUtility.SetDirty(target); Repaint(); } }
public override void OnInspectorGUI() { serializedObject.Update(); if (m_prevTileset != m_brush.Tileset) { if (m_prevTileset) { m_prevTileset.OnBrushSelected -= OnBrushSelected; m_prevTileset.OnTileSelected -= OnTileSelected; } OnDisable(); OnEnable(); } m_prevTileset = m_brush.Tileset; base.OnInspectorGUI(); if (!m_brush.Tileset) { return; } Vector2 visualTileSize = m_brush.Tileset.VisualTileSize; EditorGUILayout.Space(); GUILayoutUtility.GetRect(1f, 1f, GUILayout.Width(visualTileSize.x), GUILayout.Height(visualTileSize.y)); Rect rSelectedTile = GUILayoutUtility.GetLastRect(); uint tileData = m_brush.GetAnimTileData(); if (tileData != Tileset.k_TileData_Empty) { rSelectedTile.center = new Vector2(EditorGUIUtility.currentViewWidth / 2, rSelectedTile.center.y); GUI.Box(new Rect(rSelectedTile.position - Vector2.one, rSelectedTile.size + 2 * Vector2.one), ""); TilesetEditor.DoGUIDrawTileFromTileData(rSelectedTile, tileData, m_brush.Tileset); } EditorGUILayout.Space(); SerializedProperty randomFlagMaskProperty = serializedObject.FindProperty("RandomizeFlagMask"); System.Enum enumNew = EditorGUILayout.EnumMaskField(new GUIContent("Random Flags", "Applies random flags when painting tiles"), (eRandomFlags)(randomFlagMaskProperty.longValue >> 29)); randomFlagMaskProperty.longValue = ((long)System.Convert.ChangeType(enumNew, typeof(long)) & 0x7) << 29; uint brushTileData = m_randTileList.index >= 0 ? m_brush.RandomTileList[m_randTileList.index].tileData : Tileset.k_TileData_Empty; brushTileData = BrushTileGridControl.DoTileDataPropertiesLayout(brushTileData, m_brush.Tileset, false); if (m_randTileList.index >= 0) { m_brush.RandomTileList[m_randTileList.index].tileData = brushTileData; } EditorGUILayout.Space(); EditorGUILayout.HelpBox("Activate this to use animated brushes as random tiles", MessageType.Info); EditorGUILayout.PropertyField(serializedObject.FindProperty("RemoveBrushIdAfterRefresh")); // Draw List m_randTileList.elementHeight = visualTileSize.y + 35f; m_randTileList.DoLayoutList(); if (Event.current.type == EventType.Repaint) { m_randTileListHasFocus = m_randTileList.HasKeyboardControl(); } TileSelection tileSelection = ((TilesetBrush)target).Tileset.TileSelection; if (tileSelection != null) { if (GUILayout.Button("Add tiles from tile selection")) { m_brush.RandomTileList.AddRange(tileSelection.selectionData.Select(x => new RandomBrush.RandomTileData() { tileData = x, probabilityFactor = 1f })); } } EditorGUILayout.HelpBox("Select a tile from list and then select a tile from tile selection window.", MessageType.Info); EditorGUILayout.HelpBox("Add and Remove tiles with '+' and '-' buttons.", MessageType.Info); Repaint(); serializedObject.ApplyModifiedProperties(); if (GUI.changed) { m_brush.InvalidateSortedList(); EditorUtility.SetDirty(target); } }
public bool HasKeyboardControl() { return(reorderableList.HasKeyboardControl()); }
private void OnGUI() { // Style initialization if (!init) { Initialize(); init = true; } // Create animation box NewAnimationBox(); if (justCreatedAnim) { justCreatedAnim = false; return; } // Edit animation box EditorGUILayout.Space(); EditorGUILayout.BeginVertical(); { // Animation asset field if (selectedAnimation == null) { EditorGUILayout.BeginVertical(box); selectedAnimation = EditorGUILayout.ObjectField("Animation", selectedAnimation, typeof(SpriteAnimation), false) as SpriteAnimation; EditorGUILayout.EndVertical(); } else { // Init reorderable list if (frameList == null) { InitializeReorderableList(); } // Add the frames dropped on the drag and drop box // TODO Record Undo/Redo for dragged sprites, currently not working, don't know why if (draggedSprites != null && draggedSprites.Count > 0) { for (int i = 0; i < draggedSprites.Count; i++) { AddFrame(draggedSprites[i]); } draggedSprites.Clear(); } // Retrocompatibility check for the new frames duration field if (selectedAnimation.FramesCount != selectedAnimation.FramesDuration.Count) { selectedAnimation.FramesDuration.Clear(); for (int i = 0; i < selectedAnimation.FramesCount; i++) { selectedAnimation.FramesDuration.Add(1); } } // Config settings ConfigBox(); EditorGUILayout.Space(); EditorGUILayout.BeginHorizontal(); { // Preview window setup Rect previewRect = EditorGUILayout.BeginVertical(lowPaddingBox, GUILayout.MaxWidth(position.width / 2)); PreviewBox(previewRect); EditorGUILayout.EndVertical(); EditorGUILayout.BeginVertical(); { // FPS selectedAnimation.FPS = EditorGUILayout.IntField("FPS", selectedAnimation.FPS); if (selectedAnimation.FPS < 0) { selectedAnimation.FPS = 0; } EditorGUILayout.Space(); scrollWindowPosition = EditorGUILayout.BeginScrollView(scrollWindowPosition); { // Individual frames frameList.displayRemove = (selectedAnimation.FramesCount > 0); frameList.DoLayoutList(); EditorGUILayout.Space(); } EditorGUILayout.EndScrollView(); EditorGUILayout.Space(); } EditorGUILayout.EndVertical(); // Check Events Event evt = Event.current; switch (evt.type) { // Delete frames with supr case EventType.KeyDown: if (Event.current.keyCode == KeyCode.Delete && selectedAnimation.FramesCount > 0 && frameList.HasKeyboardControl() && frameListSelectedIndex != -1) { RemoveFrameListItem(frameList); } break; // Zoom preview window with scrollwheel case EventType.ScrollWheel: if (spritePreview != null) { Vector2 mpos = Event.current.mousePosition; if (mpos.x >= previewRect.x && mpos.x <= previewRect.x + previewRect.width && mpos.y >= previewRect.y && mpos.y <= previewRect.y + previewRect.height) { Repaint(); spritePreview.Zoom = -evt.delta.y; } } break; } } EditorGUILayout.EndHorizontal(); } } EditorGUILayout.EndVertical(); if (GUI.changed && selectedAnimation != null) { EditorUtility.SetDirty(selectedAnimation); } }
private void PopulateMenu() { m_Menu = new GenericMenu(); if (m_ReorderableList.index >= 0 && m_ReorderableList.index < m_List.Count && m_ReorderableList.HasKeyboardControl()) { m_Menu.AddItem(Styles.RemoveSelectedLabel, false, () => RemoveSelected()); } else { m_Menu.AddDisabledItem(Styles.RemoveSelectedLabel); } m_Menu.AddItem(Styles.RemoveAllLabel, false, () => RemoveAll()); }