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

Method motion

modules/mpi/tutorials/GLFWDistribOSPRayWindow.cpp:250–287  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

248}
249
250void GLFWDistribOSPRayWindow::motion(const vec2f &position)
251{
252 static vec2f previousMouse(-1);
253
254 const vec2f mouse(position.x, position.y);
255 if (previousMouse != vec2f(-1)) {
256 const bool leftDown =
257 glfwGetMouseButton(glfwWindow, GLFW_MOUSE_BUTTON_LEFT) == GLFW_PRESS;
258 const bool rightDown =
259 glfwGetMouseButton(glfwWindow, GLFW_MOUSE_BUTTON_RIGHT) == GLFW_PRESS;
260 const bool middleDown =
261 glfwGetMouseButton(glfwWindow, GLFW_MOUSE_BUTTON_MIDDLE) == GLFW_PRESS;
262 const vec2f prev = previousMouse;
263
264 bool cameraChanged = leftDown || rightDown || middleDown;
265
266 if (leftDown) {
267 const vec2f mouseFrom(clamp(prev.x * 2.f / windowSize.x - 1.f, -1.f, 1.f),
268 clamp(prev.y * 2.f / windowSize.y - 1.f, -1.f, 1.f));
269 const vec2f mouseTo(clamp(mouse.x * 2.f / windowSize.x - 1.f, -1.f, 1.f),
270 clamp(mouse.y * 2.f / windowSize.y - 1.f, -1.f, 1.f));
271 arcballCamera->rotate(mouseFrom, mouseTo);
272 } else if (rightDown) {
273 arcballCamera->zoom(mouse.y - prev.y);
274 } else if (middleDown) {
275 arcballCamera->pan(vec2f(mouse.x - prev.x, prev.y - mouse.y));
276 }
277
278 if (cameraChanged) {
279 windowState.cameraChanged = true;
280 windowState.eyePos = arcballCamera->eyePos();
281 windowState.lookDir = arcballCamera->lookDir();
282 windowState.upDir = arcballCamera->upDir();
283 }
284 }
285
286 previousMouse = mouse;
287}
288
289void GLFWDistribOSPRayWindow::display()
290{

Callers 1

Calls 6

rotateMethod · 0.80
zoomMethod · 0.80
panMethod · 0.80
eyePosMethod · 0.80
lookDirMethod · 0.80
upDirMethod · 0.80

Tested by

no test coverage detected