private void PencilToolHandler()
        {
            if (IsMouseAboveGrid(mouseWorlPosition) == false)
            {
                return;
            }

            bool rubberMode = false;

            if (toolIndex == 1)
            {
                rubberMode = true;
            }

            SAP_TileData tileUnderMouse = grid.GetTileDataAtWorldPosition(mouseWorlPosition);

            Event e = Event.current;

            if (e.type == EventType.MouseDown || e.type == EventType.MouseDrag)
            {
                if (e.button == 0)
                {
                    List <SAP_TileData> selectedTiles = grid.GetNeighborTiles(tileUnderMouse, true, brushSize - 1);
                    selectedTiles.Add(tileUnderMouse);

                    foreach (SAP_TileData tile in selectedTiles)
                    {
                        if (rubberMode == false)
                        {
                            tile.isWalkable   = false;
                            tile.walkableLock = true;
                            UserGridDataLoader.WriteData(grid, tile);
                        }
                        else
                        {
                            tile.isWalkable   = true;
                            tile.walkableLock = false;
                            UserGridDataLoader.DeleteData(grid, tile);
                        }
                    }
                }
            }
            //draw brush
            Vector2 point1 = new Vector2(tileUnderMouse.WorldPosition.x - grid.TileDiameter * (brushSize - 1), tileUnderMouse.WorldPosition.y - grid.TileDiameter * (brushSize - 1));
            Vector2 point2 = new Vector2(tileUnderMouse.WorldPosition.x + grid.TileDiameter * (brushSize - 1), tileUnderMouse.WorldPosition.y + grid.TileDiameter * (brushSize - 1));

            DrawSelectionRectangle(point1, point2, Color.clear, pathfinder.EditorSettings.selectingColor);
        }
        private void RectangleToolHandler()
        {
            if (mouseDrag == false && IsMouseAboveGrid(mouseWorlPosition) == false)
            {
                return;
            }

            Event e = Event.current;

            if (e.type == EventType.MouseDrag)
            {
                if (e.button == 0)
                {
                    mouseDrag = true;
                }
            }
            if (e.type == EventType.MouseUp)
            {
                if (e.button == 0)
                {
                    int startX = Mathf.Min(startDragTile.x, endDragTile.x);
                    int startY = Mathf.Min(startDragTile.y, endDragTile.y);
                    int endX   = Mathf.Max(startDragTile.x, endDragTile.x);
                    int endY   = Mathf.Max(startDragTile.y, endDragTile.y);

                    for (int x = startX; x <= endX; x++)
                    {
                        for (int y = startY; y <= endY; y++)
                        {
                            SAP_TileData tile = grid.GetTileDataAt(x, y);

                            tile.isWalkable   = false;
                            tile.walkableLock = true;
                            UserGridDataLoader.WriteData(grid, tile);
                        }
                    }
                }
                mouseDrag = false;
            }
            endDragTile = grid.GetTileDataAtWorldPosition(mouseWorlPosition);
            if (mouseDrag == false)
            {
                startDragTile = endDragTile;
            }

            DrawSelectionRectangle(startDragTile.WorldPosition, endDragTile.WorldPosition, pathfinder.EditorSettings.obstacleColor, pathfinder.EditorSettings.selectingColor);
        }