mirror of
https://github.com/overte-org/overte.git
synced 2025-08-08 17:17:58 +02:00
Merge pull request #5206 from SamGondelman/cameraMode
fix bug that was preventing camera mode switches
This commit is contained in:
commit
63812f28ad
5 changed files with 64 additions and 30 deletions
|
@ -891,8 +891,11 @@ void Application::paintGL() {
|
||||||
|
|
||||||
glEnable(GL_LINE_SMOOTH);
|
glEnable(GL_LINE_SMOOTH);
|
||||||
|
|
||||||
Menu::getInstance()->setIsOptionChecked("First Person", _myAvatar->getBoomLength() <= MyAvatar::ZOOM_MIN);
|
if (_myCamera.getMode() == CAMERA_MODE_FIRST_PERSON || _myCamera.getMode() == CAMERA_MODE_THIRD_PERSON) {
|
||||||
Application::getInstance()->cameraMenuChanged();
|
Menu::getInstance()->setIsOptionChecked(MenuOption::FirstPerson, _myAvatar->getBoomLength() <= MyAvatar::ZOOM_MIN);
|
||||||
|
Menu::getInstance()->setIsOptionChecked(MenuOption::ThirdPerson, !(_myAvatar->getBoomLength() <= MyAvatar::ZOOM_MIN));
|
||||||
|
Application::getInstance()->cameraMenuChanged();
|
||||||
|
}
|
||||||
|
|
||||||
if (_myCamera.getMode() == CAMERA_MODE_FIRST_PERSON) {
|
if (_myCamera.getMode() == CAMERA_MODE_FIRST_PERSON) {
|
||||||
// Always use the default eye position, not the actual head eye position.
|
// Always use the default eye position, not the actual head eye position.
|
||||||
|
@ -1384,11 +1387,17 @@ void Application::keyPressEvent(QKeyEvent* event) {
|
||||||
if (isShifted) {
|
if (isShifted) {
|
||||||
Menu::getInstance()->triggerOption(MenuOption::Mirror);
|
Menu::getInstance()->triggerOption(MenuOption::Mirror);
|
||||||
} else {
|
} else {
|
||||||
Menu::getInstance()->triggerOption(MenuOption::FullscreenMirror);
|
Menu::getInstance()->setIsOptionChecked(MenuOption::FullscreenMirror, !Menu::getInstance()->isOptionChecked(MenuOption::FullscreenMirror));
|
||||||
|
if (!Menu::getInstance()->isOptionChecked(MenuOption::FullscreenMirror)) {
|
||||||
|
Menu::getInstance()->setIsOptionChecked(MenuOption::ThirdPerson, true);
|
||||||
|
}
|
||||||
|
cameraMenuChanged();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case Qt::Key_P:
|
case Qt::Key_P:
|
||||||
Menu::getInstance()->triggerOption(MenuOption::FirstPerson);
|
Menu::getInstance()->setIsOptionChecked(MenuOption::FirstPerson, !Menu::getInstance()->isOptionChecked(MenuOption::FirstPerson));
|
||||||
|
Menu::getInstance()->setIsOptionChecked(MenuOption::ThirdPerson, !Menu::getInstance()->isOptionChecked(MenuOption::FirstPerson));
|
||||||
|
cameraMenuChanged();
|
||||||
break;
|
break;
|
||||||
case Qt::Key_Slash:
|
case Qt::Key_Slash:
|
||||||
Menu::getInstance()->triggerOption(MenuOption::Stats);
|
Menu::getInstance()->triggerOption(MenuOption::Stats);
|
||||||
|
@ -2351,13 +2360,17 @@ void Application::cameraMenuChanged() {
|
||||||
_myCamera.setMode(CAMERA_MODE_FIRST_PERSON);
|
_myCamera.setMode(CAMERA_MODE_FIRST_PERSON);
|
||||||
_myAvatar->setBoomLength(MyAvatar::ZOOM_MIN);
|
_myAvatar->setBoomLength(MyAvatar::ZOOM_MIN);
|
||||||
}
|
}
|
||||||
} else {
|
} else if (Menu::getInstance()->isOptionChecked(MenuOption::ThirdPerson)) {
|
||||||
if (_myCamera.getMode() != CAMERA_MODE_THIRD_PERSON) {
|
if (_myCamera.getMode() != CAMERA_MODE_THIRD_PERSON) {
|
||||||
_myCamera.setMode(CAMERA_MODE_THIRD_PERSON);
|
_myCamera.setMode(CAMERA_MODE_THIRD_PERSON);
|
||||||
if (_myAvatar->getBoomLength() == MyAvatar::ZOOM_MIN) {
|
if (_myAvatar->getBoomLength() == MyAvatar::ZOOM_MIN) {
|
||||||
_myAvatar->setBoomLength(MyAvatar::ZOOM_DEFAULT);
|
_myAvatar->setBoomLength(MyAvatar::ZOOM_DEFAULT);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} else if (Menu::getInstance()->isOptionChecked(MenuOption::IndependentMode)) {
|
||||||
|
if (_myCamera.getMode() != CAMERA_MODE_INDEPENDENT) {
|
||||||
|
_myCamera.setMode(CAMERA_MODE_INDEPENDENT);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2451,20 +2464,22 @@ void Application::update(float deltaTime) {
|
||||||
|
|
||||||
// Transfer the user inputs to the driveKeys
|
// Transfer the user inputs to the driveKeys
|
||||||
_myAvatar->clearDriveKeys();
|
_myAvatar->clearDriveKeys();
|
||||||
if (!_controllerScriptingInterface.areActionsCaptured()) {
|
if (_myCamera.getMode() != CAMERA_MODE_INDEPENDENT) {
|
||||||
_myAvatar->setDriveKeys(FWD, _userInputMapper.getActionState(UserInputMapper::LONGITUDINAL_FORWARD));
|
if (!_controllerScriptingInterface.areActionsCaptured()) {
|
||||||
_myAvatar->setDriveKeys(BACK, _userInputMapper.getActionState(UserInputMapper::LONGITUDINAL_BACKWARD));
|
_myAvatar->setDriveKeys(FWD, _userInputMapper.getActionState(UserInputMapper::LONGITUDINAL_FORWARD));
|
||||||
_myAvatar->setDriveKeys(UP, _userInputMapper.getActionState(UserInputMapper::VERTICAL_UP));
|
_myAvatar->setDriveKeys(BACK, _userInputMapper.getActionState(UserInputMapper::LONGITUDINAL_BACKWARD));
|
||||||
_myAvatar->setDriveKeys(DOWN, _userInputMapper.getActionState(UserInputMapper::VERTICAL_DOWN));
|
_myAvatar->setDriveKeys(UP, _userInputMapper.getActionState(UserInputMapper::VERTICAL_UP));
|
||||||
_myAvatar->setDriveKeys(LEFT, _userInputMapper.getActionState(UserInputMapper::LATERAL_LEFT));
|
_myAvatar->setDriveKeys(DOWN, _userInputMapper.getActionState(UserInputMapper::VERTICAL_DOWN));
|
||||||
_myAvatar->setDriveKeys(RIGHT, _userInputMapper.getActionState(UserInputMapper::LATERAL_RIGHT));
|
_myAvatar->setDriveKeys(LEFT, _userInputMapper.getActionState(UserInputMapper::LATERAL_LEFT));
|
||||||
_myAvatar->setDriveKeys(ROT_UP, _userInputMapper.getActionState(UserInputMapper::PITCH_UP));
|
_myAvatar->setDriveKeys(RIGHT, _userInputMapper.getActionState(UserInputMapper::LATERAL_RIGHT));
|
||||||
_myAvatar->setDriveKeys(ROT_DOWN, _userInputMapper.getActionState(UserInputMapper::PITCH_DOWN));
|
_myAvatar->setDriveKeys(ROT_UP, _userInputMapper.getActionState(UserInputMapper::PITCH_UP));
|
||||||
_myAvatar->setDriveKeys(ROT_LEFT, _userInputMapper.getActionState(UserInputMapper::YAW_LEFT));
|
_myAvatar->setDriveKeys(ROT_DOWN, _userInputMapper.getActionState(UserInputMapper::PITCH_DOWN));
|
||||||
_myAvatar->setDriveKeys(ROT_RIGHT, _userInputMapper.getActionState(UserInputMapper::YAW_RIGHT));
|
_myAvatar->setDriveKeys(ROT_LEFT, _userInputMapper.getActionState(UserInputMapper::YAW_LEFT));
|
||||||
|
_myAvatar->setDriveKeys(ROT_RIGHT, _userInputMapper.getActionState(UserInputMapper::YAW_RIGHT));
|
||||||
|
}
|
||||||
|
_myAvatar->setDriveKeys(BOOM_IN, _userInputMapper.getActionState(UserInputMapper::BOOM_IN));
|
||||||
|
_myAvatar->setDriveKeys(BOOM_OUT, _userInputMapper.getActionState(UserInputMapper::BOOM_OUT));
|
||||||
}
|
}
|
||||||
_myAvatar->setDriveKeys(BOOM_IN, _userInputMapper.getActionState(UserInputMapper::BOOM_IN));
|
|
||||||
_myAvatar->setDriveKeys(BOOM_OUT, _userInputMapper.getActionState(UserInputMapper::BOOM_OUT));
|
|
||||||
|
|
||||||
updateThreads(deltaTime); // If running non-threaded, then give the threads some time to process...
|
updateThreads(deltaTime); // If running non-threaded, then give the threads some time to process...
|
||||||
|
|
||||||
|
|
|
@ -444,6 +444,8 @@ public slots:
|
||||||
void notifyPacketVersionMismatch();
|
void notifyPacketVersionMismatch();
|
||||||
|
|
||||||
void domainConnectionDenied(const QString& reason);
|
void domainConnectionDenied(const QString& reason);
|
||||||
|
|
||||||
|
void cameraMenuChanged();
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void clearDomainOctreeDetails();
|
void clearDomainOctreeDetails();
|
||||||
|
@ -460,7 +462,7 @@ private slots:
|
||||||
void setFullscreen(bool fullscreen);
|
void setFullscreen(bool fullscreen);
|
||||||
void setEnable3DTVMode(bool enable3DTVMode);
|
void setEnable3DTVMode(bool enable3DTVMode);
|
||||||
void setEnableVRMode(bool enableVRMode);
|
void setEnableVRMode(bool enableVRMode);
|
||||||
void cameraMenuChanged();
|
|
||||||
void rotationModeChanged();
|
void rotationModeChanged();
|
||||||
|
|
||||||
glm::vec2 getScaledScreenPoint(glm::vec2 projectedPoint);
|
glm::vec2 getScaledScreenPoint(glm::vec2 projectedPoint);
|
||||||
|
|
|
@ -87,24 +87,26 @@ PickRay Camera::computePickRay(float x, float y) {
|
||||||
|
|
||||||
void Camera::setModeString(const QString& mode) {
|
void Camera::setModeString(const QString& mode) {
|
||||||
CameraMode targetMode = stringToMode(mode);
|
CameraMode targetMode = stringToMode(mode);
|
||||||
|
|
||||||
switch (targetMode) {
|
switch (targetMode) {
|
||||||
|
case CAMERA_MODE_FIRST_PERSON:
|
||||||
|
Menu::getInstance()->setIsOptionChecked(MenuOption::FirstPerson, true);
|
||||||
|
break;
|
||||||
case CAMERA_MODE_THIRD_PERSON:
|
case CAMERA_MODE_THIRD_PERSON:
|
||||||
Menu::getInstance()->setIsOptionChecked(MenuOption::FullscreenMirror, false);
|
Menu::getInstance()->setIsOptionChecked(MenuOption::ThirdPerson, true);
|
||||||
Menu::getInstance()->setIsOptionChecked(MenuOption::FirstPerson, false);
|
|
||||||
break;
|
break;
|
||||||
case CAMERA_MODE_MIRROR:
|
case CAMERA_MODE_MIRROR:
|
||||||
Menu::getInstance()->setIsOptionChecked(MenuOption::FullscreenMirror, true);
|
Menu::getInstance()->setIsOptionChecked(MenuOption::FullscreenMirror, true);
|
||||||
Menu::getInstance()->setIsOptionChecked(MenuOption::FirstPerson, false);
|
|
||||||
break;
|
break;
|
||||||
case CAMERA_MODE_INDEPENDENT:
|
case CAMERA_MODE_INDEPENDENT:
|
||||||
Menu::getInstance()->setIsOptionChecked(MenuOption::FullscreenMirror, false);
|
Menu::getInstance()->setIsOptionChecked(MenuOption::IndependentMode, true);
|
||||||
Menu::getInstance()->setIsOptionChecked(MenuOption::FirstPerson, false);
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
qApp->cameraMenuChanged();
|
||||||
|
|
||||||
if (_mode != targetMode) {
|
if (_mode != targetMode) {
|
||||||
setMode(targetMode);
|
setMode(targetMode);
|
||||||
}
|
}
|
||||||
|
|
|
@ -268,9 +268,22 @@ Menu::Menu() {
|
||||||
qApp,
|
qApp,
|
||||||
SLOT(setFullscreen(bool)));
|
SLOT(setFullscreen(bool)));
|
||||||
|
|
||||||
addCheckableActionToQMenuAndActionHash(viewMenu, MenuOption::FirstPerson,
|
MenuWrapper* cameraModeMenu = viewMenu->addMenu("Camera Mode");
|
||||||
0, // QML Qt::Key_P,
|
QActionGroup* cameraModeGroup = new QActionGroup(cameraModeMenu);
|
||||||
true, qApp, SLOT(cameraMenuChanged()));
|
cameraModeGroup->setExclusive(true);
|
||||||
|
cameraModeGroup->addAction(addCheckableActionToQMenuAndActionHash(cameraModeMenu,
|
||||||
|
MenuOption::FirstPerson, 0, // QML Qt:: Key_P
|
||||||
|
false, qApp, SLOT(cameraMenuChanged())));
|
||||||
|
cameraModeGroup->addAction(addCheckableActionToQMenuAndActionHash(cameraModeMenu,
|
||||||
|
MenuOption::ThirdPerson, 0,
|
||||||
|
true, qApp, SLOT(cameraMenuChanged())));
|
||||||
|
cameraModeGroup->addAction(addCheckableActionToQMenuAndActionHash(cameraModeMenu,
|
||||||
|
MenuOption::IndependentMode, 0,
|
||||||
|
false, qApp, SLOT(cameraMenuChanged())));
|
||||||
|
cameraModeGroup->addAction(addCheckableActionToQMenuAndActionHash(cameraModeMenu,
|
||||||
|
MenuOption::FullscreenMirror, 0, // QML Qt::Key_H,
|
||||||
|
false, qApp, SLOT(cameraMenuChanged())));
|
||||||
|
|
||||||
addCheckableActionToQMenuAndActionHash(viewMenu, MenuOption::Mirror,
|
addCheckableActionToQMenuAndActionHash(viewMenu, MenuOption::Mirror,
|
||||||
0, //QML Qt::SHIFT | Qt::Key_H,
|
0, //QML Qt::SHIFT | Qt::Key_H,
|
||||||
true);
|
true);
|
||||||
|
|
|
@ -158,6 +158,7 @@ namespace MenuOption {
|
||||||
const QString CascadedShadows = "Cascaded";
|
const QString CascadedShadows = "Cascaded";
|
||||||
const QString CachesSize = "RAM Caches Size";
|
const QString CachesSize = "RAM Caches Size";
|
||||||
const QString CalibrateCamera = "Calibrate Camera";
|
const QString CalibrateCamera = "Calibrate Camera";
|
||||||
|
const QString CenterPlayerInView = "Center Player In View";
|
||||||
const QString Chat = "Chat...";
|
const QString Chat = "Chat...";
|
||||||
const QString Collisions = "Collisions";
|
const QString Collisions = "Collisions";
|
||||||
const QString Console = "Console...";
|
const QString Console = "Console...";
|
||||||
|
@ -199,11 +200,10 @@ namespace MenuOption {
|
||||||
const QString FrameTimer = "Show Timer";
|
const QString FrameTimer = "Show Timer";
|
||||||
const QString Fullscreen = "Fullscreen";
|
const QString Fullscreen = "Fullscreen";
|
||||||
const QString FullscreenMirror = "Fullscreen Mirror";
|
const QString FullscreenMirror = "Fullscreen Mirror";
|
||||||
const QString CenterPlayerInView = "Center Player In View";
|
|
||||||
const QString GlowWhenSpeaking = "Glow When Speaking";
|
const QString GlowWhenSpeaking = "Glow When Speaking";
|
||||||
const QString NamesAboveHeads = "Names Above Heads";
|
|
||||||
const QString HMDTools = "HMD Tools";
|
const QString HMDTools = "HMD Tools";
|
||||||
const QString IncreaseAvatarSize = "Increase Avatar Size";
|
const QString IncreaseAvatarSize = "Increase Avatar Size";
|
||||||
|
const QString IndependentMode = "Independent Mode";
|
||||||
const QString KeyboardMotorControl = "Enable Keyboard Motor Control";
|
const QString KeyboardMotorControl = "Enable Keyboard Motor Control";
|
||||||
const QString LeapMotionOnHMD = "Leap Motion on HMD";
|
const QString LeapMotionOnHMD = "Leap Motion on HMD";
|
||||||
const QString LoadScript = "Open and Run Script File...";
|
const QString LoadScript = "Open and Run Script File...";
|
||||||
|
@ -217,6 +217,7 @@ namespace MenuOption {
|
||||||
const QString MuteAudio = "Mute Microphone";
|
const QString MuteAudio = "Mute Microphone";
|
||||||
const QString MuteEnvironment = "Mute Environment";
|
const QString MuteEnvironment = "Mute Environment";
|
||||||
const QString MuteFaceTracking = "Mute Face Tracking";
|
const QString MuteFaceTracking = "Mute Face Tracking";
|
||||||
|
const QString NamesAboveHeads = "Names Above Heads";
|
||||||
const QString NoFaceTracking = "None";
|
const QString NoFaceTracking = "None";
|
||||||
const QString OctreeStats = "Entity Statistics";
|
const QString OctreeStats = "Entity Statistics";
|
||||||
const QString OnlyDisplayTopTen = "Only Display Top Ten";
|
const QString OnlyDisplayTopTen = "Only Display Top Ten";
|
||||||
|
@ -277,6 +278,7 @@ namespace MenuOption {
|
||||||
const QString StopAllScripts = "Stop All Scripts";
|
const QString StopAllScripts = "Stop All Scripts";
|
||||||
const QString SuppressShortTimings = "Suppress Timings Less than 10ms";
|
const QString SuppressShortTimings = "Suppress Timings Less than 10ms";
|
||||||
const QString TestPing = "Test Ping";
|
const QString TestPing = "Test Ping";
|
||||||
|
const QString ThirdPerson = "Third Person";
|
||||||
const QString ToolWindow = "Tool Window";
|
const QString ToolWindow = "Tool Window";
|
||||||
const QString TransmitterDrive = "Transmitter Drive";
|
const QString TransmitterDrive = "Transmitter Drive";
|
||||||
const QString TurnWithHead = "Turn using Head";
|
const QString TurnWithHead = "Turn using Head";
|
||||||
|
|
Loading…
Reference in a new issue