コード例 #1
0
 void mouse_Moved(Mouse mouse)
 {
     if (eventLayer.EventProcessingAllowed)
     {
         IntVector3 mousePos = mouse.AbsolutePosition;
         gui.HandledMouseMove = inputManager.injectMouseMove(mousePos.x, mousePos.y, mousePos.z);
         if (gui.HandledMouseMove || inputManager.isModalAny())
         {
             eventLayer.alertEventsHandled();
         }
     }
 }
コード例 #2
0
        void rotateGesture_Dragged(EventLayer eventLayer, FingerDragGesture gesture)
        {
            if (eventLayer.EventProcessingAllowed && currentGesture <= Gesture.Rotate)
            {
                currentGesture = Gesture.Rotate;
                SceneViewWindow sceneView = sceneViewController.ActiveWindow;
                if (sceneView != null)
                {
                    switch (movementMode)
                    {
                    case CameraMovementMode.Rotate:
                        sceneView.CameraMover.rotateFromMotion((int)gesture.DeltaX, (int)gesture.DeltaY);
                        break;

                    case CameraMovementMode.Pan:
                        sceneView.CameraMover.panFromMotion((int)gesture.DeltaX, (int)gesture.DeltaY, eventLayer.Mouse.AreaWidth, eventLayer.Mouse.AreaHeight);
                        break;

                    case CameraMovementMode.Zoom:
                        sceneView.CameraMover.zoomFromMotion((int)gesture.DeltaY);
                        break;
                    }
                }
                travelTracker.traveled((int)gesture.DeltaX, (int)gesture.DeltaY);
                eventLayer.alertEventsHandled();
            }
        }
コード例 #3
0
 void rotateCamera_FirstFrameUpEvent(EventLayer eventLayer)
 {
     if (travelTracker.TraveledOverLimit)
     {
         eventLayer.alertEventsHandled();
     }
 }
コード例 #4
0
 void moveAnatomyGesture_Dragged(EventLayer eventLayer, FingerDragGesture gesture)
 {
     if (eventLayer.EventProcessingAllowed)
     {
         travelTracker.traveled((int)gesture.DeltaX, (int)gesture.DeltaY);
         Ray3 cameraRay = getCameraRay(gesture.AbsoluteX, gesture.AbsoluteY);
         moveDragTarget(cameraRay);
         eventLayer.alertEventsHandled();
     }
 }
コード例 #5
0
 void moveAnatomyGesture_MomentumEnded(EventLayer eventLayer, FingerDragGesture gesture)
 {
     allowMousePosing                  = true;
     moveAnatomyGesture.Dragged       -= moveAnatomyGesture_Dragged;
     moveAnatomyGesture.MomentumEnded -= moveAnatomyGesture_MomentumEnded;
     clearDragTarget();
     if (eventLayer.EventProcessingAllowed && travelTracker.TraveledOverLimit)
     {
         eventLayer.alertEventsHandled();
     }
 }
コード例 #6
0
 void pickAnatomy_OnHeldDown(EventLayer eventLayer)
 {
     if (allowMousePosing && eventLayer.EventProcessingAllowed)
     {
         travelTracker.traveled(eventLayer.Mouse.RelativePosition);
         IntVector3 absMouse  = eventLayer.Mouse.AbsolutePosition;
         Ray3       cameraRay = getCameraRay(absMouse.x, absMouse.y);
         moveDragTarget(cameraRay);
         eventLayer.alertEventsHandled();
     }
 }
コード例 #7
0
 void panGesture_Dragged(EventLayer eventLayer, FingerDragGesture gesture)
 {
     if (eventLayer.EventProcessingAllowed && currentGesture <= Gesture.Pan)
     {
         currentGesture = Gesture.Pan;
         SceneViewWindow sceneView = sceneViewController.ActiveWindow;
         if (sceneView != null)
         {
             sceneView.CameraMover.panFromMotion((int)gesture.DeltaX, (int)gesture.DeltaY, eventLayer.Mouse.AreaWidth, eventLayer.Mouse.AreaHeight);
         }
         eventLayer.alertEventsHandled();
     }
 }
