private void CallOnPaintSceneGUI() { bool flag = GridSelection.active && GridSelection.target == this.brushTarget; if (flag || !(GridPaintingState.activeGrid != this)) { RectInt marqueeRect = new RectInt(base.mouseGridPosition, new Vector2Int(1, 1)); if (this.m_MarqueeStart.HasValue) { marqueeRect = GridEditorUtility.GetMarqueeRect(base.mouseGridPosition, this.m_MarqueeStart.Value); } else if (flag) { marqueeRect = new RectInt(GridSelection.position.xMin, GridSelection.position.yMin, GridSelection.position.size.x, GridSelection.position.size.y); } GridLayout gridLayout = (!(this.tilemap != null)) ? this.grid : this.tilemap; if (GridPaintingState.activeBrushEditor != null) { GridPaintingState.activeBrushEditor.OnPaintSceneGUI(gridLayout, this.brushTarget, new BoundsInt(new Vector3Int(marqueeRect.x, marqueeRect.y, 0), new Vector3Int(marqueeRect.width, marqueeRect.height, 1)), PaintableGrid.EditModeToBrushTool(EditMode.editMode), this.m_MarqueeStart.HasValue || base.executing); } else { GridBrushEditorBase.OnPaintSceneGUIInternal(gridLayout, this.brushTarget, new BoundsInt(new Vector3Int(marqueeRect.x, marqueeRect.y, 0), new Vector3Int(marqueeRect.width, marqueeRect.height, 1)), PaintableGrid.EditModeToBrushTool(EditMode.editMode), this.m_MarqueeStart.HasValue || base.executing); } } }
void CallOnPaintSceneGUI() { bool hasSelection = GridSelection.active && GridSelection.target == brushTarget; if (!hasSelection && GridPaintingState.activeGrid != this) { return; } RectInt rect = new RectInt(mouseGridPosition, new Vector2Int(1, 1)); if (m_MarqueeStart.HasValue) { rect = GridEditorUtility.GetMarqueeRect(mouseGridPosition, m_MarqueeStart.Value); } else if (hasSelection) { rect = new RectInt(GridSelection.position.xMin, GridSelection.position.yMin, GridSelection.position.size.x, GridSelection.position.size.y); } var layoutGrid = tilemap != null ? tilemap as GridLayout : grid as GridLayout; BoundsInt brushBounds = new BoundsInt(new Vector3Int(rect.x, rect.y, zPosition), new Vector3Int(rect.width, rect.height, 1)); if (GridPaintingState.activeBrushEditor != null) { GridPaintingState.activeBrushEditor.OnPaintSceneGUI(layoutGrid, brushTarget, brushBounds , EditModeToBrushTool(EditMode.editMode), m_MarqueeStart.HasValue || executing); } else // Fallback when user hasn't defined custom editor { GridBrushEditorBase.OnPaintSceneGUIInternal(layoutGrid, brushTarget, brushBounds , EditModeToBrushTool(EditMode.editMode), m_MarqueeStart.HasValue || executing); } }
public static RectInt GetBounds(GameObject palette) { RectInt result; if (palette == null) { result = default(RectInt); } else { Vector2Int p = new Vector2Int(2147483647, 2147483647); Vector2Int p2 = new Vector2Int(-2147483648, -2147483648); Tilemap[] componentsInChildren = palette.GetComponentsInChildren <Tilemap>(); for (int i = 0; i < componentsInChildren.Length; i++) { Tilemap tilemap = componentsInChildren[i]; Vector3Int editorPreviewOrigin = tilemap.editorPreviewOrigin; Vector3Int vector3Int = editorPreviewOrigin + tilemap.editorPreviewSize; Vector2Int vector2Int = new Vector2Int(Mathf.Min(editorPreviewOrigin.x, vector3Int.x), Mathf.Min(editorPreviewOrigin.y, vector3Int.y)); Vector2Int vector2Int2 = new Vector2Int(Mathf.Max(editorPreviewOrigin.x, vector3Int.x), Mathf.Max(editorPreviewOrigin.y, vector3Int.y)); p = new Vector2Int(Mathf.Min(p.x, vector2Int.x), Mathf.Min(p.y, vector2Int.y)); p2 = new Vector2Int(Mathf.Max(p2.x, vector2Int2.x), Mathf.Max(p2.y, vector2Int2.y)); } result = GridEditorUtility.GetMarqueeRect(p, p2); } return(result); }
public void GetMarqueeRect_SamePoint() { var point = new Vector2Int(5, -4); var marquee = GridEditorUtility.GetMarqueeRect(point, point); Assert.AreEqual(new RectInt(5, -4, 1, 1), marquee); }
private void HandleBrushPicking() { Event evt = Event.current; if (evt.type == EventType.MouseDown && IsPickingEvent(evt) && !isHotControl) { m_ModeBeforePicking = EditMode.SceneViewEditMode.GridPainting; if (inEditMode && EditMode.editMode != EditMode.SceneViewEditMode.GridPicking) { m_ModeBeforePicking = EditMode.editMode; EditMode.ChangeEditMode(EditMode.SceneViewEditMode.GridPicking, GridPaintingState.instance); } m_MarqueeStart = mouseGridPosition; m_MarqueeType = MarqueeType.Pick; s_LastActivePaintableGrid = this; Event.current.Use(); GUI.changed = true; GUIUtility.hotControl = m_PermanentControlID; OnBrushPickStarted(); } if (evt.type == EventType.MouseDrag && isHotControl && m_MarqueeStart.HasValue && m_MarqueeType == MarqueeType.Pick && IsPickingEvent(evt)) { RectInt rect = GridEditorUtility.GetMarqueeRect(m_MarqueeStart.Value, mouseGridPosition); OnBrushPickDragged(new BoundsInt(new Vector3Int(rect.xMin, rect.yMin, 0), new Vector3Int(rect.size.x, rect.size.y, 1))); Event.current.Use(); GUI.changed = true; } if (evt.rawType == EventType.MouseUp && isHotControl && m_MarqueeStart.HasValue && m_MarqueeType == MarqueeType.Pick && IsPickingEvent(evt)) { // Check if event only occurred in the PaintableGrid window as evt.type will filter for this if (evt.type == EventType.MouseUp && m_MarqueeType == MarqueeType.Pick) { RectInt rect = GridEditorUtility.GetMarqueeRect(m_MarqueeStart.Value, mouseGridPosition); Vector2Int pivot = GetMarqueePivot(m_MarqueeStart.Value, mouseGridPosition); PickBrush(new BoundsInt(new Vector3Int(rect.xMin, rect.yMin, 0), new Vector3Int(rect.size.x, rect.size.y, 1)), new Vector3Int(pivot.x, pivot.y, 0)); if (inEditMode && EditMode.editMode != m_ModeBeforePicking) { EditMode.ChangeEditMode(m_ModeBeforePicking, GridPaintingState.instance); } GridPaletteBrushes.ActiveGridBrushAssetChanged(); s_LastActivePaintableGrid = this; Event.current.Use(); GUI.changed = true; } else // Event occurred outside of PaintableGrid window, cancel the pick event { OnBrushPickCancelled(); } m_MarqueeType = MarqueeType.None; m_MarqueeStart = null; GUIUtility.hotControl = 0; InspectorWindow.RepaintAllInspectors(); } }
public void GetMarqueeRect_AlternatePoints() { var xPoint = new Vector2Int(5, -4); var yPoint = new Vector2Int(-4, 5); var marquee = GridEditorUtility.GetMarqueeRect(xPoint, yPoint); Assert.AreEqual(new RectInt(-4, -4, 10, 10), marquee); }
public void GetMarqueeRect_MinMaxPoints() { var minPoint = Vector2Int.one * -4; var maxPoint = Vector2Int.one * 4; var marquee = GridEditorUtility.GetMarqueeRect(minPoint, maxPoint); Assert.AreEqual(new RectInt(-4, -4, 9, 9), marquee); }
public static RectInt GetMinMaxRect(List <Vector2Int> positions) { if (positions == null || positions.Count == 0) { return(new RectInt()); } return(GridEditorUtility.GetMarqueeRect( new Vector2Int(positions.Min(p1 => p1.x), positions.Min(p1 => p1.y)), new Vector2Int(positions.Max(p1 => p1.x), positions.Max(p1 => p1.y)) )); }
public static RectInt GetMinMaxRect(List <Vector2Int> positions) { RectInt result; if (positions == null || positions.Count == 0) { result = default(RectInt); } else { result = GridEditorUtility.GetMarqueeRect(new Vector2Int(positions.Min((Vector2Int p1) => p1.x), positions.Min((Vector2Int p1) => p1.y)), new Vector2Int(positions.Max((Vector2Int p1) => p1.x), positions.Max((Vector2Int p1) => p1.y))); } return(result); }
private void HandleBrushPicking() { Event current = Event.current; if (current.type == EventType.MouseDown && this.IsPickingEvent(current) && !this.isHotControl) { this.m_ModeBeforePicking = EditMode.SceneViewEditMode.GridPainting; if (this.inEditMode && EditMode.editMode != EditMode.SceneViewEditMode.GridPicking) { this.m_ModeBeforePicking = EditMode.editMode; EditMode.ChangeEditMode(EditMode.SceneViewEditMode.GridPicking, ScriptableSingleton <GridPaintingState> .instance); } this.m_MarqueeStart = new Vector2Int?(this.mouseGridPosition); this.m_MarqueeType = PaintableGrid.MarqueeType.Pick; PaintableGrid.s_LastActivePaintableGrid = this; Event.current.Use(); GUI.changed = true; GUIUtility.hotControl = this.m_PermanentControlID; this.OnBrushPickStarted(); } if (current.type == EventType.MouseDrag && this.isHotControl && this.m_MarqueeStart.HasValue && this.m_MarqueeType == PaintableGrid.MarqueeType.Pick && this.IsPickingEvent(current)) { RectInt marqueeRect = GridEditorUtility.GetMarqueeRect(this.m_MarqueeStart.Value, this.mouseGridPosition); this.OnBrushPickDragged(new BoundsInt(new Vector3Int(marqueeRect.xMin, marqueeRect.yMin, 0), new Vector3Int(marqueeRect.size.x, marqueeRect.size.y, 1))); Event.current.Use(); GUI.changed = true; } if (current.type == EventType.MouseUp && this.m_MarqueeStart.HasValue && this.m_MarqueeType == PaintableGrid.MarqueeType.Pick && this.IsPickingEvent(current)) { RectInt marqueeRect2 = GridEditorUtility.GetMarqueeRect(this.m_MarqueeStart.Value, this.mouseGridPosition); if (this.isHotControl) { Vector2Int marqueePivot = this.GetMarqueePivot(this.m_MarqueeStart.Value, this.mouseGridPosition); this.PickBrush(new BoundsInt(new Vector3Int(marqueeRect2.xMin, marqueeRect2.yMin, 0), new Vector3Int(marqueeRect2.size.x, marqueeRect2.size.y, 1)), new Vector3Int(marqueePivot.x, marqueePivot.y, 0)); if (this.inEditMode && EditMode.editMode != this.m_ModeBeforePicking) { EditMode.ChangeEditMode(this.m_ModeBeforePicking, ScriptableSingleton <GridPaintingState> .instance); } GridPaletteBrushes.ActiveGridBrushAssetChanged(); PaintableGrid.s_LastActivePaintableGrid = this; InspectorWindow.RepaintAllInspectors(); Event.current.Use(); GUI.changed = true; GUIUtility.hotControl = 0; } this.m_MarqueeType = PaintableGrid.MarqueeType.None; this.m_MarqueeStart = null; } }
private void HandleBoxTool() { Event evt = Event.current; if (evt.type == EventType.MouseDown && evt.button == 0 && !evt.alt && EditMode.editMode == EditMode.SceneViewEditMode.GridBox) { m_MarqueeStart = mouseGridPosition; m_MarqueeType = MarqueeType.Box; Event.current.Use(); GUI.changed = true; executing = true; GUIUtility.hotControl = m_PermanentControlID; } if (evt.type == EventType.MouseDrag && evt.button == 0 && EditMode.editMode == EditMode.SceneViewEditMode.GridBox) { if (isHotControl && m_MarqueeStart.HasValue) { Event.current.Use(); executing = true; GUI.changed = true; } } if (evt.type == EventType.MouseUp && evt.button == 0 && EditMode.editMode == EditMode.SceneViewEditMode.GridBox) { if (isHotControl && m_MarqueeStart.HasValue) { RegisterUndo(); RectInt rect = GridEditorUtility.GetMarqueeRect(m_MarqueeStart.Value, mouseGridPosition); if (evt.shift) { BoxErase(new BoundsInt(rect.x, rect.y, 0, rect.size.x, rect.size.y, 1)); } else { BoxFill(new BoundsInt(rect.x, rect.y, 0, rect.size.x, rect.size.y, 1)); } Event.current.Use(); executing = false; GUI.changed = true; GUIUtility.hotControl = 0; } m_MarqueeStart = null; m_MarqueeType = MarqueeType.None; } }
private void HandleBoxTool() { Event current = Event.current; if (current.type == EventType.MouseDown && current.button == 0 && !current.alt && EditMode.editMode == EditMode.SceneViewEditMode.GridBox) { this.m_MarqueeStart = new Vector2Int?(this.mouseGridPosition); this.m_MarqueeType = PaintableGrid.MarqueeType.Box; Event.current.Use(); GUI.changed = true; this.executing = true; GUIUtility.hotControl = this.m_PermanentControlID; } if (current.type == EventType.MouseDrag && current.button == 0 && EditMode.editMode == EditMode.SceneViewEditMode.GridBox) { if (this.isHotControl && this.m_MarqueeStart.HasValue) { Event.current.Use(); this.executing = true; GUI.changed = true; } } if (current.type == EventType.MouseUp && current.button == 0 && EditMode.editMode == EditMode.SceneViewEditMode.GridBox) { if (this.isHotControl && this.m_MarqueeStart.HasValue) { this.RegisterUndo(); RectInt marqueeRect = GridEditorUtility.GetMarqueeRect(this.m_MarqueeStart.Value, this.mouseGridPosition); if (current.shift) { this.BoxErase(new BoundsInt(marqueeRect.x, marqueeRect.y, 0, marqueeRect.size.x, marqueeRect.size.y, 1)); } else { this.BoxFill(new BoundsInt(marqueeRect.x, marqueeRect.y, 0, marqueeRect.size.x, marqueeRect.size.y, 1)); } Event.current.Use(); this.executing = false; GUI.changed = true; GUIUtility.hotControl = 0; } this.m_MarqueeStart = null; this.m_MarqueeType = PaintableGrid.MarqueeType.None; } }
private void HandleSelectTool() { Event evt = Event.current; if (evt.type == EventType.MouseDown && evt.button == 0 && !evt.alt && (EditMode.editMode == EditMode.SceneViewEditMode.GridSelect || (EditMode.editMode == EditMode.SceneViewEditMode.GridMove && evt.control))) { if (EditMode.editMode == EditMode.SceneViewEditMode.GridMove && evt.control) { EditMode.ChangeEditMode(EditMode.SceneViewEditMode.GridSelect, GridPaintingState.instance); } m_PreviousMove = null; m_MarqueeStart = mouseGridPosition; m_MarqueeType = MarqueeType.Select; s_LastActivePaintableGrid = this; GUIUtility.hotControl = m_PermanentControlID; Event.current.Use(); } if (evt.rawType == EventType.MouseUp && evt.button == 0 && !evt.alt && m_MarqueeStart.HasValue && isHotControl && EditMode.editMode == EditMode.SceneViewEditMode.GridSelect) { // Check if event only occurred in the PaintableGrid window as evt.type will filter for this if (evt.type == EventType.MouseUp && m_MarqueeType == MarqueeType.Select) { RectInt rect = GridEditorUtility.GetMarqueeRect(m_MarqueeStart.Value, mouseGridPosition); Select(new BoundsInt(new Vector3Int(rect.xMin, rect.yMin, 0), new Vector3Int(rect.size.x, rect.size.y, 1))); Event.current.Use(); } if (evt.control) { EditMode.ChangeEditMode(EditMode.SceneViewEditMode.GridMove, GridPaintingState.instance); } m_MarqueeStart = null; m_MarqueeType = MarqueeType.None; InspectorWindow.RepaintAllInspectors(); GUIUtility.hotControl = 0; } if (evt.type == EventType.KeyDown && evt.keyCode == KeyCode.Escape && !m_MarqueeStart.HasValue && !m_PreviousMove.HasValue) { ClearGridSelection(); Event.current.Use(); } }
private void CallOnPaintSceneGUI(Vector2Int position) { if (!unlocked && EditMode.editMode != EditMode.SceneViewEditMode.GridSelect && EditMode.editMode != EditMode.SceneViewEditMode.GridPicking) { return; } bool hasSelection = GridSelection.active && GridSelection.target == brushTarget; if (!hasSelection && GridPaintingState.activeGrid != this) { return; } GridBrushBase brush = GridPaintingState.gridBrush; if (brush == null) { return; } RectInt rect = new RectInt(position, new Vector2Int(1, 1)); if (m_MarqueeStart.HasValue) { rect = GridEditorUtility.GetMarqueeRect(position, m_MarqueeStart.Value); } else if (hasSelection) { rect = new RectInt(GridSelection.position.xMin, GridSelection.position.yMin, GridSelection.position.size.x, GridSelection.position.size.y); } var gridLayout = tilemap != null ? tilemap as GridLayout : grid as GridLayout; BoundsInt brushBounds = new BoundsInt(new Vector3Int(rect.x, rect.y, 0), new Vector3Int(rect.width, rect.height, 1)); if (GridPaintingState.activeBrushEditor != null) { GridPaintingState.activeBrushEditor.OnPaintSceneGUI(gridLayout, brushTarget, brushBounds, EditModeToBrushTool(EditMode.editMode), m_MarqueeStart.HasValue || executing); } else // Fallback when user hasn't defined custom editor { GridBrushEditorBase.OnPaintSceneGUIInternal(gridLayout, Selection.activeGameObject, brushBounds, EditModeToBrushTool(EditMode.editMode), m_MarqueeStart.HasValue || executing); } }
private void HandleSelectTool() { Event current = Event.current; if (current.type == EventType.MouseDown && current.button == 0 && !current.alt && (EditMode.editMode == EditMode.SceneViewEditMode.GridSelect || (EditMode.editMode == EditMode.SceneViewEditMode.GridMove && current.control))) { if (EditMode.editMode == EditMode.SceneViewEditMode.GridMove && current.control) { EditMode.ChangeEditMode(EditMode.SceneViewEditMode.GridSelect, ScriptableSingleton <GridPaintingState> .instance); } this.m_PreviousMove = null; this.m_MarqueeStart = new Vector2Int?(this.mouseGridPosition); this.m_MarqueeType = PaintableGrid.MarqueeType.Select; PaintableGrid.s_LastActivePaintableGrid = this; GUIUtility.hotControl = this.m_PermanentControlID; Event.current.Use(); } if (current.type == EventType.MouseUp && current.button == 0 && !current.alt && this.m_MarqueeStart.HasValue && GUIUtility.hotControl == this.m_PermanentControlID && EditMode.editMode == EditMode.SceneViewEditMode.GridSelect) { if (this.m_MarqueeStart.HasValue && this.m_MarqueeType == PaintableGrid.MarqueeType.Select) { RectInt marqueeRect = GridEditorUtility.GetMarqueeRect(this.m_MarqueeStart.Value, this.mouseGridPosition); this.Select(new BoundsInt(new Vector3Int(marqueeRect.xMin, marqueeRect.yMin, 0), new Vector3Int(marqueeRect.size.x, marqueeRect.size.y, 1))); this.m_MarqueeStart = null; this.m_MarqueeType = PaintableGrid.MarqueeType.None; InspectorWindow.RepaintAllInspectors(); } if (current.control) { EditMode.ChangeEditMode(EditMode.SceneViewEditMode.GridMove, ScriptableSingleton <GridPaintingState> .instance); } GUIUtility.hotControl = 0; Event.current.Use(); } if (current.type == EventType.KeyDown && current.keyCode == KeyCode.Escape && !this.m_MarqueeStart.HasValue && !this.m_PreviousMove.HasValue) { this.ClearGridSelection(); Event.current.Use(); } }
public static RectInt GetBounds(GameObject palette) { if (palette == null) { return(new RectInt()); } Vector2Int min = new Vector2Int(int.MaxValue, int.MaxValue); Vector2Int max = new Vector2Int(int.MinValue, int.MinValue); foreach (var tilemap in palette.GetComponentsInChildren <Tilemap>()) { Vector3Int p1 = tilemap.editorPreviewOrigin; Vector3Int p2 = p1 + tilemap.editorPreviewSize; Vector2Int tilemapMin = new Vector2Int(Mathf.Min(p1.x, p2.x), Mathf.Min(p1.y, p2.y)); Vector2Int tilemapMax = new Vector2Int(Mathf.Max(p1.x, p2.x), Mathf.Max(p1.y, p2.y)); min = new Vector2Int(Mathf.Min(min.x, tilemapMin.x), Mathf.Min(min.y, tilemapMin.y)); max = new Vector2Int(Mathf.Max(max.x, tilemapMax.x), Mathf.Max(max.y, tilemapMax.y)); } return(GridEditorUtility.GetMarqueeRect(min, max)); }