private void HandleBrushPaintAndErase()
        {
            Event evt = Event.current;

            if (!IsPaintingEvent(evt) && !IsErasingEvent(evt))
            {
                return;
            }

            switch (evt.type)
            {
            case EventType.MouseDown:
                RegisterUndo();
                if (IsErasingEvent(evt))
                {
                    if (EditMode.editMode != EditMode.SceneViewEditMode.GridEraser)
                    {
                        EditMode.ChangeEditMode(EditMode.SceneViewEditMode.GridEraser, GridPaintingState.instance);
                    }
                    Erase(new Vector3Int(mouseGridPosition.x, mouseGridPosition.y, 0));
                }
                else
                {
                    if (EditMode.editMode != EditMode.SceneViewEditMode.GridPainting)
                    {
                        EditMode.ChangeEditMode(EditMode.SceneViewEditMode.GridPainting, GridPaintingState.instance);
                    }
                    Paint(new Vector3Int(mouseGridPosition.x, mouseGridPosition.y, 0));
                }

                Event.current.Use();
                GUIUtility.hotControl = m_PermanentControlID;
                GUI.changed           = true;
                executing             = true;
                break;

            case EventType.MouseDrag:
                if (isHotControl && mouseGridPositionChanged)
                {
                    List <Vector2Int> points = GridEditorUtility.GetPointsOnLine(m_PreviousMouseGridPosition, mouseGridPosition).ToList();
                    if (points[0] == mouseGridPosition)
                    {
                        points.Reverse();
                    }

                    for (int i = 1; i < points.Count; i++)
                    {
                        if (IsErasingEvent(evt))
                        {
                            Erase(new Vector3Int(points[i].x, points[i].y, 0));
                        }
                        else
                        {
                            Paint(new Vector3Int(points[i].x, points[i].y, 0));
                        }
                    }
                    Event.current.Use();
                    GUI.changed = true;
                }
                executing = true;
                break;

            case EventType.MouseUp:
                executing = false;
                if (isHotControl)
                {
                    if (Event.current.shift && EditMode.editMode != EditMode.SceneViewEditMode.GridPainting)
                    {
                        EditMode.ChangeEditMode(EditMode.SceneViewEditMode.GridPainting, GridPaintingState.instance);
                    }

                    Event.current.Use();
                    GUI.changed           = true;
                    GUIUtility.hotControl = 0;
                }
                break;
            }
        }
 public void StartEditMode()
 {
     EditMode.ChangeEditMode(EditMode.SceneViewEditMode.LightProbeGroup, m_Editor.bounds, this);
 }
Example #3
0
        private void HandleBrushPaintAndErase()
        {
            Event current = Event.current;

            if (this.IsPaintingEvent(current) || this.IsErasingEvent(current))
            {
                EventType type = current.type;
                if (type != EventType.MouseDown)
                {
                    if (type != EventType.MouseDrag)
                    {
                        if (type == EventType.MouseUp)
                        {
                            this.executing = false;
                            if (this.isHotControl)
                            {
                                if (Event.current.shift && EditMode.editMode != EditMode.SceneViewEditMode.GridPainting)
                                {
                                    EditMode.ChangeEditMode(EditMode.SceneViewEditMode.GridPainting, ScriptableSingleton <GridPaintingState> .instance);
                                }
                                Event.current.Use();
                                GUI.changed           = true;
                                GUIUtility.hotControl = 0;
                            }
                        }
                    }
                    else
                    {
                        if (this.isHotControl && this.mouseGridPositionChanged)
                        {
                            List <Vector2Int> list = GridEditorUtility.GetPointsOnLine(this.m_PreviousMouseGridPosition, this.mouseGridPosition).ToList <Vector2Int>();
                            if (list[0] == this.mouseGridPosition)
                            {
                                list.Reverse();
                            }
                            for (int i = 1; i < list.Count; i++)
                            {
                                if (this.IsErasingEvent(current))
                                {
                                    this.Erase(new Vector3Int(list[i].x, list[i].y, 0));
                                }
                                else
                                {
                                    this.Paint(new Vector3Int(list[i].x, list[i].y, 0));
                                }
                            }
                            Event.current.Use();
                            GUI.changed = true;
                        }
                        this.executing = true;
                    }
                }
                else
                {
                    this.RegisterUndo();
                    if (this.IsErasingEvent(current))
                    {
                        if (EditMode.editMode != EditMode.SceneViewEditMode.GridEraser)
                        {
                            EditMode.ChangeEditMode(EditMode.SceneViewEditMode.GridEraser, ScriptableSingleton <GridPaintingState> .instance);
                        }
                        this.Erase(new Vector3Int(this.mouseGridPosition.x, this.mouseGridPosition.y, 0));
                    }
                    else
                    {
                        if (EditMode.editMode != EditMode.SceneViewEditMode.GridPainting)
                        {
                            EditMode.ChangeEditMode(EditMode.SceneViewEditMode.GridPainting, ScriptableSingleton <GridPaintingState> .instance);
                        }
                        this.Paint(new Vector3Int(this.mouseGridPosition.x, this.mouseGridPosition.y, 0));
                    }
                    Event.current.Use();
                    GUIUtility.hotControl = this.m_PermanentControlID;
                    GUI.changed           = true;
                    this.executing        = true;
                }
            }
        }