コード例 #8
0
 void pickAnatomy_FirstFrameUpEvent(EventLayer eventLayer)
 {
     eventLayer.clearFocusLayer();
     PickAnatomy.OnHeldDown -= pickAnatomy_OnHeldDown;
     if (allowMousePosing)
     {
         clearDragTarget();
         if (eventLayer.EventProcessingAllowed && travelTracker.TraveledOverLimit)
         {
             eventLayer.alertEventsHandled();
         }
     }
 }
コード例 #9
0
 private void ZoomGesture_Zoom(EventLayer eventLayer, TwoFingerZoom zoomGesture)
 {
     if (eventLayer.EventProcessingAllowed && currentGesture <= Gesture.Zoom)
     {
         currentGesture = Gesture.Zoom;
         SceneViewWindow sceneView = sceneViewController.ActiveWindow;
         if (sceneView != null)
         {
             sceneView.CameraMover.zoomFromMotion((int)(zoomGesture.ZoomDelta * 800));
         }
         eventLayer.alertEventsHandled();
     }
 }
コード例 #10
0
 void panGesture_MomentumStarted(EventLayer eventLayer, FingerDragGesture gesture)
 {
     if (eventLayer.EventProcessingAllowed)
     {
         if (currentGesture <= Gesture.Pan)
         {
             eventLayer.alertEventsHandled();
         }
     }
     else
     {
         gesture.cancelMomentum();
     }
 }
コード例 #11
0
 void rotateGesture_MomentumStarted(EventLayer eventLayer, FingerDragGesture gesture)
 {
     if (eventLayer.EventProcessingAllowed)
     {
         if (currentGesture <= Gesture.Rotate && travelTracker.TraveledOverLimit)
         {
             eventLayer.alertEventsHandled();
         }
     }
     else
     {
         gesture.cancelMomentum();
     }
 }
コード例 #12
0
 void zoomGesture_MomentumStarted(EventLayer eventLayer, TwoFingerZoom zoomGesture)
 {
     if (eventLayer.EventProcessingAllowed)
     {
         if (currentGesture <= Gesture.Zoom)
         {
             eventLayer.alertEventsHandled();
         }
     }
     else
     {
         zoomGesture.cancelMomentum();
     }
 }
コード例 #13
0
 void moveAnatomyGesture_GestureStarted(EventLayer eventLayer, FingerDragGesture gesture)
 {
     allowMousePosing = false;
     travelTracker.reset();
     if (eventLayer.EventProcessingAllowed)
     {
         Ray3 cameraRay = getCameraRay(gesture.AbsoluteX, gesture.AbsoluteY);
         if (findDragTarget(cameraRay))
         {
             moveAnatomyGesture.Dragged       += moveAnatomyGesture_Dragged;
             moveAnatomyGesture.MomentumEnded += moveAnatomyGesture_MomentumEnded;
             eventLayer.alertEventsHandled();
         }
     }
 }
コード例 #14
0
 void pickAnatomy_FirstFrameDownEvent(EventLayer eventLayer)
 {
     if (allowMousePosing)
     {
         eventLayer.makeFocusLayer();
         travelTracker.reset();
         if (eventLayer.EventProcessingAllowed && !PickAnatomy.DownAndUpThisFrame)
         {
             IntVector3 absMouse  = eventLayer.Mouse.AbsolutePosition;
             Ray3       cameraRay = getCameraRay(absMouse.x, absMouse.y);
             if (findDragTarget(cameraRay))
             {
                 PickAnatomy.OnHeldDown += pickAnatomy_OnHeldDown;
                 eventLayer.alertEventsHandled();
             }
         }
     }
 }
