From 376756d41399521c42bc52d6d8a714df6c0e3c76 Mon Sep 17 00:00:00 2001 From: Brad Hefta-Gaub Date: Thu, 25 Aug 2016 09:58:36 -0700 Subject: [PATCH 1/9] include the codec name in the agent avatar audio stream --- assignment-client/src/Agent.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/assignment-client/src/Agent.cpp b/assignment-client/src/Agent.cpp index 65e193dec6..350d359412 100644 --- a/assignment-client/src/Agent.cpp +++ b/assignment-client/src/Agent.cpp @@ -392,7 +392,6 @@ void Agent::processAgentAvatarAndAudio(float deltaTime) { const int16_t* nextSoundOutput = NULL; if (_avatarSound) { - const QByteArray& soundByteArray = _avatarSound->getByteArray(); nextSoundOutput = reinterpret_cast(soundByteArray.data() + _numAvatarSoundSentBytes); @@ -442,6 +441,10 @@ void Agent::processAgentAvatarAndAudio(float deltaTime) { audioPacket->writePrimitive(headOrientation); } else if (nextSoundOutput) { + // write the codec + QString codecName; + audioPacket->writeString(codecName); + // assume scripted avatar audio is mono and set channel flag to zero audioPacket->writePrimitive((quint8)0); From 24162f0f3d26a235bb5a9833a2f5e9e4efa87aeb Mon Sep 17 00:00:00 2001 From: Zach Pomerantz Date: Thu, 25 Aug 2016 12:37:23 -0700 Subject: [PATCH 2/9] set skybox default color to empty color --- interface/src/Application.cpp | 19 +++++++++++++------ libraries/model/src/model/Skybox.h | 2 +- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 5a129bc980..b2095dbdfe 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -1220,7 +1220,6 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer) : _defaultSkyboxAmbientTexture = textureCache->getImageTexture(skyboxAmbientUrl, NetworkTexture::CUBE_TEXTURE, { { "generateIrradiance", true } }); _defaultSkybox->setCubemap(_defaultSkyboxTexture); - _defaultSkybox->setColor({ 1.0, 1.0, 1.0 }); EntityItem::setEntitiesShouldFadeFunction([this]() { SharedNodePointer entityServerNode = DependencyManager::get()->soloNodeOfType(NodeType::EntityServer); @@ -4327,8 +4326,9 @@ namespace render { sceneKeyLight->setIntensity(DEFAULT_SKYBOX_INTENSITY); sceneKeyLight->setAmbientIntensity(DEFAULT_SKYBOX_AMBIENT_INTENSITY); sceneKeyLight->setDirection(DEFAULT_SKYBOX_DIRECTION); - // fall through: render a skybox, if available + // fall through: render a skybox (if available), or the defaults (if requested) } + case model::SunSkyStage::SKY_BOX: { auto skybox = skyStage->getSkybox(); if (!skybox->empty()) { @@ -4336,25 +4336,32 @@ namespace render { skybox->render(batch, args->getViewFrustum()); break; } - // fall through: render defaults, if available + // fall through: render defaults (if requested) } + case model::SunSkyStage::SKY_DEFAULT_AMBIENT_TEXTURE: { if (Menu::getInstance()->isOptionChecked(MenuOption::DefaultSkybox)) { auto scene = DependencyManager::get()->getStage(); auto sceneKeyLight = scene->getKeyLight(); auto defaultSkyboxAmbientTexture = qApp->getDefaultSkyboxAmbientTexture(); - // do not set the ambient sphere - it peaks too high, and causes flashing when turning + // set the ambient sphere uniformly - the defaultSkyboxAmbientTexture has peaks that cause flashing when turning + sceneKeyLight->setAmbientSphere(DependencyManager::get()->getWhiteTexture()->getIrradiance()); sceneKeyLight->setAmbientMap(defaultSkyboxAmbientTexture); + // fall through: render defaults skybox + } else { + break; } - // fall through: render defaults, if available } + case model::SunSkyStage::SKY_DEFAULT_TEXTURE: if (Menu::getInstance()->isOptionChecked(MenuOption::DefaultSkybox)) { qApp->getDefaultSkybox()->render(batch, args->getViewFrustum()); } + break; + + // Any other cases require no extra rendering case model::SunSkyStage::NO_BACKGROUND: default: - // this line intentionally left blank break; } } diff --git a/libraries/model/src/model/Skybox.h b/libraries/model/src/model/Skybox.h index b2e004a2e9..f12d259411 100755 --- a/libraries/model/src/model/Skybox.h +++ b/libraries/model/src/model/Skybox.h @@ -51,7 +51,7 @@ protected: class Schema { public: - glm::vec3 color { 1.0f, 1.0f, 1.0f }; + glm::vec3 color { 0.0f, 0.0f, 0.0f }; float blend { 0.0f }; }; From 9be073cc12c014c5c636f18c4d18c758eb9268ae Mon Sep 17 00:00:00 2001 From: "James B. Pollack" Date: Thu, 25 Aug 2016 16:03:12 -0700 Subject: [PATCH 3/9] handle some more cases --- scripts/system/edit.js | 10 ++++- scripts/system/html/js/entityProperties.js | 44 ++++++++++++++-------- 2 files changed, 37 insertions(+), 17 deletions(-) diff --git a/scripts/system/edit.js b/scripts/system/edit.js index bcf31726bc..1727857ee8 100644 --- a/scripts/system/edit.js +++ b/scripts/system/edit.js @@ -1369,7 +1369,12 @@ var PropertiesTool = function (opts) { }); webView.webEventReceived.connect(function (data) { - data = JSON.parse(data); + try{ + data = JSON.parse(data); + } + catch(e){ + return; + } var i, properties, dY, diff, newPosition; if (data.type === "print") { if (data.message) { @@ -1418,7 +1423,8 @@ var PropertiesTool = function (opts) { pushCommandForSelections(); selectionManager._update(); } else if(data.type === 'saveUserData'){ - Entities.editEntity(data.id, data.properties) + var actualID = data.id.split('"')[1] + var success = Entities.editEntity(actualID, data.properties) } else if (data.type === "showMarketplace") { showMarketplace(); } else if (data.type === "action") { diff --git a/scripts/system/html/js/entityProperties.js b/scripts/system/html/js/entityProperties.js index 41a1266434..6337ef00af 100644 --- a/scripts/system/html/js/entityProperties.js +++ b/scripts/system/html/js/entityProperties.js @@ -333,7 +333,13 @@ function userDataChanger(groupName, keyName, checkBoxElement, userDataElement, d var properties = {}; var parsedData = {}; try { - parsedData = JSON.parse(userDataElement.value); + if ($('#userdata-editor').css('height') !== "0px") { + //if there is an expanded, we want to use its json. + parsedData = getEditorJSON(); + } else { + parsedData = JSON.parse(userDataElement.value); + } + } catch (e) {} if (!(groupName in parsedData)) { @@ -441,7 +447,11 @@ function hideUserDataTextArea() { function showStaticUserData() { $('#static-userdata').show(); $('#static-userdata').css('height', $('#userdata-editor').height()) - $('#static-userdata').text(editor.getText()); + if (editor !== null) { + $('#static-userdata').text(editor.getText()); + } + + }; function removeStaticUserData() { @@ -450,7 +460,10 @@ function removeStaticUserData() { function setEditorJSON(json) { editor.set(json) - editor.expandAll(); + if (editor.hasOwnProperty('expandAll')) { + editor.expandAll(); + } + }; function getEditorJSON() { @@ -745,11 +758,11 @@ function loaded() { } else { properties = data.selections[0].properties; - if (lastEntityID !== properties.id && lastEntityID !== null && editor !== null) { + if (lastEntityID !== '"' + properties.id + '"' && lastEntityID !== null && editor !== null) { saveJSONUserData(true); } - lastEntityID = properties.id; + lastEntityID = '"' + properties.id + '"'; elID.innerHTML = properties.id; elType.innerHTML = properties.type; @@ -840,26 +853,27 @@ function loaded() { FIXME: See FIXME for property-script-url. elScriptTimestamp.value = properties.scriptTimestamp; */ - hideUserDataTextArea(); + var json = null; try { json = JSON.parse(properties.userData); - + } catch (e) { + //normal text + deleteJSONEditor(); + elUserData.value = properties.userData; + showUserDataTextArea(); + showNewJSONEditorButton(); + hideSaveUserDataButton(); + } + if (json !== null) { if (editor === null) { createJSONEditor(); } setEditorJSON(json); showSaveUserDataButton(); + hideUserDataTextArea(); hideNewJSONEditorButton(); - - } catch (e) { - //normal text - - elUserData.value = properties.userData; - showUserDataTextArea(); - showNewJSONEditorButton(); - hideSaveUserDataButton(); } elHyperlinkHref.value = properties.href; From ee190db5eb8fa4bbbd416b9a8fe6fde32a633e37 Mon Sep 17 00:00:00 2001 From: "James B. Pollack" Date: Thu, 25 Aug 2016 16:27:58 -0700 Subject: [PATCH 4/9] some comments --- scripts/system/edit.js | 1 + scripts/system/html/js/entityProperties.js | 2 ++ 2 files changed, 3 insertions(+) diff --git a/scripts/system/edit.js b/scripts/system/edit.js index 1727857ee8..84afca4a01 100644 --- a/scripts/system/edit.js +++ b/scripts/system/edit.js @@ -1423,6 +1423,7 @@ var PropertiesTool = function (opts) { pushCommandForSelections(); selectionManager._update(); } else if(data.type === 'saveUserData'){ + //the event bridge and json parsing handle our avatar id string differently. var actualID = data.id.split('"')[1] var success = Entities.editEntity(actualID, data.properties) } else if (data.type === "showMarketplace") { diff --git a/scripts/system/html/js/entityProperties.js b/scripts/system/html/js/entityProperties.js index 6337ef00af..8ce3fbbe00 100644 --- a/scripts/system/html/js/entityProperties.js +++ b/scripts/system/html/js/entityProperties.js @@ -758,9 +758,11 @@ function loaded() { } else { properties = data.selections[0].properties; + if (lastEntityID !== '"' + properties.id + '"' && lastEntityID !== null && editor !== null) { saveJSONUserData(true); } + //the event bridge and json parsing handle our avatar id string differently. lastEntityID = '"' + properties.id + '"'; elID.innerHTML = properties.id; From 5e82093e69643868cc7053fae3cfaebd51bdc04a Mon Sep 17 00:00:00 2001 From: Zach Pomerantz Date: Thu, 25 Aug 2016 18:08:03 -0700 Subject: [PATCH 5/9] set skybox clear color to empty color --- libraries/model/src/model/Skybox.cpp | 5 +++++ libraries/model/src/model/Skybox.h | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/libraries/model/src/model/Skybox.cpp b/libraries/model/src/model/Skybox.cpp index cb3fb43630..4a66c18f98 100755 --- a/libraries/model/src/model/Skybox.cpp +++ b/libraries/model/src/model/Skybox.cpp @@ -49,6 +49,11 @@ void Skybox::updateSchemaBuffer() const { } } +void Skybox::clear() { + _schemaBuffer.edit().color = vec3(0); + setCubemap(nullptr); +} + void Skybox::prepare(gpu::Batch& batch, int textureSlot, int bufferSlot) const { if (bufferSlot > -1) { batch.setUniformBuffer(bufferSlot, _schemaBuffer); diff --git a/libraries/model/src/model/Skybox.h b/libraries/model/src/model/Skybox.h index f12d259411..1e6d30bbc1 100755 --- a/libraries/model/src/model/Skybox.h +++ b/libraries/model/src/model/Skybox.h @@ -36,7 +36,7 @@ public: const gpu::TexturePointer& getCubemap() const { return _cubemap; } virtual bool empty() { return _schemaBuffer.get().color == vec3(0) && !_cubemap; } - virtual void clear() { setCubemap(nullptr); } + virtual void clear(); void prepare(gpu::Batch& batch, int textureSlot = SKYBOX_SKYMAP_SLOT, int bufferSlot = SKYBOX_CONSTANTS_SLOT) const; virtual void render(gpu::Batch& batch, const ViewFrustum& frustum) const; From 996346980d980b7d47a2e73dbacace2d0d78fe5c Mon Sep 17 00:00:00 2001 From: Zach Pomerantz Date: Thu, 25 Aug 2016 18:08:22 -0700 Subject: [PATCH 6/9] clear the skybox between scenes --- libraries/entities-renderer/src/EntityTreeRenderer.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/libraries/entities-renderer/src/EntityTreeRenderer.cpp b/libraries/entities-renderer/src/EntityTreeRenderer.cpp index 39031acaa1..2aa84bff03 100644 --- a/libraries/entities-renderer/src/EntityTreeRenderer.cpp +++ b/libraries/entities-renderer/src/EntityTreeRenderer.cpp @@ -113,17 +113,19 @@ void EntityTreeRenderer::resetEntitiesScriptEngine() { void EntityTreeRenderer::clear() { leaveAllEntities(); + // unload and stop the engine if (_entitiesScriptEngine) { - // Unload and stop the engine here (instead of in its deleter) to - // avoid marshalling unload signals back to this thread + // do this here (instead of in deleter) to avoid marshalling unload signals back to this thread _entitiesScriptEngine->unloadAllEntityScripts(); _entitiesScriptEngine->stop(); } + // reset the engine if (_wantScripts && !_shuttingDown) { resetEntitiesScriptEngine(); } + // remove all entities from the scene auto scene = _viewState->getMain3DScene(); render::PendingChanges pendingChanges; foreach(auto entity, _entitiesInScene) { @@ -132,6 +134,10 @@ void EntityTreeRenderer::clear() { scene->enqueuePendingChanges(pendingChanges); _entitiesInScene.clear(); + // reset the zone to the default (while we load the next scene) + _bestZone = nullptr; + applyZonePropertiesToScene(_bestZone); + OctreeRenderer::clear(); } From 4c63ad1ac866d0d056e124efd7bb7a11776e3061 Mon Sep 17 00:00:00 2001 From: "James B. Pollack" Date: Fri, 26 Aug 2016 10:19:31 -0700 Subject: [PATCH 7/9] code cleanup --- scripts/system/edit.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/scripts/system/edit.js b/scripts/system/edit.js index 84afca4a01..bb52637ef5 100644 --- a/scripts/system/edit.js +++ b/scripts/system/edit.js @@ -1369,10 +1369,10 @@ var PropertiesTool = function (opts) { }); webView.webEventReceived.connect(function (data) { - try{ + try { data = JSON.parse(data); } - catch(e){ + catch(e) { return; } var i, properties, dY, diff, newPosition; @@ -1424,8 +1424,8 @@ var PropertiesTool = function (opts) { selectionManager._update(); } else if(data.type === 'saveUserData'){ //the event bridge and json parsing handle our avatar id string differently. - var actualID = data.id.split('"')[1] - var success = Entities.editEntity(actualID, data.properties) + var actualID = data.id.split('"')[1]; + Entities.editEntity(actualID, data.properties); } else if (data.type === "showMarketplace") { showMarketplace(); } else if (data.type === "action") { From f6bd04780d95f7906581e3bc794dccbf26c7f554 Mon Sep 17 00:00:00 2001 From: "James B. Pollack" Date: Fri, 26 Aug 2016 11:56:40 -0700 Subject: [PATCH 8/9] add a print to catch errors --- scripts/system/edit.js | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/system/edit.js b/scripts/system/edit.js index bb52637ef5..8dc6e144f7 100644 --- a/scripts/system/edit.js +++ b/scripts/system/edit.js @@ -1373,6 +1373,7 @@ var PropertiesTool = function (opts) { data = JSON.parse(data); } catch(e) { + print('web event was not valid json.') return; } var i, properties, dY, diff, newPosition; From 53a22819180a37271c5d1bac25fae8c000268fb4 Mon Sep 17 00:00:00 2001 From: "James B. Pollack" Date: Fri, 26 Aug 2016 11:57:15 -0700 Subject: [PATCH 9/9] better --- scripts/system/edit.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/system/edit.js b/scripts/system/edit.js index 8dc6e144f7..1a50fb0d8b 100644 --- a/scripts/system/edit.js +++ b/scripts/system/edit.js @@ -1373,7 +1373,7 @@ var PropertiesTool = function (opts) { data = JSON.parse(data); } catch(e) { - print('web event was not valid json.') + print('Edit.js received web event that was not valid json.') return; } var i, properties, dY, diff, newPosition;