From 3f4a9c64f9ec41e4d5d35d0f824a9f398b1ea413 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Wed, 1 Apr 2015 16:53:17 -0700 Subject: [PATCH 01/10] add render bools to the scene scripting interface --- .../src/SceneScriptingInterface.cpp | 32 +++++++++---------- .../src/SceneScriptingInterface.h | 21 ++++++++++-- 2 files changed, 35 insertions(+), 18 deletions(-) diff --git a/libraries/script-engine/src/SceneScriptingInterface.cpp b/libraries/script-engine/src/SceneScriptingInterface.cpp index 855701f536..3026c0c95d 100644 --- a/libraries/script-engine/src/SceneScriptingInterface.cpp +++ b/libraries/script-engine/src/SceneScriptingInterface.cpp @@ -20,46 +20,46 @@ void SceneScriptingInterface::setStageLocation(float longitude, float latitude, _skyStage->setOriginLocation(longitude, latitude, altitude); } -float SceneScriptingInterface::getStageLocationLongitude() const { - return _skyStage->getOriginLongitude(); -} -float SceneScriptingInterface::getStageLocationLatitude() const { - return _skyStage->getOriginLatitude(); -} -float SceneScriptingInterface::getStageLocationAltitude() const { - return _skyStage->getOriginSurfaceAltitude(); +float SceneScriptingInterface::getStageLocationLongitude() const { + return _skyStage->getOriginLongitude(); +} +float SceneScriptingInterface::getStageLocationLatitude() const { + return _skyStage->getOriginLatitude(); +} +float SceneScriptingInterface::getStageLocationAltitude() const { + return _skyStage->getOriginSurfaceAltitude(); } void SceneScriptingInterface::setStageDayTime(float hour) { _skyStage->setDayTime(hour); } -float SceneScriptingInterface::getStageDayTime() const { - return _skyStage->getDayTime(); +float SceneScriptingInterface::getStageDayTime() const { + return _skyStage->getDayTime(); } void SceneScriptingInterface::setStageYearTime(int day) { _skyStage->setYearTime(day); } -int SceneScriptingInterface::getStageYearTime() const { - return _skyStage->getYearTime(); +int SceneScriptingInterface::getStageYearTime() const { + return _skyStage->getYearTime(); } void SceneScriptingInterface::setSunColor(const glm::vec3& color) { _skyStage->setSunColor(color); } -const glm::vec3& SceneScriptingInterface::getSunColor() const { - return _skyStage->getSunColor(); +const glm::vec3& SceneScriptingInterface::getSunColor() const { + return _skyStage->getSunColor(); } void SceneScriptingInterface::setSunIntensity(float intensity) { _skyStage->setSunIntensity(intensity); } -float SceneScriptingInterface::getSunIntensity() const { - return _skyStage->getSunIntensity(); +float SceneScriptingInterface::getSunIntensity() const { + return _skyStage->getSunIntensity(); } model::SunSkyStagePointer SceneScriptingInterface::getSkyStage() const { diff --git a/libraries/script-engine/src/SceneScriptingInterface.h b/libraries/script-engine/src/SceneScriptingInterface.h index 0c36b303e9..124e2287f7 100644 --- a/libraries/script-engine/src/SceneScriptingInterface.h +++ b/libraries/script-engine/src/SceneScriptingInterface.h @@ -21,13 +21,17 @@ class SceneScriptingInterface : public QObject, public Dependency { Q_OBJECT SINGLETON_DEPENDENCY + + Q_PROPERTY(bool shouldRenderAvatars READ shouldRenderAvatars WRITE setShouldRenderAvatars) + Q_PROPERTY(bool shouldRenderEntities READ shouldRenderEntities WRITE setShouldRenderEntities) + Q_PROPERTY(bool shouldRenderOverlays READ shouldRenderOverlays WRITE setShouldRenderOverlays) public: Q_INVOKABLE void setStageOrientation(const glm::quat& orientation); Q_INVOKABLE void setStageLocation(float longitude, float latitude, float altitude); - Q_INVOKABLE float getStageLocationLongitude() const; - Q_INVOKABLE float getStageLocationLatitude() const; + Q_INVOKABLE float getStageLocationLongitude() const; + Q_INVOKABLE float getStageLocationLatitude() const; Q_INVOKABLE float getStageLocationAltitude() const; Q_INVOKABLE void setStageDayTime(float hour); @@ -41,12 +45,25 @@ public: Q_INVOKABLE float getSunIntensity() const; model::SunSkyStagePointer getSkyStage() const; + + Q_INVOKABLE void setShouldRenderAvatars(bool shouldRenderAvatars) { _shouldRenderAvatars = shouldRenderAvatars; } + Q_INVOKABLE bool shouldRenderAvatars() const { return _shouldRenderAvatars; } + + Q_INVOKABLE void setShouldRenderEntities(bool shouldRenderEntities) { _shouldRenderEntities = shouldRenderEntities; } + Q_INVOKABLE bool shouldRenderEntities() const { return _shouldRenderEntities; } + + Q_INVOKABLE void setShouldRenderOverlays(bool shouldRenderOverlays) { _shouldRenderOverlays = shouldRenderOverlays; } + Q_INVOKABLE bool shouldRenderOverlays() const { return _shouldRenderOverlays; } protected: SceneScriptingInterface() {}; ~SceneScriptingInterface() {}; model::SunSkyStagePointer _skyStage = model::SunSkyStagePointer(new model::SunSkyStage()); + + bool _shouldRenderAvatars = true; + bool _shouldRenderEntities = true; + bool _shouldRenderOverlays = true; }; #endif // hifi_SceneScriptingInterface_h From ee088e12f3821fdd8b529fb12e9e0b5d6836b537 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Wed, 1 Apr 2015 17:06:06 -0700 Subject: [PATCH 02/10] leverage scene scripting values to toggle rendering --- interface/src/Application.cpp | 14 ++++++-------- interface/src/Menu.cpp | 2 -- interface/src/Menu.h | 2 -- interface/src/avatar/Avatar.cpp | 4 +--- interface/src/octree/OctreePacketProcessor.cpp | 5 +++-- .../script-engine/src/SceneScriptingInterface.h | 5 ----- 6 files changed, 10 insertions(+), 22 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 5275b8c529..5ed8f484b6 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -2260,7 +2260,7 @@ void Application::update(float deltaTime) { if (queryIsDue || viewIsDifferentEnough) { _lastQueriedTime = now; - if (Menu::getInstance()->isOptionChecked(MenuOption::Entities)) { + if (DependencyManager::get()->shouldRenderEntities()) { queryOctree(NodeType::EntityServer, PacketTypeEntityQuery, _entityServerJurisdictions); } _lastQueriedViewFrustum = _viewFrustum; @@ -2973,7 +2973,7 @@ void Application::displaySide(Camera& theCamera, bool selfAvatarOnly, RenderArgs DependencyManager::get()->renderSphere(originSphereRadius, 15, 15, glm::vec4(1.0f, 0.0f, 0.0f, 1.0f)); // render models... - if (Menu::getInstance()->isOptionChecked(MenuOption::Entities)) { + if (DependencyManager::get()->shouldRenderEntities()) { PerformanceTimer perfTimer("entities"); PerformanceWarning warn(Menu::getInstance()->isOptionChecked(MenuOption::PipelineWarnings), "Application::displaySide() ... entities..."); @@ -2994,17 +2994,15 @@ void Application::displaySide(Camera& theCamera, bool selfAvatarOnly, RenderArgs DependencyManager::get()->render(); } } - - - + bool mirrorMode = (theCamera.getMode() == CAMERA_MODE_MIRROR); - { + + if (DependencyManager::get()->shouldRenderAvatars()) { PerformanceTimer perfTimer("avatars"); DependencyManager::get()->renderAvatars(mirrorMode ? Avatar::MIRROR_RENDER_MODE : Avatar::NORMAL_RENDER_MODE, - false, selfAvatarOnly); + false, selfAvatarOnly); } - { DependencyManager::get()->setAmbientLightMode(getRenderAmbientLight()); auto skyStage = DependencyManager::get()->getSkyStage(); diff --git a/interface/src/Menu.cpp b/interface/src/Menu.cpp index 5867dd29e2..920f18a73b 100644 --- a/interface/src/Menu.cpp +++ b/interface/src/Menu.cpp @@ -268,8 +268,6 @@ Menu::Menu() { QMenu* renderOptionsMenu = developerMenu->addMenu("Render"); addCheckableActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::Atmosphere, Qt::SHIFT | Qt::Key_A, true); - addCheckableActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::Avatars, 0, true); - addCheckableActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::Entities, 0, true); addCheckableActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::AmbientOcclusion); addCheckableActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::DontFadeOnOctreeServerChanges); diff --git a/interface/src/Menu.h b/interface/src/Menu.h index 63dab63711..54d3af8880 100644 --- a/interface/src/Menu.h +++ b/interface/src/Menu.h @@ -119,7 +119,6 @@ namespace MenuOption { const QString AudioSourceInject = "Generated Audio"; const QString AudioSourcePinkNoise = "Pink Noise"; const QString AudioSourceSine440 = "Sine 440hz"; - const QString Avatars = "Avatars"; const QString BandwidthDetails = "Bandwidth Details"; const QString BlueSpeechSphere = "Blue Sphere While Speaking"; const QString BookmarkLocation = "Bookmark Location"; @@ -156,7 +155,6 @@ namespace MenuOption { const QString EnableCharacterController = "Enable avatar collisions"; const QString EnableGlowEffect = "Enable Glow Effect (Warning: Poor Oculus Performance)"; const QString EnableVRMode = "Enable VR Mode"; - const QString Entities = "Entities"; const QString ExpandMyAvatarSimulateTiming = "Expand /myAvatar/simulation"; const QString ExpandMyAvatarTiming = "Expand /myAvatar"; const QString ExpandOtherAvatarTiming = "Expand /otherAvatar"; diff --git a/interface/src/avatar/Avatar.cpp b/interface/src/avatar/Avatar.cpp index 431b6e0d37..3ea4723801 100644 --- a/interface/src/avatar/Avatar.cpp +++ b/interface/src/avatar/Avatar.cpp @@ -364,9 +364,7 @@ void Avatar::render(const glm::vec3& cameraPosition, RenderMode renderMode, bool : GLOW_FROM_AVERAGE_LOUDNESS; // render body - if (Menu::getInstance()->isOptionChecked(MenuOption::Avatars)) { - renderBody(frustum, renderMode, postLighting, glowLevel); - } + renderBody(frustum, renderMode, postLighting, glowLevel); if (!postLighting && renderMode != SHADOW_RENDER_MODE) { // add local lights diff --git a/interface/src/octree/OctreePacketProcessor.cpp b/interface/src/octree/OctreePacketProcessor.cpp index 34aae97446..4eac1e6803 100644 --- a/interface/src/octree/OctreePacketProcessor.cpp +++ b/interface/src/octree/OctreePacketProcessor.cpp @@ -14,6 +14,7 @@ #include "Application.h" #include "Menu.h" #include "OctreePacketProcessor.h" +#include "SceneScriptingInterface.h" void OctreePacketProcessor::processPacket(const SharedNodePointer& sendingNode, const QByteArray& packet) { PerformanceWarning warn(Menu::getInstance()->isOptionChecked(MenuOption::PipelineWarnings), @@ -81,13 +82,13 @@ void OctreePacketProcessor::processPacket(const SharedNodePointer& sendingNode, switch(voxelPacketType) { case PacketTypeEntityErase: { - if (Menu::getInstance()->isOptionChecked(MenuOption::Entities)) { + if (DependencyManager::get()->shouldRenderEntities()) { app->_entities.processEraseMessage(mutablePacket, sendingNode); } } break; case PacketTypeEntityData: { - if (Menu::getInstance()->isOptionChecked(MenuOption::Entities)) { + if (DependencyManager::get()->shouldRenderEntities()) { app->_entities.processDatagram(mutablePacket, sendingNode); } } break; diff --git a/libraries/script-engine/src/SceneScriptingInterface.h b/libraries/script-engine/src/SceneScriptingInterface.h index 124e2287f7..c57a343e9d 100644 --- a/libraries/script-engine/src/SceneScriptingInterface.h +++ b/libraries/script-engine/src/SceneScriptingInterface.h @@ -24,7 +24,6 @@ class SceneScriptingInterface : public QObject, public Dependency { Q_PROPERTY(bool shouldRenderAvatars READ shouldRenderAvatars WRITE setShouldRenderAvatars) Q_PROPERTY(bool shouldRenderEntities READ shouldRenderEntities WRITE setShouldRenderEntities) - Q_PROPERTY(bool shouldRenderOverlays READ shouldRenderOverlays WRITE setShouldRenderOverlays) public: Q_INVOKABLE void setStageOrientation(const glm::quat& orientation); @@ -51,9 +50,6 @@ public: Q_INVOKABLE void setShouldRenderEntities(bool shouldRenderEntities) { _shouldRenderEntities = shouldRenderEntities; } Q_INVOKABLE bool shouldRenderEntities() const { return _shouldRenderEntities; } - - Q_INVOKABLE void setShouldRenderOverlays(bool shouldRenderOverlays) { _shouldRenderOverlays = shouldRenderOverlays; } - Q_INVOKABLE bool shouldRenderOverlays() const { return _shouldRenderOverlays; } protected: SceneScriptingInterface() {}; @@ -63,7 +59,6 @@ protected: bool _shouldRenderAvatars = true; bool _shouldRenderEntities = true; - bool _shouldRenderOverlays = true; }; #endif // hifi_SceneScriptingInterface_h From 560f53b842c8c1e7ee1b2a94978e26e0c8a72eaf Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Wed, 1 Apr 2015 17:08:15 -0700 Subject: [PATCH 03/10] use new API to toggle environment from lobby --- examples/lobby.js | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/examples/lobby.js b/examples/lobby.js index 381107d65a..c749e95a4e 100644 --- a/examples/lobby.js +++ b/examples/lobby.js @@ -311,10 +311,8 @@ function maybeCleanupLobby() { } function toggleEnvironmentRendering(shouldRender) { - Menu.setIsOptionChecked("Voxels", shouldRender); - Menu.setIsOptionChecked("Entities", shouldRender); - Menu.setIsOptionChecked("Metavoxels", shouldRender); - Menu.setIsOptionChecked("Avatars", shouldRender); + Scene.shouldRenderAvatars = shouldRender; + Scene.shouldRenderEntities = shouldRender; } function handleLookAt(pickRay) { From 03292fd869267e5d0e7352ce5ae87e4f4daa7e2d Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Wed, 1 Apr 2015 17:26:56 -0700 Subject: [PATCH 04/10] allow developerMenuItems to handle new render options --- .../utilities/tools/developerMenuItems.js | 45 ++++++++++++++++--- 1 file changed, 39 insertions(+), 6 deletions(-) diff --git a/examples/utilities/tools/developerMenuItems.js b/examples/utilities/tools/developerMenuItems.js index 419285eeb9..a7e487222e 100644 --- a/examples/utilities/tools/developerMenuItems.js +++ b/examples/utilities/tools/developerMenuItems.js @@ -11,13 +11,21 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // +var createdRenderMenu = false; + +var ENTITIES_MENU = "Developer > Entities"; +var COLLISION_UPDATES_TO_SERVER = "Don't send collision updates to server"; + +var RENDER_MENU = "Developer > Render"; +var ENTITIES_ITEM = "Entities"; +var AVATARS_ITEM = "Avatars"; function setupMenus() { if (!Menu.menuExists("Developer")) { Menu.addMenu("Developer"); } - if (!Menu.menuExists("Developer > Entities")) { - Menu.addMenu("Developer > Entities"); + if (!Menu.menuExists(ENTITIES_MENU)) { + Menu.addMenu(ENTITIES_MENU); // NOTE: these menu items aren't currently working. I've temporarily removed them. Will add them back once we // rewire these to work @@ -31,17 +39,34 @@ function setupMenus() { Menu.addMenuItem({ menuName: "Developer > Entities", menuItemName: "Don't Do Precision Picking", isCheckable: true, isChecked: false }); Menu.addMenuItem({ menuName: "Developer > Entities", menuItemName: "Disable Light Entities", isCheckable: true, isChecked: false }); */ - Menu.addMenuItem({ menuName: "Developer > Entities", menuItemName: "Don't send collision updates to server", isCheckable: true, isChecked: false }); + Menu.addMenuItem({ menuName: ENTITIES_MENU, menuItemName: COLLISION_UPDATES_TO_SERVER, isCheckable: true, isChecked: false }); + } + + if (!Menu.menuExists(RENDER_MENU)) { + Menu.addMenu(RENDER_MENU); + createdRenderMenu = true; + } + + if (!Menu.menuItemExists(RENDER_MENU, ENTITIES_ITEM)) { + Menu.addMenuItem({ menuName: RENDER_MENU, menuItemName: ENTITIES_ITEM, isCheckable: true, isChecked: Scene.shouldRenderEntities }) + } + + if (!Menu.menuItemExists(RENDER_MENU, AVATARS_ITEM)) { + Menu.addMenuItem({ menuName: RENDER_MENU, menuItemName: AVATARS_ITEM, isCheckable: true, isChecked: Scene.shouldRenderAvatars }) } } Menu.menuItemEvent.connect(function (menuItem) { print("menuItemEvent() in JS... menuItem=" + menuItem); - if (menuItem == "Don't send collision updates to server") { - var dontSendUpdates = Menu.isOptionChecked("Don't send collision updates to server"); + if (menuItem == COLLISION_UPDATES_TO_SERVER) { + var dontSendUpdates = Menu.isOptionChecked(COLLISION_UPDATES_TO_SERVER); print(" dontSendUpdates... checked=" + dontSendUpdates); Entities.setSendPhysicsUpdates(!dontSendUpdates); + } else if (menuItem == ENTITIES_ITEM) { + Scene.shouldRenderEntities = Menu.isOptionChecked(ENTITIES_ITEM); + } else if (menuItem == AVATARS_ITEM) { + Scene.shouldRenderAvatars = Menu.isOptionChecked(AVATARS_ITEM); } }); @@ -51,7 +76,15 @@ setupMenus(); Script.scriptEnding.connect(scriptEnding); function scriptEnding() { - Menu.removeMenu("Developer > Entities"); + Menu.removeMenu(ENTITIES_MENU); + + if (createdRenderMenu) { + Menu.removeMenu(RENDER_MENU); + } else { + Menu.removeMenuItem(RENDER_MENU, ENTITIES_ITEM); + Menu.removeMenuItem(RENDER_MENU, AVATARS_ITEM); + } } + setupMenus(); Script.scriptEnding.connect(scriptEnding); From b27a86fb25413da9288c6fc7b364f6fc09b4b837 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Wed, 1 Apr 2015 17:36:43 -0700 Subject: [PATCH 05/10] always render yourself, handle change of render values elsewhere --- examples/utilities/tools/developerMenuItems.js | 9 ++++++--- interface/src/Application.cpp | 2 +- interface/src/avatar/AvatarManager.cpp | 17 ++++++++++------- .../src/SceneScriptingInterface.cpp | 14 ++++++++++++++ .../script-engine/src/SceneScriptingInterface.h | 9 ++++++--- 5 files changed, 37 insertions(+), 14 deletions(-) diff --git a/examples/utilities/tools/developerMenuItems.js b/examples/utilities/tools/developerMenuItems.js index a7e487222e..a691031131 100644 --- a/examples/utilities/tools/developerMenuItems.js +++ b/examples/utilities/tools/developerMenuItems.js @@ -70,10 +70,13 @@ Menu.menuItemEvent.connect(function (menuItem) { } }); -setupMenus(); +Scene.shouldRenderAvatarsChanged.connect(function(shouldRenderAvatars) { + Menu.setIsOptionChecked(AVATARS_ITEM, shouldRenderAvatars) +}); -// register our scriptEnding callback -Script.scriptEnding.connect(scriptEnding); +Scene.shouldRenderEntitiesChanged.connect(function(shouldRenderEntities) { + Menu.setIsOptionChecked(ENTITIES_ITEM, shouldRenderEntities) +}); function scriptEnding() { Menu.removeMenu(ENTITIES_MENU); diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 5ed8f484b6..806fed7174 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -2997,7 +2997,7 @@ void Application::displaySide(Camera& theCamera, bool selfAvatarOnly, RenderArgs bool mirrorMode = (theCamera.getMode() == CAMERA_MODE_MIRROR); - if (DependencyManager::get()->shouldRenderAvatars()) { + { PerformanceTimer perfTimer("avatars"); DependencyManager::get()->renderAvatars(mirrorMode ? Avatar::MIRROR_RENDER_MODE : Avatar::NORMAL_RENDER_MODE, false, selfAvatarOnly); diff --git a/interface/src/avatar/AvatarManager.cpp b/interface/src/avatar/AvatarManager.cpp index 0ffcf19bf9..b689c11800 100644 --- a/interface/src/avatar/AvatarManager.cpp +++ b/interface/src/avatar/AvatarManager.cpp @@ -25,6 +25,7 @@ #include "AvatarManager.h" #include "Menu.h" #include "MyAvatar.h" +#include "SceneScriptingInterface.h" // 70 times per second - target is 60hz, but this helps account for any small deviations // in the update loop @@ -122,15 +123,17 @@ void AvatarManager::renderAvatars(Avatar::RenderMode renderMode, bool postLighti glm::vec3 cameraPosition = Application::getInstance()->getCamera()->getPosition(); if (!selfAvatarOnly) { - foreach (const AvatarSharedPointer& avatarPointer, _avatarHash) { - Avatar* avatar = static_cast(avatarPointer.data()); - if (!avatar->isInitialized()) { - continue; + if (DependencyManager::get()->shouldRenderAvatars()) { + foreach (const AvatarSharedPointer& avatarPointer, _avatarHash) { + Avatar* avatar = static_cast(avatarPointer.data()); + if (!avatar->isInitialized()) { + continue; + } + avatar->render(cameraPosition, renderMode, postLighting); + avatar->setDisplayingLookatVectors(renderLookAtVectors); } - avatar->render(cameraPosition, renderMode, postLighting); - avatar->setDisplayingLookatVectors(renderLookAtVectors); + renderAvatarFades(cameraPosition, renderMode); } - renderAvatarFades(cameraPosition, renderMode); } else { // just render myAvatar _myAvatar->render(cameraPosition, renderMode, postLighting); diff --git a/libraries/script-engine/src/SceneScriptingInterface.cpp b/libraries/script-engine/src/SceneScriptingInterface.cpp index 3026c0c95d..5a8f591410 100644 --- a/libraries/script-engine/src/SceneScriptingInterface.cpp +++ b/libraries/script-engine/src/SceneScriptingInterface.cpp @@ -64,4 +64,18 @@ float SceneScriptingInterface::getSunIntensity() const { model::SunSkyStagePointer SceneScriptingInterface::getSkyStage() const { return _skyStage; +} + +void SceneScriptingInterface::setShouldRenderAvatars(bool shouldRenderAvatars) { + if (shouldRenderAvatars != _shouldRenderAvatars) { + _shouldRenderAvatars = shouldRenderAvatars; + emit shouldRenderAvatarsChanged(_shouldRenderAvatars); + } +} + +void SceneScriptingInterface::setShouldRenderEntities(bool shouldRenderEntities) { + if (shouldRenderEntities != _shouldRenderEntities) { + _shouldRenderEntities = shouldRenderEntities; + emit shouldRenderEntitiesChanged(_shouldRenderEntities); + } } \ No newline at end of file diff --git a/libraries/script-engine/src/SceneScriptingInterface.h b/libraries/script-engine/src/SceneScriptingInterface.h index c57a343e9d..352bc1e78f 100644 --- a/libraries/script-engine/src/SceneScriptingInterface.h +++ b/libraries/script-engine/src/SceneScriptingInterface.h @@ -45,12 +45,15 @@ public: model::SunSkyStagePointer getSkyStage() const; - Q_INVOKABLE void setShouldRenderAvatars(bool shouldRenderAvatars) { _shouldRenderAvatars = shouldRenderAvatars; } + Q_INVOKABLE void setShouldRenderAvatars(bool shouldRenderAvatars); Q_INVOKABLE bool shouldRenderAvatars() const { return _shouldRenderAvatars; } - Q_INVOKABLE void setShouldRenderEntities(bool shouldRenderEntities) { _shouldRenderEntities = shouldRenderEntities; } + Q_INVOKABLE void setShouldRenderEntities(bool shouldRenderEntities); Q_INVOKABLE bool shouldRenderEntities() const { return _shouldRenderEntities; } - + +signals: + void shouldRenderAvatarsChanged(bool shouldRenderAvatars); + void shouldRenderEntitiesChanged(bool shouldRenderEntities); protected: SceneScriptingInterface() {}; ~SceneScriptingInterface() {}; From 40f7e683da4a19ce8dfb2d4e4a9824cd98c15999 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Wed, 1 Apr 2015 17:38:32 -0700 Subject: [PATCH 06/10] don't attach iron man helmet while in lobby --- examples/lobby.js | 7 ------- 1 file changed, 7 deletions(-) diff --git a/examples/lobby.js b/examples/lobby.js index c749e95a4e..b13c78845a 100644 --- a/examples/lobby.js +++ b/examples/lobby.js @@ -45,8 +45,6 @@ var panelsCenterShift = Vec3.subtract(panelsCenter, orbCenter); var ORB_SHIFT = { x: 0, y: -1.4, z: -0.8}; -var HELMET_ATTACHMENT_URL = HIFI_PUBLIC_BUCKET + "models/attachments/IronManMaskOnly.fbx" - var LOBBY_PANEL_WALL_URL = HIFI_PUBLIC_BUCKET + "models/sets/Lobby/PanelWallForInterface.fbx"; var LOBBY_BLANK_PANEL_TEXTURE_URL = HIFI_PUBLIC_BUCKET + "models/sets/Lobby/Texture.jpg"; var LOBBY_SHELL_URL = HIFI_PUBLIC_BUCKET + "models/sets/Lobby/LobbyShellForInterface.fbx"; @@ -136,9 +134,6 @@ function drawLobby() { panelWall = Overlays.addOverlay("model", panelWallProps); orbShell = Overlays.addOverlay("model", orbShellProps); descriptionText = Overlays.addOverlay("text3d", descriptionTextProps); - - // add an attachment on this avatar so other people see them in the lobby - MyAvatar.attach(HELMET_ATTACHMENT_URL, "Neck", {x: 0, y: 0, z: 0}, Quat.fromPitchYawRollDegrees(0, 0, 0), 1.15); if (droneSound.downloaded) { // start the drone sound @@ -261,8 +256,6 @@ function cleanupLobby() { places = {}; toggleEnvironmentRendering(true); - - MyAvatar.detachOne(HELMET_ATTACHMENT_URL); } function actionStartEvent(event) { From 862f26a0958e948fe407414aa7aabe9de53d037f Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Wed, 1 Apr 2015 17:41:17 -0700 Subject: [PATCH 07/10] put the friendly lobby back in default scripts --- examples/defaultScripts.js | 1 + 1 file changed, 1 insertion(+) diff --git a/examples/defaultScripts.js b/examples/defaultScripts.js index 9d2a74fe56..05ffb0bd3f 100644 --- a/examples/defaultScripts.js +++ b/examples/defaultScripts.js @@ -14,6 +14,7 @@ Script.load("selectAudioDevice.js"); Script.load("controllers/hydra/hydraMove.js"); Script.load("headMove.js"); Script.load("inspect.js"); +Script.load("lobby.js"); Script.load("notifications.js"); Script.load("look.js"); Script.load("users.js"); From 69f0c50a3cc2f0e4b87615feb8a459cb0772ae42 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Wed, 1 Apr 2015 17:50:12 -0700 Subject: [PATCH 08/10] fix cleanup order to ensure environment is re-rendered --- examples/lobby.js | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/examples/lobby.js b/examples/lobby.js index b13c78845a..3095740c93 100644 --- a/examples/lobby.js +++ b/examples/lobby.js @@ -232,6 +232,8 @@ function playRandomMuzak() { } function cleanupLobby() { + toggleEnvironmentRendering(true); + // for each of the 21 placeholder textures, set them back to default so the cached model doesn't have changed textures var panelTexturesReset = {}; panelTexturesReset["textures"] = {}; @@ -249,13 +251,18 @@ function cleanupLobby() { panelWall = false; orbShell = false; - currentDrone.stop(); - currentMuzakInjector.stop(); + if (currentDrone) { + currentDrone.stop(); + currentDrone = null + } - currentMuzakInjector = null; + if (currentMuzakInjector) { + currentMuzakInjector.stop(); + currentMuzakInjector = null; + } places = {}; - toggleEnvironmentRendering(true); + } function actionStartEvent(event) { From 12cacad8f8a429d0201aa8c1153369bbd2b554d3 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Wed, 1 Apr 2015 18:02:48 -0700 Subject: [PATCH 09/10] remove a stray message call in cmake file --- cmake/externals/tbb/OSXTBBInstallNameChange.cmake | 2 -- 1 file changed, 2 deletions(-) diff --git a/cmake/externals/tbb/OSXTBBInstallNameChange.cmake b/cmake/externals/tbb/OSXTBBInstallNameChange.cmake index cc4df46812..0fa377959b 100644 --- a/cmake/externals/tbb/OSXTBBInstallNameChange.cmake +++ b/cmake/externals/tbb/OSXTBBInstallNameChange.cmake @@ -13,8 +13,6 @@ set(_TBB_LIBRARY_DIR ${CMAKE_CURRENT_SOURCE_DIR}/lib) file(GLOB_RECURSE _TBB_LIBRARIES "${_TBB_LIBRARY_DIR}/*.dylib") -message(${_TBB_LIBRARIES}) - # raise an error if we found none if (NOT _TBB_LIBRARIES) message(FATAL_ERROR "Did not find any TBB libraries") From c198cd9c265e062053547fc0a3504107a28e4131 Mon Sep 17 00:00:00 2001 From: Brad Davis Date: Thu, 2 Apr 2015 00:33:31 -0700 Subject: [PATCH 10/10] Update to reflect new required package --- BUILD_LINUX.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BUILD_LINUX.md b/BUILD_LINUX.md index 933e73e869..38f5628c64 100644 --- a/BUILD_LINUX.md +++ b/BUILD_LINUX.md @@ -3,4 +3,4 @@ Please read the [general build guide](BUILD.md) for information on dependencies ###Qt5 Dependencies Should you choose not to install Qt5 via a package manager that handles dependencies for you, you may be missing some Qt5 dependencies. On Ubuntu, for example, the following additional packages are required: - libasound2 libxmu-dev libxi-dev freeglut3-dev libasound2-dev libjack-dev \ No newline at end of file + libasound2 libxmu-dev libxi-dev freeglut3-dev libasound2-dev libjack-dev libxrandr-dev