public override void OnInspectorGUI() { serializedObject.Update(); if (m_prevTileset != m_brush.Tileset) { 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(); uint brushTileData = m_randTileList.index >= 0 ? m_brush.RandomTiles[m_randTileList.index] : Tileset.k_TileData_Empty; brushTileData = BrushTileGridControl.DoTileDataPropertiesLayout(brushTileData, m_brush.Tileset, false); if (m_randTileList.index >= 0) { m_brush.RandomTiles[m_randTileList.index] = brushTileData; } EditorGUILayout.Space(); // Draw List m_randTileList.elementHeight = visualTileSize.y + 10f; m_randTileList.DoLayoutList(); 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) { EditorUtility.SetDirty(target); } }
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 override void OnInspectorGUI() { serializedObject.Update(); if (m_prevTileset != m_brush.Tileset) { if (m_prevTileset) { 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.PropertyField(serializedObject.FindProperty("AnimFPS")); TileSelection tileSelection = ((TilesetBrush)target).Tileset.TileSelection; if (tileSelection != null) { if (GUILayout.Button("Add tile selection as animation frames")) { ((AnimBrush)target).AnimFrames.AddRange(tileSelection.selectionData.Select(x => new AnimBrush.TileAnimFrame() { tileId = x })); } } EditorGUILayout.Space(); // Draw animation GUILayoutUtility.GetRect(1f, 1f, GUILayout.Width(visualTileSize.x), GUILayout.Height(visualTileSize.y)); Rect rAnimFrame = GUILayoutUtility.GetLastRect(); uint tileData = m_brush.GetAnimTileData(); rAnimFrame.center = new Vector2(EditorGUIUtility.currentViewWidth / 2, rAnimFrame.center.y); GUI.Box(new Rect(rAnimFrame.position - Vector2.one, rAnimFrame.size + 2 * Vector2.one), ""); TilesetEditor.DoGUIDrawTileFromTileData(rAnimFrame, tileData, m_brush.Tileset, m_brush.GetAnimUV()); EditorGUILayout.Space(); uint brushTileData = m_frameList.index >= 0 ? m_brush.AnimFrames[m_frameList.index].tileId : Tileset.k_TileData_Empty; brushTileData = BrushTileGridControl.DoTileDataPropertiesLayout(brushTileData, m_brush.Tileset, false); if (m_frameList.index >= 0) { m_brush.AnimFrames[m_frameList.index].tileId = brushTileData; } EditorGUILayout.Space(); // Draw Frames List m_frameList.elementHeight = visualTileSize.y + 10f; m_frameList.DoLayoutList(); EditorGUILayout.HelpBox("Select a frame 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) { EditorUtility.SetDirty(target); } }