mirror of
https://github.com/TES3MP/openmw-tes3mp.git
synced 2025-03-30 09:06:43 +00:00
camera panning via left button drag
This commit is contained in:
parent
b9107addc0
commit
07d20a2013
2 changed files with 55 additions and 1 deletions
|
@ -17,7 +17,7 @@ namespace CSVRender
|
||||||
, mCamera(NULL)
|
, mCamera(NULL)
|
||||||
, mSceneMgr(NULL), mNavigationMode (NavigationMode_Free), mUpdate (false)
|
, mSceneMgr(NULL), mNavigationMode (NavigationMode_Free), mUpdate (false)
|
||||||
, mKeyForward (false), mKeyBackward (false), mKeyLeft (false), mKeyRight (false)
|
, mKeyForward (false), mKeyBackward (false), mKeyLeft (false), mKeyRight (false)
|
||||||
, mFast (false)
|
, mFast (false), mDragging (false)
|
||||||
{
|
{
|
||||||
setAttribute(Qt::WA_PaintOnScreen);
|
setAttribute(Qt::WA_PaintOnScreen);
|
||||||
setAttribute(Qt::WA_NoSystemBackground);
|
setAttribute(Qt::WA_NoSystemBackground);
|
||||||
|
@ -175,6 +175,52 @@ namespace CSVRender
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SceneWidget::leaveEvent (QEvent *event)
|
||||||
|
{
|
||||||
|
mDragging = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void SceneWidget::mouseMoveEvent (QMouseEvent *event)
|
||||||
|
{
|
||||||
|
int factor = mFast ? 4 : 1; /// \todo make this configurable
|
||||||
|
|
||||||
|
if (event->buttons() & Qt::LeftButton)
|
||||||
|
{
|
||||||
|
if (mDragging)
|
||||||
|
{
|
||||||
|
QPoint diff = mOldPos-event->pos();
|
||||||
|
mOldPos = event->pos();
|
||||||
|
|
||||||
|
if (diff.x())
|
||||||
|
{
|
||||||
|
Ogre::Vector3 direction = mCamera->getDerivedRight();
|
||||||
|
/// \todo make mouse sensitivity configurable (the factor 2)
|
||||||
|
mCamera->move ((factor * direction * diff.x())/2);
|
||||||
|
mUpdate = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (diff.y())
|
||||||
|
{
|
||||||
|
Ogre::Vector3 direction = mCamera->getDerivedUp();
|
||||||
|
/// \todo make mouse sensitivity configurable (the factor 2)
|
||||||
|
mCamera->move ((factor * -direction * diff.y())/2);
|
||||||
|
mUpdate = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
mDragging = true;
|
||||||
|
mOldPos = event->pos();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void SceneWidget::mouseReleaseEvent (QMouseEvent *event)
|
||||||
|
{
|
||||||
|
if (event->buttons() & Qt::LeftButton)
|
||||||
|
mDragging = false;
|
||||||
|
}
|
||||||
|
|
||||||
void SceneWidget::focusOutEvent (QFocusEvent *event)
|
void SceneWidget::focusOutEvent (QFocusEvent *event)
|
||||||
{
|
{
|
||||||
mKeyForward = false;
|
mKeyForward = false;
|
||||||
|
|
|
@ -41,6 +41,12 @@ namespace CSVRender
|
||||||
|
|
||||||
void wheelEvent (QWheelEvent *event);
|
void wheelEvent (QWheelEvent *event);
|
||||||
|
|
||||||
|
void leaveEvent (QEvent *event);
|
||||||
|
|
||||||
|
void mouseMoveEvent (QMouseEvent *event);
|
||||||
|
|
||||||
|
void mouseReleaseEvent (QMouseEvent *event);
|
||||||
|
|
||||||
void updateOgreWindow();
|
void updateOgreWindow();
|
||||||
|
|
||||||
Ogre::Camera* mCamera;
|
Ogre::Camera* mCamera;
|
||||||
|
@ -54,6 +60,8 @@ namespace CSVRender
|
||||||
int mKeyLeft;
|
int mKeyLeft;
|
||||||
int mKeyRight;
|
int mKeyRight;
|
||||||
bool mFast;
|
bool mFast;
|
||||||
|
bool mDragging;
|
||||||
|
QPoint mOldPos;
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue