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(); } } }
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(); } }
void rotateCamera_FirstFrameUpEvent(EventLayer eventLayer) { if (travelTracker.TraveledOverLimit) { eventLayer.alertEventsHandled(); } }
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(); } }
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(); } }
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(); } }
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(); } }
void pickAnatomy_FirstFrameUpEvent(EventLayer eventLayer) { eventLayer.clearFocusLayer(); PickAnatomy.OnHeldDown -= pickAnatomy_OnHeldDown; if (allowMousePosing) { clearDragTarget(); if (eventLayer.EventProcessingAllowed && travelTracker.TraveledOverLimit) { eventLayer.alertEventsHandled(); } } }
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(); } }
void panGesture_MomentumStarted(EventLayer eventLayer, FingerDragGesture gesture) { if (eventLayer.EventProcessingAllowed) { if (currentGesture <= Gesture.Pan) { eventLayer.alertEventsHandled(); } } else { gesture.cancelMomentum(); } }
void rotateGesture_MomentumStarted(EventLayer eventLayer, FingerDragGesture gesture) { if (eventLayer.EventProcessingAllowed) { if (currentGesture <= Gesture.Rotate && travelTracker.TraveledOverLimit) { eventLayer.alertEventsHandled(); } } else { gesture.cancelMomentum(); } }
void zoomGesture_MomentumStarted(EventLayer eventLayer, TwoFingerZoom zoomGesture) { if (eventLayer.EventProcessingAllowed) { if (currentGesture <= Gesture.Zoom) { eventLayer.alertEventsHandled(); } } else { zoomGesture.cancelMomentum(); } }
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(); } } }
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(); } } } }
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(); } } } } } }
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); } }
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; }