private void OnMouseLeaveCheck() { if (this.m_MouseLeaveListenerAdded && EditorWindow.mouseOverWindow as SceneView == null) { EditorApplication.update = (EditorApplication.CallbackFunction)Delegate.Remove(EditorApplication.update, new EditorApplication.CallbackFunction(this.OnMouseLeaveCheck)); this.m_MouseLeaveListenerAdded = false; if (PhysicsVisualizationSettings.HasMouseHighlight()) { PhysicsVisualizationSettings.ClearMouseHighlight(); } } }
void OnMouseLeaveCheck() { if (m_MouseLeaveListenerAdded && EditorWindow.mouseOverWindow as SceneView == null) { EditorApplication.update -= OnMouseLeaveCheck; m_MouseLeaveListenerAdded = false; if (PhysicsVisualizationSettings.HasMouseHighlight()) { PhysicsVisualizationSettings.ClearMouseHighlight(); } } }
void DisplayControls(UnityEngine.Object o, SceneView view) { var dirtyCount = PhysicsVisualizationSettings.dirtyCount; PhysicsVisualizationSettings.showCollisionGeometry = EditorGUILayout.Toggle(Style.showCollisionGeometry , PhysicsVisualizationSettings.showCollisionGeometry); PhysicsVisualizationSettings.enableMouseSelect = EditorGUILayout.Toggle(Style.enableMouseSelect , PhysicsVisualizationSettings.enableMouseSelect); if (PhysicsVisualizationSettings.devOptions) { PhysicsVisualizationSettings.useSceneCam = EditorGUILayout.Toggle(Style.useSceneCam , PhysicsVisualizationSettings.useSceneCam); } Vector2 mousePos = Event.current.mousePosition; Rect sceneViewOnly = new Rect(0, EditorGUI.kWindowToolbarHeight, view.position.width, view.position.height - EditorGUI.kWindowToolbarHeight); bool mouseInSceneView = sceneViewOnly.Contains(Event.current.mousePosition); bool allowInteraction = PhysicsVisualizationSettings.showCollisionGeometry && PhysicsVisualizationSettings.enableMouseSelect && mouseInSceneView; if (allowInteraction) { AddPicker(); AddMouseLeaveListener(); // mouse-over highlight if (Event.current.type == EventType.MouseMove) { PhysicsVisualizationSettings.UpdateMouseHighlight(HandleUtility.GUIPointToScreenPixelCoordinate(mousePos)); } if (Event.current.type == EventType.MouseDrag) { PhysicsVisualizationSettings.ClearMouseHighlight(); } } else { RemovePicker(); PhysicsVisualizationSettings.ClearMouseHighlight(); } if (dirtyCount != PhysicsVisualizationSettings.dirtyCount) { RepaintSceneAndGameViews(); } }
void OnSceneGUI(SceneView view) { var dirtyCount = PhysicsVisualizationSettings.dirtyCount; Vector2 mousePos = Event.current.mousePosition; bool mouseInAnyOfTheSceneViews = MouseInAnySceneViews(mousePos); bool allowInteraction = PhysicsVisualizationSettings.showCollisionGeometry && PhysicsVisualizationSettings.enableMouseSelect && mouseInAnyOfTheSceneViews; // Disregard these events as the mouse position is wrong during them. This prevent some of the flickering if (Event.current.type != EventType.Layout && Event.current.type != EventType.Repaint) { if (allowInteraction) { AddMouseLeaveListener(); // mouse-over highlight if (Event.current.type == EventType.MouseMove) { PhysicsVisualizationSettings.UpdateMouseHighlight_Internal(HandleUtility.GUIPointToScreenPixelCoordinate(mousePos), view.camera); } if (Event.current.type == EventType.MouseDrag) { PhysicsVisualizationSettings.ClearMouseHighlight(); } } else { PhysicsVisualizationSettings.ClearMouseHighlight(); } } if (Event.current.type == EventType.Repaint) { m_Camera = view.camera; DrawCastsAndOverlaps(); DrawContacts(); DrawComAndInertia(); } if (dirtyCount != PhysicsVisualizationSettings.dirtyCount) { RepaintSceneAndGameViews(); } }
private void DisplayControls(UnityEngine.Object o, SceneView view) { int dirtyCount = PhysicsVisualizationSettings.dirtyCount; PhysicsVisualizationSettings.showCollisionGeometry = EditorGUILayout.Toggle(PhysicsDebugWindow.Contents.showCollisionGeometry, PhysicsVisualizationSettings.showCollisionGeometry, new GUILayoutOption[0]); PhysicsVisualizationSettings.enableMouseSelect = EditorGUILayout.Toggle(PhysicsDebugWindow.Contents.enableMouseSelect, PhysicsVisualizationSettings.enableMouseSelect, new GUILayoutOption[0]); if (PhysicsVisualizationSettings.devOptions) { PhysicsVisualizationSettings.useSceneCam = EditorGUILayout.Toggle(PhysicsDebugWindow.Contents.useSceneCam, PhysicsVisualizationSettings.useSceneCam, new GUILayoutOption[0]); } Vector2 mousePosition = Event.current.mousePosition; Rect rect = new Rect(0f, 17f, view.position.width, view.position.height - 17f); bool flag = rect.Contains(Event.current.mousePosition); bool flag2 = PhysicsVisualizationSettings.showCollisionGeometry && PhysicsVisualizationSettings.enableMouseSelect && flag; if (flag2) { this.AddPicker(); this.AddMouseLeaveListener(); if (Event.current.type == EventType.MouseMove) { PhysicsVisualizationSettings.UpdateMouseHighlight(HandleUtility.GUIPointToScreenPixelCoordinate(mousePosition)); } if (Event.current.type == EventType.MouseDrag) { PhysicsVisualizationSettings.ClearMouseHighlight(); } } else { this.RemovePicker(); PhysicsVisualizationSettings.ClearMouseHighlight(); } if (dirtyCount != PhysicsVisualizationSettings.dirtyCount) { PhysicsDebugWindow.RepaintSceneAndGameViews(); } }