diff --git a/interface/src/Menu.cpp b/interface/src/Menu.cpp index 868489b851..13b72bcdb3 100644 --- a/interface/src/Menu.cpp +++ b/interface/src/Menu.cpp @@ -194,7 +194,7 @@ Menu::Menu() : addDisabledActionAndSeparator(editMenu, "Physics"); QObject* avatar = appInstance->getAvatar(); - addCheckableActionToQMenuAndActionHash(editMenu, MenuOption::ObeyEnvironmentalGravity, Qt::SHIFT | Qt::Key_G, true, + addCheckableActionToQMenuAndActionHash(editMenu, MenuOption::ObeyEnvironmentalGravity, Qt::SHIFT | Qt::Key_G, false, avatar, SLOT(updateMotionBehaviorsFromMenu())); diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index adeaa30962..e8782fa140 100644 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -59,7 +59,7 @@ MyAvatar::MyAvatar() : _bodyPitchDelta(0.0f), _bodyRollDelta(0.0f), _shouldJump(false), - _gravity(0.0f, -1.0f, 0.0f), + _gravity(0.0f, 0.0f, 0.0f), _distanceToNearestAvatar(std::numeric_limits::max()), _wasPushing(false), _isPushing(false), @@ -146,7 +146,7 @@ void MyAvatar::simulate(float deltaTime) { boundingShape.getStartPoint(startCap); glm::vec3 bottomOfBoundingCapsule = startCap + (boundingShape.getRadius() / gravityLength) * _gravity; - float fallThreshold = 2.f * deltaTime * gravityLength; + float fallThreshold = 2.0f * deltaTime * gravityLength; walkingOnFloor = (glm::distance(bottomOfBoundingCapsule, _lastFloorContactPoint) < fallThreshold); } @@ -163,7 +163,7 @@ void MyAvatar::simulate(float deltaTime) { // update position if (glm::length2(_velocity) < EPSILON) { _velocity = glm::vec3(0.0f); - } else { + } else { _position += _velocity * deltaTime; } } @@ -349,8 +349,8 @@ void MyAvatar::renderHeadMouse(int screenWidth, int screenHeight) const { float headYaw = getHead()->getFinalYaw(); float aspectRatio = (float) screenWidth / (float) screenHeight; - int headMouseX = screenWidth / 2.f - headYaw * aspectRatio * pixelsPerDegree; - int headMouseY = screenHeight / 2.f - headPitch * pixelsPerDegree; + int headMouseX = (int)((float)screenWidth / 2.0f - headYaw * aspectRatio * pixelsPerDegree); + int headMouseY = (int)((float)screenHeight / 2.0f - headPitch * pixelsPerDegree); glColor3f(1.0f, 1.0f, 1.0f); glDisable(GL_LINE_SMOOTH); @@ -367,8 +367,8 @@ void MyAvatar::renderHeadMouse(int screenWidth, int screenHeight) const { float avgEyePitch = faceshift->getEstimatedEyePitch(); float avgEyeYaw = faceshift->getEstimatedEyeYaw(); - int eyeTargetX = (screenWidth / 2) - avgEyeYaw * aspectRatio * pixelsPerDegree; - int eyeTargetY = (screenHeight / 2) - avgEyePitch * pixelsPerDegree; + int eyeTargetX = (int)((float)(screenWidth) / 2.0f - avgEyeYaw * aspectRatio * pixelsPerDegree); + int eyeTargetY = (int)((float)(screenHeight) / 2.0f - avgEyePitch * pixelsPerDegree); glColor3f(0.0f, 1.0f, 1.0f); glDisable(GL_LINE_SMOOTH); @@ -456,9 +456,9 @@ void MyAvatar::loadData(QSettings* settings) { getHead()->setBasePitch(loadSetting(settings, "headPitch", 0.0f)); - _position.x = loadSetting(settings, "position_x", 0.0f); - _position.y = loadSetting(settings, "position_y", 0.0f); - _position.z = loadSetting(settings, "position_z", 0.0f); + _position.x = loadSetting(settings, "position_x", START_LOCATION.x); + _position.y = loadSetting(settings, "position_y", START_LOCATION.y); + _position.z = loadSetting(settings, "position_z", START_LOCATION.z); getHead()->setPupilDilation(loadSetting(settings, "pupilDilation", 0.0f)); @@ -514,7 +514,7 @@ void MyAvatar::updateLookAtTargetAvatar() { // Look at the avatar whose eyes are closest to the ray in direction of my avatar's head // _lookAtTargetAvatar.clear(); - _targetAvatarPosition = glm::vec3(0, 0, 0); + _targetAvatarPosition = glm::vec3(0.0f); const float MIN_LOOKAT_ANGLE = PI / 4.0f; // Smallest angle between face and person where we will look at someone float smallestAngleTo = MIN_LOOKAT_ANGLE; foreach (const AvatarSharedPointer& avatarPointer, Application::getInstance()->getAvatarManager().getAvatarHash()) { @@ -765,7 +765,7 @@ void MyAvatar::applyMotor(float deltaTime) { targetVelocity = rotation * _motorVelocity; } - glm::vec3 targetDirection(0.f); + glm::vec3 targetDirection(0.0f); if (glm::length2(targetVelocity) > EPSILON) { targetDirection = glm::normalize(targetVelocity); } @@ -1382,6 +1382,8 @@ void MyAvatar::updateMotionBehaviorsFromMenu() { _motionBehaviors |= AVATAR_MOTION_OBEY_ENVIRONMENTAL_GRAVITY; // Environmental and Local gravities are incompatible. Environmental setting trumps local. _motionBehaviors &= ~AVATAR_MOTION_OBEY_LOCAL_GRAVITY; + } else { + _motionBehaviors &= ~AVATAR_MOTION_OBEY_ENVIRONMENTAL_GRAVITY; } if (! (_motionBehaviors & (AVATAR_MOTION_OBEY_ENVIRONMENTAL_GRAVITY | AVATAR_MOTION_OBEY_LOCAL_GRAVITY))) { setGravity(glm::vec3(0.0f)); diff --git a/interface/src/ui/ChatWindow.cpp b/interface/src/ui/ChatWindow.cpp index 39db2b734e..72445fa69a 100644 --- a/interface/src/ui/ChatWindow.cpp +++ b/interface/src/ui/ChatWindow.cpp @@ -87,39 +87,13 @@ ChatWindow::ChatWindow(QWidget* parent) : } connect(&xmppClient, SIGNAL(messageReceived(QXmppMessage)), this, SLOT(messageReceived(QXmppMessage))); connect(&_trayIcon, SIGNAL(messageClicked()), this, SLOT(notificationClicked())); -#endif +#endif // HAVE_QXMPP QDir mentionSoundsDir(Application::resourcesPath() + mentionSoundsPath); _mentionSounds = mentionSoundsDir.entryList(QDir::Files); _trayIcon.setIcon(QIcon( Application::resourcesPath() + "/images/hifi-logo.svg")); } -void ChatWindow::notificationClicked() { - if (parentWidget()->isMinimized()) { - parentWidget()->showNormal(); - } - if (isHidden()) { - show(); - } - - // find last mention - int messageCount = ui->messagesVBoxLayout->count(); - for (unsigned int i = messageCount; i > 0; i--) { - ChatMessageArea* area = (ChatMessageArea*)ui->messagesVBoxLayout->itemAt(i - 1)->widget(); - QRegularExpression usernameMention(mentionRegex.arg(AccountManager::getInstance().getAccountInfo().getUsername())); - if (area->toPlainText().contains(usernameMention)) { - int top = area->geometry().top(); - int height = area->geometry().height(); - - QScrollBar* verticalScrollBar = ui->messagesScrollArea->verticalScrollBar(); - verticalScrollBar->setSliderPosition(top - verticalScrollBar->size().height() + height); - return; - } - } - - scrollToBottom(); -} - ChatWindow::~ChatWindow() { #ifdef HAVE_QXMPP const QXmppClient& xmppClient = XmppClient::getInstance().getXMPPClient(); @@ -128,7 +102,7 @@ ChatWindow::~ChatWindow() { const QXmppMucRoom* publicChatRoom = XmppClient::getInstance().getPublicChatRoom(); disconnect(publicChatRoom, SIGNAL(participantsChanged()), this, SLOT(participantsChanged())); -#endif +#endif // HAVE_QXMPP delete ui; } @@ -147,10 +121,12 @@ void ChatWindow::showEvent(QShowEvent* event) { ui->messagePlainTextEdit->setFocus(); } +#ifdef HAVE_QXMPP const QXmppClient& xmppClient = XmppClient::getInstance().getXMPPClient(); if (xmppClient.isConnected()) { participantsChanged(); } +#endif // HAVE_QXMPP } bool ChatWindow::eventFilter(QObject* sender, QEvent* event) { @@ -163,14 +139,14 @@ bool ChatWindow::eventFilter(QObject* sender, QEvent* event) { (keyEvent->modifiers() & Qt::ShiftModifier) == 0) { QString messageText = ui->messagePlainTextEdit->document()->toPlainText().trimmed(); if (!messageText.isEmpty()) { - #ifdef HAVE_QXMPP +#ifdef HAVE_QXMPP const QXmppMucRoom* publicChatRoom = XmppClient::getInstance().getPublicChatRoom(); QXmppMessage message; message.setTo(publicChatRoom->jid()); message.setType(QXmppMessage::GroupChat); message.setBody(messageText); XmppClient::getInstance().getXMPPClient().sendPacket(message); - #endif +#endif // HAVE_QXMPP QTextCursor cursor = ui->messagePlainTextEdit->textCursor(); cursor.select(QTextCursor::Document); cursor.removeSelectedText(); @@ -187,13 +163,6 @@ bool ChatWindow::eventFilter(QObject* sender, QEvent* event) { return FramelessDialog::eventFilter(sender, event); } -#ifdef HAVE_QXMPP -QString ChatWindow::getParticipantName(const QString& participant) { - const QXmppMucRoom* publicChatRoom = XmppClient::getInstance().getPublicChatRoom(); - return participant.right(participant.count() - 1 - publicChatRoom->jid().count()); -} -#endif - void ChatWindow::addTimeStamp() { QTimeSpan timePassed = QDateTime::currentDateTime() - lastMessageStamp; int times[] = { timePassed.daysPart(), timePassed.hoursPart(), timePassed.minutesPart() }; @@ -246,7 +215,7 @@ void ChatWindow::connected() { #ifdef HAVE_QXMPP const QXmppMucRoom* publicChatRoom = XmppClient::getInstance().getPublicChatRoom(); connect(publicChatRoom, SIGNAL(participantsChanged()), this, SLOT(participantsChanged())); -#endif +#endif // HAVE_QXMPP startTimerForTimeStamps(); } @@ -257,6 +226,36 @@ void ChatWindow::timeout() { } #ifdef HAVE_QXMPP +void ChatWindow::notificationClicked() { + if (parentWidget()->isMinimized()) { + parentWidget()->showNormal(); + } + if (isHidden()) { + show(); + } + + // find last mention + int messageCount = ui->messagesVBoxLayout->count(); + for (unsigned int i = messageCount; i > 0; i--) { + ChatMessageArea* area = (ChatMessageArea*)ui->messagesVBoxLayout->itemAt(i - 1)->widget(); + QRegularExpression usernameMention(mentionRegex.arg(AccountManager::getInstance().getAccountInfo().getUsername())); + if (area->toPlainText().contains(usernameMention)) { + int top = area->geometry().top(); + int height = area->geometry().height(); + + QScrollBar* verticalScrollBar = ui->messagesScrollArea->verticalScrollBar(); + verticalScrollBar->setSliderPosition(top - verticalScrollBar->size().height() + height); + return; + } + } + + scrollToBottom(); +} + +QString ChatWindow::getParticipantName(const QString& participant) { + const QXmppMucRoom* publicChatRoom = XmppClient::getInstance().getPublicChatRoom(); + return participant.right(participant.count() - 1 - publicChatRoom->jid().count()); +} void ChatWindow::error(QXmppClient::Error error) { ui->connectingToXMPPLabel->setText(QString::number(error)); @@ -363,8 +362,7 @@ void ChatWindow::messageReceived(const QXmppMessage& message) { _trayIcon.showMessage(windowTitle(), message.body()); } } - -#endif +#endif // HAVE_QXMPP bool ChatWindow::isNearBottom() { QScrollBar* verticalScrollBar = ui->messagesScrollArea->verticalScrollBar();