コード例 #15
0
        void processInputEvents(EventLayer eventLayer)
        {
            if (currentGesture == Gesture.None)
            {
                SceneViewWindow activeWindow = sceneViewController.ActiveWindow;
                if (activeWindow != null && eventLayer.EventProcessingAllowed)
                {
                    CameraMover cameraMover = activeWindow.CameraMover;
                    if (cameraMover.AllowManualMovement)
                    {
                        IntVector3 mouseCoords = eventLayer.Mouse.AbsolutePosition;

                        if (MoveCamera.FirstFrameDown)
                        {
                            eventLayer.makeFocusLayer();
                            currentlyInMotion = true;
                            eventLayer.alertEventsHandled();
                            if (mouseUndoPosition == null)
                            {
                                mouseUndoPosition = activeWindow.createCameraPosition();
                            }
                        }
                        else if (MoveCamera.FirstFrameUp)
                        {
                            eventLayer.clearFocusLayer();
                            currentlyInMotion = false;

                            if (mouseUndoPosition != null)
                            {
                                activeWindow.pushUndoState(mouseUndoPosition);
                                mouseUndoPosition = null;
                            }
                        }
                        mouseCoords = eventLayer.Mouse.RelativePosition;
                        if (currentlyInMotion)
                        {
                            int x = mouseCoords.x;
                            int y = mouseCoords.y;
                            switch (movementMode)
                            {
                            case CameraMovementMode.Rotate:
                                if (cameraMover.AllowRotation)
                                {
                                    travelTracker.traveled(mouseCoords);
                                    if (LockX.Down)
                                    {
                                        x = 0;
                                    }
                                    if (LockY.Down)
                                    {
                                        y = 0;
                                    }
                                    cameraMover.rotateFromMotion(x, y);
                                    eventLayer.alertEventsHandled();
                                }
                                break;

                            case CameraMovementMode.Pan:
                                travelTracker.traveled(mouseCoords);
                                if (LockX.Down)
                                {
                                    x = 0;
                                }
                                if (LockY.Down)
                                {
                                    y = 0;
                                }
                                cameraMover.panFromMotion(x, y, eventLayer.Mouse.AreaWidth, eventLayer.Mouse.AreaHeight);
                                eventLayer.alertEventsHandled();
                                break;

                            case CameraMovementMode.Zoom:
                                if (cameraMover.AllowZoom)
                                {
                                    travelTracker.traveled(mouseCoords);
                                    cameraMover.zoomFromMotion(mouseCoords.y);
                                    eventLayer.alertEventsHandled();
                                }
                                break;
                            }
                        }
                        if (cameraMover.AllowZoom)
                        {
                            if (ZoomInCamera.Down)
                            {
                                if (mouseUndoPosition == null)
                                {
                                    mouseUndoPosition = activeWindow.createCameraPosition();
                                }
                                mouseWheelTimer.Stop();
                                mouseWheelTimer.Start();
                                cameraMover.incrementZoom(-1);
                                eventLayer.alertEventsHandled();
                            }
                            else if (ZoomOutCamera.Down)
                            {
                                if (mouseUndoPosition == null)
                                {
                                    mouseUndoPosition = activeWindow.createCameraPosition();
                                }
                                mouseWheelTimer.Stop();
                                mouseWheelTimer.Start();
                                cameraMover.incrementZoom(1);
                                eventLayer.alertEventsHandled();
                            }
                        }
                    }
                }
            }
        }
コード例 #16
0
        void events_OnUpdate(EventLayer eventLayer)
        {
            Ray3            spaceRay     = new Ray3();
            Vector3         cameraPos    = Vector3.Zero;
            SceneViewWindow activeWindow = sceneViewController.ActiveWindow;

            if (activeWindow != null)
            {
                IntVector3 mouseLoc = events.Mouse.AbsolutePosition;
                spaceRay  = activeWindow.getCameraToViewportRayScreen(mouseLoc.x, mouseLoc.y);
                cameraPos = activeWindow.Translation;
            }
            //Check collisions and draw shapes
            if (!PickEvent.HeldDown)
            {
                float closestDistance           = float.MaxValue;
                MovableObjectTools closestTools = null;
                foreach (MovableObjectTools tools in movableObjects)
                {
                    if (tools.checkBoundingBoxCollision(ref spaceRay))
                    {
                        if (tools.processAxes(ref spaceRay))
                        {
                            float distance = (tools.Movable.ToolTranslation - cameraPos).length2();
                            if (distance < closestDistance)
                            {
                                //If we had a previous closer tool clear its selection.
                                if (closestTools != null)
                                {
                                    closestTools.clearSelection();
                                }
                                closestTools    = tools;
                                closestDistance = distance;
                            }
                            //If this tool was not closer clear its selection.
                            else
                            {
                                tools.clearSelection();
                            }
                        }
                        else
                        {
                            tools.clearSelection();
                        }
                    }
                    else
                    {
                        tools.clearSelection();
                    }
                }
                if (PickEvent.FirstFrameDown)
                {
                    currentTools = closestTools;
                    if (closestTools != null)
                    {
                        closestTools.pickStarted(events, ref cameraPos, ref spaceRay);
                        events.alertEventsHandled();
                    }
                }
                else if (PickEvent.FirstFrameUp)
                {
                    if (currentTools != null)
                    {
                        events.alertEventsHandled();
                    }
                    currentTools = null;
                }
            }
            else
            {
                if (currentTools != null)
                {
                    currentTools.pickHeld(events, ref cameraPos, ref spaceRay);
                    events.alertEventsHandled();
                }
            }
            foreach (MovableObjectTools tools in movableObjects)
            {
                tools.drawTools(drawingSurface);
            }
        }
