Пример #1
0
 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();
            }
        }
Пример #4
0
        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();
            }
        }
Пример #5
0
        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();
            }
        }