Example #4
0
 public void ChangeToTool(GridBrushBase.Tool tool)
 {
     EditMode.ChangeEditMode(PaintableGrid.BrushToolToEditMode(tool), new Bounds(Vector3.zero, Vector3.positiveInfinity), GridPaintingState.instance);
     Repaint();
 }
        private void HotkeyHandler()
        {
            if (kGridSelectKey.activated)
            {
                if (EditMode.editMode != EditMode.SceneViewEditMode.GridSelect)
                {
                    EditMode.ChangeEditMode(EditMode.SceneViewEditMode.GridSelect, GridPaintingState.instance);
                }
                else
                {
                    EditMode.QuitEditMode();
                }

                Event.current.Use();
            }
            if (kGridMoveKey.activated)
            {
                if (EditMode.editMode != EditMode.SceneViewEditMode.GridMove)
                {
                    EditMode.ChangeEditMode(EditMode.SceneViewEditMode.GridMove, GridPaintingState.instance);
                }
                else
                {
                    EditMode.QuitEditMode();
                }

                Event.current.Use();
            }
            if (kGridBrushKey.activated)
            {
                if (EditMode.editMode != EditMode.SceneViewEditMode.GridPainting)
                {
                    EditMode.ChangeEditMode(EditMode.SceneViewEditMode.GridPainting, GridPaintingState.instance);
                }
                else
                {
                    EditMode.QuitEditMode();
                }

                Event.current.Use();
            }
            if (kGridEraseKey.activated)
            {
                if (EditMode.editMode != EditMode.SceneViewEditMode.GridEraser)
                {
                    EditMode.ChangeEditMode(EditMode.SceneViewEditMode.GridEraser, GridPaintingState.instance);
                }
                else
                {
                    EditMode.QuitEditMode();
                }

                Event.current.Use();
            }
            if (kGridFillKey.activated)
            {
                if (EditMode.editMode != EditMode.SceneViewEditMode.GridFloodFill)
                {
                    EditMode.ChangeEditMode(EditMode.SceneViewEditMode.GridFloodFill, GridPaintingState.instance);
                }
                else
                {
                    EditMode.QuitEditMode();
                }

                Event.current.Use();
            }
            if (kGridPickerKey.activated)
            {
                if (EditMode.editMode != EditMode.SceneViewEditMode.GridPicking)
                {
                    EditMode.ChangeEditMode(EditMode.SceneViewEditMode.GridPicking, GridPaintingState.instance);
                }
                else
                {
                    EditMode.QuitEditMode();
                }

                Event.current.Use();
            }
            if (kGridRectangleKey.activated)
            {
                if (EditMode.editMode != EditMode.SceneViewEditMode.GridBox)
                {
                    EditMode.ChangeEditMode(EditMode.SceneViewEditMode.GridBox, GridPaintingState.instance);
                }
                else
                {
                    EditMode.QuitEditMode();
                }

                Event.current.Use();
            }
            if (GridPaintingState.gridBrush != null && GridPaintingState.activeGrid != null)
            {
                if (kRotateClockwise.activated)
                {
                    GridPaintingState.gridBrush.Rotate(GridBrush.RotationDirection.Clockwise, GridPaintingState.activeGrid.cellLayout);
                    GridPaintingState.activeGrid.Repaint();
                    Event.current.Use();
                }
                if (kRotateAntiClockwise.activated)
                {
                    GridPaintingState.gridBrush.Rotate(GridBrush.RotationDirection.CounterClockwise, GridPaintingState.activeGrid.cellLayout);
                    GridPaintingState.activeGrid.Repaint();
                    Event.current.Use();
                }
                if (kFlipX.activated)
                {
                    GridPaintingState.gridBrush.Flip(GridBrush.FlipAxis.X, GridPaintingState.activeGrid.cellLayout);
                    GridPaintingState.activeGrid.Repaint();
                    Event.current.Use();
                }
                if (kFlipY.activated)
                {
                    GridPaintingState.gridBrush.Flip(GridBrush.FlipAxis.Y, GridPaintingState.activeGrid.cellLayout);
                    GridPaintingState.activeGrid.Repaint();
                    Event.current.Use();
                }
            }
        }