void iMouseMoveHandler.mouseMove(CPoint point, eMouseButtonsState bs) { if (!prevPoint.HasValue) { return; } if (!bs.HasFlag(buttonBit)) { prevPoint = null; return; } // Detected the event int dx = point.x - prevPoint.Value.x; int dy = point.y - prevPoint.Value.y; prevPoint = point; if (dx == 0 && dy == 0) { return; } Vector2 delta = new Vector2(dx, dy); delta *= m_scaling; onDragDelta?.Invoke(delta); }
void iButtonHandler.buttonUp(CPoint point, eMouseButton button, eMouseButtonsState bs) { if (button != this.button) { return; } prevPoint = null; }
void iMouseHandler.wheel(int x, int y, int delta, eMouseButtonsState bs) { CPoint point = new CPoint(x, y); foreach (var kvp in wheelHandlers) { kvp.Key.wheel(point, delta, bs); } }
void iButtonHandler.buttonDown(CPoint pos, eMouseButton changedButtons, eMouseButtonsState bs) { if (changedButtons == eMouseButton.Left) { anim.cancelDelta(this); prevMouse = pos; mouseVelocity.reset(); mouseVelocity.add(pos, timeSource.messageTime); } }
void iMouseHandler.mouseMove(int x, int y, eMouseButtonsState bs) { CPoint point = new CPoint(x, y); foreach (var kvp in moveHandlers) { kvp.Key.mouseMove(point, bs); } // In addition to user handlers, also update position in the context, to render it. context?.setMouseCursorPosition(point); }
void iButtonHandler.buttonDown(CPoint point, eMouseButton button, eMouseButtonsState bs) { switch (button) { case eMouseButton.Left: playPause(); return; case eMouseButton.Middle: mediaEngine.muted = !mediaEngine.muted; return; } }
void upDown(int x, int y, eMouseButton changedButtons, eMouseButtonsState bs, bool down) { CPoint point = new CPoint(x, y); foreach (var kvp in buttonHandlers) { if (down) { kvp.Key.buttonDown(point, changedButtons, bs); } else { kvp.Key.buttonUp(point, changedButtons, bs); } } }
void iMouseMoveHandler.mouseMove(CPoint pos, eMouseButtonsState bs) { if (bs.HasFlag(eMouseButtonsState.Left) && prevMouse.HasValue) { float dx = pos.x - prevMouse.Value.x; float dy = pos.y - prevMouse.Value.y; prevMouse = pos; dx /= content.swapChainSize.cx; dy /= content.swapChainSize.cy; dx *= mouseSpeedMul; dy *= mouseSpeedMul; Quaternion q = Quaternion.CreateFromYawPitchRoll(0, -dy, -dx); rotation = Quaternion.Multiply(q, rotation); Dispatcher.currentDispatcher.nativeDispatcher.renderFrame(content.renderContext, true); mouseVelocity.add(pos, timeSource.messageTime); } }
void iButtonHandler.buttonUp(CPoint pos, eMouseButton changedButtons, eMouseButtonsState bs) { if (changedButtons == eMouseButton.Left) { acceleration = Vector3.Zero; prevMouse = null; mouseVelocity.add(pos, timeSource.messageTime); Vector2?velOrNull = mouseVelocity.compute(); if (velOrNull.HasValue) { Vector2 velocity = velOrNull.Value; velocity /= new Vector2(content.swapChainSize.cx, content.swapChainSize.cy); this.velocity = new Vector3(-velocity.Y, 0, -velocity.X); } anim.startDelta(this); } }
void iMouseWheelHandler.wheel(CPoint point, int delta, eMouseButtonsState bs) { if (delta < 0) { if (zoomLevel <= 0) { return; } zoomLevelStarted = zoomLevelCurrent; zoomLevel--; } else { if (zoomLevel >= maxZoom) { return; } zoomLevelStarted = zoomLevelCurrent; zoomLevel++; } anim.startProgress(zoomAnimation, this); }
void iButtonHandler.buttonUp(CPoint point, eMouseButton button, eMouseButtonsState bs) { }
void iMouseHandler.buttonDown(int x, int y, eMouseButton changedButtons, eMouseButtonsState bs) { Console.WriteLine("MousePrinter.buttonDown {0} {1} {2} {3}", x, y, changedButtons, bs); }
void iMouseHandler.horizontalWheel(int x, int y, int delta, eMouseButtonsState bs) { Console.WriteLine("MousePrinter.horizintalWheel {0} {1} {2} {3}", x, y, delta, bs); }
void iMouseHandler.mouseMove(int x, int y, eMouseButtonsState bs) { Console.WriteLine("MousePrinter.mouseMove {0} {1} {2}", x, y, bs); }
void clearStateBit(eMouseButton button) { int bit = (1 << (byte)button); buttonsState &= (~(eMouseButtonsState)bit); }
void iMouseHandler.mouseMove(int x, int y, eMouseButtonsState bs) => logInfo("mouseMove at {0}, {1}, state {2}", x, y, bs);
void iMouseHandler.horizontalWheel(int x, int y, int delta, eMouseButtonsState bs) => logInfo("horizontalWheel at {0}, {1}, delta {2}, state {3}", x, y, delta, bs);
void iMouseHandler.horizontalWheel(int x, int y, int delta, eMouseButtonsState bs) { }
void iMouseHandler.buttonDown(int x, int y, eMouseButton changedButtons, eMouseButtonsState bs) => logInfo("{0} button down at {1}, {2}, state {3}", changedButtons, x, y, bs);
void iMouseWheelHandler.wheel(CPoint point, int delta, eMouseButtonsState bs) { }
void iMouseHandler.buttonUp(int x, int y, eMouseButton changedButtons, eMouseButtonsState bs) { upDown(x, y, changedButtons, bs, false); }
void setStateBit(eMouseButton button) { int bit = (1 << (byte)button); buttonsState |= (eMouseButtonsState)bit; }
MouseDragEvent(eMouseButton button, float scaling) { this.button = button; buttonBit = (eMouseButtonsState)(1 << (int)button); m_scaling = new Vector2(scaling); }
void iMouseWheelHandler.wheel(CPoint point, int delta, eMouseButtonsState bs) { viewboxController.startZoom(point, delta); }