public override void OnPaintSceneGUI(IGridLayout grid, GameObject[] layers, BoundsInt position, GridBrushBase.Tool tool, bool executing) { base.OnPaintSceneGUI(grid, layers, position, tool, executing); if (lineBrush.lineStartActive) { foreach (GameObject go in layers) { Tilemap tilemap = go.GetComponent <Tilemap>(); if (tilemap != null) { tilemap.ClearAllEditorPreviewTiles(); } } // Draw preview tiles for tilemap Vector2Int startPos = new Vector2Int(lineBrush.lineStart.x, lineBrush.lineStart.y); Vector2Int endPos = new Vector2Int(position.x, position.y); if (startPos == endPos) { brush.PaintPreview(grid, layers, position); } else { foreach (var point in LineBrush.GetPointsOnLine(startPos, endPos)) { Vector3Int paintPos = new Vector3Int(point.x, point.y, position.z); BoundsInt previewPos = new BoundsInt(paintPos, position.size); brush.PaintPreview(grid, layers, previewPos); } } if (Event.current.type == EventType.Repaint) { var min = lineBrush.lineStart; var max = lineBrush.lineStart + position.size; // Draws a box on the picked starting position GL.PushMatrix(); GL.MultMatrix(GUI.matrix); GL.Begin(GL.LINES); Handles.color = Color.blue; Handles.DrawLine(new Vector3(min.x, min.y, min.z), new Vector3(max.x, min.y, min.z)); Handles.DrawLine(new Vector3(max.x, min.y, min.z), new Vector3(max.x, max.y, min.z)); Handles.DrawLine(new Vector3(max.x, max.y, min.z), new Vector3(min.x, max.y, min.z)); Handles.DrawLine(new Vector3(min.x, max.y, min.z), new Vector3(min.x, min.y, min.z)); GL.End(); GL.PopMatrix(); } } }
public override void OnPaintSceneGUI(GridLayout grid, GameObject brushTarget, BoundsInt position, GridBrushBase.Tool tool, bool executing) { base.OnPaintSceneGUI(grid, brushTarget, position, tool, executing); if (Brush.LineStartActive) { var tilemap = brushTarget.GetComponent <Tilemap>(); if (tilemap != null) { tilemap.ClearAllEditorPreviewTiles(); } var startPos = new Vector2Int(Brush.LineStart.x, Brush.LineStart.y); var endPos = new Vector2Int(position.x, position.y); if (startPos == endPos) { PaintPreview(grid, brushTarget, position.min); } else { foreach (var p in LineBrush.GetPointsOnLine(startPos, endPos, Brush.FillGaps)) { PaintPreview(grid, brushTarget, new Vector3Int(p.x, p.y, position.z)); } } if (Event.current.type == EventType.Repaint) { var min = Brush.LineStart; var max = Brush.LineStart + position.size; GL.PushMatrix(); GL.MultMatrix(GUI.matrix); GL.Begin(GL.LINES); Handles.color = Color.blue; Handles.DrawLine(new Vector3(min.x, min.y, min.z), new Vector3(max.x, min.y, min.z)); Handles.DrawLine(new Vector3(max.x, min.y, min.z), new Vector3(max.x, max.y, min.z)); Handles.DrawLine(new Vector3(max.x, max.y, min.z), new Vector3(min.x, max.y, min.z)); Handles.DrawLine(new Vector3(min.x, max.y, min.z), new Vector3(min.x, min.y, min.z)); GL.End(); GL.PopMatrix(); } } }