コード例 #1
0
 bool CameraTool2D::doStartMouseDrag(const InputState& inputState) {
     if (pan(inputState)) {
         m_lastMousePos = Vec2f(static_cast<float>(inputState.mouseX()),
                                static_cast<float>(inputState.mouseY()));
         return true;
     }
     return false;
 }
コード例 #2
0
 bool CameraTool2D::doMouseDrag(const InputState& inputState) {
     if (pan(inputState)) {
         const Vec2f currentMousePos(static_cast<float>(inputState.mouseX()), static_cast<float>(inputState.mouseY()));
         const Vec3f lastWorldPos = m_camera.unproject(m_lastMousePos.x(), m_lastMousePos.y(), 0.0f);
         const Vec3f currentWorldPos = m_camera.unproject(currentMousePos.x(), currentMousePos.y(), 0.0f);
         const Vec3f delta = currentWorldPos - lastWorldPos;
         m_camera.moveBy(-delta);
         m_lastMousePos = currentMousePos;
         return true;
     }
     return false;
 }
コード例 #3
0
 void CameraTool2D::doMouseScroll(const InputState& inputState) {
     if (zoom(inputState)) {
         const float speed = pref(Preferences::CameraMouseWheelInvert) ? -1.0f : 1.0f;
         if (inputState.scrollY() != 0.0f) {
             const Vec2f mousePos(static_cast<float>(inputState.mouseX()), static_cast<float>(inputState.mouseY()));
             const Vec3f oldWorldPos = m_camera.unproject(mousePos.x(), mousePos.y(), 0.0f);
             
             const float factor = 1.0f + inputState.scrollY() / 50.0f * speed;
             m_camera.zoom(factor);
             
             const Vec3f newWorldPos = m_camera.unproject(mousePos.x(), mousePos.y(), 0.0f);
             const Vec3f delta = newWorldPos - oldWorldPos;
             m_camera.moveBy(-delta);
         }
     }
 }