From c4c6b30440db678e9f1a1787fb9f19a961ee5bc0 Mon Sep 17 00:00:00 2001 From: "James B. Pollack" Date: Tue, 23 Aug 2016 12:02:57 -0700 Subject: [PATCH 1/3] center after teleport --- scripts/system/controllers/teleport.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/scripts/system/controllers/teleport.js b/scripts/system/controllers/teleport.js index 77d0109b9f..f713c0db48 100644 --- a/scripts/system/controllers/teleport.js +++ b/scripts/system/controllers/teleport.js @@ -564,6 +564,8 @@ function Teleporter() { } }, SMOOTH_ARRIVAL_SPACING); + + HMD.centerUI(); } } From 48bab49210c69cff1f9d86a1e13d4e0dc731de3f Mon Sep 17 00:00:00 2001 From: "James B. Pollack" Date: Tue, 23 Aug 2016 12:07:59 -0700 Subject: [PATCH 2/3] in the right place... thanks howard! --- scripts/system/controllers/teleport.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/scripts/system/controllers/teleport.js b/scripts/system/controllers/teleport.js index f713c0db48..0aa5820b0f 100644 --- a/scripts/system/controllers/teleport.js +++ b/scripts/system/controllers/teleport.js @@ -553,6 +553,7 @@ function Teleporter() { _this.smoothArrivalInterval = Script.setInterval(function() { if (_this.arrivalPoints.length === 0) { Script.clearInterval(_this.smoothArrivalInterval); + HMD.centerUI(); return; } var landingPoint = _this.arrivalPoints.shift(); @@ -564,8 +565,8 @@ function Teleporter() { } }, SMOOTH_ARRIVAL_SPACING); - - HMD.centerUI(); + + } } From 6c99a330093807f25e85e7204373f191925155c1 Mon Sep 17 00:00:00 2001 From: Zach Pomerantz Date: Tue, 23 Aug 2016 14:55:46 -0700 Subject: [PATCH 3/3] detect unset skybox --- interface/src/Application.cpp | 2 +- libraries/model/src/model/Skybox.h | 1 + libraries/procedural/src/procedural/Procedural.h | 1 + libraries/procedural/src/procedural/ProceduralSkybox.cpp | 4 ++++ libraries/procedural/src/procedural/ProceduralSkybox.h | 7 ++++--- 5 files changed, 11 insertions(+), 4 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 836b48b3fb..6b4eb8d140 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -4306,7 +4306,7 @@ namespace render { } case model::SunSkyStage::SKY_BOX: { auto skybox = skyStage->getSkybox(); - if (skybox) { + if (!skybox->empty()) { PerformanceTimer perfTimer("skybox"); skybox->render(batch, args->getViewFrustum()); break; diff --git a/libraries/model/src/model/Skybox.h b/libraries/model/src/model/Skybox.h index 8c9e7bb1d6..b2e004a2e9 100755 --- a/libraries/model/src/model/Skybox.h +++ b/libraries/model/src/model/Skybox.h @@ -35,6 +35,7 @@ public: void setCubemap(const gpu::TexturePointer& cubemap); const gpu::TexturePointer& getCubemap() const { return _cubemap; } + virtual bool empty() { return _schemaBuffer.get().color == vec3(0) && !_cubemap; } virtual void clear() { setCubemap(nullptr); } void prepare(gpu::Batch& batch, int textureSlot = SKYBOX_SKYMAP_SLOT, int bufferSlot = SKYBOX_CONSTANTS_SLOT) const; diff --git a/libraries/procedural/src/procedural/Procedural.h b/libraries/procedural/src/procedural/Procedural.h index fdca85bbae..c128da0be0 100644 --- a/libraries/procedural/src/procedural/Procedural.h +++ b/libraries/procedural/src/procedural/Procedural.h @@ -38,6 +38,7 @@ public: void parse(const QString& userDataJson); bool ready(); + bool enabled() { return _enabled; } void prepare(gpu::Batch& batch, const glm::vec3& position, const glm::vec3& size, const glm::quat& orientation); const gpu::ShaderPointer& getShader() const { return _shader; } diff --git a/libraries/procedural/src/procedural/ProceduralSkybox.cpp b/libraries/procedural/src/procedural/ProceduralSkybox.cpp index 843df3aa8d..83122578e7 100644 --- a/libraries/procedural/src/procedural/ProceduralSkybox.cpp +++ b/libraries/procedural/src/procedural/ProceduralSkybox.cpp @@ -26,6 +26,10 @@ ProceduralSkybox::ProceduralSkybox() : model::Skybox() { _procedural._opaqueState->setStencilTest(true, 0xFF, gpu::State::StencilTest(0, 0xFF, gpu::EQUAL, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP)); } +bool ProceduralSkybox::empty() { + return !_procedural.enabled() && Skybox::empty(); +} + void ProceduralSkybox::clear() { // Parse and prepare a procedural with no shaders to release textures parse(QString()); diff --git a/libraries/procedural/src/procedural/ProceduralSkybox.h b/libraries/procedural/src/procedural/ProceduralSkybox.h index b38e481317..30412d559c 100644 --- a/libraries/procedural/src/procedural/ProceduralSkybox.h +++ b/libraries/procedural/src/procedural/ProceduralSkybox.h @@ -20,13 +20,14 @@ class ProceduralSkybox: public model::Skybox { public: ProceduralSkybox(); - virtual ~ProceduralSkybox() {}; + ~ProceduralSkybox() override {}; void parse(const QString& userData) { _procedural.parse(userData); } - virtual void clear() override; + bool empty() override; + void clear() override; - virtual void render(gpu::Batch& batch, const ViewFrustum& frustum) const override; + void render(gpu::Batch& batch, const ViewFrustum& frustum) const override; static void render(gpu::Batch& batch, const ViewFrustum& frustum, const ProceduralSkybox& skybox); protected: