UnityEditor.SceneViewMotion.HandleScrollWheel C# (CSharp) Method

HandleScrollWheel() private static method

private static HandleScrollWheel ( SceneView view, bool zoomTowardsCenter ) : void
view SceneView
zoomTowardsCenter bool
return void
        private static void HandleScrollWheel(SceneView view, bool zoomTowardsCenter)
        {
            float cameraDistance = view.cameraDistance;
            Ray ray = HandleUtility.GUIPointToWorldRay(Event.current.mousePosition);
            Vector3 vector = ray.origin + ((Vector3) (ray.direction * view.cameraDistance));
            Vector3 vector2 = vector - view.pivot;
            float y = Event.current.delta.y;
            if (!view.orthographic)
            {
                float num3 = (Mathf.Abs(view.size) * y) * 0.015f;
                if ((num3 > 0f) && (num3 < 0.3f))
                {
                    num3 = 0.3f;
                }
                else if ((num3 < 0f) && (num3 > -0.3f))
                {
                    num3 = -0.3f;
                }
                view.size += num3;
            }
            else
            {
                view.size = Mathf.Abs(view.size) * ((y * 0.015f) + 1f);
            }
            float num4 = 1f - (view.cameraDistance / cameraDistance);
            if (!zoomTowardsCenter)
            {
                view.pivot += (Vector3) (vector2 * num4);
            }
            Event.current.Use();
        }

Usage Example

示例#1
0
        public static void DoViewTool(Transform cameraTransform, SceneView view)
        {
            Event     current        = Event.current;
            int       num            = SceneViewMotion.s_ViewToolID;
            EventType typeForControl = current.GetTypeForControl(num);
            float     d = 0f;

            if (view && Tools.s_LockedViewTool == ViewTool.FPS)
            {
                view.FixNegativeSize();
                d = (view.pivot - cameraTransform.position).magnitude;
            }
            switch (typeForControl)
            {
            case EventType.MouseDown:
                SceneViewMotion.HandleMouseDown(view, num, current.button);
                break;

            case EventType.MouseUp:
                SceneViewMotion.HandleMouseUp(view, num, current.button, current.clickCount);
                break;

            case EventType.MouseDrag:
                SceneViewMotion.HandleMouseDrag(cameraTransform, view, num);
                break;

            case EventType.KeyDown:
                SceneViewMotion.HandleKeyDown(view);
                break;

            case EventType.KeyUp:
                SceneViewMotion.HandleKeyUp();
                break;

            case EventType.ScrollWheel:
                SceneViewMotion.HandleScrollWheel(view, !current.alt);
                break;

            case EventType.Layout:
            {
                Vector3 movementDirection = SceneViewMotion.GetMovementDirection();
                if (GUIUtility.hotControl == num && movementDirection.sqrMagnitude != 0f)
                {
                    cameraTransform.position += cameraTransform.rotation * movementDirection;
                }
                break;
            }
            }
            if (view && Tools.s_LockedViewTool == ViewTool.FPS)
            {
                if (!view.orthographic)
                {
                    view.rotation = cameraTransform.rotation;
                }
                view.pivot = cameraTransform.position + cameraTransform.forward * d;
                view.Repaint();
            }
        }
All Usage Examples Of UnityEditor.SceneViewMotion::HandleScrollWheel