mirror of
https://github.com/OpenMW/openmw.git
synced 2025-04-01 04:36:41 +00:00
camera rotation via ctrl-left button drag
This commit is contained in:
parent
e987199949
commit
e33bd4d508
2 changed files with 35 additions and 10 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), mDragging (false)
|
, mFast (false), mDragging (false), mMod1 (false)
|
||||||
, mMouseSensitivity (2), mFastFactor (4) /// \todo make these configurable
|
, mMouseSensitivity (2), mFastFactor (4) /// \todo make these configurable
|
||||||
{
|
{
|
||||||
setAttribute(Qt::WA_PaintOnScreen);
|
setAttribute(Qt::WA_PaintOnScreen);
|
||||||
|
@ -148,6 +148,7 @@ namespace CSVRender
|
||||||
case Qt::Key_A: mKeyLeft = true; break;
|
case Qt::Key_A: mKeyLeft = true; break;
|
||||||
case Qt::Key_D: mKeyRight = true; break;
|
case Qt::Key_D: mKeyRight = true; break;
|
||||||
case Qt::Key_Shift: mFast = true; break;
|
case Qt::Key_Shift: mFast = true; break;
|
||||||
|
case Qt::Key_Control: mMod1 = true; break;
|
||||||
default: QWidget::keyPressEvent (event);
|
default: QWidget::keyPressEvent (event);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -161,6 +162,7 @@ namespace CSVRender
|
||||||
case Qt::Key_A: mKeyLeft = false; break;
|
case Qt::Key_A: mKeyLeft = false; break;
|
||||||
case Qt::Key_D: mKeyRight = false; break;
|
case Qt::Key_D: mKeyRight = false; break;
|
||||||
case Qt::Key_Shift: mFast = false; break;
|
case Qt::Key_Shift: mFast = false; break;
|
||||||
|
case Qt::Key_Control: mMod1 = false; break;
|
||||||
default: QWidget::keyReleaseEvent (event);
|
default: QWidget::keyReleaseEvent (event);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -188,18 +190,39 @@ namespace CSVRender
|
||||||
QPoint diff = mOldPos-event->pos();
|
QPoint diff = mOldPos-event->pos();
|
||||||
mOldPos = event->pos();
|
mOldPos = event->pos();
|
||||||
|
|
||||||
if (diff.x())
|
if (mMod1)
|
||||||
{
|
{
|
||||||
Ogre::Vector3 direction = mCamera->getDerivedRight();
|
// turn camera
|
||||||
mCamera->move ((getFastFactor() * direction * diff.x())/mMouseSensitivity);
|
if (diff.x())
|
||||||
mUpdate = true;
|
{
|
||||||
}
|
mCamera->yaw (
|
||||||
|
Ogre::Degree ((getFastFactor() * diff.x())/mMouseSensitivity));
|
||||||
|
mUpdate = true;
|
||||||
|
}
|
||||||
|
|
||||||
if (diff.y())
|
if (diff.y())
|
||||||
|
{
|
||||||
|
mCamera->pitch (
|
||||||
|
Ogre::Degree ((getFastFactor() * diff.y())/mMouseSensitivity));
|
||||||
|
mUpdate = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
Ogre::Vector3 direction = mCamera->getDerivedUp();
|
// pan camera
|
||||||
mCamera->move ((getFastFactor() * -direction * diff.y())/mMouseSensitivity);
|
if (diff.x())
|
||||||
mUpdate = true;
|
{
|
||||||
|
Ogre::Vector3 direction = mCamera->getDerivedRight();
|
||||||
|
mCamera->move ((getFastFactor() * direction * diff.x())/mMouseSensitivity);
|
||||||
|
mUpdate = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (diff.y())
|
||||||
|
{
|
||||||
|
Ogre::Vector3 direction = mCamera->getDerivedUp();
|
||||||
|
mCamera->move ((getFastFactor() * -direction * diff.y())/mMouseSensitivity);
|
||||||
|
mUpdate = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -223,6 +246,7 @@ namespace CSVRender
|
||||||
mKeyLeft = false;
|
mKeyLeft = false;
|
||||||
mKeyRight = false;
|
mKeyRight = false;
|
||||||
mFast = false;
|
mFast = false;
|
||||||
|
mMod1 = false;
|
||||||
|
|
||||||
QWidget::focusOutEvent (event);
|
QWidget::focusOutEvent (event);
|
||||||
}
|
}
|
||||||
|
|
|
@ -63,6 +63,7 @@ namespace CSVRender
|
||||||
int mKeyRight;
|
int mKeyRight;
|
||||||
bool mFast;
|
bool mFast;
|
||||||
bool mDragging;
|
bool mDragging;
|
||||||
|
bool mMod1;
|
||||||
QPoint mOldPos;
|
QPoint mOldPos;
|
||||||
int mMouseSensitivity;
|
int mMouseSensitivity;
|
||||||
int mFastFactor;
|
int mFastFactor;
|
||||||
|
|
Loading…
Reference in a new issue