private void HandleMouseEnterLeave() { if (Event.current.type == EventType.MouseEnterWindow) { if (PaintableGrid.InGridEditMode()) { GridPaintingState.activeGrid = this; Event.current.Use(); } } else if (Event.current.type == EventType.MouseLeaveWindow) { if (m_PreviousMousePosition.HasValue && guiRect.Contains(m_PreviousMousePosition.Value) && GridPaintingState.activeBrushEditor != null) { GridPaintingState.activeBrushEditor.OnMouseLeave(); } m_PreviousMousePosition = null; if (PaintableGrid.InGridEditMode()) { GridPaintingState.activeGrid = null; Event.current.Use(); Repaint(); } } }
protected override void RegisterUndo() { if (GridPaintingState.activeBrushEditor != null) { GridPaintingState.activeBrushEditor.RegisterUndo(this.brushTarget, PaintableGrid.EditModeToBrushTool(EditMode.editMode)); } }
public void OnDisable() { CallOnToolDeactivated(); instances.Remove(this); if (instances.Count <= 1) { GridPaintingState.gridBrush = null; } DestroyPreviewInstance(); DestroyImmediate(clipboardView); DestroyImmediate(m_PaintableSceneViewGrid); if (m_PreviewUtility != null) { m_PreviewUtility.Cleanup(); } m_PreviewUtility = null; if (PaintableGrid.InGridEditMode()) { EditMode.QuitEditMode(); } EditMode.editModeStarted -= OnEditModeStart; EditMode.editModeEnded -= OnEditModeEnd; Tools.onToolChanged -= ToolChanged; GridSelection.gridSelectionChanged -= OnGridSelectionChanged; SceneView.onSceneGUIDelegate -= OnSceneViewGUI; GridPaintingState.scenePaintTargetChanged -= OnScenePaintTargetChanged; GridPaintingState.brushChanged -= OnBrushChanged; GridPaintingState.UnregisterPainterInterest(this); PrefabUtility.prefabInstanceUpdated -= PrefabInstanceUpdated; ShortcutIntegration.instance.contextManager.DeregisterToolContext(m_ShortcutContext); }
private void ToolChanged(Tool from, Tool to) { if (to != Tool.None && PaintableGrid.InGridEditMode()) { EditMode.QuitEditMode(); } base.Repaint(); }
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(); } }
protected override void PickBrush(BoundsInt position, Vector3Int pickingStart) { if (!(this.grid == null) && !(this.gridBrush == null)) { this.gridBrush.Pick(this.grid, this.brushTarget, position, pickingStart); if (!PaintableGrid.InGridEditMode()) { EditMode.ChangeEditMode(EditMode.SceneViewEditMode.GridPainting, default(Bounds), ScriptableSingleton <GridPaintingState> .instance); } this.m_ActivePick = new RectInt?(new RectInt(position.min.x, position.min.y, position.size.x, position.size.y)); } }
private void CallOnToolDeactivated() { if (GridPaintingState.gridBrush != null && this.m_PreviousToolActivatedEditor != null) { this.m_PreviousToolActivatedEditor.OnToolDeactivated(this.m_PreviousToolActivated); this.m_PreviousToolActivatedEditor = null; if (!PaintableGrid.InGridEditMode()) { Cursor.SetCursor(null, Vector2.zero, CursorMode.Auto); } } }
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 HandleMoveTool() { Event evt = Event.current; if (evt.type == EventType.MouseDown && evt.button == 0 && !evt.alt && EditMode.editMode == EditMode.SceneViewEditMode.GridMove) { RegisterUndo(); Vector3Int mouse3D = new Vector3Int(mouseGridPosition.x, mouseGridPosition.y, GridSelection.position.zMin); if (GridSelection.active && GridSelection.position.Contains(mouse3D)) { GUIUtility.hotControl = m_PermanentControlID; executing = true; m_MarqueeStart = null; m_MarqueeType = MarqueeType.None; m_PreviousMove = mouseGridPosition; MoveStart(GridSelection.position); s_LastActivePaintableGrid = this; } Event.current.Use(); } if (evt.type == EventType.MouseDrag && evt.button == 0 && EditMode.editMode == EditMode.SceneViewEditMode.GridMove && isHotControl) { if (m_MouseGridPositionChanged && m_PreviousMove.HasValue) { executing = true; BoundsInt previousRect = GridSelection.position; BoundsInt previousBounds = new BoundsInt(new Vector3Int(previousRect.xMin, previousRect.yMin, 0), new Vector3Int(previousRect.size.x, previousRect.size.y, 1)); Vector2Int direction = mouseGridPosition - m_PreviousMove.Value; BoundsInt pos = GridSelection.position; pos.position = new Vector3Int(pos.x + direction.x, pos.y + direction.y, pos.z); GridSelection.position = pos; Move(previousBounds, pos); m_PreviousMove = mouseGridPosition; Event.current.Use(); } } if (evt.type == EventType.MouseUp && evt.button == 0 && m_PreviousMove.HasValue && EditMode.editMode == EditMode.SceneViewEditMode.GridMove && isHotControl) { if (m_PreviousMove.HasValue) { m_PreviousMove = null; MoveEnd(GridSelection.position); } executing = false; GUIUtility.hotControl = 0; Event.current.Use(); } }
private void HandleMoveTool() { Event current = Event.current; if (current.type == EventType.MouseDown && current.button == 0 && !current.alt && EditMode.editMode == EditMode.SceneViewEditMode.GridMove) { this.RegisterUndo(); Vector3Int position = new Vector3Int(this.mouseGridPosition.x, this.mouseGridPosition.y, GridSelection.position.zMin); if (GridSelection.active && GridSelection.position.Contains(position)) { GUIUtility.hotControl = this.m_PermanentControlID; this.executing = true; this.m_MarqueeStart = null; this.m_MarqueeType = PaintableGrid.MarqueeType.None; this.m_PreviousMove = new Vector2Int?(this.mouseGridPosition); this.MoveStart(GridSelection.position); PaintableGrid.s_LastActivePaintableGrid = this; } Event.current.Use(); } if (current.type == EventType.MouseDrag && current.button == 0 && EditMode.editMode == EditMode.SceneViewEditMode.GridMove && GUIUtility.hotControl == this.m_PermanentControlID) { if (this.m_MouseGridPositionChanged && this.m_PreviousMove.HasValue) { this.executing = true; BoundsInt position2 = GridSelection.position; BoundsInt from = new BoundsInt(new Vector3Int(position2.xMin, position2.yMin, 0), new Vector3Int(position2.size.x, position2.size.y, 1)); Vector2Int vector2Int = this.mouseGridPosition - this.m_PreviousMove.Value; BoundsInt position3 = GridSelection.position; position3.position = new Vector3Int(position3.x + vector2Int.x, position3.y + vector2Int.y, position3.z); GridSelection.position = position3; this.Move(from, position3); this.m_PreviousMove = new Vector2Int?(this.mouseGridPosition); Event.current.Use(); } } if (current.type == EventType.MouseUp && current.button == 0 && this.m_PreviousMove.HasValue && EditMode.editMode == EditMode.SceneViewEditMode.GridMove && GUIUtility.hotControl == this.m_PermanentControlID) { if (this.m_PreviousMove.HasValue) { this.m_PreviousMove = null; this.MoveEnd(GridSelection.position); } this.executing = false; GUIUtility.hotControl = 0; Event.current.Use(); } }
protected override void PickBrush(BoundsInt position, Vector3Int pickingStart) { if (grid == null || gridBrush == null) { return; } gridBrush.Pick(grid, brushTarget, position, pickingStart); if (!PaintableGrid.InGridEditMode()) { EditMode.ChangeEditMode(EditMode.SceneViewEditMode.GridPainting, new Bounds(), GridPaintingState.instance); } m_ActivePick = new RectInt(position.min.x, position.min.y, position.size.x, position.size.y); }
public void OnSceneGUI(SceneView sceneView) { base.UpdateMouseGridPosition(); base.OnGUI(); if (PaintableGrid.InGridEditMode()) { this.CallOnSceneGUI(); if (this.grid != null && (GridPaintingState.activeGrid == this || GridSelection.active)) { this.CallOnPaintSceneGUI(); } if (Event.current.type == EventType.Repaint) { EditorGUIUtility.AddCursorRect(new Rect(0f, 17f, sceneView.position.width, sceneView.position.height - 17f), MouseCursor.CustomCursor); } } this.HandleMouseEnterLeave(sceneView); }
public void OnSceneGUI(SceneView sceneView) { UpdateMouseGridPosition(); base.OnGUI(); if (PaintableGrid.InGridEditMode()) { CallOnSceneGUI(); if ((grid != null) && (GridPaintingState.activeGrid == this || GridSelection.active)) { CallOnPaintSceneGUI(); } if (Event.current.type == EventType.Repaint) { EditorGUIUtility.AddCursorRect(new Rect(0, EditorGUI.kWindowToolbarHeight, sceneView.position.width, sceneView.position.height - EditorGUI.kWindowToolbarHeight), MouseCursor.CustomCursor); } } HandleMouseEnterLeave(sceneView); }
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(); } }
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 void OnDestroy() { this.DestroyPreviewInstance(); UnityEngine.Object.DestroyImmediate(this.clipboardView); UnityEngine.Object.DestroyImmediate(this.m_PaintableSceneViewGrid); if (this.m_PreviewUtility != null) { this.m_PreviewUtility.Cleanup(); } this.m_PreviewUtility = null; if (PaintableGrid.InGridEditMode()) { EditMode.QuitEditMode(); } if (GridPaintPaletteWindow.instances.Count <= 1) { GridPaintingState.gridBrush = null; } }
private void UpdateCache() { GridLayout gridLayout; if (PaintableGrid.InGridEditMode()) { gridLayout = ((!(GridPaintingState.scenePaintTarget != null)) ? null : GridPaintingState.scenePaintTarget.GetComponentInParent <GridLayout>()); } else { gridLayout = ((!(Selection.activeGameObject != null)) ? null : Selection.activeGameObject.GetComponentInParent <GridLayout>()); } if (gridLayout != this.m_ActiveGridProxy) { this.m_ActiveGridProxy = gridLayout; SceneViewGridManager.FlushCachedGridProxy(); } this.ShowGlobalGrid(!this.active); }
private void UpdateCache() { GridLayout gridProxy = null; if (PaintableGrid.InGridEditMode()) { gridProxy = GridPaintingState.scenePaintTarget != null?GridPaintingState.scenePaintTarget.GetComponentInParent <GridLayout>() : null; } else { gridProxy = Selection.activeGameObject != null?Selection.activeGameObject.GetComponentInParent <GridLayout>() : null; } if (gridProxy != m_ActiveGridProxy) { m_ActiveGridProxy = gridProxy; FlushCachedGridProxy(); } ShowGlobalGrid(!active); }
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 void OnDestroy() { DestroyPreviewInstance(); DestroyImmediate(clipboardView); DestroyImmediate(m_PaintableSceneViewGrid); if (m_PreviewUtility != null) { m_PreviewUtility.Cleanup(); } m_PreviewUtility = null; if (PaintableGrid.InGridEditMode()) { EditMode.QuitEditMode(); } if (instances.Count <= 1) { GridPaintingState.gridBrush = null; } }
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(); }
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); } } }
public void ChangeToTool(GridBrushBase.Tool tool) { EditMode.ChangeEditMode(PaintableGrid.BrushToolToEditMode(tool), new Bounds(Vector3.zero, Vector3.positiveInfinity), GridPaintingState.instance); Repaint(); }