コード例 #17
0
        protected override void update(EventLayer eventLayer, bool allowProcessing, Clock clock)
        {
            var touches = eventLayer.EventManager.Touches;
            var fingers = touches.Fingers;

            if (fingers.Count == 1)
            {
                Vector2 delta = new Vector2(fingers[0].PixelDeltaX, fingers[0].PixelDeltaY);
                lastAbsolutePosition = new IntVector2(fingers[0].PixelX, fingers[0].PixelY);
                if (InputManager.Instance.injectScrollGesture(lastAbsolutePosition.x, lastAbsolutePosition.y, fingers[0].PixelDeltaX, fingers[0].PixelDeltaY))
                {
                    if (!gestureStarted)
                    {
                        for (int i = 0; i < averageSpeed.Length; ++i)
                        {
                            averageSpeed[i] = new Vector2(0, 0);
                        }
                    }

                    didGesture     = true;
                    gestureStarted = true;
                    averageSpeed[averageSpeedCursor] = delta;
                    averageSpeedCursor++;
                    averageSpeedCursor %= averageSpeed.Length;
                    eventLayer.alertEventsHandled();
                }
                else //Check to see if something will need the mouse clicked on it, if so block events
                {
                    Widget widget = LayerManager.Instance.getWidgetFromPoint(fingers[0].PixelX, fingers[0].PixelY);
                    if (widget != null && widget.NeedMouseFocus)
                    {
                        eventLayer.alertEventsHandled();
                    }
                }
            }

            if (!didGesture)
            {
                if (gestureStarted)
                {
                    momentum = new IntVector2(0, 0);
                    for (int i = 0; i < averageSpeed.Length; ++i)
                    {
                        momentum += averageSpeed[i];
                    }
                    momentum /= averageSpeed.Length;

                    momentumDirection = new Vector2(1.0f, 1.0f);
                    if (momentum.x < 0.0f)
                    {
                        momentum.x          = -momentum.x;
                        momentumDirection.x = -1.0f;
                    }
                    if (momentum.y < 0.0f)
                    {
                        momentum.y          = -momentum.y;
                        momentumDirection.y = -1.0f;
                    }
                    if (momentum.x < minimumMomentum)
                    {
                        momentum.x = 0.0f;
                    }
                    if (momentum.y < minimumMomentum)
                    {
                        momentum.y = 0.0f;
                    }
                    deceleration = momentum / decelerationTime;
                }
                gestureStarted = false;

                if (momentum.length2() != 0.0f)
                {
                    momentum -= deceleration * clock.DeltaSeconds;
                    if (momentum.x < 0.0f)
                    {
                        momentum.x = 0.0f;
                    }
                    if (momentum.y <= 0.0f)
                    {
                        momentum.y = 0.0f;
                    }
                    Vector2 finalMomentum = momentum * momentumDirection;
                    InputManager.Instance.injectScrollGesture(lastAbsolutePosition.x, lastAbsolutePosition.y, (int)finalMomentum.x, (int)finalMomentum.y);
                }
            }
            didGesture = false;
        }