Ejemplo n.º 1
0
        public void GetPointsOnLine_DiagonalLine_PointCountCorrect()
        {
            var startPoint = Vector2Int.zero;
            var endPoint   = new Vector2Int(5, 5);

            var count = GridEditorUtility.GetPointsOnLine(startPoint, endPoint).Count();

            Assert.AreEqual(endPoint.y - startPoint.x + 1, count);
        }
Ejemplo n.º 2
0
        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;
            }
        }
Ejemplo n.º 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;
                }
            }
        }