mirror of
https://github.com/overte-org/overte.git
synced 2025-08-08 08:17:35 +02:00
Merge pull request #13220 from NissimHadar/fixCameraMode
Correct `Camera.mode` command.
This commit is contained in:
commit
1d9f33a637
3 changed files with 23 additions and 6 deletions
|
@ -4632,12 +4632,6 @@ void Application::idle() {
|
||||||
|
|
||||||
_overlayConductor.update(secondsSinceLastUpdate);
|
_overlayConductor.update(secondsSinceLastUpdate);
|
||||||
|
|
||||||
auto myAvatar = getMyAvatar();
|
|
||||||
if (_myCamera.getMode() == CAMERA_MODE_FIRST_PERSON || _myCamera.getMode() == CAMERA_MODE_THIRD_PERSON) {
|
|
||||||
Menu::getInstance()->setIsOptionChecked(MenuOption::FirstPerson, myAvatar->getBoomLength() <= MyAvatar::ZOOM_MIN);
|
|
||||||
Menu::getInstance()->setIsOptionChecked(MenuOption::ThirdPerson, !(myAvatar->getBoomLength() <= MyAvatar::ZOOM_MIN));
|
|
||||||
cameraMenuChanged();
|
|
||||||
}
|
|
||||||
_gameLoopCounter.increment();
|
_gameLoopCounter.increment();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5184,6 +5178,21 @@ void Application::cameraModeChanged() {
|
||||||
cameraMenuChanged();
|
cameraMenuChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Application::changeViewAsNeeded(float boomLength) {
|
||||||
|
// Switch between first and third person views as needed
|
||||||
|
// This is called when the boom length has changed
|
||||||
|
bool boomLengthGreaterThanMinimum = (boomLength > MyAvatar::ZOOM_MIN);
|
||||||
|
|
||||||
|
if (_myCamera.getMode() == CAMERA_MODE_FIRST_PERSON && boomLengthGreaterThanMinimum) {
|
||||||
|
Menu::getInstance()->setIsOptionChecked(MenuOption::FirstPerson, false);
|
||||||
|
Menu::getInstance()->setIsOptionChecked(MenuOption::ThirdPerson, true);
|
||||||
|
cameraMenuChanged();
|
||||||
|
} else if (_myCamera.getMode() == CAMERA_MODE_THIRD_PERSON && !boomLengthGreaterThanMinimum) {
|
||||||
|
Menu::getInstance()->setIsOptionChecked(MenuOption::FirstPerson, true);
|
||||||
|
Menu::getInstance()->setIsOptionChecked(MenuOption::ThirdPerson, false);
|
||||||
|
cameraMenuChanged();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void Application::cameraMenuChanged() {
|
void Application::cameraMenuChanged() {
|
||||||
auto menu = Menu::getInstance();
|
auto menu = Menu::getInstance();
|
||||||
|
|
|
@ -417,6 +417,8 @@ public slots:
|
||||||
|
|
||||||
void updateVerboseLogging();
|
void updateVerboseLogging();
|
||||||
|
|
||||||
|
void changeViewAsNeeded(float boomLength);
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void onDesktopRootItemCreated(QQuickItem* qmlContext);
|
void onDesktopRootItemCreated(QQuickItem* qmlContext);
|
||||||
void onDesktopRootContextCreated(QQmlContext* qmlContext);
|
void onDesktopRootContextCreated(QQmlContext* qmlContext);
|
||||||
|
|
|
@ -2245,9 +2245,15 @@ void MyAvatar::updateActionMotor(float deltaTime) {
|
||||||
_actionMotorVelocity = getSensorToWorldScale() * (_walkSpeed.get() * _walkSpeedScalar) * direction;
|
_actionMotorVelocity = getSensorToWorldScale() * (_walkSpeed.get() * _walkSpeedScalar) * direction;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
float previousBoomLength = _boomLength;
|
||||||
float boomChange = getDriveKey(ZOOM);
|
float boomChange = getDriveKey(ZOOM);
|
||||||
_boomLength += 2.0f * _boomLength * boomChange + boomChange * boomChange;
|
_boomLength += 2.0f * _boomLength * boomChange + boomChange * boomChange;
|
||||||
_boomLength = glm::clamp<float>(_boomLength, ZOOM_MIN, ZOOM_MAX);
|
_boomLength = glm::clamp<float>(_boomLength, ZOOM_MIN, ZOOM_MAX);
|
||||||
|
|
||||||
|
// May need to change view if boom length has changed
|
||||||
|
if (previousBoomLength != _boomLength) {
|
||||||
|
qApp->changeViewAsNeeded(_boomLength);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void MyAvatar::updatePosition(float deltaTime) {
|
void MyAvatar::updatePosition(float deltaTime) {
|
||||||
|
|
Loading…
Reference in a new issue