public void OnSceneGUI() { if (!MyAutoTileMap.IsInitialized) { return; } DoToolBar(); Rect rAutoTileMap = new Rect(MyAutoTileMap.transform.position.x, MyAutoTileMap.transform.position.y, MyAutoTileMap.MapTileWidth * MyAutoTileMap.Tileset.TileWorldWidth, -MyAutoTileMap.MapTileHeight * MyAutoTileMap.Tileset.TileWorldHeight); UtilsGuiDrawing.DrawRectWithOutline(rAutoTileMap, new Color(0f, 0f, 0f, 0f), new Color(1f, 1f, 1f, 1f)); if (m_showCollisions) { DrawCollisions(); } if (s_isEditModeOn) { int controlID = GUIUtility.GetControlID(FocusType.Passive); HandleUtility.AddDefaultControl(controlID); EventType currentEventType = Event.current.GetTypeForControl(controlID); bool skip = false; int saveControl = GUIUtility.hotControl; if (currentEventType == EventType.Layout) { skip = true; } else if (currentEventType == EventType.ScrollWheel) { skip = true; } if (!skip) { EditorGUIUtility.AddCursorRect(new Rect(0f, 0f, (float)Screen.width, (float)Screen.height), MouseCursor.Arrow); GUIUtility.hotControl = controlID; if (Event.current.type == EventType.MouseUp && Event.current.button == 1) { s_brushMode = eBrushMode.Paint; } m_tilesetComponent.OnSceneGUI(); if (currentEventType == EventType.MouseDrag && Event.current.button < 2) // 2 is for central mouse button { // avoid dragging the map Event.current.Use(); } } GUIUtility.hotControl = saveControl; if (GUI.changed) { EditorUtility.SetDirty(target); } } }
private void _DoToolbarButton(Rect rToolBtn, ToolIcons.eToolIcon toolIcon) { int iconPadding = 6; Rect rToolIcon = new Rect(rToolBtn.x + iconPadding, rToolBtn.y + iconPadding, rToolBtn.size.y - 2 * iconPadding, rToolBtn.size.y - 2 * iconPadding); Color activeColor = new Color(1f, 1f, 1f, 0.8f); Color disableColor = new Color(1f, 1f, 1f, 0.4f); switch (toolIcon) { case ToolIcons.eToolIcon.Pencil: GUI.color = s_brushMode == eBrushMode.Paint ? activeColor : disableColor; if (GUI.Button(rToolBtn, new GUIContent("", "Paint"))) { s_brushMode = eBrushMode.Paint; MyAutoTileMap.BrushGizmo.Clear(); MyAutoTileMap.BrushGizmo.BrushAction = new AutoTileBrush.TileAction(); MyAutoTileMap.BrushGizmo.BrushAction.Push(MyAutoTileMap, 0, 0, m_tilesetComponent.SelectedTileIdx, MyAutoTileMap.BrushGizmo.SelectedLayer); } break; case ToolIcons.eToolIcon.Erase: GUI.color = s_brushMode == eBrushMode.Erase ? activeColor : disableColor; if (GUI.Button(rToolBtn, new GUIContent("", "Erase"))) { s_brushMode = eBrushMode.Erase; MyAutoTileMap.BrushGizmo.Clear(); MyAutoTileMap.BrushGizmo.BrushAction = new AutoTileBrush.TileAction(); MyAutoTileMap.BrushGizmo.BrushAction.Push(MyAutoTileMap, 0, 0, -1, MyAutoTileMap.BrushGizmo.SelectedLayer); } break; case ToolIcons.eToolIcon.Undo: GUI.color = MyAutoTileMap.BrushGizmo.CanUndo()? activeColor : disableColor; if (GUI.Button(rToolBtn, new GUIContent("", " Undo Last Brush Action (Shift + Z)"))) { MyAutoTileMap.BrushGizmo.UndoAction(); } break; case ToolIcons.eToolIcon.Redo: GUI.color = MyAutoTileMap.BrushGizmo.CanRedo()? activeColor : disableColor; if (GUI.Button(rToolBtn, new GUIContent("", " Redo Last Brush Action (Shift + Y)"))) { MyAutoTileMap.BrushGizmo.RedoAction(); } break; case ToolIcons.eToolIcon.Info: GUI.color = m_displayHelpBox ? activeColor : disableColor; if (GUI.Button(rToolBtn, new GUIContent("", " Display Help (F1)"))) { m_displayHelpBox = !m_displayHelpBox; } break; } GUI.color = Color.white; GUI.DrawTexture(rToolIcon, ToolIcons.GetToolTexture(toolIcon)); }
private void OnTileSelectionChanged(TilesetComponent source, int newTileId, int tilesetSelStart, int tilesetSelEnd) { s_brushMode = eBrushMode.Paint; }
private void _DoToolbarButton(Rect rToolBtn, ToolIcons.eToolIcon toolIcon) { BrushBehaviour brush = BrushBehaviour.GetOrCreateBrush((Tilemap)target); int iconPadding = 6; Rect rToolIcon = new Rect(rToolBtn.x + iconPadding, rToolBtn.y + iconPadding, rToolBtn.size.y - 2 * iconPadding, rToolBtn.size.y - 2 * iconPadding); Color activeColor = new Color(1f, 1f, 1f, 0.8f); Color disableColor = new Color(1f, 1f, 1f, 0.4f); switch (toolIcon) { case ToolIcons.eToolIcon.Pencil: GUI.color = GetBrushMode() == eBrushMode.Paint ? activeColor : disableColor; if (GUI.Button(rToolBtn, new GUIContent("", "Paint"))) { s_brushMode = eBrushMode.Paint; } break; case ToolIcons.eToolIcon.Erase: GUI.color = GetBrushMode() == eBrushMode.Erase ? activeColor : disableColor; if (GUI.Button(rToolBtn, new GUIContent("", "Erase (Hold Shift)"))) { s_brushMode = eBrushMode.Erase; } break; case ToolIcons.eToolIcon.Fill: GUI.color = GetBrushMode() == eBrushMode.Fill ? activeColor : disableColor; if (GUI.Button(rToolBtn, new GUIContent("", "Fill (Double click)"))) { s_brushMode = eBrushMode.Fill; } break; case ToolIcons.eToolIcon.FlipV: GUI.color = s_brushFlipV ? activeColor : disableColor; if (GUI.Button(rToolBtn, new GUIContent("", "Flip Vertical (" + ShortcutKeys.k_FlipV + ")"))) { brush.FlipV(); s_brushFlipV = !s_brushFlipV; } break; case ToolIcons.eToolIcon.FlipH: GUI.color = s_brushFlipH ? activeColor : disableColor; if (GUI.Button(rToolBtn, new GUIContent("", "Flip Horizontal (" + ShortcutKeys.k_FlipH + ")"))) { brush.FlipH(); s_brushFlipH = !s_brushFlipH; } break; case ToolIcons.eToolIcon.Rot90: GUI.color = s_brushRot90 ? activeColor : disableColor; if (GUI.Button(rToolBtn, new GUIContent("", "Rotate 90 clockwise (" + ShortcutKeys.k_Rot90 + "); anticlockwise (" + ShortcutKeys.k_Rot90Back + ")"))) { if (!s_brushRot90) { brush.Rot90(); } else { brush.Rot90Back(); } s_brushRot90 = !s_brushRot90; } break; case ToolIcons.eToolIcon.Info: GUI.color = m_displayHelpBox ? activeColor : disableColor; if (GUI.Button(rToolBtn, new GUIContent("", " Display Help (F1)"))) { m_displayHelpBox = !m_displayHelpBox; } break; case ToolIcons.eToolIcon.Refresh: GUI.color = m_displayHelpBox ? activeColor : disableColor; if (GUI.Button(rToolBtn, new GUIContent("", " Refresh Tilemap (F5)"))) { TilemapGroup tilemapGroup = Selection.activeGameObject.GetComponent <TilemapGroup>(); if (tilemapGroup) { foreach (Tilemap tilemap in tilemapGroup.Tilemaps) { tilemap.Refresh(true, true, true, true); } } else { m_tilemap.Refresh(true, true, true, true); } } break; } GUI.color = Color.white; GUI.DrawTexture(rToolIcon, ToolIcons.GetToolTexture(toolIcon)); }
void ResetBrushMode() { s_brushMode = eBrushMode.Paint; s_brushFlipH = s_brushFlipV = s_brushRot90 = false; }
public void OnSceneGUI() { if( !MyAutoTileMap.IsInitialized ) { return; } DoToolBar(); Rect rAutoTileMap = new Rect(MyAutoTileMap.transform.position.x, MyAutoTileMap.transform.position.y, MyAutoTileMap.MapTileWidth * MyAutoTileMap.CellSize.x, -MyAutoTileMap.MapTileHeight * MyAutoTileMap.CellSize.y); UtilsGuiDrawing.DrawRectWithOutline( rAutoTileMap, new Color(0f, 0f, 0f, 0f), new Color(1f, 1f, 1f, 1f)); if( m_showCollisions ) { DrawCollisions(); } if (s_isEditModeOn) { int controlID = GUIUtility.GetControlID(FocusType.Passive); HandleUtility.AddDefaultControl(controlID); EventType currentEventType = Event.current.GetTypeForControl(controlID); bool skip = false; int saveControl = GUIUtility.hotControl; if (currentEventType == EventType.Layout) { skip = true; } else if (currentEventType == EventType.ScrollWheel) { skip = true; } if (!skip) { EditorGUIUtility.AddCursorRect(new Rect(0f, 0f, (float)Screen.width, (float)Screen.height), MouseCursor.Arrow); GUIUtility.hotControl = controlID; if (Event.current.type == EventType.MouseUp && Event.current.button == 1) { s_brushMode = eBrushMode.Paint; } m_tilesetComponent.OnSceneGUI(); if (currentEventType == EventType.MouseDrag && Event.current.button < 2) // 2 is for central mouse button { // avoid dragging the map Event.current.Use(); } } GUIUtility.hotControl = saveControl; if (GUI.changed) { EditorUtility.SetDirty(target); } } }