Пример #1
0
    public void OnSceneGUI(SceneView sceneView)
    {
        if (currMapScene == null)
        {
            return;
        }
        Vector3 mousepos = Event.current.mousePosition;

        mousepos.y = sceneView.camera.pixelHeight - mousepos.y;
        mousepos   = sceneView.camera.ScreenToWorldPoint(mousepos);

        Vector2 grid = MapManager.GetGrid(mousepos.x, mousepos.y);

        if (grid.x < currMapScene.offsetX || grid.y < currMapScene.offsetY || grid.x >= currMapScene.mapSizeX + currMapScene.offsetX || grid.y >= currMapScene.mapSizeY + currMapScene.offsetY)
        {
            return;
        }

        HandleUtility.AddDefaultControl(GUIUtility.GetControlID(FocusType.Passive));

        if (Event.current.type == EventType.MouseDown)
        {
            if (toolSelected == MapTool.Draw)
            {
                AddTile(grid, selectedTile);
                ClearStoneWallAndEdge();
                GenerateStoneWallAndEdge();
            }
            else if (toolSelected == MapTool.Clear)
            {
                currMapScene.ClearGrid(grid);
            }
        }
        else if (Event.current.type == EventType.MouseDrag)
        {
            if (lastPos == grid)
            {
                return;
            }
            lastPos = grid;
            if (toolSelected == MapTool.Draw)
            {
                if (!selectedTile.isPrefab)
                {
                    AddTile(grid, selectedTile);
                    ClearStoneWallAndEdge();
                    GenerateStoneWallAndEdge();
                }
            }
            else if (toolSelected == MapTool.Clear)
            {
                currMapScene.ClearGrid(grid);
            }
        }
    }