protected override void StartController(GestureListener listener)
        {
            m_RotationPivot = ComputePivot();

            // Subscribe to desktop events
            var mouseZoom = new MouseScrollGesture(Scale)
            {
                Multiplier = desktopScrollSensitivity
            };
            var mouseRotatePivot = new MouseMoveGesture(RotateAroundPivot)
            {
                NeededButtons = new KeyCode[] {
                    KeyCode.Mouse0
                },
                Multiplier = Vector2.one * desktopRotateAroundPivotSensitivity
            };

            listener.AddListeners(mouseZoom, mouseRotatePivot);

            // Subscribe to touch events
            var touchZoom = new TouchPinchGesture(Scale)
            {
                Multiplier = touchPinchSensitivity,
            };
            var touchRotatePivot = new TouchPanGesture(RotateAroundPivot)
            {
                Multiplier = Vector2.one * touchRotateAroundPivotSensitivity
            };

            listener.AddListeners(touchZoom, touchRotatePivot);
        }
예제 #2
0
        protected override void StartController(GestureListener listener)
        {
            // Subscribe to desktop events
            var mouseZoom = new MouseScrollGesture(Zoom)
            {
                Multiplier = DesktopScrollSensitivity
            };
            var mouseAltZoom = new MouseMoveGesture(v => Zoom(v.x))
            {
                NeededButtons = new KeyCode[] {
                    KeyCode.LeftAlt,
                    KeyCode.Mouse1
                },
                Multiplier = Vector2.one * DesktopAltZoomSensitivity
            };
            var mousePan = new MouseMoveGesture(Pan)
            {
                NeededButtons = new KeyCode[] {
                    KeyCode.Mouse2
                },
                Multiplier = -Vector2.one * DesktopPanSensitivity
            };
            var mouseLeftClickRotate = new MouseMoveGesture(RotateAroundPivot)
            {
                NeededButtons = new KeyCode[] {
                    KeyCode.Mouse0
                },
                Multiplier = Vector2.one * DesktopRotateAroundPivotSensitivity
            };

            mouseLeftClickRotate.startMove += StartRotateAroundPivot;
            var mouseRotateCamera = new MouseMoveGesture(RotateCamera)
            {
                NeededButtons = new KeyCode[] {
                    KeyCode.Mouse1
                },
                ExcludedButtons = new KeyCode[] {
                    KeyCode.LeftAlt
                },
                Multiplier = Vector2.one * DesktopRotateCameraSensitivity,
            };

            mouseRotateCamera.startMove += StartRotateCamera;
            var moveCamera = new DirectionButtonsGesture(MoveCamera)
            {
                Multiplier      = DesktopMoveSensitivity,
                ExcludedButtons = new KeyCode[]
                {
                    KeyCode.LeftShift
                }
            };
            var moveCameraDouble = new DirectionButtonsGesture(MoveCamera)
            {
                Multiplier    = DesktopMoveSensitivity * DesktopShiftFactor,
                NeededButtons = new KeyCode[]
                {
                    KeyCode.LeftShift
                }
            };
            var mouseTeleport = new MouseClickGesture(OnDoubleClickOrTap)
            {
                ClickNumber = 2
            };

            listener.AddListeners(mouseZoom, mouseAltZoom, mousePan, mouseLeftClickRotate, mouseRotateCamera,
                                  moveCamera, moveCameraDouble, mouseTeleport);

            // Subscribe to touch events
            var touchZoom = new TouchPinchGesture(ZoomMobile)
            {
                Multiplier         = TouchZoomSensitivity,
                DetectionThreshold = TouchZoomThreshold
            };
            var touchPan = new TouchPanGesture(Pan)
            {
                FingersNumber      = 2,
                Multiplier         = -Vector2.one * TouchPanSensitivity,
                DetectionThreshold = TouchPanThreshold
            };
            var touchRotate = new TouchPanGesture(RotateAroundPivot)
            {
                Multiplier = Vector2.one * TouchRotateSensitivity
            };

            touchRotate.onPanStart += StartRotateAroundPivot;
            var touchTeleport = new TouchMultiTapGesture(OnDoubleClickOrTap)
            {
                TapNumber = 2
            };

            listener.AddListeners(touchZoom, touchPan, touchRotate, touchTeleport);
        }