Kaydet (Commit) 3efddb09 authored tarafından Zolnai Tamás's avatar Zolnai Tamás

OGLWindow: First try to rotate camera

For now its too slow to render by mousemove so
use mousebuttonup instead.
It seems gltf_renderer_rotate_camera() method does not rotate
the camera but set the new position of it.

Change-Id: I0fe7895720dbf95acb0963a5ba6dd2a5840d8f6b
üst 882e1bb2
...@@ -20,6 +20,7 @@ OGLWindow::OGLWindow( glTFHandle* pHandle, OpenGLContext* pContext, SystemChildW ...@@ -20,6 +20,7 @@ OGLWindow::OGLWindow( glTFHandle* pHandle, OpenGLContext* pContext, SystemChildW
, m_pEventHandler( pChildWindow->GetParent() ) , m_pEventHandler( pChildWindow->GetParent() )
, m_bVisible ( false ) , m_bVisible ( false )
, meZoomLevel( media::ZoomLevel_ORIGINAL ) , meZoomLevel( media::ZoomLevel_ORIGINAL )
, m_aLastMousePos(Point())
{ {
} }
...@@ -276,12 +277,34 @@ IMPL_LINK(OGLWindow, CameraHandler, VclWindowEvent*, pEvent) ...@@ -276,12 +277,34 @@ IMPL_LINK(OGLWindow, CameraHandler, VclWindowEvent*, pEvent)
if(nCode == KEY_W)vMoveBy -= vMup*(0.1f*fModelSize); if(nCode == KEY_W)vMoveBy -= vMup*(0.1f*fModelSize);
if(nCode == KEY_S)vMoveBy += vMup*(0.1f*fModelSize); if(nCode == KEY_S)vMoveBy += vMup*(0.1f*fModelSize);
} }
gltf_renderer_move_camera(vMoveBy.x,vMoveBy.y,vMoveBy.z,10.0); gltf_renderer_move_camera(vMoveBy.x,vMoveBy.y,vMoveBy.z,10.0);
update(); update();
} }
} }
} }
else if( pEvent->GetId() == VCLEVENT_WINDOW_MOUSEBUTTONDOWN )
{
MouseEvent* pMouseEvt = (MouseEvent*)pEvent->GetData();
if(pMouseEvt && pMouseEvt->IsLeft() && pMouseEvt->GetClicks() == 1)
{
m_aLastMousePos = pMouseEvt->GetPosPixel();
}
}
else if( pEvent->GetId() == VCLEVENT_WINDOW_MOUSEBUTTONUP )
{
MouseEvent* pMouseEvt = (MouseEvent*)pEvent->GetData();
if(pMouseEvt && pMouseEvt->IsLeft())
{
const Point& aCurPos = pMouseEvt->GetPosPixel();
long nDeltaX = m_aLastMousePos.X()-aCurPos.X();
long nDeltaY = aCurPos.Y()-m_aLastMousePos.Y();
static const float fSensitivity = 4.0;
// TODO: It seems this method just moves the camera but not rotate it.
gltf_renderer_rotate_camera((float)nDeltaX*fSensitivity,(float)nDeltaY*fSensitivity,0.0,10.0);
update();
}
}
return 0; return 0;
} }
......
...@@ -70,6 +70,7 @@ private: ...@@ -70,6 +70,7 @@ private:
Window* m_pEventHandler; Window* m_pEventHandler;
bool m_bVisible; bool m_bVisible;
com::sun::star::media::ZoomLevel meZoomLevel; com::sun::star::media::ZoomLevel meZoomLevel;
Point m_aLastMousePos;
}; };
} // namespace ogl } // namespace ogl
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment