internal static void OnSceneGUI(SceneView sceneView) { if (!PeekPlugin.Configuration.enableQuickSceneMaximize) { return; } if (SceneViewIntegration.used) { return; } var position = sceneView.GetInnerGuiPosition(); Handles.BeginGUI(); if (!SceneViewIntegration.used && e.type == EventType.MouseDown && e.clickCount == 2 && e.button == (int)MouseButton.Left && position.Contains(e.mousePosition)) { GUIUtility.hotControl = 0; sceneView.maximized = !sceneView.maximized; GUIUtility.hotControl = 0; e.Use(); SceneViewIntegration.Use(); } Handles.EndGUI(); }
internal static void OnSceneGUI(SceneView sceneView) { if (SceneViewIntegration.used) { return; } var position = sceneView.GetInnerGuiPosition(); Handles.BeginGUI(); if (PeekPlugin.Configuration.maximizeShortcut.Check(e) && position.Contains(e.mousePosition)) { GUIUtility.hotControl = 0; sceneView.maximized = !sceneView.maximized; GUIUtility.hotControl = 0; e.Use(); SceneViewIntegration.Use(); } Handles.EndGUI(); }
internal static void OnSceneGUI(SceneView sceneView) { if (!PeekPlugin.Configuration.enableTabs.Display(sceneView.maximized)) { // TODO: Generalize, make faster, and also call the Move event when moving the window. toolbarControl?.CloseAllTools(); return; } Profiler.BeginSample("Peek." + nameof(Tabs)); if (toolbarControl == null || !toolbarControl.toolbar.isValid) { return; } toolbarControl.toolbar.Update(); var position = sceneView.GetInnerGuiPosition(); Handles.BeginGUI(); var toolbarSize = toolbarControl.GetSceneViewSize(); if (!toolbarControl.isDragging) { toolbarControl.guiPosition = new Rect ( PeekPlugin.Configuration.tabsOrigin.x, PeekPlugin.Configuration.tabsOrigin.y, toolbarSize.x, toolbarSize.y ); } toolbarControl.DrawInSceneView(); if (!reopenedTabs) { // Wait until we drew once to set the GUI positions // ReopenTabs(); // Calling in delayCall to avoid occasional dWindow.parent crash in TabTool.SaveWindowPosition EditorApplication.delayCall += ReopenTabs; reopenedTabs = true; } if (e.type == EventType.Repaint) { var origin = toolbarControl.guiPosition.position; var margin = PeekStyles.tabsScreenMargin; origin.x = Mathf.Clamp ( origin.x, margin.x, position.width - toolbarSize.x - margin.x ); origin.y = Mathf.Clamp ( origin.y, margin.y, position.height - toolbarSize.y - margin.y ); PeekPlugin.Configuration.tabsOrigin = origin; if (toolbarControl.isDragging) { PeekPlugin.Configuration.Save(nameof(PeekConfiguration.tabsOrigin)); } } if (toolbarControl.guiPosition.Contains(e.mousePosition)) { sceneView.Repaint(); SceneViewIntegration.Use(); } Handles.EndGUI(); Profiler.EndSample(); }
private static void DrawToolbar(SceneView sceneView, ToolbarControl toolbarControl, GameObject[] targets) { if (toolbarControl == null || !toolbarControl.toolbar.isValid) { return; } toolbarControl.toolbar.Update(); var stripSize = toolbarControl.GetSceneViewSize(); float stripX, stripY; var position = sceneView.GetInnerGuiPosition(); sceneView.CalculateGuiBounds(targets, out var guiBounds, out var guiCenter); if (guiBounds != null) { stripX = guiBounds.Value.center.x; stripY = guiBounds.Value.yMax + Styles.toolbarBoundsMargin; // LudiqGUI.DrawEmptyRect(guiBounds.Value, Color.red); } else if (guiCenter != null) { stripX = guiCenter.Value.x; stripY = guiCenter.Value.y + Styles.toolbarCenterMargin; } else { // Object is behind camera // We can't return because we might get a layout mismatch error. // And we can't do a safe check in Update because we only have a GUI callback. // So we just hide the toolbar later. stripX = 0; stripY = 0; } stripX -= stripSize.x / 2; stripX = Mathf.Clamp ( stripX, Styles.toolbarScreenMargin, position.width - Styles.toolbarScreenMargin - stripSize.x ); stripY = Mathf.Clamp ( stripY, Styles.toolbarScreenMargin, position.height - Styles.toolbarScreenMargin - stripSize.y ); toolbarControl.guiPosition = new Rect ( stripX, stripY, stripSize.x, stripSize.y ); var isWithinView = sceneView.IsWithinView(guiBounds, guiCenter); var alpha = isWithinView.HasValue ? (isWithinView.Value ? 1 : 0.5f) : 0; EditorGUI.BeginDisabledGroup(alpha == 0); using (LudiqGUI.color.Override(LudiqGUI.color.value.WithAlphaMultiplied(alpha))) { toolbarControl.DrawInSceneView(); } EditorGUI.EndDisabledGroup(); if (toolbarControl.guiPosition.Contains(e.mousePosition)) { sceneView.Repaint(); SceneViewIntegration.Use(); } }