MCPcopy Create free account
hub / github.com/RenderKit/ospray / motion

Method motion

apps/ospExamples/GLFWOSPRayWindow.cpp:350–386  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

348}
349
350void GLFWOSPRayWindow::motion(const vec2f &position)
351{
352 const vec2f mouse(position.x, position.y);
353 if (previousMouse != vec2f(-1)) {
354 const bool leftDown =
355 glfwGetMouseButton(glfwWindow, GLFW_MOUSE_BUTTON_LEFT) == GLFW_PRESS;
356 const bool rightDown =
357 glfwGetMouseButton(glfwWindow, GLFW_MOUSE_BUTTON_RIGHT) == GLFW_PRESS;
358 const bool middleDown =
359 glfwGetMouseButton(glfwWindow, GLFW_MOUSE_BUTTON_MIDDLE) == GLFW_PRESS;
360 const vec2f prev = previousMouse;
361
362 bool cameraChanged = leftDown || rightDown || middleDown;
363
364 if (leftDown) {
365 const vec2f mouseFrom(clamp(prev.x * 2.f / windowSize.x - 1.f, -1.f, 1.f),
366 clamp(prev.y * 2.f / windowSize.y - 1.f, -1.f, 1.f));
367 const vec2f mouseTo(clamp(mouse.x * 2.f / windowSize.x - 1.f, -1.f, 1.f),
368 clamp(mouse.y * 2.f / windowSize.y - 1.f, -1.f, 1.f));
369 arcballCamera->rotate(mouseFrom, mouseTo);
370 } else if (rightDown) {
371 arcballCamera->zoom(mouse.y - prev.y);
372 } else if (middleDown) {
373 arcballCamera->pan(vec2f(mouse.x - prev.x, prev.y - mouse.y));
374 }
375
376 if (cameraChanged) {
377 if (cancelFrameOnInteraction) {
378 currentFrame.cancel();
379 waitOnOSPRayFrame();
380 }
381 updateCamera();
382 }
383 }
384
385 previousMouse = mouse;
386}
387
388void GLFWOSPRayWindow::display()
389{

Callers 1

GLFWOSPRayWindowMethod · 0.45

Calls 4

rotateMethod · 0.80
zoomMethod · 0.80
panMethod · 0.80
cancelMethod · 0.45

Tested by

no test coverage detected