summaryrefslogtreecommitdiff
path: root/avmedia
diff options
context:
space:
mode:
authorZolnai Tamás <tamas.zolnai@collabora.com>2014-07-17 16:21:02 +0200
committerCaolán McNamara <caolanm@redhat.com>2014-07-21 08:17:00 +0000
commit99c6a8eb358003b9a5663988e475509cf77cc583 (patch)
treee21a2116b895a76964153ad1e25c83e6ca613313 /avmedia
parentebe64ee44175452e9d6646e220ca7030e1019be4 (diff)
glTF: allow to move camera also by keyboard in orbit mode.
Change-Id: Ibf16b9651988358c30d649dd937813329d0f64ec (cherry picked from commit 9e8dbd37c4dda5d07c22c66a5a2b08cce4d175f5) Reviewed-on: https://gerrit.libreoffice.org/10368 Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'avmedia')
-rw-r--r--avmedia/source/opengl/oglwindow.cxx31
1 files changed, 29 insertions, 2 deletions
diff --git a/avmedia/source/opengl/oglwindow.cxx b/avmedia/source/opengl/oglwindow.cxx
index c748ca15605e..2650faf67c32 100644
--- a/avmedia/source/opengl/oglwindow.cxx
+++ b/avmedia/source/opengl/oglwindow.cxx
@@ -268,15 +268,18 @@ IMPL_LINK(OGLWindow, CameraHandler, VclWindowEvent*, pEvent)
vMup = glm::normalize(vMup);
vMup *= 25.0f;
- if(nCode == KEY_W)vMoveBy += vMove*(0.0005f*fModelSize);
- if(nCode == KEY_S)vMoveBy -= vMove*(0.0005f*fModelSize);
if( !m_bIsOrbitMode )
{
+ if(nCode == KEY_W)vMoveBy += vMove*(0.0005f*fModelSize);
+ if(nCode == KEY_S)vMoveBy -= vMove*(0.0005f*fModelSize);
if(nCode == KEY_A)vMoveBy -= vStrafe*(0.0005f*fModelSize);
if(nCode == KEY_D)vMoveBy += vStrafe*(0.0005f*fModelSize);
}
else
{
+ if(nCode == KEY_E)vMoveBy += vMove*(0.0005f*fModelSize);
+ if(nCode == KEY_Q)vMoveBy -= vMove*(0.0005f*fModelSize);
+
// Limit zooming in orbit mode
m_fCameraDistance += vMoveBy.z;
if ((m_fCameraDistance < 0.5 * fModelSize && vMoveBy.z < 0.0 ) ||
@@ -288,6 +291,30 @@ IMPL_LINK(OGLWindow, CameraHandler, VclWindowEvent*, pEvent)
}
}
gltf_renderer_move_camera(&m_rHandle, vMoveBy.x, vMoveBy.y, vMoveBy.z, 0.0);
+
+ if( m_bIsOrbitMode )
+ {
+ long nDeltaX = 0;
+ long nDeltaY = 0;
+ if (nCode == KEY_W)
+ {
+ nDeltaY -= 1;
+ }
+ if (nCode == KEY_S)
+ {
+ nDeltaY += 1;
+ }
+ if (nCode == KEY_A)
+ {
+ nDeltaX -= 1;
+ }
+ if (nCode == KEY_D)
+ {
+ nDeltaX += 1;
+ }
+ float fSensitivity = 50.0;
+ gltf_renderer_rotate_model(&m_rHandle, nDeltaX*fSensitivity, nDeltaY*fSensitivity, 0.0);
+ }
}
else if(nCode == KEY_M)
{