diff options
author | Zolnai Tamás <tamas.zolnai@collabora.com> | 2014-05-28 15:33:39 +0200 |
---|---|---|
committer | Zolnai Tamás <tamas.zolnai@collabora.com> | 2014-05-28 15:41:47 +0200 |
commit | 677302934793f1874b739b858a659220f247adac (patch) | |
tree | 4899c6f0d34af056e328e2ac906a7d02d2db14b2 /avmedia | |
parent | 16a62079018aea0e72636bdb00576487b4e830b9 (diff) |
glTF rendering: workaround for camera movements
If the glTF contains camera movement in it moving camera
by keyboard didn't work very well.
Change-Id: I9300a257858d4f35c2d622654a0c2fd85eedc5ed
(cherry picked from commit 968b7f807561339d0083fe0aa6e893983ca60456)
Diffstat (limited to 'avmedia')
-rw-r--r-- | avmedia/source/opengl/oglwindow.cxx | 27 |
1 files changed, 21 insertions, 6 deletions
diff --git a/avmedia/source/opengl/oglwindow.cxx b/avmedia/source/opengl/oglwindow.cxx index 6f39b0e82d7a..160ef6fe0a9c 100644 --- a/avmedia/source/opengl/oglwindow.cxx +++ b/avmedia/source/opengl/oglwindow.cxx @@ -270,18 +270,33 @@ IMPL_LINK(OGLWindow, CameraHandler, VclWindowEvent*, pEvent) vMup = glm::normalize(vMup); vMup *= 25.0f; - if(nCode == KEY_Q)vMoveBy += vMove*(0.001f*fModelSize); - if(nCode == KEY_E)vMoveBy -= vMove*(0.001f*fModelSize); - if(nCode == KEY_A)vMoveBy -= vStrafe*(0.001f*fModelSize); - if(nCode == KEY_D)vMoveBy += vStrafe*(0.001f*fModelSize); - if(nCode == KEY_W)vMoveBy -= vMup*(0.001f*fModelSize); - if(nCode == KEY_S)vMoveBy += vMup*(0.001f*fModelSize); + if(nCode == KEY_Q)vMoveBy += vMove*(0.0005f*fModelSize); + if(nCode == KEY_E)vMoveBy -= vMove*(0.0005f*fModelSize); + if(nCode == KEY_A)vMoveBy -= vStrafe*(0.0005f*fModelSize); + if(nCode == KEY_D)vMoveBy += vStrafe*(0.0005f*fModelSize); + if(nCode == KEY_W)vMoveBy -= vMup*(0.0005f*fModelSize); + if(nCode == KEY_S)vMoveBy += vMup*(0.0005f*fModelSize); } gltf_renderer_move_camera(m_pHandle, vMoveBy.x, vMoveBy.y, vMoveBy.z, 0.0); update(); } } } + // TODO: Clean this mess up after libgltf gets a working camera handling + else if( pEvent->GetId() == VCLEVENT_WINDOW_KEYUP ) + { + KeyEvent* pKeyEvt = (KeyEvent*)pEvent->GetData(); + if(pKeyEvt) + { + const sal_uInt16 nCode = pKeyEvt->GetKeyCode().GetCode(); + if (nCode == KEY_Q || nCode == KEY_E || + nCode == KEY_A || nCode == KEY_D || + nCode == KEY_W || nCode == KEY_S ) + { + gltf_renderer_move_camera(m_pHandle, 0.0, 0.0, 0.0, 0.0); + } + } + } else if( pEvent->GetId() == VCLEVENT_WINDOW_MOUSEBUTTONDOWN ) { MouseEvent* pMouseEvt = (MouseEvent*)pEvent->GetData(); |