public override void OnPaintSceneGUI(GridLayout grid, GameObject brushTarget, BoundsInt position, GridBrushBase.Tool tool, bool executing) { base.OnPaintSceneGUI(grid, brushTarget, position, tool, executing); if (coordinateBrush.z != 0) { var zPosition = new Vector3Int(position.min.x, position.min.y, coordinateBrush.z); var newPosition = new BoundsInt(zPosition, position.size); var cellLocals = new[] { grid.CellToLocal(new Vector3Int(newPosition.min.x, newPosition.min.y, newPosition.min.z)), grid.CellToLocal(new Vector3Int(newPosition.max.x, newPosition.min.y, newPosition.min.z)), grid.CellToLocal(new Vector3Int(newPosition.max.x, newPosition.max.y, newPosition.min.z)), grid.CellToLocal(new Vector3Int(newPosition.min.x, newPosition.max.y, newPosition.min.z)) }; Handles.color = Color.blue; var i = 0; for (var j = cellLocals.Length - 1; i < cellLocals.Length; j = i++) { Handles.DrawLine(cellLocals[j], cellLocals[i]); } } Handles.Label(grid.CellToWorld(new Vector3Int(position.x, position.y, coordinateBrush.z)), new Vector3Int(position.x, position.y, coordinateBrush.z).ToString()); }
/// <summary>Callback for registering an Undo action before the GridBrushBase does the current GridBrushBase::ref::Tool action.</summary> /// <param name="brushTarget">Target of the GridBrushBase::ref::Tool operation. By default the currently selected GameObject.</param> /// <param name="tool">Current GridBrushBase::ref::Tool selected.</param> /// <remarks>Implement this for any special Undo behaviours when a brush is used.</remarks> public override void RegisterUndo(GameObject brushTarget, GridBrushBase.Tool tool) { if (brushTarget != null) { Undo.RegisterCompleteObjectUndo(new Object[] { brushTarget, brushTarget.GetComponent <Tilemap>() }, tool.ToString()); } }
public override void RegisterUndo(GameObject layer, GridBrushBase.Tool tool) { foreach (Tilemap tilemap in layer.GetComponentsInChildren <Tilemap>()) { Undo.RegisterCompleteObjectUndo(tilemap, "Paint"); } }
/// <summary>Callback for registering an Undo action before the GridBrushBase does the current GridBrushBase::ref::Tool action.</summary> /// <param name="brushTarget">Target of the GridBrushBase::ref::Tool operation. By default the currently selected GameObject.</param> /// <param name="tool">Current GridBrushBase::ref::Tool selected.</param> /// <remarks>Implement this for any special Undo behaviours when a brush is used.</remarks> public override void RegisterUndo(GameObject brushTarget, GridBrushBase.Tool tool) { if (brushTarget != null) { Undo.RegisterFullObjectHierarchyUndo(brushTarget, tool.ToString()); } }
public static EditMode.SceneViewEditMode BrushToolToEditMode(GridBrushBase.Tool tool) { switch (tool) { case GridBrushBase.Tool.Box: return(EditMode.SceneViewEditMode.GridBox); case GridBrushBase.Tool.Erase: return(EditMode.SceneViewEditMode.GridEraser); case GridBrushBase.Tool.FloodFill: return(EditMode.SceneViewEditMode.GridFloodFill); case GridBrushBase.Tool.Paint: return(EditMode.SceneViewEditMode.GridPainting); case GridBrushBase.Tool.Pick: return(EditMode.SceneViewEditMode.GridPicking); case GridBrushBase.Tool.Select: return(EditMode.SceneViewEditMode.GridSelect); case GridBrushBase.Tool.Move: return(EditMode.SceneViewEditMode.GridMove); } return(EditMode.SceneViewEditMode.GridPainting); }
public override void RegisterUndo(GameObject layer, GridBrushBase.Tool tool) { GridInformation info = BrushUtility.GetRootGridInformation(false); if (info != null) { Undo.RegisterFullObjectHierarchyUndo(info, tool.ToString()); } }
public override void OnToolDeactivated(GridBrushBase.Tool tool) { base.OnToolDeactivated(tool); if (previewBrush != null) { DestroyImmediate(previewBrush); } }
/// <summary>Callback for registering an Undo action before the GridBrushBase does the current GridBrushBase::ref::Tool action.</summary> /// <param name="brushTarget">Target of the GridBrushBase::ref::Tool operation. By default the currently selected GameObject.</param> /// <param name="tool">Current GridBrushBase::ref::Tool selected.</param> /// <remarks>Implement this for any special Undo behaviours when a brush is used.</remarks> public override void RegisterUndo(GameObject brushTarget, GridBrushBase.Tool tool) { if (brushTarget != null) { var tilemap = brushTarget.GetComponent <Tilemap>(); if (tilemap != null) { RegisterUndoForTilemap(tilemap, tool.ToString()); } } }
public virtual void ClearPreview() { if (!(this.m_LastGrid == null)) { BoundsInt?lastBounds = this.m_LastBounds; if (lastBounds.HasValue && !(this.m_LastBrushTarget == null)) { GridBrushBase.Tool?lastTool = this.m_LastTool; if (lastTool.HasValue) { Tilemap component = this.m_LastBrushTarget.GetComponent <Tilemap>(); if (component != null) { GridBrushBase.Tool?lastTool2 = this.m_LastTool; if (lastTool2.HasValue) { GridBrushBase.Tool value = lastTool2.Value; if (value != GridBrushBase.Tool.FloodFill) { if (value != GridBrushBase.Tool.Box) { if (value == GridBrushBase.Tool.Paint) { foreach (Vector3Int current in this.m_LastBounds.Value.allPositionsWithin) { GridBrushEditor.ClearTilemapPreview(component, current); } } } else { Vector3Int position = this.m_LastBounds.Value.position; Vector3Int a = position + this.m_LastBounds.Value.size; BoundsInt boundsInt = new BoundsInt(position, a - position); foreach (Vector3Int current2 in boundsInt.allPositionsWithin) { GridBrushEditor.ClearTilemapPreview(component, current2); } } } else { component.ClearAllEditorPreviewTiles(); } } } this.m_LastBrushTarget = null; this.m_LastGrid = null; this.m_LastBounds = null; this.m_LastTool = null; } } } }
public override void OnPaintSceneGUI(GridLayout gridLayout, GameObject brushTarget, BoundsInt position, GridBrushBase.Tool tool, bool executing) { BoundsInt gizmoRect = position; if (tool == GridBrushBase.Tool.Paint || tool == GridBrushBase.Tool.Erase) { gizmoRect = new BoundsInt(position.min - brush.pivot, brush.size); } base.OnPaintSceneGUI(gridLayout, brushTarget, gizmoRect, tool, executing); }
public override void RegisterUndo(GameObject brushTarget, GridBrushBase.Tool tool) { if (brushTarget != null) { var tilemap = brushTarget.GetComponent <Tilemap>(); if (tilemap != null) { Undo.RecordObject(tilemap, tool.ToString()); } Undo.RegisterFullObjectHierarchyUndo(brushTarget, tool.ToString()); } }
/// <summary> /// Callback for painting the GUI for the GridBrush in the Scene View. /// The CoordinateBrush Editor overrides this to draw the current coordinates of the brush. /// </summary> /// <param name="gridLayout">Grid that the brush is being used on.</param> /// <param name="brushTarget">Target of the GridBrushBase::ref::Tool operation. By default the currently selected GameObject.</param> /// <param name="position">Current selected location of the brush.</param> /// <param name="tool">Current GridBrushBase::ref::Tool selected.</param> /// <param name="executing">Whether brush is being used.</param> public override void OnPaintSceneGUI(GridLayout grid, GameObject brushTarget, BoundsInt position, GridBrushBase.Tool tool, bool executing) { base.OnPaintSceneGUI(grid, brushTarget, position, tool, executing); var labelText = "Pos: " + position.position; if (position.size.x > 1 || position.size.y > 1) { labelText += " Size: " + position.size; } Handles.Label(grid.CellToWorld(position.position), labelText); }
public override void OnPaintSceneGUI(GridLayout gridLayout, GameObject brushTarget, BoundsInt position, GridBrushBase.Tool tool, bool executing) { CreateEditor(); if (ValidatePreview(gridLayout)) { for (int i = 0; i < editors.Length; ++i) { editors[i].OnPaintSceneGUI(gridLayout, layerBrush.brushTargets[i], position, tool, executing); } } else { base.OnPaintSceneGUI(gridLayout, brushTarget, position, tool, executing); } }
public override void OnPaintSceneGUI(GridLayout grid, GameObject brushTarget, BoundsInt position, GridBrushBase.Tool tool, bool executing) { base.OnPaintSceneGUI(grid, brushTarget, position, tool, executing); if (lineBrush.lineStartActive) { Tilemap tilemap = brushTarget.GetComponent <Tilemap>(); if (tilemap != null) { lastTilemap = tilemap; } // 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) { PaintPreview(grid, brushTarget, position.min); } else { foreach (var point in ClearRectBrush.GetPointsInRect(startPos, endPos)) { Vector3Int paintPos = new Vector3Int(point.x, point.y, position.z); PaintPreview(grid, brushTarget, paintPos); } } 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(); } } }
private void DrawExitPreview(GridLayout gridLayout, BoundsInt bounds, GridBrushBase.Tool tool, Vector3 prefabOffset) { if (!previewGO) { return; } if (tool == GridBrushBase.Tool.Paint) { previewGO.SetActive(true); previewGO.transform.position = gridLayout.CellToLocalInterpolated(bounds.position + prefabOffset); previewGO.transform.rotation = brush.m_PrefabRotation * Quaternion.AngleAxis(180f, Vector3.forward); } else { previewGO.SetActive(false); } }
public override void RegisterUndo(GameObject brushTarget, GridBrushBase.Tool tool) { if (layerBrush.brushTargets == null || layerBrush.brushTargets.Length == 0) { return; } var count = layerBrush.brushTargets.Length; var undoObjects = new UnityEngine.Object[count * 2]; for (int i = 0; i < layerBrush.brushTargets.Length; i++) { undoObjects[i] = layerBrush.brushTargets[i]; undoObjects[i + count] = layerBrush.brushTargets[i].GetComponent <Tilemap>(); } Undo.RegisterCompleteObjectUndo(undoObjects, tool.ToString()); }
public void OnEditModeStart(IToolModeOwner owner, EditMode.SceneViewEditMode editMode) { if (GridPaintingState.gridBrush != null && PaintableGrid.InGridEditMode() && GridPaintingState.activeBrushEditor != null) { GridBrushBase.Tool tool = PaintableGrid.EditModeToBrushTool(editMode); GridPaintingState.activeBrushEditor.OnToolActivated(tool); this.m_PreviousToolActivatedEditor = GridPaintingState.activeBrushEditor; this.m_PreviousToolActivated = tool; for (int i = 0; i < GridPaintPaletteWindow.Styles.sceneViewEditModes.Length; i++) { if (GridPaintPaletteWindow.Styles.sceneViewEditModes[i] == editMode) { Cursor.SetCursor(GridPaintPaletteWindow.Styles.mouseCursorTextures[i], (!(GridPaintPaletteWindow.Styles.mouseCursorTextures[i] != null)) ? Vector2.zero : GridPaintPaletteWindow.Styles.mouseCursorOSHotspot[(int)SystemInfo.operatingSystemFamily], CursorMode.Auto); break; } } } base.Repaint(); }
public override void OnPaintSceneGUI(GridLayout grid, GameObject brushTarget, BoundsInt position, GridBrushBase.Tool tool, bool executing) { base.OnPaintSceneGUI(grid, brushTarget, position, tool, executing); var labelText = "Pos: " + new Vector3Int(position.x, position.y, 0); if (position.size.x > 1 || position.size.y > 1) { labelText += " Size: " + new Vector2Int(position.size.x, position.size.y); } var style = new GUIStyle() { normal = { textColor = Color.yellow } }; Handles.Label(grid.CellToWorld(new Vector3Int(position.x, position.y, 0)), labelText, style); }
public static EditMode.SceneViewEditMode BrushToolToEditMode(GridBrushBase.Tool tool) { EditMode.SceneViewEditMode result; switch (tool) { case GridBrushBase.Tool.Select: result = EditMode.SceneViewEditMode.GridSelect; break; case GridBrushBase.Tool.Move: result = EditMode.SceneViewEditMode.GridMove; break; case GridBrushBase.Tool.Paint: result = EditMode.SceneViewEditMode.GridPainting; break; case GridBrushBase.Tool.Box: result = EditMode.SceneViewEditMode.GridBox; break; case GridBrushBase.Tool.Pick: result = EditMode.SceneViewEditMode.GridPicking; break; case GridBrushBase.Tool.Erase: result = EditMode.SceneViewEditMode.GridEraser; break; case GridBrushBase.Tool.FloodFill: result = EditMode.SceneViewEditMode.GridFloodFill; break; default: result = EditMode.SceneViewEditMode.GridPainting; break; } return(result); }
public void OnEditModeStart(IToolModeOwner owner, EditMode.SceneViewEditMode editMode) { if (GridPaintingState.gridBrush != null && PaintableGrid.InGridEditMode() && GridPaintingState.activeBrushEditor != null) { GridBrushBase.Tool tool = PaintableGrid.EditModeToBrushTool(editMode); GridPaintingState.activeBrushEditor.OnToolActivated(tool); m_PreviousToolActivatedEditor = GridPaintingState.activeBrushEditor; m_PreviousToolActivated = tool; for (int i = 0; i < k_SceneViewEditModes.Length; ++i) { if (k_SceneViewEditModes[i] == editMode) { Cursor.SetCursor(MouseStyles.mouseCursorTextures[i], MouseStyles.mouseCursorTextures[i] != null ? MouseStyles.mouseCursorOSHotspot[(int)SystemInfo.operatingSystemFamily] : Vector2.zero, CursorMode.Auto); break; } } } Repaint(); }
public override void OnPaintSceneGUI(GridLayout grid, GameObject brushTarget, BoundsInt position, GridBrushBase.Tool tool, bool executing) { base.OnPaintSceneGUI(grid, brushTarget, position, tool, executing); }
public override void OnPaintSceneGUI(GridLayout grid, GameObject layer, BoundsInt position, GridBrushBase.Tool tool, bool executing) { LevelBrush.InitializeLevelCacheIfNecessary(); var invalidFloors = LevelBrush.GetAllInvalidFloors(); BrushEditorUtility.BeginQuads(new Color(1f, 0f, 0f, 0.5f)); foreach (var pos in invalidFloors) { BrushEditorUtility.DrawQuadBatched(grid, pos); } BrushEditorUtility.EndQuads(); base.OnPaintSceneGUI(grid, layer, position, tool, executing); }
public override void OnPaintSceneGUI(GridLayout grid, GameObject brushTarget, BoundsInt position, GridBrushBase.Tool tool, bool executing) { base.OnPaintSceneGUI(grid, brushTarget, position, tool, executing); if (position.z != 0) { var zPosition = new Vector3Int(position.min.x, position.min.y, position.min.z); BoundsInt newPosition = new BoundsInt(zPosition, position.size); Vector3[] cellLocals = new Vector3[] { grid.CellToLocal(new Vector3Int(newPosition.min.x, newPosition.min.y, newPosition.min.z)), grid.CellToLocal(new Vector3Int(newPosition.max.x, newPosition.min.y, newPosition.min.z)), grid.CellToLocal(new Vector3Int(newPosition.max.x, newPosition.max.y, newPosition.min.z)), grid.CellToLocal(new Vector3Int(newPosition.min.x, newPosition.max.y, newPosition.min.z)) }; Handles.color = Color.blue; int i = 0; for (int j = cellLocals.Length - 1; i < cellLocals.Length; j = i++) { Handles.DrawLine(cellLocals[j], cellLocals[i]); } } var labelText = "Pos: " + new Vector3Int(position.x, position.y, position.z); if (position.size.x > 1 || position.size.y > 1) { labelText += " Size: " + new Vector2Int(position.size.x, position.size.y); } Handles.Label(grid.CellToWorld(new Vector3Int(position.x, position.y, position.z)), labelText); }
internal static void OnPaintSceneGUIInternal(GridLayout gridLayout, GameObject brushTarget, BoundsInt position, GridBrushBase.Tool tool, bool executing) { if (Event.current.type == EventType.Repaint) { Color color = Color.white; if (tool == GridBrushBase.Tool.Pick && executing) { color = Color.cyan; } if (tool == GridBrushBase.Tool.Paint && executing) { color = Color.yellow; } if (tool == GridBrushBase.Tool.Select || tool == GridBrushBase.Tool.Move) { if (executing) { color = GridBrushEditorBase.Styles.executingColor; } else if (GridSelection.active) { color = GridBrushEditorBase.Styles.activeColor; } } GridEditorUtility.DrawGridMarquee(gridLayout, position, color); } }
public override void OnToolActivated(GridBrushBase.Tool tool) { LevelBrush.ResetLevelCache(); }
public virtual void RegisterUndo(GameObject brushTarget, GridBrushBase.Tool tool) { }
public virtual void OnToolDeactivated(GridBrushBase.Tool tool) { }
public virtual void OnPaintSceneGUI(GridLayout gridLayout, GameObject brushTarget, BoundsInt position, GridBrushBase.Tool tool, bool executing) { GridBrushEditorBase.OnPaintSceneGUIInternal(gridLayout, brushTarget, position, tool, executing); }
public override void RegisterUndo(GameObject layer, GridBrushBase.Tool tool) { Undo.RegisterCompleteObjectUndo(LevelBrush.GetWall(), "Paint"); Undo.RegisterCompleteObjectUndo(LevelBrush.GetFloor(), "Paint"); }
public override void OnPaintSceneGUI(GridLayout gridLayout, GameObject brushTarget, BoundsInt position, GridBrushBase.Tool tool, bool executing) { base.OnPaintSceneGUI(gridLayout, brushTarget, position, tool, executing); if (brushTarget != null) { var tilemap = brushTarget.GetComponent <Tilemap>(); tilemap.ClearAllEditorPreviewTiles(); } PaintPreview(gridLayout, brushTarget, new Vector3Int(position.x, position.y, position.z)); var min = new Vector3Int(position.x - 1, position.y - 1, position.z); var max = new Vector3Int(position.x + 2, position.y + 2, position.z); var p1 = new Vector3(min.x, min.y, min.z); var p2 = new Vector3(max.x, min.y, min.z); var p3 = new Vector3(max.x, max.y, min.z); var p4 = new Vector3(min.x, max.y, min.z); Handles.DrawLine(p1, p2); Handles.DrawLine(p2, p3); Handles.DrawLine(p3, p4); Handles.DrawLine(p4, p1); }