Ejemplo n.º 1
0
        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();
                }
            }
        }
Ejemplo n.º 2
0
 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();
         }
     }
 }