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); } } }