From 64c4e58160a7b62a07c23521b01d547f2126b18a Mon Sep 17 00:00:00 2001 From: Andrzej Kapolka Date: Mon, 3 Mar 2014 16:34:28 -0800 Subject: [PATCH] Tie the avatar LOD distance multiplier to the LOD parameter calculated for voxels. --- interface/src/Application.cpp | 16 +++++++++------- interface/src/Application.h | 1 + interface/src/Menu.h | 1 + interface/src/avatar/Avatar.cpp | 2 +- interface/src/avatar/AvatarManager.cpp | 3 +-- interface/src/avatar/AvatarManager.h | 4 ---- 6 files changed, 13 insertions(+), 14 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 8c865f906c..b21d660452 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -1612,6 +1612,13 @@ bool Application::isLookingAtMyAvatar(Avatar* avatar) { return false; } +void Application::updateLOD() { + // adjust it unless we were asked to disable this feature + if (!Menu::getInstance()->isOptionChecked(MenuOption::DisableAutoAdjustLOD)) { + Menu::getInstance()->autoAdjustLOD(_fps); + } +} + void Application::updateMouseRay() { bool showWarnings = Menu::getInstance()->isOptionChecked(MenuOption::PipelineWarnings); @@ -1852,6 +1859,8 @@ void Application::update(float deltaTime) { bool showWarnings = Menu::getInstance()->isOptionChecked(MenuOption::PipelineWarnings); PerformanceWarning warn(showWarnings, "Application::update()"); + updateLOD(); + // check what's under the mouse and update the mouse voxel updateMouseRay(); @@ -2325,14 +2334,7 @@ void Application::displaySide(Camera& whichCamera, bool selfAvatarOnly) { if (Menu::getInstance()->isOptionChecked(MenuOption::Voxels)) { PerformanceWarning warn(Menu::getInstance()->isOptionChecked(MenuOption::PipelineWarnings), "Application::displaySide() ... voxels..."); - _voxels.render(); - - // double check that our LOD doesn't need to be auto-adjusted - // adjust it unless we were asked to disable this feature - if (!Menu::getInstance()->isOptionChecked(MenuOption::DisableAutoAdjustLOD)) { - Menu::getInstance()->autoAdjustLOD(_fps); - } } // also, metavoxels diff --git a/interface/src/Application.h b/interface/src/Application.h index 78826b4fd0..8c64da86b6 100644 --- a/interface/src/Application.h +++ b/interface/src/Application.h @@ -284,6 +284,7 @@ private: void update(float deltaTime); // Various helper functions called during update() + void updateLOD(); void updateMouseRay(); void updateFaceshift(); void updateVisage(); diff --git a/interface/src/Menu.h b/interface/src/Menu.h index 9d4c7eaab9..e2e0d3895a 100644 --- a/interface/src/Menu.h +++ b/interface/src/Menu.h @@ -84,6 +84,7 @@ public: void autoAdjustLOD(float currentFPS); void setVoxelSizeScale(float sizeScale); float getVoxelSizeScale() const { return _voxelSizeScale; } + float getAvatarLODDistanceMultiplier() const { return DEFAULT_OCTREE_SIZE_SCALE / _voxelSizeScale; } void setBoundaryLevelAdjust(int boundaryLevelAdjust); int getBoundaryLevelAdjust() const { return _boundaryLevelAdjust; } diff --git a/interface/src/avatar/Avatar.cpp b/interface/src/avatar/Avatar.cpp index be549beeba..ef6975d223 100644 --- a/interface/src/avatar/Avatar.cpp +++ b/interface/src/avatar/Avatar.cpp @@ -112,7 +112,7 @@ glm::quat Avatar::getWorldAlignedOrientation () const { } float Avatar::getLODDistance() const { - return Application::getInstance()->getAvatarManager().getLODDistanceMultiplier() * + return Menu::getInstance()->getAvatarLODDistanceMultiplier() * glm::distance(Application::getInstance()->getCamera()->getPosition(), _position) / _scale; } diff --git a/interface/src/avatar/AvatarManager.cpp b/interface/src/avatar/AvatarManager.cpp index def93f034b..847baf782f 100644 --- a/interface/src/avatar/AvatarManager.cpp +++ b/interface/src/avatar/AvatarManager.cpp @@ -23,8 +23,7 @@ const QUuid MY_AVATAR_KEY; // NULL key AvatarManager::AvatarManager(QObject* parent) : - _avatarFades(), - _lodDistanceMultiplier(1.0f) { + _avatarFades() { // register a meta type for the weak pointer we'll use for the owning avatar mixer for each avatar qRegisterMetaType >("NodeWeakPointer"); _myAvatar = QSharedPointer(new MyAvatar()); diff --git a/interface/src/avatar/AvatarManager.h b/interface/src/avatar/AvatarManager.h index 47bc8fd34b..db24d5bf4e 100644 --- a/interface/src/avatar/AvatarManager.h +++ b/interface/src/avatar/AvatarManager.h @@ -33,8 +33,6 @@ public: void clearOtherAvatars(); - float getLODDistanceMultiplier() const { return _lodDistanceMultiplier; } - public slots: void processAvatarMixerDatagram(const QByteArray& datagram, const QWeakPointer& mixerWeakPointer); @@ -54,8 +52,6 @@ private: QVector _avatarFades; QSharedPointer _myAvatar; - - float _lodDistanceMultiplier; }; #endif /* defined(__hifi__AvatarManager__) */