From 64317f5fd097996d67781b3b0e162b583b03b01f Mon Sep 17 00:00:00 2001 From: samcake Date: Thu, 4 May 2017 16:47:03 -0700 Subject: [PATCH 001/357] Adding a light item per zone --- .../src/RenderableZoneEntityItem.cpp | 84 ++++++++++++++++++- .../src/RenderableZoneEntityItem.h | 9 +- libraries/render-utils/src/LightPayload.cpp | 68 +++++++++++++++ libraries/render-utils/src/LightPayload.h | 30 +++++++ libraries/render-utils/src/LightStage.h | 5 +- .../render-utils/src/RenderDeferredTask.cpp | 1 + .../utilities/render/deferredLighting.qml | 5 ++ 7 files changed, 198 insertions(+), 4 deletions(-) diff --git a/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp b/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp index 66495a7054..de7b943a92 100644 --- a/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp @@ -21,6 +21,9 @@ #include "EntityTreeRenderer.h" #include "RenderableEntityItem.h" +#include + + // Sphere entities should fit inside a cube entity of the same size, so a sphere that has dimensions 1x1x1 // is a half unit sphere. However, the geometry cache renders a UNIT sphere, so we need to scale down. static const float SPHERE_ENTITY_SCALE = 0.5f; @@ -168,6 +171,37 @@ void RenderableZoneEntityItem::render(RenderArgs* args) { _model->removeFromScene(scene, transaction); scene->enqueueTransaction(transaction); } + + /* + { + // Set the keylight + sceneKeyLight->setColor(ColorUtils::toVec3(this->getKeyLightProperties().getColor())); + sceneKeyLight->setIntensity(this->getKeyLightProperties().getIntensity()); + sceneKeyLight->setAmbientIntensity(this->getKeyLightProperties().getAmbientIntensity()); + sceneKeyLight->setDirection(this->getKeyLightProperties().getDirection()); + + // Set the stage + bool isSunModelEnabled = this->getStageProperties().getSunModelEnabled(); + sceneStage->setSunModelEnable(isSunModelEnabled); + if (isSunModelEnabled) { + sceneStage->setLocation(this->getStageProperties().getLongitude(), + this->getStageProperties().getLatitude(), + this->getStageProperties().getAltitude()); + + auto sceneTime = sceneStage->getTime(); + sceneTime->setHour(this->getStageProperties().calculateHour()); + sceneTime->setDay(this->getStageProperties().calculateDay()); + } + + // Set the ambient texture + _ambientTextureURL = this->getKeyLightProperties().getAmbientURL(); + if (_ambientTextureURL.isEmpty()) { + _pendingAmbientTexture = false; + _ambientTexture.clear(); + } else { + _pendingAmbientTexture = true; + } + }*/ } bool RenderableZoneEntityItem::contains(const glm::vec3& point) const { @@ -229,11 +263,25 @@ bool RenderableZoneEntityItem::addToScene(EntityItemPointer self, const render:: renderPayload->addStatusGetters(statusGetters); transaction.resetItem(_myMetaItem, renderPayload); + + + _myKeyLightItem = scene->allocateID(); + + auto keyLightPayload = std::make_shared(); + updateKeyLightItemFromEntity((*keyLightPayload)); + + auto keyLightItem = std::make_shared(keyLightPayload); + + transaction.resetItem(_myKeyLightItem, keyLightItem); + + return true; } void RenderableZoneEntityItem::removeFromScene(EntityItemPointer self, const render::ScenePointer& scene, render::Transaction& transaction) { + transaction.removeItem(_myKeyLightItem); + render::Item::clearID(_myKeyLightItem); transaction.removeItem(_myMetaItem); render::Item::clearID(_myMetaItem); if (_model) { @@ -249,11 +297,43 @@ void RenderableZoneEntityItem::notifyBoundChanged() { render::Transaction transaction; render::ScenePointer scene = AbstractViewStateInterface::instance()->getMain3DScene(); if (scene) { - transaction.updateItem(_myMetaItem, [](RenderableZoneEntityItemMeta& data) { - }); + transaction.updateItem(_myMetaItem, [](RenderableZoneEntityItemMeta& data) {}); + transaction.updateItem(_myKeyLightItem, [](KeyLightPayload& data) {}); scene->enqueueTransaction(transaction); } else { qCWarning(entitiesrenderer) << "RenderableZoneEntityItem::notifyBoundChanged(), Unexpected null scene, possibly during application shutdown"; } } + +void RenderableZoneEntityItem::updateKeyLightItemFromEntity(KeyLightPayload& keylightPayload) { + auto entity = this; + + keylightPayload.setVisible(entity->getVisible()); + + auto light = keylightPayload.editLight(); + light->setPosition(entity->getPosition()); + light->setOrientation(entity->getRotation()); + + bool success; + keylightPayload.editBound() = entity->getAABox(success); + if (!success) { + keylightPayload.editBound() = render::Item::Bound(); + } + + // Set the keylight + light->setColor(ColorUtils::toVec3(this->getKeyLightProperties().getColor())); + light->setIntensity(this->getKeyLightProperties().getIntensity()); + light->setAmbientIntensity(this->getKeyLightProperties().getAmbientIntensity()); + light->setDirection(this->getKeyLightProperties().getDirection()); + + + // light->setColor(toGlm(entity->getXColor())); + + // float intensity = entity->getIntensity();//* entity->getFadingRatio(); + // light->setIntensity(intensity); + + + light->setType(model::Light::SUN); + +} diff --git a/libraries/entities-renderer/src/RenderableZoneEntityItem.h b/libraries/entities-renderer/src/RenderableZoneEntityItem.h index c81afdab08..d90993145e 100644 --- a/libraries/entities-renderer/src/RenderableZoneEntityItem.h +++ b/libraries/entities-renderer/src/RenderableZoneEntityItem.h @@ -16,6 +16,7 @@ #include class NetworkGeometry; +class KeyLightPayload; class RenderableZoneEntityItem : public ZoneEntityItem { public: @@ -42,7 +43,7 @@ public: virtual void removeFromScene(EntityItemPointer self, const render::ScenePointer& scene, render::Transaction& transaction) override; render::ItemID getRenderItemID() const { return _myMetaItem; } - + private: virtual void locationChanged(bool tellPhysics = true) override { EntityItem::locationChanged(tellPhysics); notifyBoundChanged(); } virtual void dimensionsChanged() override { EntityItem::dimensionsChanged(); notifyBoundChanged(); } @@ -54,11 +55,17 @@ private: template void changeProperties(Lambda functor); + + + void updateKeyLightItemFromEntity(KeyLightPayload& keylightPayload); + Model* _model; bool _needsInitialSimulation; render::ItemID _myMetaItem{ render::Item::INVALID_ITEM_ID }; + + render::ItemID _myKeyLightItem { render::Item::INVALID_ITEM_ID }; }; #endif // hifi_RenderableZoneEntityItem_h diff --git a/libraries/render-utils/src/LightPayload.cpp b/libraries/render-utils/src/LightPayload.cpp index a670c9f620..dbdf7129ef 100644 --- a/libraries/render-utils/src/LightPayload.cpp +++ b/libraries/render-utils/src/LightPayload.cpp @@ -81,3 +81,71 @@ void LightPayload::render(RenderArgs* args) { } } + +namespace render { + template <> const ItemKey payloadGetKey(const KeyLightPayload::Pointer& payload) { + ItemKey::Builder builder; + builder.withTypeLight(); + if (!payload || !payload->isVisible()) { + builder.withInvisible(); + } + return builder.build(); + } + + template <> const Item::Bound payloadGetBound(const KeyLightPayload::Pointer& payload) { + if (payload) { + return payload->editBound(); + } + return render::Item::Bound(); + } + template <> void payloadRender(const KeyLightPayload::Pointer& payload, RenderArgs* args) { + if (args) { + if (payload) { + payload->render(args); + } + } + } +} + +KeyLightPayload::KeyLightPayload() : +_light(std::make_shared()) +{ +} + + +KeyLightPayload::~KeyLightPayload() { + if (!LightStage::isIndexInvalid(_index)) { + if (_stage) { + _stage->removeLight(_index); + } + } +} + +void KeyLightPayload::render(RenderArgs* args) { + if (!_stage) { + _stage = DependencyManager::get()->getLightStage(); + } + // Do we need to allocate the light in the stage ? + if (LightStage::isIndexInvalid(_index)) { + _index = _stage->addLight(_light); + _needUpdate = false; + } + // Need an update ? + if (_needUpdate) { + _stage->updateLightArrayBuffer(_index); + _needUpdate = false; + } + + if (isVisible()) { + // FInally, push the light visible in the frame + _stage->_currentFrame.pushLight(_index, _light->getType()); + +#ifdef WANT_DEBUG + Q_ASSERT(args->_batch); + gpu::Batch& batch = *args->_batch; + batch.setModelTransform(getTransformToCenter()); + DependencyManager::get()->renderWireSphere(batch, 0.5f, 15, 15, glm::vec4(color, 1.0f)); +#endif + } +} + diff --git a/libraries/render-utils/src/LightPayload.h b/libraries/render-utils/src/LightPayload.h index 6b5fe83f07..6a1435e12b 100644 --- a/libraries/render-utils/src/LightPayload.h +++ b/libraries/render-utils/src/LightPayload.h @@ -46,4 +46,34 @@ namespace render { template <> void payloadRender(const LightPayload::Pointer& payload, RenderArgs* args); } +class KeyLightPayload { +public: + using Payload = render::Payload; + using Pointer = Payload::DataPointer; + + KeyLightPayload(); + ~KeyLightPayload(); + void render(RenderArgs* args); + + model::LightPointer editLight() { _needUpdate = true; return _light; } + render::Item::Bound& editBound() { _needUpdate = true; return _bound; } + + void setVisible(bool visible) { _isVisible = visible; } + bool isVisible() const { return _isVisible; } + +protected: + model::LightPointer _light; + render::Item::Bound _bound; + LightStagePointer _stage; + LightStage::Index _index { LightStage::INVALID_INDEX }; + bool _needUpdate { true }; + bool _isVisible { true }; +}; + +namespace render { + template <> const ItemKey payloadGetKey(const KeyLightPayload::Pointer& payload); + template <> const Item::Bound payloadGetBound(const KeyLightPayload::Pointer& payload); + template <> void payloadRender(const KeyLightPayload::Pointer& payload, RenderArgs* args); +} + #endif \ No newline at end of file diff --git a/libraries/render-utils/src/LightStage.h b/libraries/render-utils/src/LightStage.h index c2293ac099..c38ca404ce 100644 --- a/libraries/render-utils/src/LightStage.h +++ b/libraries/render-utils/src/LightStage.h @@ -123,14 +123,17 @@ public: switch (type) { case model::Light::POINT: { pushPointLight(index); break; } case model::Light::SPOT: { pushSpotLight(index); break; } + case model::Light::SUN: { pushSunLight(index); break; } default: { break; } } } void pushPointLight(LightStage::Index index) { _pointLights.emplace_back(index); } void pushSpotLight(LightStage::Index index) { _spotLights.emplace_back(index); } - + void pushSunLight(LightStage::Index index) { _sunLights.emplace_back(index); } + LightStage::LightIndices _pointLights; LightStage::LightIndices _spotLights; + LightStage::LightIndices _sunLights; }; Frame _currentFrame; diff --git a/libraries/render-utils/src/RenderDeferredTask.cpp b/libraries/render-utils/src/RenderDeferredTask.cpp index 313b176f19..6367093cb4 100644 --- a/libraries/render-utils/src/RenderDeferredTask.cpp +++ b/libraries/render-utils/src/RenderDeferredTask.cpp @@ -162,6 +162,7 @@ void RenderDeferredTask::build(JobModel& task, const render::Varying& input, ren task.addJob("DrawOpaqueBounds", opaques); task.addJob("DrawTransparentBounds", transparents); + task.addJob("DrawLightBounds", lights); task.addJob("ZoneRenderer", opaques); } diff --git a/scripts/developer/utilities/render/deferredLighting.qml b/scripts/developer/utilities/render/deferredLighting.qml index 229a2d1c3b..c1d8da3db1 100644 --- a/scripts/developer/utilities/render/deferredLighting.qml +++ b/scripts/developer/utilities/render/deferredLighting.qml @@ -189,6 +189,11 @@ Column { checked: Render.getConfig("DrawOverlayTransparentBounds")["enabled"] onCheckedChanged: { Render.getConfig("DrawOverlayTransparentBounds")["enabled"] = checked } } + CheckBox { + text: "Lights" + checked: Render.getConfig("DrawLightBounds")["enabled"] + onCheckedChanged: { Render.getConfig("DrawLightBounds")["enabled"] = checked; } + } CheckBox { text: "Zones" checked: Render.getConfig("DrawZones")["enabled"] From df2c5b8c2346623a41aa6fc8345c343c8fb37504 Mon Sep 17 00:00:00 2001 From: samcake Date: Thu, 4 May 2017 18:28:12 -0700 Subject: [PATCH 002/357] adding the notification for keyLight changes modifying the KeyLIghtPayoad --- interface/src/Application.cpp | 2 +- .../src/RenderableZoneEntityItem.cpp | 31 ++++++++++++++ .../src/RenderableZoneEntityItem.h | 3 +- libraries/entities/src/ZoneEntityItem.cpp | 42 +++++++++++++------ libraries/entities/src/ZoneEntityItem.h | 13 ++++++ .../utilities/render/deferredLighting.qml | 16 ++++--- 6 files changed, 86 insertions(+), 21 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 3be55e82cd..8a16b755f5 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -337,7 +337,7 @@ public: // Don't actually crash in debug builds, in case this apparent deadlock is simply from // the developer actively debugging code #ifdef NDEBUG - deadlockDetectionCrash(); + // deadlockDetectionCrash(); #endif } } diff --git a/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp b/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp index de7b943a92..ad50c9f3cd 100644 --- a/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp @@ -68,8 +68,17 @@ bool RenderableZoneEntityItem::setProperties(const EntityItemProperties& propert void RenderableZoneEntityItem::somethingChangedNotification() { DependencyManager::get()->updateZone(_id); + + // A new way: + if (_keyLightPropertiesChanged || _backgroundPropertiesChanged) { + notifyChangedRenderItem(); + } + + // Poopagate back to parent + ZoneEntityItem::somethingChangedNotification(); } + int RenderableZoneEntityItem::readEntitySubclassDataFromBuffer(const unsigned char* data, int bytesLeftToRead, ReadBitstreamToTreeParams& args, EntityPropertyFlags& propertyFlags, bool overwriteLocalData, @@ -290,6 +299,7 @@ void RenderableZoneEntityItem::removeFromScene(EntityItemPointer self, const ren } + void RenderableZoneEntityItem::notifyBoundChanged() { if (!render::Item::isValidID(_myMetaItem)) { return; @@ -337,3 +347,24 @@ void RenderableZoneEntityItem::updateKeyLightItemFromEntity(KeyLightPayload& key light->setType(model::Light::SUN); } + +void RenderableZoneEntityItem::sceneUpdateRenderItemFromEntity(render::Transaction& transaction) { + if (!render::Item::isValidID(_myKeyLightItem)) { + return; + } + + transaction.updateItem(_myKeyLightItem, [&](KeyLightPayload& data) { + updateKeyLightItemFromEntity(data); + }); +} + +void RenderableZoneEntityItem::notifyChangedRenderItem() { + if (!render::Item::isValidID(_myKeyLightItem)) { + return; + } + + render::Transaction transaction; + render::ScenePointer scene = AbstractViewStateInterface::instance()->getMain3DScene(); + sceneUpdateRenderItemFromEntity(transaction); + scene->enqueueTransaction(transaction); +} \ No newline at end of file diff --git a/libraries/entities-renderer/src/RenderableZoneEntityItem.h b/libraries/entities-renderer/src/RenderableZoneEntityItem.h index d90993145e..1f3132746c 100644 --- a/libraries/entities-renderer/src/RenderableZoneEntityItem.h +++ b/libraries/entities-renderer/src/RenderableZoneEntityItem.h @@ -56,7 +56,8 @@ private: template void changeProperties(Lambda functor); - + void notifyChangedRenderItem(); + void sceneUpdateRenderItemFromEntity(render::Transaction& transaction); void updateKeyLightItemFromEntity(KeyLightPayload& keylightPayload); diff --git a/libraries/entities/src/ZoneEntityItem.cpp b/libraries/entities/src/ZoneEntityItem.cpp index 1d73902e8d..364321ddf0 100644 --- a/libraries/entities/src/ZoneEntityItem.cpp +++ b/libraries/entities/src/ZoneEntityItem.cpp @@ -71,8 +71,26 @@ bool ZoneEntityItem::setProperties(const EntityItemProperties& properties) { bool somethingChanged = false; somethingChanged = EntityItem::setProperties(properties); // set the properties in our base class - bool somethingChangedInKeyLight = _keyLightProperties.setProperties(properties); - + if (somethingChanged) { + bool wantDebug = false; + if (wantDebug) { + uint64_t now = usecTimestampNow(); + int elapsed = now - getLastEdited(); + qCDebug(entities) << "ZoneEntityItem::setProperties() AFTER update... edited AGO=" << elapsed << + "now=" << now << " getLastEdited()=" << getLastEdited(); + } + setLastEdited(properties._lastEdited); + } + + return somethingChanged; +} + +bool ZoneEntityItem::setSubClassProperties(const EntityItemProperties& properties) { + bool somethingChanged = EntityItem::setSubClassProperties(properties); // set the properties in our base class + + + _keyLightPropertiesChanged = _keyLightProperties.setProperties(properties); + bool somethingChangedInStage = _stageProperties.setProperties(properties); SET_ENTITY_PROPERTY_FROM_PROPERTIES(shapeType, setShapeType); @@ -85,18 +103,8 @@ bool ZoneEntityItem::setProperties(const EntityItemProperties& properties) { bool somethingChangedInSkybox = _skyboxProperties.setProperties(properties); - somethingChanged = somethingChanged || somethingChangedInKeyLight || somethingChangedInStage || somethingChangedInSkybox; + somethingChanged = somethingChanged || _keyLightPropertiesChanged || somethingChangedInStage || somethingChangedInSkybox; - if (somethingChanged) { - bool wantDebug = false; - if (wantDebug) { - uint64_t now = usecTimestampNow(); - int elapsed = now - getLastEdited(); - qCDebug(entities) << "ZoneEntityItem::setProperties() AFTER update... edited AGO=" << elapsed << - "now=" << now << " getLastEdited()=" << getLastEdited(); - } - setLastEdited(properties._lastEdited); - } return somethingChanged; } @@ -185,6 +193,14 @@ void ZoneEntityItem::appendSubclassData(OctreePacketData* packetData, EncodeBits APPEND_ENTITY_PROPERTY(PROP_FILTER_URL, getFilterURL()); } +void ZoneEntityItem::somethingChangedNotification() { + EntityItem::somethingChangedNotification(); + withWriteLock([&] { + _keyLightPropertiesChanged = false; + _backgroundPropertiesChanged = false; + }); +} + void ZoneEntityItem::debugDump() const { quint64 now = usecTimestampNow(); qCDebug(entities) << " ZoneEntityItem id:" << getEntityItemID() << "---------------------------------------------"; diff --git a/libraries/entities/src/ZoneEntityItem.h b/libraries/entities/src/ZoneEntityItem.h index c868da0954..2ef0b33d51 100644 --- a/libraries/entities/src/ZoneEntityItem.h +++ b/libraries/entities/src/ZoneEntityItem.h @@ -29,10 +29,16 @@ public: // methods for getting/setting all properties of an entity virtual EntityItemProperties getProperties(EntityPropertyFlags desiredProperties = EntityPropertyFlags()) const override; virtual bool setProperties(const EntityItemProperties& properties) override; + virtual bool setSubClassProperties(const EntityItemProperties& properties) override; // TODO: eventually only include properties changed since the params.nodeData->getLastTimeBagEmpty() time virtual EntityPropertyFlags getEntityProperties(EncodeBitstreamParams& params) const override; + /// Override this in your derived class if you'd like to be informed when something about the state of the entity + /// has changed. This will be called with properties change or when new data is loaded from a stream + /// Overriding this function to capture the information that a keylight / Ambient / skybox properties has changed + virtual void somethingChangedNotification() override; + virtual void appendSubclassData(OctreePacketData* packetData, EncodeBitstreamParams& params, EntityTreeElementExtraEncodeDataPointer modelTreeElementExtraEncodeData, EntityPropertyFlags& requestedProperties, @@ -106,6 +112,13 @@ protected: bool _ghostingAllowed { DEFAULT_GHOSTING_ALLOWED }; QString _filterURL { DEFAULT_FILTER_URL }; + // Dirty flags turn true when either keylight properties is changing values. + // This gets back to false in the somethingChangedNotification() call + // Which is called after a setProperties() or a readEntitySubClassFromBUfferCall on the entity. + bool _keyLightPropertiesChanged { false }; + bool _backgroundPropertiesChanged { false }; + + static bool _drawZoneBoundaries; static bool _zonesArePickable; }; diff --git a/scripts/developer/utilities/render/deferredLighting.qml b/scripts/developer/utilities/render/deferredLighting.qml index c1d8da3db1..730aa547e7 100644 --- a/scripts/developer/utilities/render/deferredLighting.qml +++ b/scripts/developer/utilities/render/deferredLighting.qml @@ -162,13 +162,9 @@ Column { } } + Row { Column { - id: metas - CheckBox { - text: "Metas" - checked: Render.getConfig("DrawMetaBounds")["enabled"] - onCheckedChanged: { Render.getConfig("DrawMetaBounds")["enabled"] = checked } - } + CheckBox { text: "Opaques" checked: Render.getConfig("DrawOpaqueBounds")["enabled"] @@ -189,6 +185,13 @@ Column { checked: Render.getConfig("DrawOverlayTransparentBounds")["enabled"] onCheckedChanged: { Render.getConfig("DrawOverlayTransparentBounds")["enabled"] = checked } } + } + Column { + CheckBox { + text: "Metas" + checked: Render.getConfig("DrawMetaBounds")["enabled"] + onCheckedChanged: { Render.getConfig("DrawMetaBounds")["enabled"] = checked } + } CheckBox { text: "Lights" checked: Render.getConfig("DrawLightBounds")["enabled"] @@ -200,5 +203,6 @@ Column { onCheckedChanged: { Render.getConfig("ZoneRenderer")["enabled"] = checked; Render.getConfig("DrawZones")["enabled"] = checked; } } } + } } From db3d634840fa2ba628c5b74757746a58071019a1 Mon Sep 17 00:00:00 2001 From: Sam Cake Date: Fri, 5 May 2017 00:11:22 -0700 Subject: [PATCH 003/357] Adding the change notifications --- .../src/RenderableZoneEntityItem.cpp | 14 ++++---------- libraries/entities/src/ZoneEntityItem.cpp | 19 +++++++++++-------- libraries/entities/src/ZoneEntityItem.h | 5 +++-- 3 files changed, 18 insertions(+), 20 deletions(-) diff --git a/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp b/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp index ad50c9f3cd..8ce1a2ef9a 100644 --- a/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp @@ -13,6 +13,8 @@ #include +#include + #include #include #include @@ -69,8 +71,8 @@ bool RenderableZoneEntityItem::setProperties(const EntityItemProperties& propert void RenderableZoneEntityItem::somethingChangedNotification() { DependencyManager::get()->updateZone(_id); - // A new way: - if (_keyLightPropertiesChanged || _backgroundPropertiesChanged) { + // If graphics elements are changed, we need to update the render items + if (_keyLightPropertiesChanged || _backgroundPropertiesChanged || _stagePropertiesChanged || _skyboxPropertiesChanged) { notifyChangedRenderItem(); } @@ -337,15 +339,7 @@ void RenderableZoneEntityItem::updateKeyLightItemFromEntity(KeyLightPayload& key light->setAmbientIntensity(this->getKeyLightProperties().getAmbientIntensity()); light->setDirection(this->getKeyLightProperties().getDirection()); - - // light->setColor(toGlm(entity->getXColor())); - - // float intensity = entity->getIntensity();//* entity->getFadingRatio(); - // light->setIntensity(intensity); - - light->setType(model::Light::SUN); - } void RenderableZoneEntityItem::sceneUpdateRenderItemFromEntity(render::Transaction& transaction) { diff --git a/libraries/entities/src/ZoneEntityItem.cpp b/libraries/entities/src/ZoneEntityItem.cpp index 364321ddf0..074437b6b2 100644 --- a/libraries/entities/src/ZoneEntityItem.cpp +++ b/libraries/entities/src/ZoneEntityItem.cpp @@ -91,7 +91,7 @@ bool ZoneEntityItem::setSubClassProperties(const EntityItemProperties& propertie _keyLightPropertiesChanged = _keyLightProperties.setProperties(properties); - bool somethingChangedInStage = _stageProperties.setProperties(properties); + _stagePropertiesChanged = _stageProperties.setProperties(properties); SET_ENTITY_PROPERTY_FROM_PROPERTIES(shapeType, setShapeType); SET_ENTITY_PROPERTY_FROM_PROPERTIES(compoundShapeURL, setCompoundShapeURL); @@ -101,9 +101,9 @@ bool ZoneEntityItem::setSubClassProperties(const EntityItemProperties& propertie SET_ENTITY_PROPERTY_FROM_PROPERTIES(ghostingAllowed, setGhostingAllowed); SET_ENTITY_PROPERTY_FROM_PROPERTIES(filterURL, setFilterURL); - bool somethingChangedInSkybox = _skyboxProperties.setProperties(properties); + _skyboxPropertiesChanged = _skyboxProperties.setProperties(properties); - somethingChanged = somethingChanged || _keyLightPropertiesChanged || somethingChangedInStage || somethingChangedInSkybox; + somethingChanged = somethingChanged || _keyLightPropertiesChanged || _stagePropertiesChanged || _skyboxPropertiesChanged; return somethingChanged; @@ -117,14 +117,14 @@ int ZoneEntityItem::readEntitySubclassDataFromBuffer(const unsigned char* data, const unsigned char* dataAt = data; int bytesFromKeylight = _keyLightProperties.readEntitySubclassDataFromBuffer(dataAt, (bytesLeftToRead - bytesRead), args, - propertyFlags, overwriteLocalData, somethingChanged); - + propertyFlags, overwriteLocalData, _keyLightPropertiesChanged); + somethingChanged = somethingChanged || _keyLightPropertiesChanged; bytesRead += bytesFromKeylight; dataAt += bytesFromKeylight; int bytesFromStage = _stageProperties.readEntitySubclassDataFromBuffer(dataAt, (bytesLeftToRead - bytesRead), args, - propertyFlags, overwriteLocalData, somethingChanged); - + propertyFlags, overwriteLocalData, _stagePropertiesChanged); + somethingChanged = somethingChanged || _stagePropertiesChanged; bytesRead += bytesFromStage; dataAt += bytesFromStage; @@ -133,7 +133,8 @@ int ZoneEntityItem::readEntitySubclassDataFromBuffer(const unsigned char* data, READ_ENTITY_PROPERTY(PROP_BACKGROUND_MODE, BackgroundMode, setBackgroundMode); int bytesFromSkybox = _skyboxProperties.readEntitySubclassDataFromBuffer(dataAt, (bytesLeftToRead - bytesRead), args, - propertyFlags, overwriteLocalData, somethingChanged); + propertyFlags, overwriteLocalData, _skyboxPropertiesChanged); + somethingChanged = somethingChanged || _skyboxPropertiesChanged; bytesRead += bytesFromSkybox; dataAt += bytesFromSkybox; @@ -198,6 +199,8 @@ void ZoneEntityItem::somethingChangedNotification() { withWriteLock([&] { _keyLightPropertiesChanged = false; _backgroundPropertiesChanged = false; + _stagePropertiesChanged = false; + _skyboxPropertiesChanged = false; }); } diff --git a/libraries/entities/src/ZoneEntityItem.h b/libraries/entities/src/ZoneEntityItem.h index 2ef0b33d51..bcb690f60e 100644 --- a/libraries/entities/src/ZoneEntityItem.h +++ b/libraries/entities/src/ZoneEntityItem.h @@ -70,7 +70,7 @@ public: const KeyLightPropertyGroup& getKeyLightProperties() const { return _keyLightProperties; } - void setBackgroundMode(BackgroundMode value) { _backgroundMode = value; } + void setBackgroundMode(BackgroundMode value) { _backgroundMode = value; _backgroundPropertiesChanged = true; } BackgroundMode getBackgroundMode() const { return _backgroundMode; } const SkyboxPropertyGroup& getSkyboxProperties() const { return _skyboxProperties; } @@ -117,7 +117,8 @@ protected: // Which is called after a setProperties() or a readEntitySubClassFromBUfferCall on the entity. bool _keyLightPropertiesChanged { false }; bool _backgroundPropertiesChanged { false }; - + bool _skyboxPropertiesChanged { false }; + bool _stagePropertiesChanged { false }; static bool _drawZoneBoundaries; static bool _zonesArePickable; From b6c966ef39ded9d0327e831f8d0b9ef4adf9a8d2 Mon Sep 17 00:00:00 2001 From: samcake Date: Fri, 5 May 2017 18:07:21 -0700 Subject: [PATCH 004/357] Keep iterating on the zones --- .../src/RenderableZoneEntityItem.cpp | 122 ++++++++++++++++-- .../src/RenderableZoneEntityItem.h | 21 ++- .../src/DeferredLightingEffect.cpp | 57 +------- .../render-utils/src/DeferredLightingEffect.h | 15 +-- libraries/render-utils/src/LightPayload.h | 8 ++ libraries/render-utils/src/LightStage.h | 2 +- 6 files changed, 142 insertions(+), 83 deletions(-) diff --git a/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp b/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp index 8ce1a2ef9a..7e78837345 100644 --- a/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp @@ -24,6 +24,8 @@ #include "RenderableEntityItem.h" #include +#include "DeferredLightingEffect.h" + // Sphere entities should fit inside a cube entity of the same size, so a sphere that has dimensions 1x1x1 @@ -73,6 +75,7 @@ void RenderableZoneEntityItem::somethingChangedNotification() { // If graphics elements are changed, we need to update the render items if (_keyLightPropertiesChanged || _backgroundPropertiesChanged || _stagePropertiesChanged || _skyboxPropertiesChanged) { + notifyChangedRenderItem(); } @@ -120,6 +123,52 @@ void RenderableZoneEntityItem::updateGeometry() { } } +void RenderableZoneEntityItem::updateTextures() { + auto textureCache = DependencyManager::get(); + bool isAmbientSet = false; + if (_pendingAmbientTexture && !_ambientTexture) { + _ambientTexture = textureCache->getTexture(_ambientTextureURL, image::TextureUsage::CUBE_TEXTURE); + } + if (_ambientTexture && _ambientTexture->isLoaded()) { + _pendingAmbientTexture = false; + + auto texture = _ambientTexture->getGPUTexture(); + if (texture) { + isAmbientSet = true; + } else { + qCDebug(entitiesrenderer) << "Failed to load ambient texture:" << _ambientTexture->getURL(); + } + } + + if (_pendingSkyboxTexture && + (!_skyboxTexture || (_skyboxTexture->getURL() != _skyboxTextureURL))) { + _skyboxTexture = textureCache->getTexture(_skyboxTextureURL, image::TextureUsage::CUBE_TEXTURE); + } + if (_skyboxTexture && _skyboxTexture->isLoaded()) { + _pendingSkyboxTexture = false; + + auto texture = _skyboxTexture->getGPUTexture(); + if (texture) { + // skybox->setCubemap(texture); + if (!isAmbientSet) { + // sceneKeyLight->setAmbientSphere(texture->getIrradiance()); + // sceneKeyLight->setAmbientMap(texture); + isAmbientSet = true; + } + } else { + qCDebug(entitiesrenderer) << "Failed to load skybox texture:" << _skyboxTexture->getURL(); + } + } else { + // skybox->setCubemap(nullptr); + } + + if (!isAmbientSet) { + // sceneKeyLight->resetAmbientSphere(); + // sceneKeyLight->setAmbientMap(nullptr); + } + +} + void RenderableZoneEntityItem::render(RenderArgs* args) { Q_ASSERT(getType() == EntityTypes::Zone); @@ -235,6 +284,23 @@ public: typedef Payload::DataPointer Pointer; EntityItemPointer entity; + + void render(RenderArgs* args); + + model::LightPointer editLight() { _needUpdate = true; return _light; } + render::Item::Bound& editBound() { _needUpdate = true; return _bound; } + + void setVisible(bool visible) { _isVisible = visible; } + bool isVisible() const { return _isVisible; } + + + model::LightPointer _light; + render::Item::Bound _bound; + LightStagePointer _stage; + LightStage::Index _index { LightStage::INVALID_INDEX }; + bool _needUpdate { true }; + bool _isVisible { true }; + }; namespace render { @@ -254,11 +320,7 @@ namespace render { return render::Item::Bound(); } template <> void payloadRender(const RenderableZoneEntityItemMeta::Pointer& payload, RenderArgs* args) { - if (args) { - if (payload && payload->entity) { - payload->entity->render(args); - } - } + payload->render(args); } } @@ -318,19 +380,20 @@ void RenderableZoneEntityItem::notifyBoundChanged() { } } -void RenderableZoneEntityItem::updateKeyLightItemFromEntity(KeyLightPayload& keylightPayload) { + +void RenderableZoneEntityItem::updateKeyZoneItemFromEntity(RenderableZoneEntityItemMeta& keyZonePayload) { auto entity = this; - keylightPayload.setVisible(entity->getVisible()); + keyZonePayload.setVisible(entity->getVisible()); - auto light = keylightPayload.editLight(); + auto light = keyZonePayload.editLight(); light->setPosition(entity->getPosition()); light->setOrientation(entity->getRotation()); bool success; - keylightPayload.editBound() = entity->getAABox(success); + keyZonePayload.editBound() = entity->getAABox(success); if (!success) { - keylightPayload.editBound() = render::Item::Bound(); + keyZonePayload.editBound() = render::Item::Bound(); } // Set the keylight @@ -340,8 +403,14 @@ void RenderableZoneEntityItem::updateKeyLightItemFromEntity(KeyLightPayload& key light->setDirection(this->getKeyLightProperties().getDirection()); light->setType(model::Light::SUN); + + } +void RenderableZoneEntityItem::updateKeyLightItemFromEntity(KeyLightPayload& keylightPayload) { +} + + void RenderableZoneEntityItem::sceneUpdateRenderItemFromEntity(render::Transaction& transaction) { if (!render::Item::isValidID(_myKeyLightItem)) { return; @@ -361,4 +430,35 @@ void RenderableZoneEntityItem::notifyChangedRenderItem() { render::ScenePointer scene = AbstractViewStateInterface::instance()->getMain3DScene(); sceneUpdateRenderItemFromEntity(transaction); scene->enqueueTransaction(transaction); -} \ No newline at end of file +} + +void RenderableZoneEntityItemMeta::render(RenderArgs* args) { + entity->render(args); + + if (!_stage) { + _stage = DependencyManager::get()->getLightStage(); + } + // Do we need to allocate the light in the stage ? + if (LightStage::isIndexInvalid(_index)) { + _index = _stage->addLight(_light); + _needUpdate = false; + } + // Need an update ? + if (_needUpdate) { + _stage->updateLightArrayBuffer(_index); + _needUpdate = false; + } + + if (isVisible()) { + // FInally, push the light visible in the frame + _stage->_currentFrame.pushLight(_index, _light->getType()); + +#ifdef WANT_DEBUG + Q_ASSERT(args->_batch); + gpu::Batch& batch = *args->_batch; + batch.setModelTransform(getTransformToCenter()); + DependencyManager::get()->renderWireSphere(batch, 0.5f, 15, 15, glm::vec4(color, 1.0f)); +#endif + } + +} diff --git a/libraries/entities-renderer/src/RenderableZoneEntityItem.h b/libraries/entities-renderer/src/RenderableZoneEntityItem.h index 1f3132746c..79641682cf 100644 --- a/libraries/entities-renderer/src/RenderableZoneEntityItem.h +++ b/libraries/entities-renderer/src/RenderableZoneEntityItem.h @@ -18,6 +18,8 @@ class NetworkGeometry; class KeyLightPayload; +class RenderableZoneEntityItemMeta; + class RenderableZoneEntityItem : public ZoneEntityItem { public: static EntityItemPointer factory(const EntityItemID& entityID, const EntityItemProperties& properties); @@ -52,21 +54,34 @@ private: Model* getModel(); void initialSimulation(); void updateGeometry(); + + void updateTextures(); template void changeProperties(Lambda functor); void notifyChangedRenderItem(); void sceneUpdateRenderItemFromEntity(render::Transaction& transaction); - void updateKeyLightItemFromEntity(KeyLightPayload& keylightPayload); + void updateKeyZoneItemFromEntity(RenderableZoneEntityItemMeta& keyZonePayload); + void updateKeyLightItemFromEntity(KeyLightPayload& keyLightPayload); - Model* _model; bool _needsInitialSimulation; - + render::ItemID _myMetaItem{ render::Item::INVALID_ITEM_ID }; render::ItemID _myKeyLightItem { render::Item::INVALID_ITEM_ID }; + + + // More attributes used for rendering: + NetworkTexturePointer _ambientTexture; + NetworkTexturePointer _skyboxTexture; + QString _ambientTextureURL; + QString _skyboxTextureURL; + bool _pendingAmbientTexture { false }; + bool _pendingSkyboxTexture { false }; + bool _validAmbientTextureURL { false }; + bool _validSkyboxTextureURL { false }; }; #endif // hifi_RenderableZoneEntityItem_h diff --git a/libraries/render-utils/src/DeferredLightingEffect.cpp b/libraries/render-utils/src/DeferredLightingEffect.cpp index 93a176f4f3..3dd5ed0352 100644 --- a/libraries/render-utils/src/DeferredLightingEffect.cpp +++ b/libraries/render-utils/src/DeferredLightingEffect.cpp @@ -143,53 +143,12 @@ void DeferredLightingEffect::init() { } -void DeferredLightingEffect::addLight(const model::LightPointer& light) { - assert(light); - auto lightID = _lightStage->addLight(light); - if (light->getType() == model::Light::POINT) { - _pointLights.push_back(lightID); - } else { - _spotLights.push_back(lightID); - } -} - - -void DeferredLightingEffect::addPointLight(const glm::vec3& position, float radius, const glm::vec3& color, - float intensity, float falloffRadius) { - addSpotLight(position, radius, color, intensity, falloffRadius); -} - -void DeferredLightingEffect::addSpotLight(const glm::vec3& position, float radius, const glm::vec3& color, - float intensity, float falloffRadius, const glm::quat& orientation, float exponent, float cutoff) { - - unsigned int lightID = (unsigned int)(_pointLights.size() + _spotLights.size() + _globalLights.size()); - if (lightID >= _allocatedLights.size()) { - _allocatedLights.push_back(std::make_shared()); - } - model::LightPointer lp = _allocatedLights[lightID]; - - lp->setPosition(position); - lp->setMaximumRadius(radius); - lp->setColor(color); - lp->setIntensity(intensity); - lp->setFalloffRadius(falloffRadius); - - if (exponent == 0.0f && cutoff == PI) { - lp->setType(model::Light::POINT); - _pointLights.push_back(lightID); - - } else { - lp->setOrientation(orientation); - lp->setSpotAngle(cutoff); - lp->setSpotExponent(exponent); - lp->setType(model::Light::SPOT); - _spotLights.push_back(lightID); - } -} - void DeferredLightingEffect::setupKeyLightBatch(gpu::Batch& batch, int lightBufferUnit, int ambientBufferUnit, int skyboxCubemapUnit) { PerformanceTimer perfTimer("DLE->setupBatch()"); auto keyLight = _allocatedLights[_globalLights.front()]; + if (_lightStage && _lightStage->_currentFrame._sunLights.size()) { + keyLight = _lightStage->getLight(_lightStage->_currentFrame._sunLights.front()); + } if (lightBufferUnit >= 0) { batch.setUniformBuffer(lightBufferUnit, keyLight->getLightSchemaBuffer()); @@ -772,16 +731,6 @@ void RenderDeferredCleanup::run(const render::RenderContextPointer& renderContex batch.setUniformBuffer(LIGHT_CLUSTER_GRID_CLUSTER_CONTENT_SLOT, nullptr); } - - auto deferredLightingEffect = DependencyManager::get(); - - // End of the Lighting pass - if (!deferredLightingEffect->_pointLights.empty()) { - deferredLightingEffect->_pointLights.clear(); - } - if (!deferredLightingEffect->_spotLights.empty()) { - deferredLightingEffect->_spotLights.clear(); - } } RenderDeferred::RenderDeferred() { diff --git a/libraries/render-utils/src/DeferredLightingEffect.h b/libraries/render-utils/src/DeferredLightingEffect.h index dcf0c84622..ad3dcc9061 100644 --- a/libraries/render-utils/src/DeferredLightingEffect.h +++ b/libraries/render-utils/src/DeferredLightingEffect.h @@ -43,18 +43,7 @@ class DeferredLightingEffect : public Dependency { public: void init(); - - void addLight(const model::LightPointer& light); - - /// Adds a point light to render for the current frame. - void addPointLight(const glm::vec3& position, float radius, const glm::vec3& color = glm::vec3(0.0f, 0.0f, 0.0f), - float intensity = 0.5f, float falloffRadius = 0.01f); - - /// Adds a spot light to render for the current frame. - void addSpotLight(const glm::vec3& position, float radius, const glm::vec3& color = glm::vec3(1.0f, 1.0f, 1.0f), - float intensity = 0.5f, float falloffRadius = 0.01f, - const glm::quat& orientation = glm::quat(), float exponent = 0.0f, float cutoff = PI); - + void setupKeyLightBatch(gpu::Batch& batch, int lightBufferUnit, int ambientBufferUnit, int skyboxCubemapUnit); void unsetKeyLightBatch(gpu::Batch& batch, int lightBufferUnit, int ambientBufferUnit, int skyboxCubemapUnit); @@ -113,8 +102,6 @@ private: Lights _allocatedLights; std::vector _globalLights; - std::vector _pointLights; - std::vector _spotLights; friend class LightClusteringPass; friend class RenderDeferredSetup; diff --git a/libraries/render-utils/src/LightPayload.h b/libraries/render-utils/src/LightPayload.h index 6a1435e12b..0cf8f8e2de 100644 --- a/libraries/render-utils/src/LightPayload.h +++ b/libraries/render-utils/src/LightPayload.h @@ -15,6 +15,7 @@ #include #include #include "LightStage.h" +#include "TextureCache.h" class LightPayload { public: @@ -61,6 +62,13 @@ public: void setVisible(bool visible) { _isVisible = visible; } bool isVisible() const { return _isVisible; } + + // More attributes used for rendering: + NetworkTexturePointer _ambientTexture; + QString _ambientTextureURL; + bool _pendingAmbientTexture { false }; + bool _validAmbientTextureURL { false }; + protected: model::LightPointer _light; render::Item::Bound _bound; diff --git a/libraries/render-utils/src/LightStage.h b/libraries/render-utils/src/LightStage.h index c38ca404ce..8da05ec052 100644 --- a/libraries/render-utils/src/LightStage.h +++ b/libraries/render-utils/src/LightStage.h @@ -118,7 +118,7 @@ public: public: Frame() {} - void clear() { _pointLights.clear(); _spotLights.clear(); } + void clear() { _pointLights.clear(); _spotLights.clear(); _sunLights.clear(); } void pushLight(LightStage::Index index, model::Light::Type type) { switch (type) { case model::Light::POINT: { pushPointLight(index); break; } From d3724116d973648066305bda3ec426776683d70f Mon Sep 17 00:00:00 2001 From: Sam Cake Date: Mon, 8 May 2017 00:20:20 -0700 Subject: [PATCH 005/357] Using the items to pick the key light! --- interface/src/Application.cpp | 4 +- .../src/RenderableZoneEntityItem.cpp | 39 ++++++++++--------- libraries/model/src/model/Light.cpp | 2 +- libraries/model/src/model/Light.h | 2 +- .../src/DeferredLightingEffect.cpp | 8 ++-- .../render-utils/src/DeferredLightingEffect.h | 2 +- .../render-utils/src/RenderDeferredTask.cpp | 6 ++- libraries/render-utils/src/ZoneRenderer.cpp | 26 +++++++++++-- libraries/render-utils/src/ZoneRenderer.h | 3 +- 9 files changed, 60 insertions(+), 32 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 8a16b755f5..2e0478176b 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -5126,8 +5126,8 @@ void Application::displaySide(RenderArgs* renderArgs, Camera& theCamera, bool se // Setup the current Zone Entity lighting { - auto stage = DependencyManager::get()->getSkyStage(); - DependencyManager::get()->setGlobalLight(stage->getSunLight()); + // auto stage = DependencyManager::get()->getSkyStage(); + // DependencyManager::get()->setGlobalLight(stage->getSunLight()); } { diff --git a/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp b/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp index 7e78837345..fb5f71f6ec 100644 --- a/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp @@ -279,7 +279,9 @@ bool RenderableZoneEntityItem::contains(const glm::vec3& point) const { class RenderableZoneEntityItemMeta { public: - RenderableZoneEntityItemMeta(EntityItemPointer entity) : entity(entity){ } + RenderableZoneEntityItemMeta(EntityItemPointer entity) : entity(entity), _light(std::make_shared()) { } + ~RenderableZoneEntityItemMeta(); + typedef render::Payload Payload; typedef Payload::DataPointer Pointer; @@ -305,7 +307,7 @@ public: namespace render { template <> const ItemKey payloadGetKey(const RenderableZoneEntityItemMeta::Pointer& payload) { - return ItemKey::Builder::opaqueShape(); + return ItemKey::Builder().withTypeMeta().build(); } template <> const Item::Bound payloadGetBound(const RenderableZoneEntityItemMeta::Pointer& payload) { @@ -330,6 +332,7 @@ bool RenderableZoneEntityItem::addToScene(EntityItemPointer self, const render:: auto renderData = std::make_shared(self); auto renderPayload = std::make_shared(renderData); + updateKeyZoneItemFromEntity((*renderData)); render::Item::Status::Getters statusGetters; makeEntityItemStatusGetters(getThisPointer(), statusGetters); @@ -338,7 +341,7 @@ bool RenderableZoneEntityItem::addToScene(EntityItemPointer self, const render:: transaction.resetItem(_myMetaItem, renderPayload); - _myKeyLightItem = scene->allocateID(); + /* _myKeyLightItem = scene->allocateID(); auto keyLightPayload = std::make_shared(); updateKeyLightItemFromEntity((*keyLightPayload)); @@ -347,14 +350,14 @@ bool RenderableZoneEntityItem::addToScene(EntityItemPointer self, const render:: transaction.resetItem(_myKeyLightItem, keyLightItem); - +*/ return true; } void RenderableZoneEntityItem::removeFromScene(EntityItemPointer self, const render::ScenePointer& scene, render::Transaction& transaction) { - transaction.removeItem(_myKeyLightItem); - render::Item::clearID(_myKeyLightItem); + // transaction.removeItem(_myKeyLightItem); + // render::Item::clearID(_myKeyLightItem); transaction.removeItem(_myMetaItem); render::Item::clearID(_myMetaItem); if (_model) { @@ -372,7 +375,7 @@ void RenderableZoneEntityItem::notifyBoundChanged() { render::ScenePointer scene = AbstractViewStateInterface::instance()->getMain3DScene(); if (scene) { transaction.updateItem(_myMetaItem, [](RenderableZoneEntityItemMeta& data) {}); - transaction.updateItem(_myKeyLightItem, [](KeyLightPayload& data) {}); + // transaction.updateItem(_myKeyLightItem, [](KeyLightPayload& data) {}); scene->enqueueTransaction(transaction); } else { @@ -412,17 +415,17 @@ void RenderableZoneEntityItem::updateKeyLightItemFromEntity(KeyLightPayload& key void RenderableZoneEntityItem::sceneUpdateRenderItemFromEntity(render::Transaction& transaction) { - if (!render::Item::isValidID(_myKeyLightItem)) { + if (!render::Item::isValidID(_myMetaItem)) { return; } - transaction.updateItem(_myKeyLightItem, [&](KeyLightPayload& data) { + transaction.updateItem(_myMetaItem, [&](KeyLightPayload& data) { updateKeyLightItemFromEntity(data); }); } void RenderableZoneEntityItem::notifyChangedRenderItem() { - if (!render::Item::isValidID(_myKeyLightItem)) { + if (!render::Item::isValidID(_myMetaItem)) { return; } @@ -432,6 +435,14 @@ void RenderableZoneEntityItem::notifyChangedRenderItem() { scene->enqueueTransaction(transaction); } +RenderableZoneEntityItemMeta::~RenderableZoneEntityItemMeta() { + if (!LightStage::isIndexInvalid(_index)) { + if (_stage) { + _stage->removeLight(_index); + } + } +} + void RenderableZoneEntityItemMeta::render(RenderArgs* args) { entity->render(args); @@ -452,13 +463,5 @@ void RenderableZoneEntityItemMeta::render(RenderArgs* args) { if (isVisible()) { // FInally, push the light visible in the frame _stage->_currentFrame.pushLight(_index, _light->getType()); - -#ifdef WANT_DEBUG - Q_ASSERT(args->_batch); - gpu::Batch& batch = *args->_batch; - batch.setModelTransform(getTransformToCenter()); - DependencyManager::get()->renderWireSphere(batch, 0.5f, 15, 15, glm::vec4(color, 1.0f)); -#endif } - } diff --git a/libraries/model/src/model/Light.cpp b/libraries/model/src/model/Light.cpp index 11b13606b8..19da084f84 100755 --- a/libraries/model/src/model/Light.cpp +++ b/libraries/model/src/model/Light.cpp @@ -145,7 +145,7 @@ void Light::setAmbientSpherePreset(gpu::SphericalHarmonics::Preset preset) { _ambientSchemaBuffer.edit().ambientSphere.assignPreset(preset); } -void Light::setAmbientMap(gpu::TexturePointer ambientMap) { +void Light::setAmbientMap(const gpu::TexturePointer& ambientMap) { _ambientMap = ambientMap; if (ambientMap) { setAmbientMapNumMips(_ambientMap->getNumMips()); diff --git a/libraries/model/src/model/Light.h b/libraries/model/src/model/Light.h index 947474bbfd..c772374f42 100755 --- a/libraries/model/src/model/Light.h +++ b/libraries/model/src/model/Light.h @@ -143,7 +143,7 @@ public: const gpu::SphericalHarmonics& getAmbientSphere() const { return _ambientSchemaBuffer->ambientSphere; } void setAmbientSpherePreset(gpu::SphericalHarmonics::Preset preset); - void setAmbientMap(gpu::TexturePointer ambientMap); + void setAmbientMap(const gpu::TexturePointer& ambientMap); gpu::TexturePointer getAmbientMap() const { return _ambientMap; } void setAmbientMapNumMips(uint16_t numMips); diff --git a/libraries/render-utils/src/DeferredLightingEffect.cpp b/libraries/render-utils/src/DeferredLightingEffect.cpp index 3dd5ed0352..b7e4b184c0 100644 --- a/libraries/render-utils/src/DeferredLightingEffect.cpp +++ b/libraries/render-utils/src/DeferredLightingEffect.cpp @@ -145,9 +145,11 @@ void DeferredLightingEffect::init() { void DeferredLightingEffect::setupKeyLightBatch(gpu::Batch& batch, int lightBufferUnit, int ambientBufferUnit, int skyboxCubemapUnit) { PerformanceTimer perfTimer("DLE->setupBatch()"); - auto keyLight = _allocatedLights[_globalLights.front()]; + model::LightPointer keyLight; if (_lightStage && _lightStage->_currentFrame._sunLights.size()) { keyLight = _lightStage->getLight(_lightStage->_currentFrame._sunLights.front()); + } else { + keyLight = _allocatedLights[_globalLights.front()]; } if (lightBufferUnit >= 0) { @@ -168,11 +170,11 @@ void DeferredLightingEffect::unsetKeyLightBatch(gpu::Batch& batch, int lightBuff if (lightBufferUnit >= 0) { batch.setUniformBuffer(lightBufferUnit, nullptr); } - if (keyLight->hasAmbient() && (ambientBufferUnit >= 0)) { + if ((ambientBufferUnit >= 0)) { batch.setUniformBuffer(ambientBufferUnit, nullptr); } - if (keyLight->getAmbientMap() && (skyboxCubemapUnit >= 0)) { + if ((skyboxCubemapUnit >= 0)) { batch.setResourceTexture(skyboxCubemapUnit, nullptr); } } diff --git a/libraries/render-utils/src/DeferredLightingEffect.h b/libraries/render-utils/src/DeferredLightingEffect.h index ad3dcc9061..02f759bab3 100644 --- a/libraries/render-utils/src/DeferredLightingEffect.h +++ b/libraries/render-utils/src/DeferredLightingEffect.h @@ -50,7 +50,7 @@ public: // update global lighting void setGlobalLight(const model::LightPointer& light); - const LightStagePointer getLightStage() { return _lightStage; } + const LightStagePointer& getLightStage() { return _lightStage; } void setShadowMapEnabled(bool enable) { _shadowMapEnabled = enable; }; void setAmbientOcclusionEnabled(bool enable) { _ambientOcclusionEnabled = enable; } diff --git a/libraries/render-utils/src/RenderDeferredTask.cpp b/libraries/render-utils/src/RenderDeferredTask.cpp index 6367093cb4..693c150004 100644 --- a/libraries/render-utils/src/RenderDeferredTask.cpp +++ b/libraries/render-utils/src/RenderDeferredTask.cpp @@ -75,7 +75,6 @@ void RenderDeferredTask::build(JobModel& task, const render::Varying& input, ren const auto deferredFrameTransform = task.addJob("DeferredFrameTransform"); const auto lightingModel = task.addJob("LightingModel"); - // GPU jobs: Start preparing the primary, deferred and lighting buffer const auto primaryFramebuffer = task.addJob("PreparePrimaryBuffer"); @@ -124,6 +123,9 @@ void RenderDeferredTask::build(JobModel& task, const render::Varying& input, ren // Draw Lights just add the lights to the current list of lights to deal with. NOt really gpu job for now. task.addJob("DrawLight", lights); + // Filter zones + const auto zones = task.addJob("ZoneRenderer", metas); + // Light Clustering // Create the cluster grid of lights, cpu job for now const auto lightClusteringPassInputs = LightClusteringPass::Inputs(deferredFrameTransform, lightingModel, linearDepthTarget).hasVarying(); @@ -163,7 +165,7 @@ void RenderDeferredTask::build(JobModel& task, const render::Varying& input, ren task.addJob("DrawTransparentBounds", transparents); task.addJob("DrawLightBounds", lights); - task.addJob("ZoneRenderer", opaques); + task.addJob("DrawZones", zones); } // Overlays diff --git a/libraries/render-utils/src/ZoneRenderer.cpp b/libraries/render-utils/src/ZoneRenderer.cpp index 2cabe58c33..00b4565edf 100644 --- a/libraries/render-utils/src/ZoneRenderer.cpp +++ b/libraries/render-utils/src/ZoneRenderer.cpp @@ -15,13 +15,33 @@ using namespace render; +class SetupZones { +public: + using Inputs = render::ItemBounds; + using JobModel = render::Job::ModelI; + + SetupZones() {} + + void run(const RenderContextPointer& context, const Inputs& inputs); + +protected: +}; + const Selection::Name ZoneRendererTask::ZONES_SELECTION { "RankedZones" }; void ZoneRendererTask::build(JobModel& task, const Varying& input, Varying& ouput) { - + // Filter out the sorted list of zones const auto zoneItems = task.addJob("FilterZones", input, ZONES_SELECTION.c_str()); - // just draw them... - task.addJob("DrawZones", zoneItems); + // just setup the current zone env + task.addJob("SetupZones", zoneItems); + + ouput = zoneItems; } +void SetupZones::run(const RenderContextPointer& context, const Inputs& inputs) { + + // call render in the correct order first... + render::renderItems(context, inputs); + +} diff --git a/libraries/render-utils/src/ZoneRenderer.h b/libraries/render-utils/src/ZoneRenderer.h index 1218608400..cbbfbcb84e 100644 --- a/libraries/render-utils/src/ZoneRenderer.h +++ b/libraries/render-utils/src/ZoneRenderer.h @@ -19,7 +19,8 @@ class ZoneRendererConfig : public render::Task::Config { Q_PROPERTY(int maxDrawn MEMBER maxDrawn NOTIFY dirty) public: - ZoneRendererConfig() : render::Task::Config(false) {} + ZoneRendererConfig() : render::Task::Config( + ) {} int maxDrawn { -1 }; From bbb513220bf32b0e474792fb4299c1e234c86ddc Mon Sep 17 00:00:00 2001 From: samcake Date: Mon, 8 May 2017 17:33:24 -0700 Subject: [PATCH 006/357] Moving forward --- .../src/RenderableZoneEntityItem.cpp | 509 +++++++++++------- .../src/RenderableZoneEntityItem.h | 20 +- libraries/model/src/model/Light.h | 5 +- .../src/DeferredLightingEffect.cpp | 25 +- libraries/render-utils/src/LightStage.h | 5 +- 5 files changed, 338 insertions(+), 226 deletions(-) diff --git a/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp b/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp index fb5f71f6ec..55d47dde98 100644 --- a/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp @@ -26,7 +26,64 @@ #include #include "DeferredLightingEffect.h" +class RenderableZoneEntityItemMeta { +public: + RenderableZoneEntityItemMeta(EntityItemPointer entity); + ~RenderableZoneEntityItemMeta(); + typedef render::Payload Payload; + typedef Payload::DataPointer Pointer; + + EntityItemPointer entity; + + void render(RenderArgs* args); + + void setVisible(bool visible) { _isVisible = visible; } + bool isVisible() const { return _isVisible; } + + render::Item::Bound& editBound() { _needUpdate = true; return _bound; } + + model::LightPointer editSunLight() { _needSunUpdate = true; return _sunLight; } + model::LightPointer editAmbientLight() { _needAmbientUpdate = true; return _ambientLight; } + model::SkyboxPointer editSkybox() { _needSkyboxUpdate = true; return _skybox; } + + void setAmbientURL(const QString& ambientUrl); + + void setSkyboxURL(const QString& skyboxUrl); + +protected: + render::Item::Bound _bound; + + model::LightPointer _sunLight; + model::LightPointer _ambientLight; + model::SkyboxPointer _skybox; + + LightStagePointer _stage; + LightStage::Index _sunIndex { LightStage::INVALID_INDEX }; + LightStage::Index _ambientIndex { LightStage::INVALID_INDEX }; + + bool _needUpdate { true }; + bool _needSunUpdate { true }; + bool _needAmbientUpdate { true }; + bool _needSkyboxUpdate { true }; + bool _isVisible { true }; + + + void updateAmbientMap(); + void updateSkyboxMap(); + + // More attributes used for rendering: + QString _ambientTextureURL; + NetworkTexturePointer _ambientTexture; + bool _pendingAmbientTexture { false }; + bool _validAmbientTexture { false }; + + QString _skyboxTextureURL; + NetworkTexturePointer _skyboxTexture; + bool _pendingSkyboxTexture { false }; + bool _validSkyboxTexture { false }; + +}; // Sphere entities should fit inside a cube entity of the same size, so a sphere that has dimensions 1x1x1 // is a half unit sphere. However, the geometry cache renders a UNIT sphere, so we need to scale down. @@ -123,52 +180,6 @@ void RenderableZoneEntityItem::updateGeometry() { } } -void RenderableZoneEntityItem::updateTextures() { - auto textureCache = DependencyManager::get(); - bool isAmbientSet = false; - if (_pendingAmbientTexture && !_ambientTexture) { - _ambientTexture = textureCache->getTexture(_ambientTextureURL, image::TextureUsage::CUBE_TEXTURE); - } - if (_ambientTexture && _ambientTexture->isLoaded()) { - _pendingAmbientTexture = false; - - auto texture = _ambientTexture->getGPUTexture(); - if (texture) { - isAmbientSet = true; - } else { - qCDebug(entitiesrenderer) << "Failed to load ambient texture:" << _ambientTexture->getURL(); - } - } - - if (_pendingSkyboxTexture && - (!_skyboxTexture || (_skyboxTexture->getURL() != _skyboxTextureURL))) { - _skyboxTexture = textureCache->getTexture(_skyboxTextureURL, image::TextureUsage::CUBE_TEXTURE); - } - if (_skyboxTexture && _skyboxTexture->isLoaded()) { - _pendingSkyboxTexture = false; - - auto texture = _skyboxTexture->getGPUTexture(); - if (texture) { - // skybox->setCubemap(texture); - if (!isAmbientSet) { - // sceneKeyLight->setAmbientSphere(texture->getIrradiance()); - // sceneKeyLight->setAmbientMap(texture); - isAmbientSet = true; - } - } else { - qCDebug(entitiesrenderer) << "Failed to load skybox texture:" << _skyboxTexture->getURL(); - } - } else { - // skybox->setCubemap(nullptr); - } - - if (!isAmbientSet) { - // sceneKeyLight->resetAmbientSphere(); - // sceneKeyLight->setAmbientMap(nullptr); - } - -} - void RenderableZoneEntityItem::render(RenderArgs* args) { Q_ASSERT(getType() == EntityTypes::Zone); @@ -252,15 +263,6 @@ void RenderableZoneEntityItem::render(RenderArgs* args) { sceneTime->setHour(this->getStageProperties().calculateHour()); sceneTime->setDay(this->getStageProperties().calculateDay()); } - - // Set the ambient texture - _ambientTextureURL = this->getKeyLightProperties().getAmbientURL(); - if (_ambientTextureURL.isEmpty()) { - _pendingAmbientTexture = false; - _ambientTexture.clear(); - } else { - _pendingAmbientTexture = true; - } }*/ } @@ -277,39 +279,143 @@ bool RenderableZoneEntityItem::contains(const glm::vec3& point) const { return false; } -class RenderableZoneEntityItemMeta { -public: - RenderableZoneEntityItemMeta(EntityItemPointer entity) : entity(entity), _light(std::make_shared()) { } - ~RenderableZoneEntityItemMeta(); - typedef render::Payload Payload; - typedef Payload::DataPointer Pointer; - - EntityItemPointer entity; +bool RenderableZoneEntityItem::addToScene(EntityItemPointer self, const render::ScenePointer& scene, + render::Transaction& transaction) { + _myMetaItem = scene->allocateID(); + + auto renderData = std::make_shared(self); + auto renderPayload = std::make_shared(renderData); + updateKeyZoneItemFromEntity((*renderData)); + + render::Item::Status::Getters statusGetters; + makeEntityItemStatusGetters(getThisPointer(), statusGetters); + renderPayload->addStatusGetters(statusGetters); + + transaction.resetItem(_myMetaItem, renderPayload); + + return true; +} + +void RenderableZoneEntityItem::removeFromScene(EntityItemPointer self, const render::ScenePointer& scene, + render::Transaction& transaction) { + transaction.removeItem(_myMetaItem); + render::Item::clearID(_myMetaItem); + if (_model) { + _model->removeFromScene(scene, transaction); + } +} + +void RenderableZoneEntityItem::notifyBoundChanged() { + if (!render::Item::isValidID(_myMetaItem)) { + return; + } + render::Transaction transaction; + render::ScenePointer scene = AbstractViewStateInterface::instance()->getMain3DScene(); + if (scene) { + transaction.updateItem(_myMetaItem, [](RenderableZoneEntityItemMeta& data) {}); + scene->enqueueTransaction(transaction); + } else { + qCWarning(entitiesrenderer) << "RenderableZoneEntityItem::notifyBoundChanged(), Unexpected null scene, possibly during application shutdown"; + } +} + +void RenderableZoneEntityItem::updateKeySunFromEntity(RenderableZoneEntityItemMeta& keyZonePayload) { + auto sunLight = keyZonePayload.editSunLight(); + sunLight->setType(model::Light::SUN); + + sunLight->setPosition(this->getPosition()); + sunLight->setOrientation(this->getRotation()); + + // Set the keylight + sunLight->setColor(ColorUtils::toVec3(this->getKeyLightProperties().getColor())); + sunLight->setIntensity(this->getKeyLightProperties().getIntensity()); + sunLight->setDirection(this->getKeyLightProperties().getDirection()); +} + +void RenderableZoneEntityItem::updateKeyAmbientFromEntity(RenderableZoneEntityItemMeta& keyZonePayload) { + auto ambientLight = keyZonePayload.editAmbientLight(); + ambientLight->setType(model::Light::AMBIENT); + + ambientLight->setPosition(this->getPosition()); + ambientLight->setOrientation(this->getRotation()); + + + // Set the keylight + ambientLight->setColor(ColorUtils::toVec3(this->getKeyLightProperties().getColor())); + ambientLight->setAmbientIntensity(this->getKeyLightProperties().getAmbientIntensity()); + // ambientLight->setIntensity(this->getKeyLightProperties().getIntensity()); + ambientLight->setDirection(this->getKeyLightProperties().getDirection()); + + if (this->getKeyLightProperties().getAmbientURL().isEmpty()) { + keyZonePayload.setAmbientURL(this->getSkyboxProperties().getURL()); + } else { + keyZonePayload.setAmbientURL(this->getKeyLightProperties().getAmbientURL()); + } + +} + +void RenderableZoneEntityItem::updateKeyBackgroundFromEntity(RenderableZoneEntityItemMeta& keyZonePayload) { + auto skybox = keyZonePayload.editSkybox(); + + this->getBackgroundMode(); + + keyZonePayload.setSkyboxURL(this->getSkyboxProperties().getURL()); +} + + +void RenderableZoneEntityItem::updateKeyZoneItemFromEntity(RenderableZoneEntityItemMeta& keyZonePayload) { + + keyZonePayload.setVisible(this->getVisible()); + + bool success; + keyZonePayload.editBound() = this->getAABox(success); + if (!success) { + keyZonePayload.editBound() = render::Item::Bound(); + } + + updateKeySunFromEntity(keyZonePayload); + + updateKeyAmbientFromEntity(keyZonePayload); + + updateKeyBackgroundFromEntity(keyZonePayload); +} + + +void RenderableZoneEntityItem::sceneUpdateRenderItemFromEntity(render::Transaction& transaction) { + if (!render::Item::isValidID(_myMetaItem)) { + return; + } + + transaction.updateItem(_myMetaItem, [&](RenderableZoneEntityItemMeta& data) { + updateKeyZoneItemFromEntity(data); + }); +} + +void RenderableZoneEntityItem::notifyChangedRenderItem() { + if (!render::Item::isValidID(_myMetaItem)) { + return; + } + + render::Transaction transaction; + render::ScenePointer scene = AbstractViewStateInterface::instance()->getMain3DScene(); + sceneUpdateRenderItemFromEntity(transaction); + scene->enqueueTransaction(transaction); +} + + - void render(RenderArgs* args); - model::LightPointer editLight() { _needUpdate = true; return _light; } - render::Item::Bound& editBound() { _needUpdate = true; return _bound; } - void setVisible(bool visible) { _isVisible = visible; } - bool isVisible() const { return _isVisible; } - model::LightPointer _light; - render::Item::Bound _bound; - LightStagePointer _stage; - LightStage::Index _index { LightStage::INVALID_INDEX }; - bool _needUpdate { true }; - bool _isVisible { true }; -}; namespace render { template <> const ItemKey payloadGetKey(const RenderableZoneEntityItemMeta::Pointer& payload) { return ItemKey::Builder().withTypeMeta().build(); } - + template <> const Item::Bound payloadGetBound(const RenderableZoneEntityItemMeta::Pointer& payload) { if (payload && payload->entity) { bool success; @@ -326,142 +432,151 @@ namespace render { } } -bool RenderableZoneEntityItem::addToScene(EntityItemPointer self, const render::ScenePointer& scene, - render::Transaction& transaction) { - _myMetaItem = scene->allocateID(); - - auto renderData = std::make_shared(self); - auto renderPayload = std::make_shared(renderData); - updateKeyZoneItemFromEntity((*renderData)); +RenderableZoneEntityItemMeta::RenderableZoneEntityItemMeta(EntityItemPointer entity) : + entity(entity), + _sunLight(std::make_shared()), + _ambientLight(std::make_shared()), + _skybox(std::make_shared()) +{} - render::Item::Status::Getters statusGetters; - makeEntityItemStatusGetters(getThisPointer(), statusGetters); - renderPayload->addStatusGetters(statusGetters); - - transaction.resetItem(_myMetaItem, renderPayload); - - - /* _myKeyLightItem = scene->allocateID(); - - auto keyLightPayload = std::make_shared(); - updateKeyLightItemFromEntity((*keyLightPayload)); - - auto keyLightItem = std::make_shared(keyLightPayload); - - transaction.resetItem(_myKeyLightItem, keyLightItem); - -*/ - return true; -} - -void RenderableZoneEntityItem::removeFromScene(EntityItemPointer self, const render::ScenePointer& scene, - render::Transaction& transaction) { - // transaction.removeItem(_myKeyLightItem); - // render::Item::clearID(_myKeyLightItem); - transaction.removeItem(_myMetaItem); - render::Item::clearID(_myMetaItem); - if (_model) { - _model->removeFromScene(scene, transaction); - } -} - - - -void RenderableZoneEntityItem::notifyBoundChanged() { - if (!render::Item::isValidID(_myMetaItem)) { - return; - } - render::Transaction transaction; - render::ScenePointer scene = AbstractViewStateInterface::instance()->getMain3DScene(); - if (scene) { - transaction.updateItem(_myMetaItem, [](RenderableZoneEntityItemMeta& data) {}); - // transaction.updateItem(_myKeyLightItem, [](KeyLightPayload& data) {}); - - scene->enqueueTransaction(transaction); - } else { - qCWarning(entitiesrenderer) << "RenderableZoneEntityItem::notifyBoundChanged(), Unexpected null scene, possibly during application shutdown"; - } -} - - -void RenderableZoneEntityItem::updateKeyZoneItemFromEntity(RenderableZoneEntityItemMeta& keyZonePayload) { - auto entity = this; - - keyZonePayload.setVisible(entity->getVisible()); - - auto light = keyZonePayload.editLight(); - light->setPosition(entity->getPosition()); - light->setOrientation(entity->getRotation()); - - bool success; - keyZonePayload.editBound() = entity->getAABox(success); - if (!success) { - keyZonePayload.editBound() = render::Item::Bound(); - } - - // Set the keylight - light->setColor(ColorUtils::toVec3(this->getKeyLightProperties().getColor())); - light->setIntensity(this->getKeyLightProperties().getIntensity()); - light->setAmbientIntensity(this->getKeyLightProperties().getAmbientIntensity()); - light->setDirection(this->getKeyLightProperties().getDirection()); - - light->setType(model::Light::SUN); - - -} - -void RenderableZoneEntityItem::updateKeyLightItemFromEntity(KeyLightPayload& keylightPayload) { -} - - -void RenderableZoneEntityItem::sceneUpdateRenderItemFromEntity(render::Transaction& transaction) { - if (!render::Item::isValidID(_myMetaItem)) { - return; - } - - transaction.updateItem(_myMetaItem, [&](KeyLightPayload& data) { - updateKeyLightItemFromEntity(data); - }); -} - -void RenderableZoneEntityItem::notifyChangedRenderItem() { - if (!render::Item::isValidID(_myMetaItem)) { - return; - } - - render::Transaction transaction; - render::ScenePointer scene = AbstractViewStateInterface::instance()->getMain3DScene(); - sceneUpdateRenderItemFromEntity(transaction); - scene->enqueueTransaction(transaction); -} RenderableZoneEntityItemMeta::~RenderableZoneEntityItemMeta() { - if (!LightStage::isIndexInvalid(_index)) { - if (_stage) { - _stage->removeLight(_index); + if (_stage) { + if (!LightStage::isIndexInvalid(_sunIndex)) { + _stage->removeLight(_sunIndex); + } + if (!LightStage::isIndexInvalid(_ambientIndex)) { + _stage->removeLight(_ambientIndex); + } } } -void RenderableZoneEntityItemMeta::render(RenderArgs* args) { - entity->render(args); +void RenderableZoneEntityItemMeta::setAmbientURL(const QString& ambientUrl) { + // nothing change if nothing change + if (_ambientTextureURL == ambientUrl) { + return; + } + _ambientTextureURL = ambientUrl; + if (_ambientTextureURL.isEmpty()) { + _validAmbientTexture = false; + _pendingAmbientTexture = false; + _ambientTexture.clear(); + + _ambientLight->setAmbientMap(nullptr); + _ambientLight->setAmbientSpherePreset(gpu::SphericalHarmonics::BREEZEWAY); + } else { + _pendingAmbientTexture = true; + auto textureCache = DependencyManager::get(); + _ambientTexture = textureCache->getTexture(_ambientTextureURL, image::TextureUsage::CUBE_TEXTURE); + + // keep whatever is assigned on the ambient map/sphere until texture is loaded + } +} + +void RenderableZoneEntityItemMeta::updateAmbientMap() { + if (_pendingAmbientTexture) { + if (_ambientTexture && _ambientTexture->isLoaded()) { + _pendingAmbientTexture = false; + + auto texture = _ambientTexture->getGPUTexture(); + if (texture) { + if (texture->getIrradiance()) { + _ambientLight->setAmbientSphere(*texture->getIrradiance()); + } else { + _ambientLight->setAmbientSpherePreset(gpu::SphericalHarmonics::BREEZEWAY); + } + editAmbientLight()->setAmbientMap(texture); + _validAmbientTexture = true; + } else { + qCDebug(entitiesrenderer) << "Failed to load ambient texture:" << _ambientTexture->getURL(); + } + } + } +} + + +void RenderableZoneEntityItemMeta::setSkyboxURL(const QString& skyboxUrl) { + // nothing change if nothing change + if (_skyboxTextureURL == skyboxUrl) { + return; + } + _skyboxTextureURL = skyboxUrl; + + if (_skyboxTextureURL.isEmpty()) { + _validSkyboxTexture = false; + _pendingSkyboxTexture = false; + _skyboxTexture.clear(); + + editSkybox()->setCubemap(nullptr); + } else { + _pendingSkyboxTexture = true; + auto textureCache = DependencyManager::get(); + _skyboxTexture = textureCache->getTexture(_skyboxTextureURL, image::TextureUsage::CUBE_TEXTURE); + } +} + +void RenderableZoneEntityItemMeta::updateSkyboxMap() { + if (_pendingSkyboxTexture) { + if (_skyboxTexture && _skyboxTexture->isLoaded()) { + _pendingSkyboxTexture = false; + + auto texture = _skyboxTexture->getGPUTexture(); + if (texture) { + editSkybox()->setCubemap(texture); + _validSkyboxTexture = true; + } else { + qCDebug(entitiesrenderer) << "Failed to load Skybox texture:" << _skyboxTexture->getURL(); + } + } + } +} + + +void RenderableZoneEntityItemMeta::render(RenderArgs* args) { + // entity->render(args); + if (!_stage) { _stage = DependencyManager::get()->getLightStage(); } - // Do we need to allocate the light in the stage ? - if (LightStage::isIndexInvalid(_index)) { - _index = _stage->addLight(_light); - _needUpdate = false; + + { // Sun + // Need an update ? + if (_needSunUpdate) { + // Do we need to allocate the light in the stage ? + if (LightStage::isIndexInvalid(_sunIndex)) { + _sunIndex = _stage->addLight(_sunLight); + } else { + _stage->updateLightArrayBuffer(_sunIndex); + } + _needSunUpdate = false; + } } - // Need an update ? - if (_needUpdate) { - _stage->updateLightArrayBuffer(_index); - _needUpdate = false; + + { // Ambient + updateAmbientMap(); + + // Need an update ? + if (_needAmbientUpdate) { + // Do we need to allocate the light in the stage ? + if (LightStage::isIndexInvalid(_ambientIndex)) { + _ambientIndex = _stage->addLight(_ambientLight); + } else { + _stage->updateLightArrayBuffer(_ambientIndex); + } + _needAmbientUpdate = false; + } + } + + { // Skybox + updateSkyboxMap(); + } if (isVisible()) { // FInally, push the light visible in the frame - _stage->_currentFrame.pushLight(_index, _light->getType()); + _stage->_currentFrame.pushSunLight(_sunIndex); + _stage->_currentFrame.pushAmbientLight(_ambientIndex); } } diff --git a/libraries/entities-renderer/src/RenderableZoneEntityItem.h b/libraries/entities-renderer/src/RenderableZoneEntityItem.h index 79641682cf..6f19f88bed 100644 --- a/libraries/entities-renderer/src/RenderableZoneEntityItem.h +++ b/libraries/entities-renderer/src/RenderableZoneEntityItem.h @@ -54,8 +54,6 @@ private: Model* getModel(); void initialSimulation(); void updateGeometry(); - - void updateTextures(); template void changeProperties(Lambda functor); @@ -63,25 +61,15 @@ private: void notifyChangedRenderItem(); void sceneUpdateRenderItemFromEntity(render::Transaction& transaction); void updateKeyZoneItemFromEntity(RenderableZoneEntityItemMeta& keyZonePayload); - void updateKeyLightItemFromEntity(KeyLightPayload& keyLightPayload); + + void updateKeySunFromEntity(RenderableZoneEntityItemMeta& keyZonePayload); + void updateKeyAmbientFromEntity(RenderableZoneEntityItemMeta& keyZonePayload); + void updateKeyBackgroundFromEntity(RenderableZoneEntityItemMeta& keyZonePayload); Model* _model; bool _needsInitialSimulation; render::ItemID _myMetaItem{ render::Item::INVALID_ITEM_ID }; - - render::ItemID _myKeyLightItem { render::Item::INVALID_ITEM_ID }; - - - // More attributes used for rendering: - NetworkTexturePointer _ambientTexture; - NetworkTexturePointer _skyboxTexture; - QString _ambientTextureURL; - QString _skyboxTextureURL; - bool _pendingAmbientTexture { false }; - bool _pendingSkyboxTexture { false }; - bool _validAmbientTextureURL { false }; - bool _validSkyboxTextureURL { false }; }; #endif // hifi_RenderableZoneEntityItem_h diff --git a/libraries/model/src/model/Light.h b/libraries/model/src/model/Light.h index c772374f42..ee242bfdf2 100755 --- a/libraries/model/src/model/Light.h +++ b/libraries/model/src/model/Light.h @@ -68,7 +68,8 @@ public: enum Type { - SUN = 0, + AMBIENT = 0, + SUN, POINT, SPOT, @@ -112,7 +113,7 @@ public: void setIntensity(float intensity); bool isRanged() const { return (getType() == POINT) || (getType() == SPOT); } - bool hasAmbient() const { return (getType() == SUN); } + bool hasAmbient() const { return (getType() == AMBIENT); } // FalloffRradius is the physical radius of the light sphere through which energy shines, // expressed in meters. It is used only to calculate the falloff curve of the light. diff --git a/libraries/render-utils/src/DeferredLightingEffect.cpp b/libraries/render-utils/src/DeferredLightingEffect.cpp index b7e4b184c0..947d0d502c 100644 --- a/libraries/render-utils/src/DeferredLightingEffect.cpp +++ b/libraries/render-utils/src/DeferredLightingEffect.cpp @@ -145,28 +145,33 @@ void DeferredLightingEffect::init() { void DeferredLightingEffect::setupKeyLightBatch(gpu::Batch& batch, int lightBufferUnit, int ambientBufferUnit, int skyboxCubemapUnit) { PerformanceTimer perfTimer("DLE->setupBatch()"); - model::LightPointer keyLight; + model::LightPointer keySunLight; if (_lightStage && _lightStage->_currentFrame._sunLights.size()) { - keyLight = _lightStage->getLight(_lightStage->_currentFrame._sunLights.front()); + keySunLight = _lightStage->getLight(_lightStage->_currentFrame._sunLights.front()); } else { - keyLight = _allocatedLights[_globalLights.front()]; + keySunLight = _allocatedLights[_globalLights.front()]; + } + + model::LightPointer keyAmbiLight; + if (_lightStage && _lightStage->_currentFrame._ambientLights.size()) { + keyAmbiLight = _lightStage->getLight(_lightStage->_currentFrame._ambientLights.front()); + } else { + keyAmbiLight = _allocatedLights[_globalLights.front()]; } if (lightBufferUnit >= 0) { - batch.setUniformBuffer(lightBufferUnit, keyLight->getLightSchemaBuffer()); + batch.setUniformBuffer(lightBufferUnit, keySunLight->getLightSchemaBuffer()); } - if (keyLight->hasAmbient() && (ambientBufferUnit >= 0)) { - batch.setUniformBuffer(ambientBufferUnit, keyLight->getAmbientSchemaBuffer()); + if (keyAmbiLight->hasAmbient() && (ambientBufferUnit >= 0)) { + batch.setUniformBuffer(ambientBufferUnit, keyAmbiLight->getAmbientSchemaBuffer()); } - if (keyLight->getAmbientMap() && (skyboxCubemapUnit >= 0)) { - batch.setResourceTexture(skyboxCubemapUnit, keyLight->getAmbientMap()); + if (keyAmbiLight->getAmbientMap() && (skyboxCubemapUnit >= 0)) { + batch.setResourceTexture(skyboxCubemapUnit, keyAmbiLight->getAmbientMap()); } } void DeferredLightingEffect::unsetKeyLightBatch(gpu::Batch& batch, int lightBufferUnit, int ambientBufferUnit, int skyboxCubemapUnit) { - auto keyLight = _allocatedLights[_globalLights.front()]; - if (lightBufferUnit >= 0) { batch.setUniformBuffer(lightBufferUnit, nullptr); } diff --git a/libraries/render-utils/src/LightStage.h b/libraries/render-utils/src/LightStage.h index 8da05ec052..01131cac73 100644 --- a/libraries/render-utils/src/LightStage.h +++ b/libraries/render-utils/src/LightStage.h @@ -118,22 +118,25 @@ public: public: Frame() {} - void clear() { _pointLights.clear(); _spotLights.clear(); _sunLights.clear(); } + void clear() { _pointLights.clear(); _spotLights.clear(); _sunLights.clear(); _ambientLights.clear(); } void pushLight(LightStage::Index index, model::Light::Type type) { switch (type) { case model::Light::POINT: { pushPointLight(index); break; } case model::Light::SPOT: { pushSpotLight(index); break; } case model::Light::SUN: { pushSunLight(index); break; } + case model::Light::AMBIENT: { pushAmbientLight(index); break; } default: { break; } } } void pushPointLight(LightStage::Index index) { _pointLights.emplace_back(index); } void pushSpotLight(LightStage::Index index) { _spotLights.emplace_back(index); } void pushSunLight(LightStage::Index index) { _sunLights.emplace_back(index); } + void pushAmbientLight(LightStage::Index index) { _ambientLights.emplace_back(index); } LightStage::LightIndices _pointLights; LightStage::LightIndices _spotLights; LightStage::LightIndices _sunLights; + LightStage::LightIndices _ambientLights; }; Frame _currentFrame; From bc41be7ec1eec7a285d4de51a39fcf9e279620a0 Mon Sep 17 00:00:00 2001 From: samcake Date: Tue, 9 May 2017 17:10:05 -0700 Subject: [PATCH 007/357] Introucing the BackgroundStage to manage the background / skybox in one place --- .../src/RenderableZoneEntityItem.cpp | 39 ++++- libraries/render-utils/CMakeLists.txt | 2 +- .../render-utils/src/BackgroundStage.cpp | 142 ++++++++++++++++++ libraries/render-utils/src/BackgroundStage.h | 80 ++++++++++ .../src/DeferredLightingEffect.cpp | 13 ++ .../render-utils/src/DeferredLightingEffect.h | 14 ++ .../render-utils/src/RenderDeferredTask.cpp | 7 +- plugins/openvr/CMakeLists.txt | 2 +- tests/render-perf/CMakeLists.txt | 2 +- 9 files changed, 289 insertions(+), 12 deletions(-) create mode 100644 libraries/render-utils/src/BackgroundStage.cpp create mode 100644 libraries/render-utils/src/BackgroundStage.h diff --git a/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp b/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp index 55d47dde98..074f78ef09 100644 --- a/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp @@ -26,6 +26,8 @@ #include #include "DeferredLightingEffect.h" +#include + class RenderableZoneEntityItemMeta { public: RenderableZoneEntityItemMeta(EntityItemPointer entity); @@ -45,7 +47,8 @@ public: model::LightPointer editSunLight() { _needSunUpdate = true; return _sunLight; } model::LightPointer editAmbientLight() { _needAmbientUpdate = true; return _ambientLight; } - model::SkyboxPointer editSkybox() { _needSkyboxUpdate = true; return _skybox; } + model::SunSkyStagePointer editBackground() { _needBackgroundUpdate = true; return _background; } + model::SkyboxPointer editSkybox() { return editBackground()->getSkybox(); } void setAmbientURL(const QString& ambientUrl); @@ -56,16 +59,19 @@ protected: model::LightPointer _sunLight; model::LightPointer _ambientLight; - model::SkyboxPointer _skybox; + model::SunSkyStagePointer _background; LightStagePointer _stage; LightStage::Index _sunIndex { LightStage::INVALID_INDEX }; LightStage::Index _ambientIndex { LightStage::INVALID_INDEX }; + BackgroundStagePointer _backgroundStage; + BackgroundStage::Index _backgroundIndex { BackgroundStage::INVALID_INDEX }; + bool _needUpdate { true }; bool _needSunUpdate { true }; bool _needAmbientUpdate { true }; - bool _needSkyboxUpdate { true }; + bool _needBackgroundUpdate { true }; bool _isVisible { true }; @@ -356,7 +362,7 @@ void RenderableZoneEntityItem::updateKeyAmbientFromEntity(RenderableZoneEntityIt } void RenderableZoneEntityItem::updateKeyBackgroundFromEntity(RenderableZoneEntityItemMeta& keyZonePayload) { - auto skybox = keyZonePayload.editSkybox(); + auto background = keyZonePayload.editBackground(); this->getBackgroundMode(); @@ -436,8 +442,10 @@ RenderableZoneEntityItemMeta::RenderableZoneEntityItemMeta(EntityItemPointer ent entity(entity), _sunLight(std::make_shared()), _ambientLight(std::make_shared()), - _skybox(std::make_shared()) -{} + _background(std::make_shared()) +{ + _background->setSkybox(std::make_shared()); +} RenderableZoneEntityItemMeta::~RenderableZoneEntityItemMeta() { @@ -450,6 +458,12 @@ RenderableZoneEntityItemMeta::~RenderableZoneEntityItemMeta() { } } + + if (_backgroundStage) { + if (!BackgroundStage::isIndexInvalid(_backgroundIndex)) { + _backgroundStage->removeBackground(_backgroundIndex); + } + } } void RenderableZoneEntityItemMeta::setAmbientURL(const QString& ambientUrl) { @@ -541,6 +555,10 @@ void RenderableZoneEntityItemMeta::render(RenderArgs* args) { _stage = DependencyManager::get()->getLightStage(); } + if (!_backgroundStage) { + _backgroundStage = DependencyManager::get()->getBackgroundStage(); + } + { // Sun // Need an update ? if (_needSunUpdate) { @@ -572,11 +590,20 @@ void RenderableZoneEntityItemMeta::render(RenderArgs* args) { { // Skybox updateSkyboxMap(); + if (_needBackgroundUpdate) { + if (BackgroundStage::isIndexInvalid(_backgroundIndex)) { + _backgroundIndex = _backgroundStage->addBackground(_background); + } else { + + } + _needBackgroundUpdate = false; + } } if (isVisible()) { // FInally, push the light visible in the frame _stage->_currentFrame.pushSunLight(_sunIndex); _stage->_currentFrame.pushAmbientLight(_ambientIndex); + _backgroundStage->_currentFrame.pushBackground(_backgroundIndex); } } diff --git a/libraries/render-utils/CMakeLists.txt b/libraries/render-utils/CMakeLists.txt index 454097233a..c359924e0d 100644 --- a/libraries/render-utils/CMakeLists.txt +++ b/libraries/render-utils/CMakeLists.txt @@ -3,7 +3,7 @@ AUTOSCRIBE_SHADER_LIB(gpu model render) # pull in the resources.qrc file qt5_add_resources(QT_RESOURCES_FILE "${CMAKE_CURRENT_SOURCE_DIR}/res/fonts/fonts.qrc") setup_hifi_library(Widgets OpenGL Network Qml Quick Script) -link_hifi_libraries(shared ktx gpu model model-networking render animation fbx entities image) +link_hifi_libraries(shared ktx gpu model model-networking render animation fbx entities image procedural) if (NOT ANDROID) target_nsight() diff --git a/libraries/render-utils/src/BackgroundStage.cpp b/libraries/render-utils/src/BackgroundStage.cpp new file mode 100644 index 0000000000..b25f5effd8 --- /dev/null +++ b/libraries/render-utils/src/BackgroundStage.cpp @@ -0,0 +1,142 @@ +// +// BackgroundStage.cpp +// +// Created by Sam Gateau on 5/9/2017. +// Copyright 2015 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// +#include "BackgroundStage.h" + +#include "DeferredLightingEffect.h" + +#include + +BackgroundStage::Index BackgroundStage::findBackground(const BackgroundPointer& background) const { + auto found = _backgroundMap.find(background); + if (found != _backgroundMap.end()) { + return INVALID_INDEX; + } else { + return (*found).second; + } + +} + +BackgroundStage::Index BackgroundStage::addBackground(const BackgroundPointer& background) { + + auto found = _backgroundMap.find(background); + if (found == _backgroundMap.end()) { + auto backgroundId = _backgrounds.newElement(background); + // Avoid failing to allocate a background, just pass + if (backgroundId != INVALID_INDEX) { + + // Insert the background and its index in the reverse map + _backgroundMap.insert(BackgroundMap::value_type(background, backgroundId)); + } + return backgroundId; + } else { + return (*found).second; + } +} + + +BackgroundStage::BackgroundPointer BackgroundStage::removeBackground(Index index) { + BackgroundPointer removed = _backgrounds.freeElement(index); + + if (removed) { + _backgroundMap.erase(removed); + } + return removed; +} + + +void DrawBackgroundStage::run(const render::RenderContextPointer& renderContext, const Inputs& inputs) { + + const auto& lightingModel = inputs; + if (!lightingModel->isBackgroundEnabled()) { + return; + } + + + // Background rendering decision + auto backgroundStage = DependencyManager::get()->getBackgroundStage(); + model::SunSkyStagePointer background; + model::SkyboxPointer skybox; + if (backgroundStage->_currentFrame._backgrounds.size()) { + auto backgroundId = backgroundStage->_currentFrame._backgrounds.front(); + auto background = backgroundStage->getBackground(backgroundId); + if (background) { + skybox = background->getSkybox(); + } + } else { + skybox = DependencyManager::get()->getDefaultSkybox(); + } + + /* auto backgroundMode = skyStage->getBackgroundMode(); + + switch (backgroundMode) { + case model::SunSkyStage::SKY_DEFAULT: { + auto scene = DependencyManager::get()->getStage(); + auto sceneKeyLight = scene->getKeyLight(); + + scene->setSunModelEnable(false); + sceneKeyLight->setColor(ColorUtils::toVec3(KeyLightPropertyGroup::DEFAULT_KEYLIGHT_COLOR)); + sceneKeyLight->setIntensity(KeyLightPropertyGroup::DEFAULT_KEYLIGHT_INTENSITY); + sceneKeyLight->setAmbientIntensity(KeyLightPropertyGroup::DEFAULT_KEYLIGHT_AMBIENT_INTENSITY); + sceneKeyLight->setDirection(KeyLightPropertyGroup::DEFAULT_KEYLIGHT_DIRECTION); + // fall through: render a skybox (if available), or the defaults (if requested) + } + + case model::SunSkyStage::SKY_BOX: {*/ + if (skybox && !skybox->empty()) { + PerformanceTimer perfTimer("skybox"); + auto args = renderContext->args; + + gpu::doInBatch(args->_context, [&](gpu::Batch& batch) { + args->_batch = &batch; + + batch.enableSkybox(true); + + batch.setViewportTransform(args->_viewport); + batch.setStateScissorRect(args->_viewport); + + glm::mat4 projMat; + Transform viewMat; + args->getViewFrustum().evalProjectionMatrix(projMat); + args->getViewFrustum().evalViewTransform(viewMat); + + batch.setProjectionTransform(projMat); + batch.setViewTransform(viewMat); + + skybox->render(batch, args->getViewFrustum()); + }); + args->_batch = nullptr; + gpu::Batch& batch = *args->_batch; + + // break; + } + // 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(); + if (defaultSkyboxAmbientTexture) { + sceneKeyLight->setAmbientSphere(defaultSkyboxAmbientTexture->getIrradiance()); + sceneKeyLight->setAmbientMap(defaultSkyboxAmbientTexture); + } else { + static QString repeatedMessage = LogHandler::getInstance().addRepeatedMessageRegex( + "Failed to get a valid Default Skybox Ambient Texture ? probably because it couldn't be find during initialization step"); + } + // fall through: render defaults skybox + } else { + break; + } + } + + + backgroundStage->_currentFrame.clear(); +} \ No newline at end of file diff --git a/libraries/render-utils/src/BackgroundStage.h b/libraries/render-utils/src/BackgroundStage.h new file mode 100644 index 0000000000..1dd1651c98 --- /dev/null +++ b/libraries/render-utils/src/BackgroundStage.h @@ -0,0 +1,80 @@ +// +// BackgroundStage.h + +// Created by Sam Gateau on 5/9/2017. +// Copyright 2015 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +#ifndef hifi_render_utils_BackgroundStage_h +#define hifi_render_utils_BackgroundStage_h + +#include +#include +#include +#include + +#include "LightingModel.h" + + +// Background stage to set up background-related rendering tasks +class BackgroundStage { +public: + using Index = render::indexed_container::Index; + static const Index INVALID_INDEX { render::indexed_container::INVALID_INDEX }; + static bool isIndexInvalid(Index index) { return index == INVALID_INDEX; } + + using BackgroundPointer = model::SunSkyStagePointer; + using Backgrounds = render::indexed_container::IndexedPointerVector; + using BackgroundMap = std::unordered_map; + + using BackgroundIndices = std::vector; + + + Index findBackground(const BackgroundPointer& background) const; + Index addBackground(const BackgroundPointer& background); + + BackgroundPointer removeBackground(Index index); + + bool checkBackgroundId(Index index) const { return _backgrounds.checkIndex(index); } + + Index getNumBackgrounds() const { return _backgrounds.getNumElements(); } + Index getNumFreeBackgrounds() const { return _backgrounds.getNumFreeIndices(); } + Index getNumAllocatedBackgrounds() const { return _backgrounds.getNumAllocatedIndices(); } + + BackgroundPointer getBackground(Index backgroundId) const { + return _backgrounds.get(backgroundId); + } + + Backgrounds _backgrounds; + BackgroundMap _backgroundMap; + + class Frame { + public: + Frame() {} + + void clear() { _backgrounds.clear(); } + + void pushBackground(BackgroundStage::Index index) { _backgrounds.emplace_back(index); } + + BackgroundStage::BackgroundIndices _backgrounds; + }; + + Frame _currentFrame; +}; +using BackgroundStagePointer = std::shared_ptr; + + +class DrawBackgroundStage { +public: + using Inputs = LightingModelPointer; + using JobModel = render::Job::ModelI; + + void run(const render::RenderContextPointer& renderContext, const Inputs& inputs); + +protected: +}; + +#endif diff --git a/libraries/render-utils/src/DeferredLightingEffect.cpp b/libraries/render-utils/src/DeferredLightingEffect.cpp index 947d0d502c..96f92758ea 100644 --- a/libraries/render-utils/src/DeferredLightingEffect.cpp +++ b/libraries/render-utils/src/DeferredLightingEffect.cpp @@ -141,6 +141,19 @@ void DeferredLightingEffect::init() { _globalLights.push_back(_lightStage->addLight(lp)); _lightStage->addShadow(_globalLights[0]); + + _backgroundStage = std::make_shared(); + + auto textureCache = DependencyManager::get(); + + QString skyboxUrl { PathUtils::resourcesPath() + "images/Default-Sky-9-cubemap.jpg" }; + QString skyboxAmbientUrl { PathUtils::resourcesPath() + "images/Default-Sky-9-ambient.jpg" }; + + _defaultSkyboxTexture = textureCache->getImageTexture(skyboxUrl, image::TextureUsage::CUBE_TEXTURE, { { "generateIrradiance", false } }); + _defaultSkyboxAmbientTexture = textureCache->getImageTexture(skyboxAmbientUrl, image::TextureUsage::CUBE_TEXTURE, { { "generateIrradiance", true } }); + + _defaultSkybox->setCubemap(_defaultSkyboxTexture); + } void DeferredLightingEffect::setupKeyLightBatch(gpu::Batch& batch, int lightBufferUnit, int ambientBufferUnit, int skyboxCubemapUnit) { diff --git a/libraries/render-utils/src/DeferredLightingEffect.h b/libraries/render-utils/src/DeferredLightingEffect.h index 02f759bab3..63895c2ec9 100644 --- a/libraries/render-utils/src/DeferredLightingEffect.h +++ b/libraries/render-utils/src/DeferredLightingEffect.h @@ -20,6 +20,8 @@ #include "model/Light.h" #include "model/Geometry.h" +#include + #include #include "DeferredFrameTransform.h" @@ -28,11 +30,13 @@ #include "LightStage.h" #include "LightClusters.h" +#include "BackgroundEffect.h" #include "SurfaceGeometryPass.h" #include "SubsurfaceScattering.h" #include "AmbientOcclusionEffect.h" + class RenderArgs; struct LightLocations; using LightLocationsPtr = std::shared_ptr; @@ -51,15 +55,21 @@ public: void setGlobalLight(const model::LightPointer& light); const LightStagePointer& getLightStage() { return _lightStage; } + const BackgroundStagePointer& getBackgroundStage() { return _backgroundStage; } void setShadowMapEnabled(bool enable) { _shadowMapEnabled = enable; }; void setAmbientOcclusionEnabled(bool enable) { _ambientOcclusionEnabled = enable; } bool isAmbientOcclusionEnabled() const { return _ambientOcclusionEnabled; } + model::SkyboxPointer getDefaultSkybox() const { return _defaultSkybox; } + gpu::TexturePointer getDefaultSkyboxTexture() const { return _defaultSkyboxTexture; } + gpu::TexturePointer getDefaultSkyboxAmbientTexture() const { return _defaultSkyboxAmbientTexture; } + private: DeferredLightingEffect() = default; LightStagePointer _lightStage; + BackgroundStagePointer _backgroundStage; bool _shadowMapEnabled{ false }; bool _ambientOcclusionEnabled{ false }; @@ -103,6 +113,10 @@ private: Lights _allocatedLights; std::vector _globalLights; + model::SkyboxPointer _defaultSkybox { new ProceduralSkybox() }; + gpu::TexturePointer _defaultSkyboxTexture; + gpu::TexturePointer _defaultSkyboxAmbientTexture; + friend class LightClusteringPass; friend class RenderDeferredSetup; friend class RenderDeferredLocals; diff --git a/libraries/render-utils/src/RenderDeferredTask.cpp b/libraries/render-utils/src/RenderDeferredTask.cpp index 693c150004..4264cfb424 100644 --- a/libraries/render-utils/src/RenderDeferredTask.cpp +++ b/libraries/render-utils/src/RenderDeferredTask.cpp @@ -139,9 +139,10 @@ void RenderDeferredTask::build(JobModel& task, const render::Varying& input, ren task.addJob("RenderDeferred", deferredLightingInputs); // Use Stencil and draw background in Lighting buffer to complete filling in the opaque - const auto backgroundInputs = DrawBackgroundDeferred::Inputs(background, lightingModel).hasVarying(); - task.addJob("DrawBackgroundDeferred", backgroundInputs); - + //const auto backgroundInputs = DrawBackgroundDeferred::Inputs(background, lightingModel).hasVarying(); + //task.addJob("DrawBackgroundDeferred", backgroundInputs); + + task.addJob("DrawBackgroundDeferred", lightingModel); // Render transparent objects forward in LightingBuffer const auto transparentsInputs = DrawDeferred::Inputs(transparents, lightingModel).hasVarying(); diff --git a/plugins/openvr/CMakeLists.txt b/plugins/openvr/CMakeLists.txt index bc62117e70..af65f3dbf7 100644 --- a/plugins/openvr/CMakeLists.txt +++ b/plugins/openvr/CMakeLists.txt @@ -13,7 +13,7 @@ if (WIN32) setup_hifi_plugin(OpenGL Script Qml Widgets) link_hifi_libraries(shared gl networking controllers ui plugins display-plugins ui-plugins input-plugins script-engine - render-utils model gpu gpu-gl render model-networking fbx ktx image) + render-utils model gpu gpu-gl render model-networking fbx ktx image procedural) include_hifi_library_headers(octree) diff --git a/tests/render-perf/CMakeLists.txt b/tests/render-perf/CMakeLists.txt index 1e85dd3ea8..553e7c06e7 100644 --- a/tests/render-perf/CMakeLists.txt +++ b/tests/render-perf/CMakeLists.txt @@ -10,7 +10,7 @@ setup_hifi_project(Quick Gui OpenGL) set_target_properties(${TARGET_NAME} PROPERTIES FOLDER "Tests/manual-tests/") # link in the shared libraries -link_hifi_libraries(shared octree ktx gl gpu gpu-gl render model model-networking networking render-utils fbx entities entities-renderer animation audio avatars script-engine physics image) +link_hifi_libraries(shared octree ktx gl gpu gpu-gl render model model-networking networking render-utils fbx entities entities-renderer animation audio avatars script-engine physics image procedural) package_libraries_for_deployment() From 75facdfa88a1a8f3631929160bf3c99baa4eb8a9 Mon Sep 17 00:00:00 2001 From: samcake Date: Tue, 9 May 2017 17:31:18 -0700 Subject: [PATCH 008/357] Testing the new behavior with the BackgroundStage, --- libraries/render-utils/src/BackgroundStage.cpp | 2 +- libraries/render-utils/src/DeferredLightingEffect.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/libraries/render-utils/src/BackgroundStage.cpp b/libraries/render-utils/src/BackgroundStage.cpp index b25f5effd8..f3ccfa6485 100644 --- a/libraries/render-utils/src/BackgroundStage.cpp +++ b/libraries/render-utils/src/BackgroundStage.cpp @@ -136,7 +136,7 @@ void DrawBackgroundStage::run(const render::RenderContextPointer& renderContext, break; } } - + */ backgroundStage->_currentFrame.clear(); } \ No newline at end of file diff --git a/libraries/render-utils/src/DeferredLightingEffect.h b/libraries/render-utils/src/DeferredLightingEffect.h index 63895c2ec9..3a1e7d2b4b 100644 --- a/libraries/render-utils/src/DeferredLightingEffect.h +++ b/libraries/render-utils/src/DeferredLightingEffect.h @@ -30,7 +30,7 @@ #include "LightStage.h" #include "LightClusters.h" -#include "BackgroundEffect.h" +#include "BackgroundStage.h" #include "SurfaceGeometryPass.h" #include "SubsurfaceScattering.h" From 8626e1f3d15d0e32881e25460f52ef2532d43b17 Mon Sep 17 00:00:00 2001 From: samcake Date: Mon, 15 May 2017 17:19:46 -0700 Subject: [PATCH 009/357] Keep fixing the cascading behavior to the zone render item --- .../src/RenderableZoneEntityItem.cpp | 40 +++++++++++++++++-- 1 file changed, 36 insertions(+), 4 deletions(-) diff --git a/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp b/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp index 074f78ef09..681a047e6c 100644 --- a/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp @@ -54,12 +54,17 @@ public: void setSkyboxURL(const QString& skyboxUrl); + void setBackgroundMode(BackgroundMode mode); + void setSkyboxColor(const glm::vec3& color); + void setProceduralUserData(QString userData); + protected: render::Item::Bound _bound; model::LightPointer _sunLight; model::LightPointer _ambientLight; model::SunSkyStagePointer _background; + BackgroundMode _backgroundMode { BACKGROUND_MODE_INHERIT }; LightStagePointer _stage; LightStage::Index _sunIndex { LightStage::INVALID_INDEX }; @@ -89,6 +94,7 @@ protected: bool _pendingSkyboxTexture { false }; bool _validSkyboxTexture { false }; + QString _proceduralUserData; }; // Sphere entities should fit inside a cube entity of the same size, so a sphere that has dimensions 1x1x1 @@ -364,8 +370,9 @@ void RenderableZoneEntityItem::updateKeyAmbientFromEntity(RenderableZoneEntityIt void RenderableZoneEntityItem::updateKeyBackgroundFromEntity(RenderableZoneEntityItemMeta& keyZonePayload) { auto background = keyZonePayload.editBackground(); - this->getBackgroundMode(); - + keyZonePayload.setBackgroundMode(this->getBackgroundMode()); + keyZonePayload.setSkyboxColor(this->getSkyboxProperties().getColorVec3()); + keyZonePayload.setProceduralUserData(this->getUserData()); keyZonePayload.setSkyboxURL(this->getSkyboxProperties().getURL()); } @@ -547,6 +554,22 @@ void RenderableZoneEntityItemMeta::updateSkyboxMap() { } } +void RenderableZoneEntityItemMeta::setBackgroundMode(BackgroundMode mode) { + _backgroundMode = mode; +} + +void RenderableZoneEntityItemMeta::setSkyboxColor(const glm::vec3& color) { + editSkybox()->setColor(color); +} + +void RenderableZoneEntityItemMeta::setProceduralUserData(QString userData) { + if (_proceduralUserData != userData) { + _proceduralUserData = userData; + std::dynamic_pointer_cast(editSkybox())->parse(_proceduralUserData); + } +} + + void RenderableZoneEntityItemMeta::render(RenderArgs* args) { // entity->render(args); @@ -602,8 +625,17 @@ void RenderableZoneEntityItemMeta::render(RenderArgs* args) { if (isVisible()) { // FInally, push the light visible in the frame + // THe directional key light for sure _stage->_currentFrame.pushSunLight(_sunIndex); - _stage->_currentFrame.pushAmbientLight(_ambientIndex); - _backgroundStage->_currentFrame.pushBackground(_backgroundIndex); + + // The ambient light only if it has a valid texture to render with + if (_validAmbientTexture || _validSkyboxTexture) { + _stage->_currentFrame.pushAmbientLight(_ambientIndex); + } + + // The background only if the mode is not inherit + if (_backgroundMode != BACKGROUND_MODE_INHERIT) { + _backgroundStage->_currentFrame.pushBackground(_backgroundIndex); + } } } From db4387e55dca030642cb8c11cca82be7e703be2a Mon Sep 17 00:00:00 2001 From: samcake Date: Mon, 15 May 2017 17:31:29 -0700 Subject: [PATCH 010/357] Trying to mess with the defautl texture for skybox --- .../entities-renderer/src/RenderableZoneEntityItem.cpp | 2 -- libraries/render-utils/src/DeferredLightingEffect.cpp | 10 ++++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp b/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp index 681a047e6c..92682d46df 100644 --- a/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp @@ -572,8 +572,6 @@ void RenderableZoneEntityItemMeta::setProceduralUserData(QString userData) { void RenderableZoneEntityItemMeta::render(RenderArgs* args) { - // entity->render(args); - if (!_stage) { _stage = DependencyManager::get()->getLightStage(); } diff --git a/libraries/render-utils/src/DeferredLightingEffect.cpp b/libraries/render-utils/src/DeferredLightingEffect.cpp index 96f92758ea..71d60df2ae 100644 --- a/libraries/render-utils/src/DeferredLightingEffect.cpp +++ b/libraries/render-utils/src/DeferredLightingEffect.cpp @@ -146,14 +146,16 @@ void DeferredLightingEffect::init() { auto textureCache = DependencyManager::get(); - QString skyboxUrl { PathUtils::resourcesPath() + "images/Default-Sky-9-cubemap.jpg" }; - QString skyboxAmbientUrl { PathUtils::resourcesPath() + "images/Default-Sky-9-ambient.jpg" }; + QString skyboxUrl { PathUtils::resourcesPath() + "images/Default-Sky-9-cubemap.ktx" }; +// QString skyboxAmbientUrl { PathUtils::resourcesPath() + "images/Default-Sky-9-cubemap.ktx" }; - _defaultSkyboxTexture = textureCache->getImageTexture(skyboxUrl, image::TextureUsage::CUBE_TEXTURE, { { "generateIrradiance", false } }); - _defaultSkyboxAmbientTexture = textureCache->getImageTexture(skyboxAmbientUrl, image::TextureUsage::CUBE_TEXTURE, { { "generateIrradiance", true } }); + _defaultSkyboxTexture = _defaultSkyboxAmbientTexture = textureCache->getImageTexture(skyboxUrl, image::TextureUsage::CUBE_TEXTURE, { { "generateIrradiance", false } }); + // _defaultSkyboxAmbientTexture = textureCache->getImageTexture(skyboxAmbientUrl, image::TextureUsage::CUBE_TEXTURE, { { "generateIrradiance", true } }); _defaultSkybox->setCubemap(_defaultSkyboxTexture); + lp->setAmbientMap(_defaultSkyboxTexture); + } void DeferredLightingEffect::setupKeyLightBatch(gpu::Batch& batch, int lightBufferUnit, int ambientBufferUnit, int skyboxCubemapUnit) { From 4c3ddfbff9e9b7a9efd75498b4555424746579a5 Mon Sep 17 00:00:00 2001 From: Sam Cake Date: Tue, 16 May 2017 01:01:19 -0700 Subject: [PATCH 011/357] Adding debuging of the ambient lighting --- .../render-utils/src/RenderDeferredTask.cpp | 2 + libraries/render-utils/src/ZoneRenderer.cpp | 81 +++++++++++++++++++ libraries/render-utils/src/ZoneRenderer.h | 20 +++++ .../render-utils/src/zone_drawAmbient.slf | 39 +++++++++ 4 files changed, 142 insertions(+) create mode 100644 libraries/render-utils/src/zone_drawAmbient.slf diff --git a/libraries/render-utils/src/RenderDeferredTask.cpp b/libraries/render-utils/src/RenderDeferredTask.cpp index 4264cfb424..492875a4ac 100644 --- a/libraries/render-utils/src/RenderDeferredTask.cpp +++ b/libraries/render-utils/src/RenderDeferredTask.cpp @@ -206,6 +206,8 @@ void RenderDeferredTask::build(JobModel& task, const render::Varying& input, ren auto statusIconMap = DependencyManager::get()->getImageTexture(iconMapPath, image::TextureUsage::STRICT_TEXTURE); task.addJob("DrawStatus", opaques, DrawStatus(statusIconMap)); } + + task.addJob("DebugZoneLighting"); } diff --git a/libraries/render-utils/src/ZoneRenderer.cpp b/libraries/render-utils/src/ZoneRenderer.cpp index 00b4565edf..e7bcda2036 100644 --- a/libraries/render-utils/src/ZoneRenderer.cpp +++ b/libraries/render-utils/src/ZoneRenderer.cpp @@ -10,9 +10,18 @@ // #include "ZoneRenderer.h" + +#include +#include + #include #include +#include "DeferredLightingEffect.h" + +#include "zone_drawAmbient_frag.h" + + using namespace render; class SetupZones { @@ -45,3 +54,75 @@ void SetupZones::run(const RenderContextPointer& context, const Inputs& inputs) render::renderItems(context, inputs); } + +const gpu::PipelinePointer& DebugZoneLighting::getKeyLightPipeline() { + if (!_keyLightPipeline) { + } + return _keyLightPipeline; +} + +const gpu::PipelinePointer& DebugZoneLighting::getAmbientPipeline() { + if (!_ambientPipeline) { + auto vs = gpu::StandardShaderLib::getDrawTransformUnitQuadVS(); + auto ps = gpu::Shader::createPixel(std::string(zone_drawAmbient_frag)); + gpu::ShaderPointer program = gpu::Shader::createProgram(vs, ps); + + gpu::Shader::BindingSet slotBindings; + //slotBindings.insert(gpu::Shader::Binding(std::string("blurParamsBuffer"), BlurTask_ParamsSlot)); + //slotBindings.insert(gpu::Shader::Binding(std::string("sourceMap"), BlurTask_SourceSlot)); + gpu::Shader::makeProgram(*program, slotBindings); + + gpu::StatePointer state = gpu::StatePointer(new gpu::State()); + _ambientPipeline = gpu::Pipeline::create(program, state); + } + return _ambientPipeline; +} +const gpu::PipelinePointer& DebugZoneLighting::getBackgroundPipeline() { + if (!_backgroundPipeline) { + } + return _backgroundPipeline; +} + +void DebugZoneLighting::run(const render::RenderContextPointer& context) { + RenderArgs* args = context->args; + + auto lightStage = DependencyManager::get()->getLightStage(); + + const auto light = lightStage->getLight(0); + model::LightPointer keyAmbiLight; + if (lightStage && lightStage->_currentFrame._ambientLights.size()) { + keyAmbiLight = lightStage->getLight(lightStage->_currentFrame._ambientLights.front()); + } else { + // keyAmbiLight = _allocatedLights[_globalLights.front()]; + } + +/* if (lightBufferUnit >= 0) { + batch.setUniformBuffer(lightBufferUnit, keySunLight->getLightSchemaBuffer()); + }*/ + + gpu::doInBatch(args->_context, [=](gpu::Batch& batch) { + + batch.setViewportTransform(args->_viewport); + auto viewFrustum = args->getViewFrustum(); + batch.setProjectionTransform(viewFrustum.getProjection()); + batch.resetViewTransform(); + + Transform model; + model.setTranslation(glm::vec3(0.0, 0.0, -10.0)); + batch.setModelTransform(model); + + batch.setPipeline(getAmbientPipeline()); + if (keyAmbiLight) { + if (keyAmbiLight->hasAmbient()) { + batch.setUniformBuffer(0, keyAmbiLight->getAmbientSchemaBuffer()); + } + + if (keyAmbiLight->getAmbientMap()) { + batch.setResourceTexture(0, keyAmbiLight->getAmbientMap()); + } + } + + batch.draw(gpu::TRIANGLE_STRIP, 4); + + }); +} diff --git a/libraries/render-utils/src/ZoneRenderer.h b/libraries/render-utils/src/ZoneRenderer.h index cbbfbcb84e..1ca34892c9 100644 --- a/libraries/render-utils/src/ZoneRenderer.h +++ b/libraries/render-utils/src/ZoneRenderer.h @@ -50,4 +50,24 @@ protected: int _maxDrawn; // initialized by Config }; +class DebugZoneLighting { +public: + using JobModel = render::Job::Model; + + DebugZoneLighting() {} + + void run(const render::RenderContextPointer& context); + +protected: + + gpu::PipelinePointer _keyLightPipeline; + gpu::PipelinePointer _ambientPipeline; + gpu::PipelinePointer _backgroundPipeline; + + const gpu::PipelinePointer& getKeyLightPipeline(); + const gpu::PipelinePointer& getAmbientPipeline(); + const gpu::PipelinePointer& getBackgroundPipeline(); +}; + + #endif \ No newline at end of file diff --git a/libraries/render-utils/src/zone_drawAmbient.slf b/libraries/render-utils/src/zone_drawAmbient.slf new file mode 100644 index 0000000000..aff4bcb47f --- /dev/null +++ b/libraries/render-utils/src/zone_drawAmbient.slf @@ -0,0 +1,39 @@ +<@include gpu/Config.slh@> +<$VERSION_HEADER$> +// Generated on <$_SCRIBE_DATE$> +// +// Created by Sam Gateau on 5/16/17. +// Copyright 2017 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +<@include model/Light.slh@> + +<@include LightingModel.slh@> + !> +<$declareLightAmbientBuffer()$> + +<@include LightAmbient.slh@> + !> + +<$declareLightingAmbient(_SCRIBE_NULL, 1, _SCRIBE_NULL, _SCRIBE_NULL)$> + +in vec2 varTexCoord0; +out vec4 _fragColor; + +void main(void) { + + LightAmbient lightAmbient = getLightAmbient(); + + // _fragColor = vec4(varTexCoord0, 0.0, 1.0); + + float z = sqrt( dot(varTexCoord0.xy, varTexCoord0.xy)); + vec3 dir = vec3(varTexCoord0.xy, z); + + vec3 ambient = sphericalHarmonics_evalSphericalLight(getLightAmbientSphere(lightAmbient), dir).xyz; + _fragColor = vec4(ambient, 1.0); +} + + From 2cd2c959407932ee57335856a863027cba15445d Mon Sep 17 00:00:00 2001 From: samcake Date: Tue, 16 May 2017 16:12:31 -0700 Subject: [PATCH 012/357] Adding more debugging tool --- .../src/RenderableZoneEntityItem.cpp | 5 +- libraries/model/src/model/Light.h | 1 - .../render-utils/src/BackgroundStage.cpp | 1 - .../src/DeferredLightingEffect.cpp | 29 +++++--- .../render-utils/src/DeferredLightingEffect.h | 1 + libraries/render-utils/src/LightStage.h | 1 - .../render-utils/src/RenderDeferredTask.cpp | 2 +- libraries/render-utils/src/ZoneRenderer.cpp | 68 +++++++++++++++---- libraries/render-utils/src/ZoneRenderer.h | 14 +++- .../render-utils/src/zone_drawAmbient.slf | 44 +++++++++--- .../render-utils/src/zone_drawSkybox.slf | 54 +++++++++++++++ 11 files changed, 178 insertions(+), 42 deletions(-) create mode 100644 libraries/render-utils/src/zone_drawSkybox.slf diff --git a/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp b/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp index 92682d46df..6758134a7e 100644 --- a/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp @@ -354,11 +354,8 @@ void RenderableZoneEntityItem::updateKeyAmbientFromEntity(RenderableZoneEntityIt // Set the keylight - ambientLight->setColor(ColorUtils::toVec3(this->getKeyLightProperties().getColor())); ambientLight->setAmbientIntensity(this->getKeyLightProperties().getAmbientIntensity()); - // ambientLight->setIntensity(this->getKeyLightProperties().getIntensity()); - ambientLight->setDirection(this->getKeyLightProperties().getDirection()); - + if (this->getKeyLightProperties().getAmbientURL().isEmpty()) { keyZonePayload.setAmbientURL(this->getSkyboxProperties().getURL()); } else { diff --git a/libraries/model/src/model/Light.h b/libraries/model/src/model/Light.h index ee242bfdf2..4c82eb5d77 100755 --- a/libraries/model/src/model/Light.h +++ b/libraries/model/src/model/Light.h @@ -113,7 +113,6 @@ public: void setIntensity(float intensity); bool isRanged() const { return (getType() == POINT) || (getType() == SPOT); } - bool hasAmbient() const { return (getType() == AMBIENT); } // FalloffRradius is the physical radius of the light sphere through which energy shines, // expressed in meters. It is used only to calculate the falloff curve of the light. diff --git a/libraries/render-utils/src/BackgroundStage.cpp b/libraries/render-utils/src/BackgroundStage.cpp index f3ccfa6485..1a85a70863 100644 --- a/libraries/render-utils/src/BackgroundStage.cpp +++ b/libraries/render-utils/src/BackgroundStage.cpp @@ -138,5 +138,4 @@ void DrawBackgroundStage::run(const render::RenderContextPointer& renderContext, } */ - backgroundStage->_currentFrame.clear(); } \ No newline at end of file diff --git a/libraries/render-utils/src/DeferredLightingEffect.cpp b/libraries/render-utils/src/DeferredLightingEffect.cpp index 71d60df2ae..b799a7c49e 100644 --- a/libraries/render-utils/src/DeferredLightingEffect.cpp +++ b/libraries/render-utils/src/DeferredLightingEffect.cpp @@ -146,15 +146,21 @@ void DeferredLightingEffect::init() { auto textureCache = DependencyManager::get(); - QString skyboxUrl { PathUtils::resourcesPath() + "images/Default-Sky-9-cubemap.ktx" }; -// QString skyboxAmbientUrl { PathUtils::resourcesPath() + "images/Default-Sky-9-cubemap.ktx" }; + { + PROFILE_RANGE(render, "Process Default Skybox"); + auto textureCache = DependencyManager::get(); - _defaultSkyboxTexture = _defaultSkyboxAmbientTexture = textureCache->getImageTexture(skyboxUrl, image::TextureUsage::CUBE_TEXTURE, { { "generateIrradiance", false } }); - // _defaultSkyboxAmbientTexture = textureCache->getImageTexture(skyboxAmbientUrl, image::TextureUsage::CUBE_TEXTURE, { { "generateIrradiance", true } }); + auto skyboxUrl = PathUtils::resourcesPath().toStdString() + "images/Default-Sky-9-cubemap.ktx"; - _defaultSkybox->setCubemap(_defaultSkyboxTexture); + _defaultSkyboxTexture = gpu::Texture::unserialize(skyboxUrl); + _defaultSkyboxAmbientTexture = _defaultSkyboxTexture; - lp->setAmbientMap(_defaultSkyboxTexture); + _defaultSkybox->setCubemap(_defaultSkyboxTexture); + } + + + lp->setAmbientIntensity(0.5f); + lp->setAmbientMap(_defaultSkyboxAmbientTexture); } @@ -177,7 +183,7 @@ void DeferredLightingEffect::setupKeyLightBatch(gpu::Batch& batch, int lightBuff if (lightBufferUnit >= 0) { batch.setUniformBuffer(lightBufferUnit, keySunLight->getLightSchemaBuffer()); } - if (keyAmbiLight->hasAmbient() && (ambientBufferUnit >= 0)) { + if (ambientBufferUnit >= 0) { batch.setUniformBuffer(ambientBufferUnit, keyAmbiLight->getAmbientSchemaBuffer()); } @@ -315,15 +321,20 @@ static void loadLightVolumeProgram(const char* vertSource, const char* fragSourc } void DeferredLightingEffect::setGlobalLight(const model::LightPointer& light) { - auto globalLight = _allocatedLights.front(); + /* auto globalLight = _allocatedLights.front(); globalLight->setDirection(light->getDirection()); globalLight->setColor(light->getColor()); globalLight->setIntensity(light->getIntensity()); globalLight->setAmbientIntensity(light->getAmbientIntensity()); globalLight->setAmbientSphere(light->getAmbientSphere()); - globalLight->setAmbientMap(light->getAmbientMap()); + globalLight->setAmbientMap(light->getAmbientMap());*/ } +const model::LightPointer& DeferredLightingEffect::getGlobalLight() const { + return _allocatedLights.front(); +} + + #include model::MeshPointer DeferredLightingEffect::getPointLightMesh() { diff --git a/libraries/render-utils/src/DeferredLightingEffect.h b/libraries/render-utils/src/DeferredLightingEffect.h index 3a1e7d2b4b..2f4f9901c3 100644 --- a/libraries/render-utils/src/DeferredLightingEffect.h +++ b/libraries/render-utils/src/DeferredLightingEffect.h @@ -53,6 +53,7 @@ public: // update global lighting void setGlobalLight(const model::LightPointer& light); + const model::LightPointer& getGlobalLight() const; const LightStagePointer& getLightStage() { return _lightStage; } const BackgroundStagePointer& getBackgroundStage() { return _backgroundStage; } diff --git a/libraries/render-utils/src/LightStage.h b/libraries/render-utils/src/LightStage.h index 01131cac73..edbdff28fd 100644 --- a/libraries/render-utils/src/LightStage.h +++ b/libraries/render-utils/src/LightStage.h @@ -77,7 +77,6 @@ public: }; using Descs = std::vector; - Index findLight(const LightPointer& light) const; Index addLight(const LightPointer& light); diff --git a/libraries/render-utils/src/RenderDeferredTask.cpp b/libraries/render-utils/src/RenderDeferredTask.cpp index 492875a4ac..21df88d4c4 100644 --- a/libraries/render-utils/src/RenderDeferredTask.cpp +++ b/libraries/render-utils/src/RenderDeferredTask.cpp @@ -207,7 +207,7 @@ void RenderDeferredTask::build(JobModel& task, const render::Varying& input, ren task.addJob("DrawStatus", opaques, DrawStatus(statusIconMap)); } - task.addJob("DebugZoneLighting"); + task.addJob("DebugZoneLighting", deferredFrameTransform); } diff --git a/libraries/render-utils/src/ZoneRenderer.cpp b/libraries/render-utils/src/ZoneRenderer.cpp index e7bcda2036..c838954b72 100644 --- a/libraries/render-utils/src/ZoneRenderer.cpp +++ b/libraries/render-utils/src/ZoneRenderer.cpp @@ -20,6 +20,7 @@ #include "DeferredLightingEffect.h" #include "zone_drawAmbient_frag.h" +#include "zone_drawSkybox_frag.h" using namespace render; @@ -50,6 +51,9 @@ void ZoneRendererTask::build(JobModel& task, const Varying& input, Varying& oupu void SetupZones::run(const RenderContextPointer& context, const Inputs& inputs) { + auto backgroundStage = DependencyManager::get()->getBackgroundStage(); + backgroundStage->_currentFrame.clear(); + // call render in the correct order first... render::renderItems(context, inputs); @@ -68,37 +72,63 @@ const gpu::PipelinePointer& DebugZoneLighting::getAmbientPipeline() { gpu::ShaderPointer program = gpu::Shader::createProgram(vs, ps); gpu::Shader::BindingSet slotBindings; - //slotBindings.insert(gpu::Shader::Binding(std::string("blurParamsBuffer"), BlurTask_ParamsSlot)); - //slotBindings.insert(gpu::Shader::Binding(std::string("sourceMap"), BlurTask_SourceSlot)); + slotBindings.insert(gpu::Shader::Binding(std::string("deferredFrameTransformBuffer"), ZONE_DEFERRED_TRANSFORM_BUFFER)); + slotBindings.insert(gpu::Shader::Binding(std::string("lightAmbientBuffer"), ZONE_AMBIENT_BUFFER)); + slotBindings.insert(gpu::Shader::Binding(std::string("skyboxMap"), ZONE_AMBIENT_MAP)); + gpu::Shader::makeProgram(*program, slotBindings); gpu::StatePointer state = gpu::StatePointer(new gpu::State()); + + state->setBlendFunction(true, gpu::State::SRC_ALPHA, gpu::State::BLEND_OP_ADD, gpu::State::INV_SRC_ALPHA); _ambientPipeline = gpu::Pipeline::create(program, state); } return _ambientPipeline; } const gpu::PipelinePointer& DebugZoneLighting::getBackgroundPipeline() { if (!_backgroundPipeline) { + auto vs = gpu::StandardShaderLib::getDrawTransformUnitQuadVS(); + auto ps = gpu::Shader::createPixel(std::string(zone_drawSkybox_frag)); + gpu::ShaderPointer program = gpu::Shader::createProgram(vs, ps); + + gpu::Shader::BindingSet slotBindings; + slotBindings.insert(gpu::Shader::Binding(std::string("deferredFrameTransformBuffer"), ZONE_DEFERRED_TRANSFORM_BUFFER)); + slotBindings.insert(gpu::Shader::Binding(std::string("skyboxMap"), ZONE_SKYBOX_MAP)); + + gpu::Shader::makeProgram(*program, slotBindings); + + gpu::StatePointer state = gpu::StatePointer(new gpu::State()); + + state->setBlendFunction(true, gpu::State::SRC_ALPHA, gpu::State::BLEND_OP_ADD, gpu::State::INV_SRC_ALPHA); + _backgroundPipeline = gpu::Pipeline::create(program, state); } return _backgroundPipeline; } -void DebugZoneLighting::run(const render::RenderContextPointer& context) { +void DebugZoneLighting::run(const render::RenderContextPointer& context, const Inputs& inputs) { RenderArgs* args = context->args; + auto deferredTransform = inputs; + auto lightStage = DependencyManager::get()->getLightStage(); - const auto light = lightStage->getLight(0); model::LightPointer keyAmbiLight; if (lightStage && lightStage->_currentFrame._ambientLights.size()) { keyAmbiLight = lightStage->getLight(lightStage->_currentFrame._ambientLights.front()); } else { - // keyAmbiLight = _allocatedLights[_globalLights.front()]; + keyAmbiLight = DependencyManager::get()->getGlobalLight(); } -/* if (lightBufferUnit >= 0) { - batch.setUniformBuffer(lightBufferUnit, keySunLight->getLightSchemaBuffer()); - }*/ + auto backgroundStage = DependencyManager::get()->getBackgroundStage(); + model::SkyboxPointer skybox; + if (backgroundStage && backgroundStage->_currentFrame._backgrounds.size()) { + auto background = backgroundStage->getBackground(backgroundStage->_currentFrame._backgrounds.front()); + if (background) { + skybox = background->getSkybox(); + } + } else { + skybox = DependencyManager::get()->getDefaultSkybox(); + } gpu::doInBatch(args->_context, [=](gpu::Batch& batch) { @@ -108,21 +138,29 @@ void DebugZoneLighting::run(const render::RenderContextPointer& context) { batch.resetViewTransform(); Transform model; - model.setTranslation(glm::vec3(0.0, 0.0, -10.0)); - batch.setModelTransform(model); + model.setTranslation(glm::vec3(-4.0, 0.0, -10.0)); + + batch.setUniformBuffer(ZONE_DEFERRED_TRANSFORM_BUFFER, deferredTransform->getFrameTransformBuffer()); batch.setPipeline(getAmbientPipeline()); + batch.setModelTransform(model); if (keyAmbiLight) { - if (keyAmbiLight->hasAmbient()) { - batch.setUniformBuffer(0, keyAmbiLight->getAmbientSchemaBuffer()); - } + batch.setUniformBuffer(ZONE_AMBIENT_BUFFER, keyAmbiLight->getAmbientSchemaBuffer()); if (keyAmbiLight->getAmbientMap()) { - batch.setResourceTexture(0, keyAmbiLight->getAmbientMap()); + batch.setResourceTexture(ZONE_AMBIENT_MAP, keyAmbiLight->getAmbientMap()); } } - batch.draw(gpu::TRIANGLE_STRIP, 4); + batch.setPipeline(getBackgroundPipeline()); + model.setTranslation(glm::vec3(-4.0, 3.0, -10.0)); + batch.setModelTransform(model); + if (skybox) { + batch.setResourceTexture(ZONE_SKYBOX_MAP, skybox->getCubemap()); + } + batch.draw(gpu::TRIANGLE_STRIP, 4); + + }); } diff --git a/libraries/render-utils/src/ZoneRenderer.h b/libraries/render-utils/src/ZoneRenderer.h index 1ca34892c9..ee3754b7eb 100644 --- a/libraries/render-utils/src/ZoneRenderer.h +++ b/libraries/render-utils/src/ZoneRenderer.h @@ -14,6 +14,8 @@ #include "render/Engine.h" +#include "DeferredFrameTransform.h" + class ZoneRendererConfig : public render::Task::Config { Q_OBJECT Q_PROPERTY(int maxDrawn MEMBER maxDrawn NOTIFY dirty) @@ -52,14 +54,22 @@ protected: class DebugZoneLighting { public: - using JobModel = render::Job::Model; + using Inputs = DeferredFrameTransformPointer; + using JobModel = render::Job::ModelI; DebugZoneLighting() {} - void run(const render::RenderContextPointer& context); + void run(const render::RenderContextPointer& context, const Inputs& inputs); protected: + enum Slots { + ZONE_DEFERRED_TRANSFORM_BUFFER = 0, + ZONE_AMBIENT_BUFFER, + ZONE_AMBIENT_MAP, + ZONE_SKYBOX_MAP, + }; + gpu::PipelinePointer _keyLightPipeline; gpu::PipelinePointer _ambientPipeline; gpu::PipelinePointer _backgroundPipeline; diff --git a/libraries/render-utils/src/zone_drawAmbient.slf b/libraries/render-utils/src/zone_drawAmbient.slf index aff4bcb47f..f14bed5c03 100644 --- a/libraries/render-utils/src/zone_drawAmbient.slf +++ b/libraries/render-utils/src/zone_drawAmbient.slf @@ -9,14 +9,15 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // +<@include DeferredTransform.slh@> +<$declareDeferredFrameTransform()$> + <@include model/Light.slh@> <@include LightingModel.slh@> - !> <$declareLightAmbientBuffer()$> <@include LightAmbient.slh@> - !> <$declareLightingAmbient(_SCRIBE_NULL, 1, _SCRIBE_NULL, _SCRIBE_NULL)$> @@ -25,15 +26,42 @@ out vec4 _fragColor; void main(void) { + const float INNER_RADIUS = 1.0; + const float INNER_RADIUS2 = INNER_RADIUS * INNER_RADIUS; + const float OUTER_RADIUS = 1.05; + const float OUTER_RADIUS2 = OUTER_RADIUS * OUTER_RADIUS; + vec2 sphereUV = (varTexCoord0.xy * 2.0 - vec2(1.0)) * OUTER_RADIUS; + float sphereR2 = dot(sphereUV.xy, sphereUV.xy); + if (sphereR2 > OUTER_RADIUS * OUTER_RADIUS) { + discard; + } + if (sphereR2 > INNER_RADIUS2) { + float falloff = (sphereR2 - OUTER_RADIUS2) / (OUTER_RADIUS2 - INNER_RADIUS2); + _fragColor = vec4(0.0, 0.0, 0.0, falloff * falloff); + return; + } + vec3 spherePos = normalize(vec3(sphereUV, sqrt(1.0 - sphereR2))); + + + vec3 fragNormal = vec3(getViewInverse() * vec4(spherePos, 0.0)); + + LightAmbient lightAmbient = getLightAmbient(); - - // _fragColor = vec4(varTexCoord0, 0.0, 1.0); - float z = sqrt( dot(varTexCoord0.xy, varTexCoord0.xy)); - vec3 dir = vec3(varTexCoord0.xy, z); - vec3 ambient = sphericalHarmonics_evalSphericalLight(getLightAmbientSphere(lightAmbient), dir).xyz; - _fragColor = vec4(ambient, 1.0); + float roughness = 0.1; + float levels = getLightAmbientMapNumMips(lightAmbient); + float lod = min(((roughness)* levels), levels); + vec3 ambientMap = evalSkyboxLight(fragNormal, lod).xyz; + vec3 ambientSH = sphericalHarmonics_evalSphericalLight(getLightAmbientSphere(lightAmbient), fragNormal).xyz; + + // vec3 ambient = sphericalHarmonics_evalSphericalLight(getLightAmbientSphere(lightAmbient), fragNormal).xyz; + // _fragColor = vec4( 0.5 * (fragNormal + vec3(1.0)), 1.0); + + vec3 ambient = (sphereUV.x > 0 ? ambientMap : ambientSH); + + const float INV_GAMMA_22 = 1.0 / 2.2; + _fragColor = vec4(pow(ambient, vec3(INV_GAMMA_22)), 1.0); } diff --git a/libraries/render-utils/src/zone_drawSkybox.slf b/libraries/render-utils/src/zone_drawSkybox.slf new file mode 100644 index 0000000000..77b144379b --- /dev/null +++ b/libraries/render-utils/src/zone_drawSkybox.slf @@ -0,0 +1,54 @@ +<@include gpu/Config.slh@> +<$VERSION_HEADER$> +// Generated on <$_SCRIBE_DATE$> +// +// Created by Sam Gateau on 5/16/17. +// Copyright 2017 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +<@include DeferredTransform.slh@> +<$declareDeferredFrameTransform()$> + +// declareSkyboxMap +uniform samplerCube skyboxMap; + +vec4 evalSkyboxLight(vec3 direction, float lod) { + // textureQueryLevels is not available until #430, so we require explicit lod + // float mipmapLevel = lod * textureQueryLevels(skyboxMap); + return textureLod(skyboxMap, direction, lod); +} + +in vec2 varTexCoord0; +out vec4 _fragColor; + +void main(void) { + + const float INNER_RADIUS = 1.0; + const float INNER_RADIUS2 = INNER_RADIUS * INNER_RADIUS; + const float OUTER_RADIUS = 1.05; + const float OUTER_RADIUS2 = OUTER_RADIUS * OUTER_RADIUS; + vec2 sphereUV = (varTexCoord0.xy * 2.0 - vec2(1.0)) * OUTER_RADIUS; + float sphereR2 = dot(sphereUV.xy, sphereUV.xy); + if (sphereR2 > OUTER_RADIUS * OUTER_RADIUS) { + discard; + } + if (sphereR2 > INNER_RADIUS2) { + float falloff = (sphereR2 - OUTER_RADIUS2) / (OUTER_RADIUS2 - INNER_RADIUS2); + _fragColor = vec4(0.0, 0.0, 0.0, falloff * falloff); + return; + } + vec3 spherePos = normalize(vec3(sphereUV, -sqrt(1.0 - sphereR2))); + + vec3 fragNormal = vec3(getViewInverse() * vec4(spherePos, 0.0)); + + float lod = 0; + vec3 ambient = evalSkyboxLight(fragNormal, lod).xyz; + + const float INV_GAMMA_22 = 1.0 / 2.2; + _fragColor = vec4(pow(ambient, vec3(INV_GAMMA_22)), 1.0); +} + + From 79f700e8ce3f5f5a2f9efa7e9916948ab990f489 Mon Sep 17 00:00:00 2001 From: Sam Gateau Date: Wed, 17 May 2017 18:12:48 -0700 Subject: [PATCH 013/357] Adding the drawKeyLight shader --- libraries/render-utils/src/ZoneRenderer.cpp | 38 +++++++++-- libraries/render-utils/src/ZoneRenderer.h | 3 +- .../render-utils/src/zone_drawKeyLight.slf | 66 +++++++++++++++++++ 3 files changed, 102 insertions(+), 5 deletions(-) create mode 100644 libraries/render-utils/src/zone_drawKeyLight.slf diff --git a/libraries/render-utils/src/ZoneRenderer.cpp b/libraries/render-utils/src/ZoneRenderer.cpp index c838954b72..620597e76a 100644 --- a/libraries/render-utils/src/ZoneRenderer.cpp +++ b/libraries/render-utils/src/ZoneRenderer.cpp @@ -19,6 +19,7 @@ #include "DeferredLightingEffect.h" +#include "zone_drawKeyLight_frag.h" #include "zone_drawAmbient_frag.h" #include "zone_drawSkybox_frag.h" @@ -61,7 +62,21 @@ void SetupZones::run(const RenderContextPointer& context, const Inputs& inputs) const gpu::PipelinePointer& DebugZoneLighting::getKeyLightPipeline() { if (!_keyLightPipeline) { - } + auto vs = gpu::StandardShaderLib::getDrawTransformUnitQuadVS(); + auto ps = gpu::Shader::createPixel(std::string(zone_drawSkybox_frag)); + gpu::ShaderPointer program = gpu::Shader::createProgram(vs, ps); + + gpu::Shader::BindingSet slotBindings; + slotBindings.insert(gpu::Shader::Binding(std::string("deferredFrameTransformBuffer"), ZONE_DEFERRED_TRANSFORM_BUFFER)); + slotBindings.insert(gpu::Shader::Binding(std::string("keylightBuffer"), ZONE_KEYLIGHT_BUFFER)); + + gpu::Shader::makeProgram(*program, slotBindings); + + gpu::StatePointer state = gpu::StatePointer(new gpu::State()); + + state->setBlendFunction(true, gpu::State::SRC_ALPHA, gpu::State::BLEND_OP_ADD, gpu::State::INV_SRC_ALPHA); + _keyLightPipeline = gpu::Pipeline::create(program, state); + } return _keyLightPipeline; } @@ -111,7 +126,14 @@ void DebugZoneLighting::run(const render::RenderContextPointer& context, const I auto deferredTransform = inputs; auto lightStage = DependencyManager::get()->getLightStage(); - const auto light = lightStage->getLight(0); + model::LightPointer keyLight; + if (lightStage && lightStage->_currentFrame._sunLights.size()) { + keyLight = lightStage->getLight(lightStage->_currentFrame._sunLights.front()); + } + else { + keyLight = DependencyManager::get()->getGlobalLight(); + } + model::LightPointer keyAmbiLight; if (lightStage && lightStage->_currentFrame._ambientLights.size()) { keyAmbiLight = lightStage->getLight(lightStage->_currentFrame._ambientLights.front()); @@ -138,12 +160,20 @@ void DebugZoneLighting::run(const render::RenderContextPointer& context, const I batch.resetViewTransform(); Transform model; - model.setTranslation(glm::vec3(-4.0, 0.0, -10.0)); batch.setUniformBuffer(ZONE_DEFERRED_TRANSFORM_BUFFER, deferredTransform->getFrameTransformBuffer()); + batch.setPipeline(getKeyLightPipeline()); + model.setTranslation(glm::vec3(-4.0, -3.0, -10.0)); + batch.setModelTransform(model); + if (keyLight) { + batch.setUniformBuffer(ZONE_KEYLIGHT_BUFFER, keyLight->getLightSchemaBuffer()); + } + batch.draw(gpu::TRIANGLE_STRIP, 4); + batch.setPipeline(getAmbientPipeline()); - batch.setModelTransform(model); + model.setTranslation(glm::vec3(-4.0, 0.0, -10.0)); + batch.setModelTransform(model); if (keyAmbiLight) { batch.setUniformBuffer(ZONE_AMBIENT_BUFFER, keyAmbiLight->getAmbientSchemaBuffer()); diff --git a/libraries/render-utils/src/ZoneRenderer.h b/libraries/render-utils/src/ZoneRenderer.h index ee3754b7eb..10eaa67d31 100644 --- a/libraries/render-utils/src/ZoneRenderer.h +++ b/libraries/render-utils/src/ZoneRenderer.h @@ -65,7 +65,8 @@ protected: enum Slots { ZONE_DEFERRED_TRANSFORM_BUFFER = 0, - ZONE_AMBIENT_BUFFER, + ZONE_KEYLIGHT_BUFFER, + ZONE_AMBIENT_BUFFER, ZONE_AMBIENT_MAP, ZONE_SKYBOX_MAP, }; diff --git a/libraries/render-utils/src/zone_drawKeyLight.slf b/libraries/render-utils/src/zone_drawKeyLight.slf new file mode 100644 index 0000000000..f4bb147635 --- /dev/null +++ b/libraries/render-utils/src/zone_drawKeyLight.slf @@ -0,0 +1,66 @@ +<@include gpu/Config.slh@> +<$VERSION_HEADER$> +// Generated on <$_SCRIBE_DATE$> +// +// Created by Sam Gateau on 5/16/17. +// Copyright 2017 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +<@include DeferredTransform.slh@> +<$declareDeferredFrameTransform()$> + +<@include model/Light.slh@> + +<@include LightingModel.slh@> +<$declareLightBuffer()$> + +<@include LightDirectional.slh@> +<$declareLightingDirectional(_SCRIBE_NULL)$> + +in vec2 varTexCoord0; +out vec4 _fragColor; + +void main(void) { + + const float INNER_RADIUS = 1.0; + const float INNER_RADIUS2 = INNER_RADIUS * INNER_RADIUS; + const float OUTER_RADIUS = 1.05; + const float OUTER_RADIUS2 = OUTER_RADIUS * OUTER_RADIUS; + vec2 sphereUV = (varTexCoord0.xy * 2.0 - vec2(1.0)) * OUTER_RADIUS; + float sphereR2 = dot(sphereUV.xy, sphereUV.xy); + if (sphereR2 > OUTER_RADIUS * OUTER_RADIUS) { + discard; + } + if (sphereR2 > INNER_RADIUS2) { + float falloff = (sphereR2 - OUTER_RADIUS2) / (OUTER_RADIUS2 - INNER_RADIUS2); + _fragColor = vec4(0.0, 0.0, 0.0, falloff * falloff); + return; + } + vec3 spherePos = normalize(vec3(sphereUV, sqrt(1.0 - sphereR2))); + + + vec3 fragNormal = vec3(getViewInverse() * vec4(spherePos, 0.0)); + + + LightAmbient lightAmbient = getLightAmbient(); + + + float roughness = 0.1; + float levels = getLightAmbientMapNumMips(lightAmbient); + float lod = min(((roughness)* levels), levels); + vec3 ambientMap = evalSkyboxLight(fragNormal, lod).xyz; + vec3 ambientSH = sphericalHarmonics_evalSphericalLight(getLightAmbientSphere(lightAmbient), fragNormal).xyz; + + // vec3 ambient = sphericalHarmonics_evalSphericalLight(getLightAmbientSphere(lightAmbient), fragNormal).xyz; + // _fragColor = vec4( 0.5 * (fragNormal + vec3(1.0)), 1.0); + + vec3 ambient = (sphereUV.x > 0 ? ambientMap : ambientSH); + + const float INV_GAMMA_22 = 1.0 / 2.2; + _fragColor = vec4(pow(ambient, vec3(INV_GAMMA_22)), 1.0); +} + + From 3e7795ec11714043a7df75d538c294b595d3f424 Mon Sep 17 00:00:00 2001 From: Sam Gateau Date: Wed, 17 May 2017 18:23:47 -0700 Subject: [PATCH 014/357] Adding the drawKeyLight shader --- libraries/render-utils/src/ZoneRenderer.cpp | 2 +- .../render-utils/src/zone_drawKeyLight.slf | 17 +++++------------ 2 files changed, 6 insertions(+), 13 deletions(-) diff --git a/libraries/render-utils/src/ZoneRenderer.cpp b/libraries/render-utils/src/ZoneRenderer.cpp index 620597e76a..290e3ce6a7 100644 --- a/libraries/render-utils/src/ZoneRenderer.cpp +++ b/libraries/render-utils/src/ZoneRenderer.cpp @@ -68,7 +68,7 @@ const gpu::PipelinePointer& DebugZoneLighting::getKeyLightPipeline() { gpu::Shader::BindingSet slotBindings; slotBindings.insert(gpu::Shader::Binding(std::string("deferredFrameTransformBuffer"), ZONE_DEFERRED_TRANSFORM_BUFFER)); - slotBindings.insert(gpu::Shader::Binding(std::string("keylightBuffer"), ZONE_KEYLIGHT_BUFFER)); + slotBindings.insert(gpu::Shader::Binding(std::string("lightBuffer"), ZONE_KEYLIGHT_BUFFER)); gpu::Shader::makeProgram(*program, slotBindings); diff --git a/libraries/render-utils/src/zone_drawKeyLight.slf b/libraries/render-utils/src/zone_drawKeyLight.slf index f4bb147635..5165d5139d 100644 --- a/libraries/render-utils/src/zone_drawKeyLight.slf +++ b/libraries/render-utils/src/zone_drawKeyLight.slf @@ -45,22 +45,15 @@ void main(void) { vec3 fragNormal = vec3(getViewInverse() * vec4(spherePos, 0.0)); - LightAmbient lightAmbient = getLightAmbient(); + Light light = getLight(); + vec3 lightDirection = getLightDirection(light); + vec3 lightIrradiance = getLightIrradiance(light); - float roughness = 0.1; - float levels = getLightAmbientMapNumMips(lightAmbient); - float lod = min(((roughness)* levels), levels); - vec3 ambientMap = evalSkyboxLight(fragNormal, lod).xyz; - vec3 ambientSH = sphericalHarmonics_evalSphericalLight(getLightAmbientSphere(lightAmbient), fragNormal).xyz; - - // vec3 ambient = sphericalHarmonics_evalSphericalLight(getLightAmbientSphere(lightAmbient), fragNormal).xyz; - // _fragColor = vec4( 0.5 * (fragNormal + vec3(1.0)), 1.0); - - vec3 ambient = (sphereUV.x > 0 ? ambientMap : ambientSH); + vec3 color = lightIrradiance; const float INV_GAMMA_22 = 1.0 / 2.2; - _fragColor = vec4(pow(ambient, vec3(INV_GAMMA_22)), 1.0); + _fragColor = vec4(pow(color, vec3(INV_GAMMA_22)), 1.0); } From 966afa1e4aa5ac3d3ccd277d1c3fc21c47e71f6f Mon Sep 17 00:00:00 2001 From: Sam Gateau Date: Wed, 17 May 2017 18:26:49 -0700 Subject: [PATCH 015/357] Adding the drawKeyLight shader --- libraries/render-utils/src/ZoneRenderer.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/render-utils/src/ZoneRenderer.cpp b/libraries/render-utils/src/ZoneRenderer.cpp index 290e3ce6a7..2ae18ffb1f 100644 --- a/libraries/render-utils/src/ZoneRenderer.cpp +++ b/libraries/render-utils/src/ZoneRenderer.cpp @@ -63,7 +63,7 @@ void SetupZones::run(const RenderContextPointer& context, const Inputs& inputs) const gpu::PipelinePointer& DebugZoneLighting::getKeyLightPipeline() { if (!_keyLightPipeline) { auto vs = gpu::StandardShaderLib::getDrawTransformUnitQuadVS(); - auto ps = gpu::Shader::createPixel(std::string(zone_drawSkybox_frag)); + auto ps = gpu::Shader::createPixel(std::string(zone_drawKeyLight_frag)); gpu::ShaderPointer program = gpu::Shader::createProgram(vs, ps); gpu::Shader::BindingSet slotBindings; From 5edcc38eba32ae82d16be429b4de1fb374ed3552 Mon Sep 17 00:00:00 2001 From: Sam Cake Date: Thu, 18 May 2017 01:06:59 -0700 Subject: [PATCH 016/357] Polishing the scope shaders --- libraries/model/src/model/Skybox.h | 4 ++ libraries/render-utils/src/ZoneRenderer.cpp | 58 ++++++++++--------- libraries/render-utils/src/ZoneRenderer.h | 5 +- libraries/render-utils/src/zone_draw.slh | 37 ++++++++++++ .../render-utils/src/zone_drawAmbient.slf | 25 ++------ .../render-utils/src/zone_drawKeyLight.slf | 46 +++++++-------- .../render-utils/src/zone_drawSkybox.slf | 48 +++++++-------- 7 files changed, 122 insertions(+), 101 deletions(-) create mode 100644 libraries/render-utils/src/zone_draw.slh diff --git a/libraries/model/src/model/Skybox.h b/libraries/model/src/model/Skybox.h index d7d95fbe9e..90896fd8c6 100755 --- a/libraries/model/src/model/Skybox.h +++ b/libraries/model/src/model/Skybox.h @@ -25,6 +25,8 @@ typedef glm::vec3 Color; class Skybox { public: + typedef gpu::BufferView UniformBufferView; + Skybox(); Skybox& operator= (const Skybox& skybox); virtual ~Skybox() {}; @@ -43,6 +45,8 @@ public: static void render(gpu::Batch& batch, const ViewFrustum& frustum, const Skybox& skybox); + const UniformBufferView& getSchemaBuffer() const { return _schemaBuffer; } + protected: static const int SKYBOX_SKYMAP_SLOT { 0 }; static const int SKYBOX_CONSTANTS_SLOT { 0 }; diff --git a/libraries/render-utils/src/ZoneRenderer.cpp b/libraries/render-utils/src/ZoneRenderer.cpp index 2ae18ffb1f..57cb4ecdaa 100644 --- a/libraries/render-utils/src/ZoneRenderer.cpp +++ b/libraries/render-utils/src/ZoneRenderer.cpp @@ -62,21 +62,21 @@ void SetupZones::run(const RenderContextPointer& context, const Inputs& inputs) const gpu::PipelinePointer& DebugZoneLighting::getKeyLightPipeline() { if (!_keyLightPipeline) { - auto vs = gpu::StandardShaderLib::getDrawTransformUnitQuadVS(); - auto ps = gpu::Shader::createPixel(std::string(zone_drawKeyLight_frag)); - gpu::ShaderPointer program = gpu::Shader::createProgram(vs, ps); + auto vs = gpu::StandardShaderLib::getDrawTransformUnitQuadVS(); + auto ps = gpu::Shader::createPixel(std::string(zone_drawKeyLight_frag)); + gpu::ShaderPointer program = gpu::Shader::createProgram(vs, ps); - gpu::Shader::BindingSet slotBindings; - slotBindings.insert(gpu::Shader::Binding(std::string("deferredFrameTransformBuffer"), ZONE_DEFERRED_TRANSFORM_BUFFER)); - slotBindings.insert(gpu::Shader::Binding(std::string("lightBuffer"), ZONE_KEYLIGHT_BUFFER)); + gpu::Shader::BindingSet slotBindings; + slotBindings.insert(gpu::Shader::Binding(std::string("deferredFrameTransformBuffer"), ZONE_DEFERRED_TRANSFORM_BUFFER)); + slotBindings.insert(gpu::Shader::Binding(std::string("lightBuffer"), ZONE_KEYLIGHT_BUFFER)); - gpu::Shader::makeProgram(*program, slotBindings); + gpu::Shader::makeProgram(*program, slotBindings); - gpu::StatePointer state = gpu::StatePointer(new gpu::State()); + gpu::StatePointer state = gpu::StatePointer(new gpu::State()); - state->setBlendFunction(true, gpu::State::SRC_ALPHA, gpu::State::BLEND_OP_ADD, gpu::State::INV_SRC_ALPHA); - _keyLightPipeline = gpu::Pipeline::create(program, state); - } + state->setBlendFunction(true, gpu::State::SRC_ALPHA, gpu::State::BLEND_OP_ADD, gpu::State::INV_SRC_ALPHA); + _keyLightPipeline = gpu::Pipeline::create(program, state); + } return _keyLightPipeline; } @@ -109,7 +109,8 @@ const gpu::PipelinePointer& DebugZoneLighting::getBackgroundPipeline() { gpu::Shader::BindingSet slotBindings; slotBindings.insert(gpu::Shader::Binding(std::string("deferredFrameTransformBuffer"), ZONE_DEFERRED_TRANSFORM_BUFFER)); slotBindings.insert(gpu::Shader::Binding(std::string("skyboxMap"), ZONE_SKYBOX_MAP)); - + slotBindings.insert(gpu::Shader::Binding(std::string("skyboxBuffer"), ZONE_SKYBOX_BUFFER)); + gpu::Shader::makeProgram(*program, slotBindings); gpu::StatePointer state = gpu::StatePointer(new gpu::State()); @@ -126,13 +127,13 @@ void DebugZoneLighting::run(const render::RenderContextPointer& context, const I auto deferredTransform = inputs; auto lightStage = DependencyManager::get()->getLightStage(); - model::LightPointer keyLight; - if (lightStage && lightStage->_currentFrame._sunLights.size()) { - keyLight = lightStage->getLight(lightStage->_currentFrame._sunLights.front()); - } - else { - keyLight = DependencyManager::get()->getGlobalLight(); - } + model::LightPointer keyLight; + if (lightStage && lightStage->_currentFrame._sunLights.size()) { + keyLight = lightStage->getLight(lightStage->_currentFrame._sunLights.front()); + } + else { + keyLight = DependencyManager::get()->getGlobalLight(); + } model::LightPointer keyAmbiLight; if (lightStage && lightStage->_currentFrame._ambientLights.size()) { @@ -163,17 +164,17 @@ void DebugZoneLighting::run(const render::RenderContextPointer& context, const I batch.setUniformBuffer(ZONE_DEFERRED_TRANSFORM_BUFFER, deferredTransform->getFrameTransformBuffer()); - batch.setPipeline(getKeyLightPipeline()); - model.setTranslation(glm::vec3(-4.0, -3.0, -10.0)); - batch.setModelTransform(model); - if (keyLight) { - batch.setUniformBuffer(ZONE_KEYLIGHT_BUFFER, keyLight->getLightSchemaBuffer()); - } - batch.draw(gpu::TRIANGLE_STRIP, 4); + batch.setPipeline(getKeyLightPipeline()); + model.setTranslation(glm::vec3(-4.0, -3.0, -10.0)); + batch.setModelTransform(model); + if (keyLight) { + batch.setUniformBuffer(ZONE_KEYLIGHT_BUFFER, keyLight->getLightSchemaBuffer()); + } + batch.draw(gpu::TRIANGLE_STRIP, 4); batch.setPipeline(getAmbientPipeline()); - model.setTranslation(glm::vec3(-4.0, 0.0, -10.0)); - batch.setModelTransform(model); + model.setTranslation(glm::vec3(-4.0, 0.0, -10.0)); + batch.setModelTransform(model); if (keyAmbiLight) { batch.setUniformBuffer(ZONE_AMBIENT_BUFFER, keyAmbiLight->getAmbientSchemaBuffer()); @@ -188,6 +189,7 @@ void DebugZoneLighting::run(const render::RenderContextPointer& context, const I batch.setModelTransform(model); if (skybox) { batch.setResourceTexture(ZONE_SKYBOX_MAP, skybox->getCubemap()); + batch.setUniformBuffer(ZONE_SKYBOX_BUFFER, skybox->getSchemaBuffer()); } batch.draw(gpu::TRIANGLE_STRIP, 4); diff --git a/libraries/render-utils/src/ZoneRenderer.h b/libraries/render-utils/src/ZoneRenderer.h index 10eaa67d31..40f9db2995 100644 --- a/libraries/render-utils/src/ZoneRenderer.h +++ b/libraries/render-utils/src/ZoneRenderer.h @@ -65,9 +65,10 @@ protected: enum Slots { ZONE_DEFERRED_TRANSFORM_BUFFER = 0, - ZONE_KEYLIGHT_BUFFER, - ZONE_AMBIENT_BUFFER, + ZONE_KEYLIGHT_BUFFER, + ZONE_AMBIENT_BUFFER, ZONE_AMBIENT_MAP, + ZONE_SKYBOX_BUFFER, ZONE_SKYBOX_MAP, }; diff --git a/libraries/render-utils/src/zone_draw.slh b/libraries/render-utils/src/zone_draw.slh new file mode 100644 index 0000000000..2cc8fc99f2 --- /dev/null +++ b/libraries/render-utils/src/zone_draw.slh @@ -0,0 +1,37 @@ + +// Generated on <$_SCRIBE_DATE$> +// +// Created by Sam Gateau on 5/17/17. +// Copyright 2017 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +<@include DeferredTransform.slh@> +<$declareDeferredFrameTransform()$> + +<@func evalGlobeWidget()@> + const float SCOPE_RADIUS = 1.0; + const float SCOPE_RADIUS2 = SCOPE_RADIUS * SCOPE_RADIUS; + const float EDGE_HALFWIDTH = 0.025; + const float EDGE_HALFWIDTH2 = EDGE_HALFWIDTH * EDGE_HALFWIDTH; + const float OUT_RADIUS = SCOPE_RADIUS + EDGE_HALFWIDTH; + + vec2 sphereUV = (varTexCoord0.xy * 2.0 - vec2(1.0)) * OUT_RADIUS; + float sphereR2 = dot(sphereUV.xy, sphereUV.xy); + if (sphereR2 > OUT_RADIUS * OUT_RADIUS) { + discard; + } + float sphereR = sqrt(sphereR2); + + float edgeFalloff = (SCOPE_RADIUS - sphereR) / (EDGE_HALFWIDTH); + float edgeFalloff2 = min(1.0, edgeFalloff * edgeFalloff); + + vec4 base = vec4(0.0, 0.0, 0.0, 1.0 - edgeFalloff2); + if (sphereR2 > SCOPE_RADIUS2) { + _fragColor = base; + return; + } +<@endfunc@> + diff --git a/libraries/render-utils/src/zone_drawAmbient.slf b/libraries/render-utils/src/zone_drawAmbient.slf index f14bed5c03..f104e5be44 100644 --- a/libraries/render-utils/src/zone_drawAmbient.slf +++ b/libraries/render-utils/src/zone_drawAmbient.slf @@ -8,9 +8,7 @@ // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // - -<@include DeferredTransform.slh@> -<$declareDeferredFrameTransform()$> +<@include zone_draw.slh@> <@include model/Light.slh@> @@ -26,20 +24,8 @@ out vec4 _fragColor; void main(void) { - const float INNER_RADIUS = 1.0; - const float INNER_RADIUS2 = INNER_RADIUS * INNER_RADIUS; - const float OUTER_RADIUS = 1.05; - const float OUTER_RADIUS2 = OUTER_RADIUS * OUTER_RADIUS; - vec2 sphereUV = (varTexCoord0.xy * 2.0 - vec2(1.0)) * OUTER_RADIUS; - float sphereR2 = dot(sphereUV.xy, sphereUV.xy); - if (sphereR2 > OUTER_RADIUS * OUTER_RADIUS) { - discard; - } - if (sphereR2 > INNER_RADIUS2) { - float falloff = (sphereR2 - OUTER_RADIUS2) / (OUTER_RADIUS2 - INNER_RADIUS2); - _fragColor = vec4(0.0, 0.0, 0.0, falloff * falloff); - return; - } + <$evalGlobeWidget()$> + vec3 spherePos = normalize(vec3(sphereUV, sqrt(1.0 - sphereR2))); @@ -58,10 +44,11 @@ void main(void) { // vec3 ambient = sphericalHarmonics_evalSphericalLight(getLightAmbientSphere(lightAmbient), fragNormal).xyz; // _fragColor = vec4( 0.5 * (fragNormal + vec3(1.0)), 1.0); - vec3 ambient = (sphereUV.x > 0 ? ambientMap : ambientSH); + vec3 color = (sphereUV.x > 0 ? ambientMap : ambientSH); + color = color * 1.0 - base.w + base.xyz * base.w; const float INV_GAMMA_22 = 1.0 / 2.2; - _fragColor = vec4(pow(ambient, vec3(INV_GAMMA_22)), 1.0); + _fragColor = vec4(pow(color, vec3(INV_GAMMA_22)), 1.0); } diff --git a/libraries/render-utils/src/zone_drawKeyLight.slf b/libraries/render-utils/src/zone_drawKeyLight.slf index 5165d5139d..dcfdd20c6a 100644 --- a/libraries/render-utils/src/zone_drawKeyLight.slf +++ b/libraries/render-utils/src/zone_drawKeyLight.slf @@ -8,9 +8,7 @@ // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // - -<@include DeferredTransform.slh@> -<$declareDeferredFrameTransform()$> +<@include zone_draw.slh@> <@include model/Light.slh@> @@ -25,33 +23,31 @@ out vec4 _fragColor; void main(void) { - const float INNER_RADIUS = 1.0; - const float INNER_RADIUS2 = INNER_RADIUS * INNER_RADIUS; - const float OUTER_RADIUS = 1.05; - const float OUTER_RADIUS2 = OUTER_RADIUS * OUTER_RADIUS; - vec2 sphereUV = (varTexCoord0.xy * 2.0 - vec2(1.0)) * OUTER_RADIUS; - float sphereR2 = dot(sphereUV.xy, sphereUV.xy); - if (sphereR2 > OUTER_RADIUS * OUTER_RADIUS) { - discard; - } - if (sphereR2 > INNER_RADIUS2) { - float falloff = (sphereR2 - OUTER_RADIUS2) / (OUTER_RADIUS2 - INNER_RADIUS2); - _fragColor = vec4(0.0, 0.0, 0.0, falloff * falloff); - return; - } - vec3 spherePos = normalize(vec3(sphereUV, sqrt(1.0 - sphereR2))); - - - vec3 fragNormal = vec3(getViewInverse() * vec4(spherePos, 0.0)); - + <$evalGlobeWidget()$> Light light = getLight(); - - vec3 lightDirection = getLightDirection(light); + vec3 lightDirection = getLightDirection(light); vec3 lightIrradiance = getLightIrradiance(light); + vec3 color = vec3(0.0); + + const float INOUT_RATIO = 0.4; + const float SUN_THRESHOLD = 0.99; - vec3 color = lightIrradiance; + vec3 outSpherePos = normalize(vec3(sphereUV, -sqrt(1.0 - sphereR2))); + vec3 outNormal = vec3(getViewInverse() * vec4(outSpherePos, 0.0)); + float val = step(SUN_THRESHOLD, dot(-lightDirection, outNormal)); + color = lightIrradiance * vec3(val); + + if (sphereR2 < INOUT_RATIO * INOUT_RATIO * SCOPE_RADIUS2) { + vec2 inSphereUV = sphereUV / INOUT_RATIO; + vec3 inSpherePos = normalize(vec3(inSphereUV, sqrt(1.0 - dot(inSphereUV.xy, inSphereUV.xy)))); + vec3 inNormal = vec3(getViewInverse() * vec4(inSpherePos, 0.0)); + + color += lightIrradiance * vec3(dot(-lightDirection, inNormal)); + } + + color = color * 1.0 - base.w + base.xyz * base.w; const float INV_GAMMA_22 = 1.0 / 2.2; _fragColor = vec4(pow(color, vec3(INV_GAMMA_22)), 1.0); } diff --git a/libraries/render-utils/src/zone_drawSkybox.slf b/libraries/render-utils/src/zone_drawSkybox.slf index 77b144379b..fd6976365e 100644 --- a/libraries/render-utils/src/zone_drawSkybox.slf +++ b/libraries/render-utils/src/zone_drawSkybox.slf @@ -8,47 +8,41 @@ // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // +<@include zone_draw.slh@> -<@include DeferredTransform.slh@> -<$declareDeferredFrameTransform()$> - -// declareSkyboxMap uniform samplerCube skyboxMap; -vec4 evalSkyboxLight(vec3 direction, float lod) { - // textureQueryLevels is not available until #430, so we require explicit lod - // float mipmapLevel = lod * textureQueryLevels(skyboxMap); - return textureLod(skyboxMap, direction, lod); -} +struct Skybox { + vec4 color; +}; + +uniform skyboxBuffer { + Skybox skybox; +}; in vec2 varTexCoord0; out vec4 _fragColor; void main(void) { + <$evalGlobeWidget()$> - const float INNER_RADIUS = 1.0; - const float INNER_RADIUS2 = INNER_RADIUS * INNER_RADIUS; - const float OUTER_RADIUS = 1.05; - const float OUTER_RADIUS2 = OUTER_RADIUS * OUTER_RADIUS; - vec2 sphereUV = (varTexCoord0.xy * 2.0 - vec2(1.0)) * OUTER_RADIUS; - float sphereR2 = dot(sphereUV.xy, sphereUV.xy); - if (sphereR2 > OUTER_RADIUS * OUTER_RADIUS) { - discard; - } - if (sphereR2 > INNER_RADIUS2) { - float falloff = (sphereR2 - OUTER_RADIUS2) / (OUTER_RADIUS2 - INNER_RADIUS2); - _fragColor = vec4(0.0, 0.0, 0.0, falloff * falloff); - return; - } vec3 spherePos = normalize(vec3(sphereUV, -sqrt(1.0 - sphereR2))); - vec3 fragNormal = vec3(getViewInverse() * vec4(spherePos, 0.0)); + vec3 direction = vec3(getViewInverse() * vec4(spherePos, 0.0)); - float lod = 0; - vec3 ambient = evalSkyboxLight(fragNormal, lod).xyz; + vec3 color = skybox.color.rgb; + // blend is only set if there is a cubemap + if (skybox.color.a > 0.0) { + color = texture(skyboxMap, direction).rgb; + if (skybox.color.a < 1.0) { + color *= skybox.color.rgb; + } + } + + color = color * 1.0 - base.w + base.xyz * base.w; const float INV_GAMMA_22 = 1.0 / 2.2; - _fragColor = vec4(pow(ambient, vec3(INV_GAMMA_22)), 1.0); + _fragColor = vec4(pow(color, vec3(INV_GAMMA_22)), 1.0); } From b2ac4381eb935e89eb907e523501f2330ae0a425 Mon Sep 17 00:00:00 2001 From: volansystech Date: Thu, 18 May 2017 19:13:59 +0530 Subject: [PATCH 017/357] Solve Jitteriness when scrolling the content in HMD mode -> Marketplace using the scrollbar. --- interface/src/ui/overlays/Web3DOverlay.cpp | 41 +++++++++++----------- 1 file changed, 21 insertions(+), 20 deletions(-) diff --git a/interface/src/ui/overlays/Web3DOverlay.cpp b/interface/src/ui/overlays/Web3DOverlay.cpp index d9eab9a78d..37dce9d6e4 100644 --- a/interface/src/ui/overlays/Web3DOverlay.cpp +++ b/interface/src/ui/overlays/Web3DOverlay.cpp @@ -427,29 +427,30 @@ void Web3DOverlay::handlePointerEventAsTouch(const PointerEvent& event) { event.getButtons() == PointerEvent::SecondaryButton) { return; } + if (_inputMode == Touch) { + QTouchEvent::TouchPoint point; + point.setId(event.getID()); + point.setState(touchPointState); + point.setPos(windowPoint); + point.setScreenPos(windowPoint); + QList touchPoints; + touchPoints.push_back(point); - QTouchEvent::TouchPoint point; - point.setId(event.getID()); - point.setState(touchPointState); - point.setPos(windowPoint); - point.setScreenPos(windowPoint); - QList touchPoints; - touchPoints.push_back(point); + QTouchEvent* touchEvent = new QTouchEvent(touchType, &_touchDevice, event.getKeyboardModifiers()); + touchEvent->setWindow(_webSurface->getWindow()); + touchEvent->setTarget(_webSurface->getRootItem()); + touchEvent->setTouchPoints(touchPoints); + touchEvent->setTouchPointStates(touchPointState); - QTouchEvent* touchEvent = new QTouchEvent(touchType, &_touchDevice, event.getKeyboardModifiers()); - touchEvent->setWindow(_webSurface->getWindow()); - touchEvent->setTarget(_webSurface->getRootItem()); - touchEvent->setTouchPoints(touchPoints); - touchEvent->setTouchPointStates(touchPointState); + QCoreApplication::postEvent(_webSurface->getWindow(), touchEvent); + } else { + // Send mouse events to the Web surface so that HTML dialog elements work with mouse press and hover. + // FIXME: Scroll bar dragging is a bit unstable in the tablet (content can jump up and down at times). + // This may be improved in Qt 5.8. Release notes: "Cleaned up touch and mouse event delivery". - QCoreApplication::postEvent(_webSurface->getWindow(), touchEvent); - - // Send mouse events to the Web surface so that HTML dialog elements work with mouse press and hover. - // FIXME: Scroll bar dragging is a bit unstable in the tablet (content can jump up and down at times). - // This may be improved in Qt 5.8. Release notes: "Cleaned up touch and mouse event delivery". - - QMouseEvent* mouseEvent = new QMouseEvent(mouseType, windowPoint, windowPoint, windowPoint, button, buttons, Qt::NoModifier); - QCoreApplication::postEvent(_webSurface->getWindow(), mouseEvent); + QMouseEvent* mouseEvent = new QMouseEvent(mouseType, windowPoint, windowPoint, windowPoint, button, buttons, Qt::NoModifier); + QCoreApplication::postEvent(_webSurface->getWindow(), mouseEvent); + } } void Web3DOverlay::handlePointerEventAsMouse(const PointerEvent& event) { From b8a2b38fd5a41a03867b9d86b6bc070089d0ecfb Mon Sep 17 00:00:00 2001 From: Sam Gateau Date: Thu, 18 May 2017 12:54:25 -0700 Subject: [PATCH 018/357] Displaying the stack of zone components --- libraries/render-utils/src/ZoneRenderer.cpp | 98 ++++++++++--------- .../render-utils/src/zone_drawKeyLight.slf | 5 +- 2 files changed, 57 insertions(+), 46 deletions(-) diff --git a/libraries/render-utils/src/ZoneRenderer.cpp b/libraries/render-utils/src/ZoneRenderer.cpp index 57cb4ecdaa..c51e8205cd 100644 --- a/libraries/render-utils/src/ZoneRenderer.cpp +++ b/libraries/render-utils/src/ZoneRenderer.cpp @@ -127,31 +127,35 @@ void DebugZoneLighting::run(const render::RenderContextPointer& context, const I auto deferredTransform = inputs; auto lightStage = DependencyManager::get()->getLightStage(); - model::LightPointer keyLight; + std::vector keyLightStack; if (lightStage && lightStage->_currentFrame._sunLights.size()) { - keyLight = lightStage->getLight(lightStage->_currentFrame._sunLights.front()); - } - else { - keyLight = DependencyManager::get()->getGlobalLight(); + for (auto index : lightStage->_currentFrame._sunLights) { + keyLightStack.push_back(lightStage->getLight(index)); + } } + keyLightStack.push_back(DependencyManager::get()->getGlobalLight()); + + std::vector ambientLightStack; + if (lightStage && lightStage->_currentFrame._ambientLights.size()) { + for (auto index : lightStage->_currentFrame._ambientLights) { + ambientLightStack.push_back(lightStage->getLight(index)); + } + } + ambientLightStack.push_back(DependencyManager::get()->getGlobalLight()); - model::LightPointer keyAmbiLight; - if (lightStage && lightStage->_currentFrame._ambientLights.size()) { - keyAmbiLight = lightStage->getLight(lightStage->_currentFrame._ambientLights.front()); - } else { - keyAmbiLight = DependencyManager::get()->getGlobalLight(); - } auto backgroundStage = DependencyManager::get()->getBackgroundStage(); - model::SkyboxPointer skybox; + std::vector skyboxStack; if (backgroundStage && backgroundStage->_currentFrame._backgrounds.size()) { - auto background = backgroundStage->getBackground(backgroundStage->_currentFrame._backgrounds.front()); - if (background) { - skybox = background->getSkybox(); - } - } else { - skybox = DependencyManager::get()->getDefaultSkybox(); - } + for (auto index : backgroundStage->_currentFrame._backgrounds) { + auto background = backgroundStage->getBackground(index); + if (background) { + skyboxStack.push_back(background->getSkybox()); + } + } + } + skyboxStack.push_back(DependencyManager::get()->getDefaultSkybox()); + gpu::doInBatch(args->_context, [=](gpu::Batch& batch) { @@ -165,34 +169,40 @@ void DebugZoneLighting::run(const render::RenderContextPointer& context, const I batch.setUniformBuffer(ZONE_DEFERRED_TRANSFORM_BUFFER, deferredTransform->getFrameTransformBuffer()); batch.setPipeline(getKeyLightPipeline()); - model.setTranslation(glm::vec3(-4.0, -3.0, -10.0)); - batch.setModelTransform(model); - if (keyLight) { - batch.setUniformBuffer(ZONE_KEYLIGHT_BUFFER, keyLight->getLightSchemaBuffer()); - } - batch.draw(gpu::TRIANGLE_STRIP, 4); + auto numKeys = keyLightStack.size(); + for (int i = numKeys - 1; i >= 0; i--) { + model.setTranslation(glm::vec3(-4.0, -3.0 + (i * 1.0), -10.0 - (i * 3.0))); + batch.setModelTransform(model); + if (keyLightStack[i]) { + batch.setUniformBuffer(ZONE_KEYLIGHT_BUFFER, keyLightStack[i]->getLightSchemaBuffer()); + batch.draw(gpu::TRIANGLE_STRIP, 4); + } + } batch.setPipeline(getAmbientPipeline()); - model.setTranslation(glm::vec3(-4.0, 0.0, -10.0)); - batch.setModelTransform(model); - if (keyAmbiLight) { - batch.setUniformBuffer(ZONE_AMBIENT_BUFFER, keyAmbiLight->getAmbientSchemaBuffer()); - - if (keyAmbiLight->getAmbientMap()) { - batch.setResourceTexture(ZONE_AMBIENT_MAP, keyAmbiLight->getAmbientMap()); - } - } - batch.draw(gpu::TRIANGLE_STRIP, 4); + auto numAmbients = ambientLightStack.size(); + for (int i = numAmbients - 1; i >= 0; i--) { + model.setTranslation(glm::vec3(0.0, -3.0 + (i * 1.0), -10.0 - (i * 3.0))); + batch.setModelTransform(model); + if (ambientLightStack[i]) { + batch.setUniformBuffer(ZONE_AMBIENT_BUFFER, ambientLightStack[i]->getAmbientSchemaBuffer()); + if (ambientLightStack[i]->getAmbientMap()) { + batch.setResourceTexture(ZONE_AMBIENT_MAP, ambientLightStack[i]->getAmbientMap()); + } + batch.draw(gpu::TRIANGLE_STRIP, 4); + } + } batch.setPipeline(getBackgroundPipeline()); - model.setTranslation(glm::vec3(-4.0, 3.0, -10.0)); - batch.setModelTransform(model); - if (skybox) { - batch.setResourceTexture(ZONE_SKYBOX_MAP, skybox->getCubemap()); - batch.setUniformBuffer(ZONE_SKYBOX_BUFFER, skybox->getSchemaBuffer()); - } - batch.draw(gpu::TRIANGLE_STRIP, 4); - - + auto numBackgrounds = skyboxStack.size(); + for (int i = numBackgrounds - 1; i >= 0; i--) { + model.setTranslation(glm::vec3(4.0, -3.0 + (i * 1.0), -10.0 - (i * 3.0))); + batch.setModelTransform(model); + if (skyboxStack[i]) { + batch.setResourceTexture(ZONE_SKYBOX_MAP, skyboxStack[i]->getCubemap()); + batch.setUniformBuffer(ZONE_SKYBOX_BUFFER, skyboxStack[i]->getSchemaBuffer()); + batch.draw(gpu::TRIANGLE_STRIP, 4); + } + } }); } diff --git a/libraries/render-utils/src/zone_drawKeyLight.slf b/libraries/render-utils/src/zone_drawKeyLight.slf index dcfdd20c6a..cc60979605 100644 --- a/libraries/render-utils/src/zone_drawKeyLight.slf +++ b/libraries/render-utils/src/zone_drawKeyLight.slf @@ -26,7 +26,7 @@ void main(void) { <$evalGlobeWidget()$> Light light = getLight(); - vec3 lightDirection = getLightDirection(light); + vec3 lightDirection = normalize(getLightDirection(light)); vec3 lightIrradiance = getLightIrradiance(light); vec3 color = vec3(0.0); @@ -35,7 +35,8 @@ void main(void) { vec3 outSpherePos = normalize(vec3(sphereUV, -sqrt(1.0 - sphereR2))); vec3 outNormal = vec3(getViewInverse() * vec4(outSpherePos, 0.0)); - float val = step(SUN_THRESHOLD, dot(-lightDirection, outNormal)); + + float val = step(SUN_THRESHOLD, dot(-lightDirection, outNormal)); color = lightIrradiance * vec3(val); From 69b0691eb6ff10aa0f067e3af0d01d6b43014196 Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Thu, 18 May 2017 16:35:56 -0700 Subject: [PATCH 019/357] Update content set URL for RC40 --- server-console/src/main.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server-console/src/main.js b/server-console/src/main.js index 4ce1ccfb02..98bda9a10f 100644 --- a/server-console/src/main.js +++ b/server-console/src/main.js @@ -42,7 +42,7 @@ const appIcon = path.join(__dirname, '../resources/console.png'); const DELETE_LOG_FILES_OLDER_THAN_X_SECONDS = 60 * 60 * 24 * 7; // 7 Days const LOG_FILE_REGEX = /(domain-server|ac-monitor|ac)-.*-std(out|err).txt/; -const HOME_CONTENT_URL = "http://cdn.highfidelity.com/content-sets/home-tutorial-RC39.tar.gz"; +const HOME_CONTENT_URL = "http://cdn.highfidelity.com/content-sets/home-tutorial-RC40.tar.gz"; function getBuildInfo() { var buildInfoPath = null; From d7d4ff1f822ce3390e276ee48525b12ef5542c5c Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Fri, 19 May 2017 11:11:00 -0700 Subject: [PATCH 020/357] Add notes to KtxStorage::maybeOpenFile --- libraries/gpu/src/gpu/Texture_ktx.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/libraries/gpu/src/gpu/Texture_ktx.cpp b/libraries/gpu/src/gpu/Texture_ktx.cpp index 92ead5f616..9799aecdf5 100644 --- a/libraries/gpu/src/gpu/Texture_ktx.cpp +++ b/libraries/gpu/src/gpu/Texture_ktx.cpp @@ -184,6 +184,11 @@ KtxStorage::KtxStorage(const std::string& filename) : _filename(filename) { } std::shared_ptr KtxStorage::maybeOpenFile() const { + // 1. Try to get the shared ptr + // 2. If it doesn't exist, grab the mutex around its creation + // 3. If it was created before we got the mutex, return it + // 4. Otherwise, create it + std::shared_ptr file = _cacheFile.lock(); if (file) { return file; From 50f5ae6e7799c1a4f38fc4167674f49911d441dd Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Fri, 19 May 2017 11:16:20 -0700 Subject: [PATCH 021/357] Fix FileStorage to not close files after they are opened This is particularly an issue with KTX file reading/writing where we do both concurrently. --- libraries/gpu/src/gpu/Texture_ktx.cpp | 12 +++++--- libraries/shared/src/shared/Storage.cpp | 41 ++++++------------------- libraries/shared/src/shared/Storage.h | 3 +- 3 files changed, 18 insertions(+), 38 deletions(-) diff --git a/libraries/gpu/src/gpu/Texture_ktx.cpp b/libraries/gpu/src/gpu/Texture_ktx.cpp index 9799aecdf5..bf5b4d7965 100644 --- a/libraries/gpu/src/gpu/Texture_ktx.cpp +++ b/libraries/gpu/src/gpu/Texture_ktx.cpp @@ -210,7 +210,6 @@ std::shared_ptr KtxStorage::maybeOpenFile() const { } PixelsPointer KtxStorage::getMipFace(uint16 level, uint8 face) const { - storage::StoragePointer result; auto faceOffset = _ktxDescriptor->getMipFaceTexelsOffset(level, face); auto faceSize = _ktxDescriptor->getMipFaceTexelsSize(level, face); if (faceSize != 0 && faceOffset != 0) { @@ -226,7 +225,7 @@ PixelsPointer KtxStorage::getMipFace(uint16 level, uint8 face) const { qWarning() << "Failed to get a valid file out of maybeOpenFile " << QString::fromStdString(_filename); } } - return result; + return nullptr; } Size KtxStorage::getMipFaceSize(uint16 level, uint8 face) const { @@ -260,8 +259,13 @@ void KtxStorage::assignMipData(uint16 level, const storage::StoragePointer& stor } auto file = maybeOpenFile(); + if (!file) { + qWarning() << "Failed to open file to assign mip data " << QString::fromStdString(_filename); + return; + } - auto imageData = file->mutableData(); + auto fileData = file->mutableData(); + auto imageData = fileData; imageData += ktx::KTX_HEADER_SIZE + _ktxDescriptor->header.bytesOfKeyValueData + _ktxDescriptor->images[level]._imageOffset; imageData += ktx::IMAGE_SIZE_WIDTH; @@ -276,7 +280,7 @@ void KtxStorage::assignMipData(uint16 level, const storage::StoragePointer& stor memcpy(imageData, storage->data(), storage->size()); _minMipLevelAvailable = level; if (_offsetToMinMipKV > 0) { - auto minMipKeyData = file->mutableData() + ktx::KTX_HEADER_SIZE + _offsetToMinMipKV; + auto minMipKeyData = fileData + ktx::KTX_HEADER_SIZE + _offsetToMinMipKV; memcpy(minMipKeyData, (void*)&_minMipLevelAvailable, 1); } } diff --git a/libraries/shared/src/shared/Storage.cpp b/libraries/shared/src/shared/Storage.cpp index e479559e6a..b07f896df0 100644 --- a/libraries/shared/src/shared/Storage.cpp +++ b/libraries/shared/src/shared/Storage.cpp @@ -70,7 +70,15 @@ StoragePointer FileStorage::create(const QString& filename, size_t size, const u } FileStorage::FileStorage(const QString& filename) : _file(filename) { - if (_file.open(QFile::ReadOnly)) { + bool opened = _file.open(QFile::ReadWrite); + if (opened) { + _hasWriteAccess = true; + } else { + _hasWriteAccess = false; + opened = _file.open(QFile::ReadOnly); + } + + if (opened) { _mapped = _file.map(0, _file.size()); if (_mapped) { _valid = true; @@ -91,35 +99,4 @@ FileStorage::~FileStorage() { if (_file.isOpen()) { _file.close(); } -} - -void FileStorage::ensureWriteAccess() { - if (_hasWriteAccess) { - return; - } - - if (_mapped) { - if (!_file.unmap(_mapped)) { - throw std::runtime_error("Unable to unmap file"); - } - } - if (_file.isOpen()) { - _file.close(); - } - _valid = false; - _mapped = nullptr; - - if (_file.open(QFile::ReadWrite)) { - _mapped = _file.map(0, _file.size()); - if (_mapped) { - _valid = true; - _hasWriteAccess = true; - } else { - qCWarning(storagelogging) << "Failed to map file " << _file.fileName(); - throw std::runtime_error("Failed to map file"); - } - } else { - qCWarning(storagelogging) << "Failed to open file " << _file.fileName(); - throw std::runtime_error("Failed to open file"); - } } \ No newline at end of file diff --git a/libraries/shared/src/shared/Storage.h b/libraries/shared/src/shared/Storage.h index 4cad9fa083..d7946738cf 100644 --- a/libraries/shared/src/shared/Storage.h +++ b/libraries/shared/src/shared/Storage.h @@ -60,11 +60,10 @@ namespace storage { FileStorage& operator=(const FileStorage& other) = delete; const uint8_t* data() const override { return _mapped; } - uint8_t* mutableData() override { ensureWriteAccess(); return _mapped; } + uint8_t* mutableData() override { return _hasWriteAccess ? _mapped : nullptr; } size_t size() const override { return _file.size(); } operator bool() const override { return _valid; } private: - void ensureWriteAccess(); bool _valid { false }; bool _hasWriteAccess { false }; From 53a963726d2c1d76341ab3707ce73d565363d6d1 Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Fri, 19 May 2017 15:00:53 -0700 Subject: [PATCH 022/357] Add check for valid mutableData in assignMipData --- libraries/gpu/src/gpu/Texture_ktx.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/libraries/gpu/src/gpu/Texture_ktx.cpp b/libraries/gpu/src/gpu/Texture_ktx.cpp index bf5b4d7965..14282ec525 100644 --- a/libraries/gpu/src/gpu/Texture_ktx.cpp +++ b/libraries/gpu/src/gpu/Texture_ktx.cpp @@ -265,6 +265,11 @@ void KtxStorage::assignMipData(uint16 level, const storage::StoragePointer& stor } auto fileData = file->mutableData(); + if (!fileData) { + qWarning() << "Failed to get mutable data for " << QString::fromStdString(_filename); + return; + } + auto imageData = fileData; imageData += ktx::KTX_HEADER_SIZE + _ktxDescriptor->header.bytesOfKeyValueData + _ktxDescriptor->images[level]._imageOffset; imageData += ktx::IMAGE_SIZE_WIDTH; From 5cb25b1ef1692c5daffc647efd86e0bf9a2a668e Mon Sep 17 00:00:00 2001 From: Zach Fox Date: Fri, 19 May 2017 16:53:25 -0700 Subject: [PATCH 023/357] Increment _identitySequenceId before sending ID packet for agents --- assignment-client/src/Agent.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/assignment-client/src/Agent.cpp b/assignment-client/src/Agent.cpp index 5864cadc15..96b2336af8 100644 --- a/assignment-client/src/Agent.cpp +++ b/assignment-client/src/Agent.cpp @@ -584,6 +584,7 @@ void Agent::setIsAvatar(bool isAvatar) { void Agent::sendAvatarIdentityPacket() { if (_isAvatar) { auto scriptedAvatar = DependencyManager::get(); + scriptedAvatar->markIdentityDataChanged(); scriptedAvatar->sendIdentityPacket(); } } From 589bcc19ce9b841b91a487f069b35fa5136a95e6 Mon Sep 17 00:00:00 2001 From: Sam Gateau Date: Fri, 19 May 2017 17:50:19 -0700 Subject: [PATCH 024/357] Refining the shader for key and testing removing completely the code dealing with Zone lighting in the ENtityTreeREnderer --- .../src/EntityTreeRenderer.cpp | 26 +++++++++---------- .../src/EntityTreeRenderer.h | 8 +++--- .../src/DeferredLightingEffect.cpp | 7 +++-- .../render-utils/src/zone_drawKeyLight.slf | 3 ++- 4 files changed, 24 insertions(+), 20 deletions(-) diff --git a/libraries/entities-renderer/src/EntityTreeRenderer.cpp b/libraries/entities-renderer/src/EntityTreeRenderer.cpp index 1de476c825..de7fa43026 100644 --- a/libraries/entities-renderer/src/EntityTreeRenderer.cpp +++ b/libraries/entities-renderer/src/EntityTreeRenderer.cpp @@ -141,7 +141,7 @@ void EntityTreeRenderer::clear() { // reset the zone to the default (while we load the next scene) _layeredZones.clear(); - applyZoneAndHasSkybox(nullptr); + // applyZoneAndHasSkybox(nullptr); OctreeRenderer::clear(); } @@ -198,11 +198,11 @@ void EntityTreeRenderer::update() { // If we haven't already updated and previously attempted to load a texture, // check if the texture loaded and apply it - if (!updated && + /* if (!updated && ((_pendingAmbientTexture && (!_ambientTexture || _ambientTexture->isLoaded())) || (_pendingSkyboxTexture && (!_skyboxTexture || _skyboxTexture->isLoaded())))) { applySkyboxAndHasAmbient(); - } + }*/ // Even if we're not moving the mouse, if we started clicking on an entity and we have // not yet released the hold then this is still considered a holdingClickOnEntity event @@ -371,7 +371,7 @@ bool EntityTreeRenderer::applyLayeredZones() { return true; } - +/* bool EntityTreeRenderer::applyZoneAndHasSkybox(const std::shared_ptr& zone) { auto textureCache = DependencyManager::get(); auto scene = DependencyManager::get(); @@ -427,8 +427,8 @@ bool EntityTreeRenderer::applyZoneAndHasSkybox(const std::shared_ptr& zone) { assert(zone); @@ -483,8 +483,8 @@ bool EntityTreeRenderer::layerZoneAndHasSkybox(const std::shared_ptr(); auto scene = DependencyManager::get(); @@ -539,7 +539,7 @@ bool EntityTreeRenderer::applySkyboxAndHasAmbient() { } return isAmbientSet; -} +}*/ const FBXGeometry* EntityTreeRenderer::getGeometryForEntity(EntityItemPointer entityItem) { const FBXGeometry* result = NULL; @@ -1169,7 +1169,7 @@ std::pair EntityTreeRenderer:: void EntityTreeRenderer::LayeredZones::apply() { assert(_entityTreeRenderer); - applyPartial(begin()); + // applyPartial(begin()); } void EntityTreeRenderer::LayeredZones::update(std::shared_ptr zone) { @@ -1211,11 +1211,11 @@ void EntityTreeRenderer::LayeredZones::update(std::shared_ptr zo } if (shouldUpdate) { - applyPartial(layer); + // applyPartial(layer); } } } - +/* void EntityTreeRenderer::LayeredZones::applyPartial(iterator layer) { bool hasSkybox = false; _skyboxLayer = end(); @@ -1243,7 +1243,7 @@ void EntityTreeRenderer::LayeredZones::applyPartial(iterator layer) { _skyboxLayer = layer; } - +*/ bool EntityTreeRenderer::LayeredZones::contains(const LayeredZones& other) { bool result = std::equal(other.begin(), other._skyboxLayer, begin()); if (result) { diff --git a/libraries/entities-renderer/src/EntityTreeRenderer.h b/libraries/entities-renderer/src/EntityTreeRenderer.h index f4717dca51..92235b1a00 100644 --- a/libraries/entities-renderer/src/EntityTreeRenderer.h +++ b/libraries/entities-renderer/src/EntityTreeRenderer.h @@ -147,9 +147,9 @@ private: void addEntityToScene(EntityItemPointer entity); bool findBestZoneAndMaybeContainingEntities(QVector* entitiesContainingAvatar = nullptr); - bool applyZoneAndHasSkybox(const std::shared_ptr& zone); - bool layerZoneAndHasSkybox(const std::shared_ptr& zone); - bool applySkyboxAndHasAmbient(); + // bool applyZoneAndHasSkybox(const std::shared_ptr& zone); + // bool layerZoneAndHasSkybox(const std::shared_ptr& zone); + // bool applySkyboxAndHasAmbient(); bool applyLayeredZones(); void checkAndCallPreload(const EntityItemID& entityID, bool reload = false, bool unloadFirst = false); @@ -223,7 +223,7 @@ private: std::shared_ptr getZone() { return empty() ? nullptr : begin()->zone; } private: - void applyPartial(iterator layer); + // void applyPartial(iterator layer); std::map _map; iterator _skyboxLayer{ end() }; diff --git a/libraries/render-utils/src/DeferredLightingEffect.cpp b/libraries/render-utils/src/DeferredLightingEffect.cpp index b799a7c49e..e1042912aa 100644 --- a/libraries/render-utils/src/DeferredLightingEffect.cpp +++ b/libraries/render-utils/src/DeferredLightingEffect.cpp @@ -160,8 +160,11 @@ void DeferredLightingEffect::init() { lp->setAmbientIntensity(0.5f); - lp->setAmbientMap(_defaultSkyboxAmbientTexture); - + lp->setAmbientMap(_defaultSkyboxAmbientTexture); + auto irradianceSH = _defaultSkyboxAmbientTexture->getIrradiance(); + if (irradianceSH) { + lp->setAmbientSphere((*irradianceSH)); + } } void DeferredLightingEffect::setupKeyLightBatch(gpu::Batch& batch, int lightBufferUnit, int ambientBufferUnit, int skyboxCubemapUnit) { diff --git a/libraries/render-utils/src/zone_drawKeyLight.slf b/libraries/render-utils/src/zone_drawKeyLight.slf index cc60979605..e96239b6dc 100644 --- a/libraries/render-utils/src/zone_drawKeyLight.slf +++ b/libraries/render-utils/src/zone_drawKeyLight.slf @@ -45,7 +45,8 @@ void main(void) { vec3 inSpherePos = normalize(vec3(inSphereUV, sqrt(1.0 - dot(inSphereUV.xy, inSphereUV.xy)))); vec3 inNormal = vec3(getViewInverse() * vec4(inSpherePos, 0.0)); - color += lightIrradiance * vec3(dot(-lightDirection, inNormal)); + vec3 marbleColor = max(lightIrradiance * vec3(dot(-lightDirection, inNormal)), vec3(0.01)); + color += marbleColor; } color = color * 1.0 - base.w + base.xyz * base.w; From 42bb5fa8e9048da2e213cd0f4618a25a3c925707 Mon Sep 17 00:00:00 2001 From: Menithal Date: Sat, 20 May 2017 13:47:24 +0300 Subject: [PATCH 025/357] Part. Tab now only appears if selected - Particle Tab now only appears if a Particle Entity is selected --- .../resources/qml/hifi/tablet/EditTabView.qml | 46 +++++++++---------- .../qml/hifi/tablet/tabs/ParticleTab.qml | 19 ++++++++ scripts/system/edit.js | 18 ++++++-- 3 files changed, 55 insertions(+), 28 deletions(-) create mode 100644 interface/resources/qml/hifi/tablet/tabs/ParticleTab.qml diff --git a/interface/resources/qml/hifi/tablet/EditTabView.qml b/interface/resources/qml/hifi/tablet/EditTabView.qml index 35f2b82f0f..bd42fb06a8 100644 --- a/interface/resources/qml/hifi/tablet/EditTabView.qml +++ b/interface/resources/qml/hifi/tablet/EditTabView.qml @@ -22,7 +22,7 @@ TabView { enabled: true property string originalUrl: "" - Rectangle { + Rectangle { color: "#404040" Text { @@ -218,22 +218,6 @@ TabView { } } - Tab { - title: "P" - active: true - enabled: true - property string originalUrl: "" - - WebView { - id: particleExplorerWebView - url: "../../../../../scripts/system/particle_explorer/particleExplorer.html" - eventBridge: editRoot.eventBridge - anchors.fill: parent - enabled: true - } - } - - style: TabViewStyle { frameOverlap: 1 tab: Rectangle { @@ -278,8 +262,22 @@ TabView { case 'selectTab': selectTab(message.params.id); break; + case 'enableParticles': + enableParticles(message.params.enabled); + break; default: - console.warn('Unrecognized message:', JSON.stringify(message)); + console.warn('Unrecognized test message:', JSON.stringify(message)); + } + } + + // This should eventually be done properly so that if more tabs are added + // that it would remove by title name instead. + function enableParticles(enabled) { + if (enabled && editTabView.children.length < 4) { + editTabView.addTab("P", Qt.createComponent("tabs/ParticleTab.qml")); + } else if (!enabled && editTabView.children.length > 2) { + editTabView.removeTab(4); + editTabView.removeTab(5); } } @@ -290,7 +288,7 @@ TabView { editTabView.currentIndex = id; } else { console.warn('Attempt to switch to invalid tab:', id); - } + } } else if (typeof id === 'string'){ switch (id.toLowerCase()) { case 'create': @@ -298,16 +296,16 @@ TabView { break; case 'list': editTabView.currentIndex = 1; - break; + break; case 'properties': editTabView.currentIndex = 2; - break; + break; case 'grid': editTabView.currentIndex = 3; - break; + break; case 'particle': editTabView.currentIndex = 4; - break; + break; default: console.warn('Attempt to switch to invalid tab:', id); } @@ -315,4 +313,4 @@ TabView { console.warn('Attempt to switch tabs with invalid input:', JSON.stringify(id)); } } -} \ No newline at end of file +} diff --git a/interface/resources/qml/hifi/tablet/tabs/ParticleTab.qml b/interface/resources/qml/hifi/tablet/tabs/ParticleTab.qml new file mode 100644 index 0000000000..3ee4295603 --- /dev/null +++ b/interface/resources/qml/hifi/tablet/tabs/ParticleTab.qml @@ -0,0 +1,19 @@ +import QtQuick 2.5 +import QtQuick.Controls 1.4 +import QtWebEngine 1.1 +import QtWebChannel 1.0 +import QtQuick.Controls.Styles 1.4 +import "../../../controls" +import "../../toolbars" +import HFWebEngineProfile 1.0 +import QtGraphicalEffects 1.0 +import "../../../controls-uit" as HifiControls +import "../../../styles-uit" + +WebView { + id: particleExplorerWebView + url: "../../../../../../scripts/system/particle_explorer/particleExplorer.html" + eventBridge: editRoot.eventBridge + anchors.fill: parent + enabled: true +} diff --git a/scripts/system/edit.js b/scripts/system/edit.js index f39165f3df..ea029d44e5 100644 --- a/scripts/system/edit.js +++ b/scripts/system/edit.js @@ -12,7 +12,7 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -/* global Script, SelectionDisplay, LightOverlayManager, CameraManager, Grid, GridTool, EntityListTool, Vec3, SelectionManager, Overlays, OverlayWebWindow, UserActivityLogger, +/* global Script, SelectionDisplay, LightOverlayManager, CameraManager, Grid, GridTool, EntityListTool, Vec3, SelectionManager, Overlays, OverlayWebWindow, UserActivityLogger, Settings, Entities, Tablet, Toolbars, Messages, Menu, Camera, progressDialog, tooltip, MyAvatar, Quat, Controller, Clipboard, HMD, UndoStack, ParticleExplorerTool */ (function() { // BEGIN LOCAL_SCOPE @@ -70,7 +70,7 @@ var entityListTool = new EntityListTool(); selectionManager.addEventListener(function () { selectionDisplay.updateHandles(); entityIconOverlayManager.updatePositions(); - + var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system"); // Update particle explorer var needToDestroyParticleExplorer = false; if (selectionManager.selections.length === 1) { @@ -78,9 +78,11 @@ selectionManager.addEventListener(function () { if (selectedEntityID === selectedParticleEntityID) { return; } + var type = Entities.getEntityProperties(selectedEntityID, "type").type; if (type === "ParticleEffect") { // Destroy the old particles web view first + particleExplorerTool.destroyWebView(); particleExplorerTool.createWebView(); var properties = Entities.getEntityProperties(selectedEntityID); @@ -99,7 +101,6 @@ selectionManager.addEventListener(function () { }); // Switch to particle explorer - var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system"); tablet.sendToQml({method: 'selectTab', params: {id: 'particle'}}); } else { needToDestroyParticleExplorer = true; @@ -109,6 +110,7 @@ selectionManager.addEventListener(function () { } if (needToDestroyParticleExplorer && selectedParticleEntityID !== null) { + tablet.sendToQml({method: 'enableParticles', params: {enabled: false}}); selectedParticleEntityID = null; particleExplorerTool.destroyWebView(); } @@ -827,11 +829,14 @@ function mouseClickEvent(event) { if (foundEntity === HMD.tabletID) { return; } + + var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system"); properties = Entities.getEntityProperties(foundEntity); if (isLocked(properties)) { if (wantDebug) { print("Model locked " + properties.id); } + tablet.sendToQml({method: 'enableParticles', params: {enabled: false}}); } else { var halfDiagonal = Vec3.length(properties.dimensions) / 2.0; @@ -870,7 +875,10 @@ function mouseClickEvent(event) { particleExplorerTool.destroyWebView(); } if (properties.type !== "ParticleEffect") { + tablet.sendToQml({method: 'enableParticles', params: {enabled: false}}); particleExplorerTool.destroyWebView(); + } else { + tablet.sendToQml({method: 'enableParticles', params: {enabled: true}}); } if (!event.isShifted) { @@ -2107,6 +2115,8 @@ entityListTool.webView.webEventReceived.connect(function (data) { unparentSelectedEntities(); } else if (data.type === "selectionUpdate") { var ids = data.entityIds; + + var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system"); if (ids.length === 1) { if (Entities.getEntityProperties(ids[0], "type").type === "ParticleEffect") { if (JSON.stringify(selectedParticleEntity) === JSON.stringify(ids[0])) { @@ -2116,6 +2126,7 @@ entityListTool.webView.webEventReceived.connect(function (data) { // Destroy the old particles web view first selectParticleEntity(ids[0]); } else { + tablet.sendToQml({method: 'enableParticles', params: {enabled: false}}); selectedParticleEntity = 0; particleExplorerTool.destroyWebView(); } @@ -2124,4 +2135,3 @@ entityListTool.webView.webEventReceived.connect(function (data) { }); }()); // END LOCAL_SCOPE - From 2928507e4898cc863d701398598895d360f9f6ba Mon Sep 17 00:00:00 2001 From: Atlante45 Date: Fri, 19 May 2017 10:48:38 -0700 Subject: [PATCH 026/357] Fix "Reset Settings" window poping up every time --- interface/src/Application.cpp | 8 ++++---- interface/src/Application.h | 2 +- interface/src/CrashHandler.cpp | 5 +---- interface/src/CrashHandler.h | 2 +- interface/src/main.cpp | 3 ++- libraries/shared/src/RunningMarker.cpp | 7 ++++++- libraries/shared/src/RunningMarker.h | 4 +++- 7 files changed, 18 insertions(+), 13 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index c39f7294c0..bd66a96879 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -431,7 +431,7 @@ static const QString STATE_ADVANCED_MOVEMENT_CONTROLS = "AdvancedMovement"; static const QString STATE_GROUNDED = "Grounded"; static const QString STATE_NAV_FOCUSED = "NavigationFocused"; -bool setupEssentials(int& argc, char** argv) { +bool setupEssentials(int& argc, char** argv, bool runningMarkerExisted) { const char** constArgv = const_cast(argv); const char* portStr = getCmdOption(argc, constArgv, "--listenPort"); const int listenPort = portStr ? atoi(portStr) : INVALID_PORT; @@ -458,7 +458,7 @@ bool setupEssentials(int& argc, char** argv) { static const auto SUPPRESS_SETTINGS_RESET = "--suppress-settings-reset"; bool suppressPrompt = cmdOptionExists(argc, const_cast(argv), SUPPRESS_SETTINGS_RESET); - bool previousSessionCrashed = CrashHandler::checkForResetSettings(suppressPrompt); + bool previousSessionCrashed = CrashHandler::checkForResetSettings(runningMarkerExisted, suppressPrompt); DependencyManager::registerInheritance(); DependencyManager::registerInheritance(); @@ -563,11 +563,11 @@ const bool DEFAULT_DESKTOP_TABLET_BECOMES_TOOLBAR = true; const bool DEFAULT_HMD_TABLET_BECOMES_TOOLBAR = false; const bool DEFAULT_PREFER_AVATAR_FINGER_OVER_STYLUS = false; -Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer) : +Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bool runningMarkerExisted) : QApplication(argc, argv), _window(new MainWindow(desktop())), _sessionRunTimer(startupTimer), - _previousSessionCrashed(setupEssentials(argc, argv)), + _previousSessionCrashed(setupEssentials(argc, argv, runningMarkerExisted)), _undoStackScriptingInterface(&_undoStack), _entitySimulation(new PhysicalEntitySimulation()), _physicsEngine(new PhysicsEngine(Vectors::ZERO)), diff --git a/interface/src/Application.h b/interface/src/Application.h index 5cf3580c09..d9dc3f389f 100644 --- a/interface/src/Application.h +++ b/interface/src/Application.h @@ -136,7 +136,7 @@ public: static void initPlugins(const QStringList& arguments); static void shutdownPlugins(); - Application(int& argc, char** argv, QElapsedTimer& startup_time); + Application(int& argc, char** argv, QElapsedTimer& startup_time, bool runningMarkerExisted); ~Application(); void postLambdaEvent(std::function f) override; diff --git a/interface/src/CrashHandler.cpp b/interface/src/CrashHandler.cpp index b254cd58de..8081dd3ffc 100644 --- a/interface/src/CrashHandler.cpp +++ b/interface/src/CrashHandler.cpp @@ -28,7 +28,7 @@ #include -bool CrashHandler::checkForResetSettings(bool suppressPrompt) { +bool CrashHandler::checkForResetSettings(bool wasLikelyCrash, bool suppressPrompt) { Settings settings; settings.beginGroup("Developer"); QVariant displayCrashOptions = settings.value(MenuOption::DisplayCrashOptions); @@ -39,9 +39,6 @@ bool CrashHandler::checkForResetSettings(bool suppressPrompt) { // If option does not exist in Interface.ini so assume default behavior. bool displaySettingsResetOnCrash = !displayCrashOptions.isValid() || displayCrashOptions.toBool(); - QFile runningMarkerFile(RunningMarker::getMarkerFilePath(RUNNING_MARKER_FILENAME)); - bool wasLikelyCrash = runningMarkerFile.exists(); - if (suppressPrompt) { return wasLikelyCrash; } diff --git a/interface/src/CrashHandler.h b/interface/src/CrashHandler.h index 308cac3411..da2e1575db 100644 --- a/interface/src/CrashHandler.h +++ b/interface/src/CrashHandler.h @@ -17,7 +17,7 @@ class CrashHandler { public: - static bool checkForResetSettings(bool suppressPrompt = false); + static bool checkForResetSettings(bool wasLikelyCrash, bool suppressPrompt = false); private: enum Action { diff --git a/interface/src/main.cpp b/interface/src/main.cpp index 3430ffbd15..49517eb38e 100644 --- a/interface/src/main.cpp +++ b/interface/src/main.cpp @@ -192,6 +192,7 @@ int main(int argc, const char* argv[]) { int exitCode; { RunningMarker runningMarker(nullptr, RUNNING_MARKER_FILENAME); + bool runningMarkerExisted = runningMarker.fileExists(); runningMarker.writeRunningMarkerFile(); bool noUpdater = parser.isSet(noUpdaterOption); @@ -202,7 +203,7 @@ int main(int argc, const char* argv[]) { SandboxUtils::runLocalSandbox(serverContentPath, true, RUNNING_MARKER_FILENAME, noUpdater); } - Application app(argc, const_cast(argv), startupTime); + Application app(argc, const_cast(argv), startupTime, runningMarkerExisted); // Now that the main event loop is setup, launch running marker thread runningMarker.startRunningMarker(); diff --git a/libraries/shared/src/RunningMarker.cpp b/libraries/shared/src/RunningMarker.cpp index f8aaee42df..0c1fd06df8 100644 --- a/libraries/shared/src/RunningMarker.cpp +++ b/libraries/shared/src/RunningMarker.cpp @@ -53,6 +53,11 @@ RunningMarker::~RunningMarker() { _runningMarkerThread->deleteLater(); } +bool RunningMarker::fileExists() const { + QFile runningMarkerFile(getFilePath()); + return runningMarkerFile.exists(); +} + void RunningMarker::writeRunningMarkerFile() { QFile runningMarkerFile(getFilePath()); @@ -69,7 +74,7 @@ void RunningMarker::deleteRunningMarkerFile() { } } -QString RunningMarker::getFilePath() { +QString RunningMarker::getFilePath() const { return QStandardPaths::writableLocation(QStandardPaths::DataLocation) + "/" + _name; } diff --git a/libraries/shared/src/RunningMarker.h b/libraries/shared/src/RunningMarker.h index 1137dbf5fa..f9c8e72d37 100644 --- a/libraries/shared/src/RunningMarker.h +++ b/libraries/shared/src/RunningMarker.h @@ -25,9 +25,11 @@ public: void startRunningMarker(); - QString getFilePath(); + QString getFilePath() const; static QString getMarkerFilePath(QString name); + bool fileExists() const; + void writeRunningMarkerFile(); void deleteRunningMarkerFile(); From 4269fcf69cdd684760b6503198936c6b1a6d8a74 Mon Sep 17 00:00:00 2001 From: Menithal Date: Sun, 21 May 2017 19:42:14 +0300 Subject: [PATCH 027/357] Lots of Groundwork for UI Building - Changed underscore to lodash for smaller file size / faster loading - Removed dat.gui dependency, as we now have a completely custom solution - Started to use some more modern convensions which Qt Supports --- scripts/system/html/css/hifi-style.css | 2 +- .../system/particle_explorer/dat.gui.min.js | 95 --- .../particle_explorer/hifi-entity-ui.js | 387 +++++++++ .../system/particle_explorer/lodash.min.js | 136 ++++ .../particle_explorer/particle-style.css | 119 +++ .../particle_explorer/particleExplorer.html | 105 +-- .../particle_explorer/particleExplorer.js | 765 ++++++------------ .../particle_explorer/particleExplorerTool.js | 4 +- scripts/system/particle_explorer/tester.js | 8 + .../particle_explorer/underscore-min.js | 6 - 10 files changed, 907 insertions(+), 720 deletions(-) delete mode 100644 scripts/system/particle_explorer/dat.gui.min.js create mode 100644 scripts/system/particle_explorer/hifi-entity-ui.js create mode 100644 scripts/system/particle_explorer/lodash.min.js create mode 100644 scripts/system/particle_explorer/particle-style.css create mode 100644 scripts/system/particle_explorer/tester.js delete mode 100644 scripts/system/particle_explorer/underscore-min.js diff --git a/scripts/system/html/css/hifi-style.css b/scripts/system/html/css/hifi-style.css index ec6cd1a402..e1e4f67723 100644 --- a/scripts/system/html/css/hifi-style.css +++ b/scripts/system/html/css/hifi-style.css @@ -172,4 +172,4 @@ input[type=radio]:active + label > span > span{ } .blueButton:disabled { background-image: linear-gradient(#FFFFFF, #AFAFAF); -} \ No newline at end of file +} diff --git a/scripts/system/particle_explorer/dat.gui.min.js b/scripts/system/particle_explorer/dat.gui.min.js deleted file mode 100644 index 8ea141a966..0000000000 --- a/scripts/system/particle_explorer/dat.gui.min.js +++ /dev/null @@ -1,95 +0,0 @@ -/** - * dat-gui JavaScript Controller Library - * http://code.google.com/p/dat-gui - * - * Copyright 2011 Data Arts Team, Google Creative Lab - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - */ -var dat=dat||{};dat.gui=dat.gui||{};dat.utils=dat.utils||{};dat.controllers=dat.controllers||{};dat.dom=dat.dom||{};dat.color=dat.color||{};dat.utils.css=function(){return{load:function(f,a){a=a||document;var d=a.createElement("link");d.type="text/css";d.rel="stylesheet";d.href=f;a.getElementsByTagName("head")[0].appendChild(d)},inject:function(f,a){a=a||document;var d=document.createElement("style");d.type="text/css";d.innerHTML=f;a.getElementsByTagName("head")[0].appendChild(d)}}}(); -dat.utils.common=function(){var f=Array.prototype.forEach,a=Array.prototype.slice;return{BREAK:{},extend:function(d){this.each(a.call(arguments,1),function(a){for(var c in a)this.isUndefined(a[c])||(d[c]=a[c])},this);return d},defaults:function(d){this.each(a.call(arguments,1),function(a){for(var c in a)this.isUndefined(d[c])&&(d[c]=a[c])},this);return d},compose:function(){var d=a.call(arguments);return function(){for(var e=a.call(arguments),c=d.length-1;0<=c;c--)e=[d[c].apply(this,e)];return e[0]}}, -each:function(a,e,c){if(a)if(f&&a.forEach&&a.forEach===f)a.forEach(e,c);else if(a.length===a.length+0)for(var b=0,p=a.length;bthis.__max&&(a=this.__max);void 0!==this.__step&&0!=a%this.__step&&(a=Math.round(a/this.__step)*this.__step);return e.superclass.prototype.setValue.call(this,a)},min:function(a){this.__min=a;return this},max:function(a){this.__max=a;return this},step:function(a){this.__impliedStep=this.__step=a;this.__precision=d(a);return this}});return e}(dat.controllers.Controller,dat.utils.common); -dat.controllers.NumberControllerBox=function(f,a,d){var e=function(c,b,f){function q(){var a=parseFloat(n.__input.value);d.isNaN(a)||n.setValue(a)}function l(a){var b=u-a.clientY;n.setValue(n.getValue()+b*n.__impliedStep);u=a.clientY}function r(){a.unbind(window,"mousemove",l);a.unbind(window,"mouseup",r)}this.__truncationSuspended=!1;e.superclass.call(this,c,b,f);var n=this,u;this.__input=document.createElement("input");this.__input.setAttribute("type","text");a.bind(this.__input,"change",q);a.bind(this.__input, -"blur",function(){q();n.__onFinishChange&&n.__onFinishChange.call(n,n.getValue())});a.bind(this.__input,"mousedown",function(b){a.bind(window,"mousemove",l);a.bind(window,"mouseup",r);u=b.clientY});a.bind(this.__input,"keydown",function(a){13===a.keyCode&&(n.__truncationSuspended=!0,this.blur(),n.__truncationSuspended=!1)});this.updateDisplay();this.domElement.appendChild(this.__input)};e.superclass=f;d.extend(e.prototype,f.prototype,{updateDisplay:function(){var a=this.__input,b;if(this.__truncationSuspended)b= -this.getValue();else{b=this.getValue();var d=Math.pow(10,this.__precision);b=Math.round(b*d)/d}a.value=b;return e.superclass.prototype.updateDisplay.call(this)}});return e}(dat.controllers.NumberController,dat.dom.dom,dat.utils.common); -dat.controllers.NumberControllerSlider=function(f,a,d,e,c){function b(a,b,c,e,d){return e+(a-b)/(c-b)*(d-e)}var p=function(c,e,d,f,u){function A(c){c.preventDefault();var e=a.getOffset(k.__background),d=a.getWidth(k.__background);k.setValue(b(c.clientX,e.left,e.left+d,k.__min,k.__max));return!1}function g(){a.unbind(window,"mousemove",A);a.unbind(window,"mouseup",g);k.__onFinishChange&&k.__onFinishChange.call(k,k.getValue())}p.superclass.call(this,c,e,{min:d,max:f,step:u});var k=this;this.__background= -document.createElement("div");this.__foreground=document.createElement("div");a.bind(this.__background,"mousedown",function(b){a.bind(window,"mousemove",A);a.bind(window,"mouseup",g);A(b)});a.addClass(this.__background,"slider");a.addClass(this.__foreground,"slider-fg");this.updateDisplay();this.__background.appendChild(this.__foreground);this.domElement.appendChild(this.__background)};p.superclass=f;p.useDefaultStyles=function(){d.inject(c)};e.extend(p.prototype,f.prototype,{updateDisplay:function(){var a= -(this.getValue()-this.__min)/(this.__max-this.__min);this.__foreground.style.width=100*a+"%";return p.superclass.prototype.updateDisplay.call(this)}});return p}(dat.controllers.NumberController,dat.dom.dom,dat.utils.css,dat.utils.common,"/**\n * dat-gui JavaScript Controller Library\n * http://code.google.com/p/dat-gui\n *\n * Copyright 2011 Data Arts Team, Google Creative Lab\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n */\n\n.slider {\n box-shadow: inset 0 2px 4px rgba(0,0,0,0.15);\n height: 1em;\n border-radius: 1em;\n background-color: #eee;\n padding: 0 0.5em;\n overflow: hidden;\n}\n\n.slider-fg {\n padding: 1px 0 2px 0;\n background-color: #aaa;\n height: 1em;\n margin-left: -0.5em;\n padding-right: 0.5em;\n border-radius: 1em 0 0 1em;\n}\n\n.slider-fg:after {\n display: inline-block;\n border-radius: 1em;\n background-color: #fff;\n border: 1px solid #aaa;\n content: '';\n float: right;\n margin-right: -1em;\n margin-top: -1px;\n height: 0.9em;\n width: 0.9em;\n}"); -dat.controllers.FunctionController=function(f,a,d){var e=function(c,b,d){e.superclass.call(this,c,b);var f=this;this.__button=document.createElement("div");this.__button.innerHTML=void 0===d?"Fire":d;a.bind(this.__button,"click",function(a){a.preventDefault();f.fire();return!1});a.addClass(this.__button,"button");this.domElement.appendChild(this.__button)};e.superclass=f;d.extend(e.prototype,f.prototype,{fire:function(){this.__onChange&&this.__onChange.call(this);this.getValue().call(this.object); -this.__onFinishChange&&this.__onFinishChange.call(this,this.getValue())}});return e}(dat.controllers.Controller,dat.dom.dom,dat.utils.common); -dat.controllers.BooleanController=function(f,a,d){var e=function(c,b){e.superclass.call(this,c,b);var d=this;this.__prev=this.getValue();this.__checkbox=document.createElement("input");this.__checkbox.setAttribute("type","checkbox");a.bind(this.__checkbox,"change",function(){d.setValue(!d.__prev)},!1);this.domElement.appendChild(this.__checkbox);this.updateDisplay()};e.superclass=f;d.extend(e.prototype,f.prototype,{setValue:function(a){a=e.superclass.prototype.setValue.call(this,a);this.__onFinishChange&& -this.__onFinishChange.call(this,this.getValue());this.__prev=this.getValue();return a},updateDisplay:function(){!0===this.getValue()?(this.__checkbox.setAttribute("checked","checked"),this.__checkbox.checked=!0):this.__checkbox.checked=!1;return e.superclass.prototype.updateDisplay.call(this)}});return e}(dat.controllers.Controller,dat.dom.dom,dat.utils.common); -dat.color.toString=function(f){return function(a){if(1==a.a||f.isUndefined(a.a)){for(a=a.hex.toString(16);6>a.length;)a="0"+a;return"#"+a}return"rgba("+Math.round(a.r)+","+Math.round(a.g)+","+Math.round(a.b)+","+a.a+")"}}(dat.utils.common); -dat.color.interpret=function(f,a){var d,e,c=[{litmus:a.isString,conversions:{THREE_CHAR_HEX:{read:function(a){a=a.match(/^#([A-F0-9])([A-F0-9])([A-F0-9])$/i);return null===a?!1:{space:"HEX",hex:parseInt("0x"+a[1].toString()+a[1].toString()+a[2].toString()+a[2].toString()+a[3].toString()+a[3].toString())}},write:f},SIX_CHAR_HEX:{read:function(a){a=a.match(/^#([A-F0-9]{6})$/i);return null===a?!1:{space:"HEX",hex:parseInt("0x"+a[1].toString())}},write:f},CSS_RGB:{read:function(a){a=a.match(/^rgb\(\s*(.+)\s*,\s*(.+)\s*,\s*(.+)\s*\)/); -return null===a?!1:{space:"RGB",r:parseFloat(a[1]),g:parseFloat(a[2]),b:parseFloat(a[3])}},write:f},CSS_RGBA:{read:function(a){a=a.match(/^rgba\(\s*(.+)\s*,\s*(.+)\s*,\s*(.+)\s*\,\s*(.+)\s*\)/);return null===a?!1:{space:"RGB",r:parseFloat(a[1]),g:parseFloat(a[2]),b:parseFloat(a[3]),a:parseFloat(a[4])}},write:f}}},{litmus:a.isNumber,conversions:{HEX:{read:function(a){return{space:"HEX",hex:a,conversionName:"HEX"}},write:function(a){return a.hex}}}},{litmus:a.isArray,conversions:{RGB_ARRAY:{read:function(a){return 3!= -a.length?!1:{space:"RGB",r:a[0],g:a[1],b:a[2]}},write:function(a){return[a.r,a.g,a.b]}},RGBA_ARRAY:{read:function(a){return 4!=a.length?!1:{space:"RGB",r:a[0],g:a[1],b:a[2],a:a[3]}},write:function(a){return[a.r,a.g,a.b,a.a]}}}},{litmus:a.isObject,conversions:{RGBA_OBJ:{read:function(b){return a.isNumber(b.r)&&a.isNumber(b.g)&&a.isNumber(b.b)&&a.isNumber(b.a)?{space:"RGB",r:b.r,g:b.g,b:b.b,a:b.a}:!1},write:function(a){return{r:a.r,g:a.g,b:a.b,a:a.a}}},RGB_OBJ:{read:function(b){return a.isNumber(b.r)&& -a.isNumber(b.g)&&a.isNumber(b.b)?{space:"RGB",r:b.r,g:b.g,b:b.b}:!1},write:function(a){return{r:a.r,g:a.g,b:a.b}}},HSVA_OBJ:{read:function(b){return a.isNumber(b.h)&&a.isNumber(b.s)&&a.isNumber(b.v)&&a.isNumber(b.a)?{space:"HSV",h:b.h,s:b.s,v:b.v,a:b.a}:!1},write:function(a){return{h:a.h,s:a.s,v:a.v,a:a.a}}},HSV_OBJ:{read:function(b){return a.isNumber(b.h)&&a.isNumber(b.s)&&a.isNumber(b.v)?{space:"HSV",h:b.h,s:b.s,v:b.v}:!1},write:function(a){return{h:a.h,s:a.s,v:a.v}}}}}];return function(){e=!1; -var b=1\n\n Here\'s the new load parameter for your GUI\'s constructor:\n\n \n\n
\n\n Automatically save\n values to localStorage on exit.\n\n
The values saved to localStorage will\n override those passed to dat.GUI\'s constructor. This makes it\n easier to work incrementally, but localStorage is fragile,\n and your friends may not see the same values you do.\n \n
\n \n
\n\n', -".dg {\n /** Clear list styles */\n /* Auto-place container */\n /* Auto-placed GUI's */\n /* Line items that don't contain folders. */\n /** Folder names */\n /** Hides closed items */\n /** Controller row */\n /** Name-half (left) */\n /** Controller-half (right) */\n /** Controller placement */\n /** Shorter number boxes when slider is present. */\n /** Ensure the entire boolean and function row shows a hand */ }\n .dg ul {\n list-style: none;\n margin: 0;\n padding: 0;\n width: 100%;\n clear: both; }\n .dg.ac {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n height: 0;\n z-index: 0; }\n .dg:not(.ac) .main {\n /** Exclude mains in ac so that we don't hide close button */\n overflow: hidden; }\n .dg.main {\n -webkit-transition: opacity 0.1s linear;\n -o-transition: opacity 0.1s linear;\n -moz-transition: opacity 0.1s linear;\n transition: opacity 0.1s linear; }\n .dg.main.taller-than-window {\n overflow-y: auto; }\n .dg.main.taller-than-window .close-button {\n opacity: 1;\n /* TODO, these are style notes */\n margin-top: -1px;\n border-top: 1px solid #2c2c2c; }\n .dg.main ul.closed .close-button {\n opacity: 1 !important; }\n .dg.main:hover .close-button,\n .dg.main .close-button.drag {\n opacity: 1; }\n .dg.main .close-button {\n /*opacity: 0;*/\n -webkit-transition: opacity 0.1s linear;\n -o-transition: opacity 0.1s linear;\n -moz-transition: opacity 0.1s linear;\n transition: opacity 0.1s linear;\n border: 0;\n position: absolute;\n line-height: 19px;\n height: 20px;\n /* TODO, these are style notes */\n cursor: pointer;\n text-align: center;\n background-color: #000; }\n .dg.main .close-button:hover {\n background-color: #111; }\n .dg.a {\n float: right;\n margin-right: 15px;\n overflow-x: hidden; }\n .dg.a.has-save > ul {\n margin-top: 27px; }\n .dg.a.has-save > ul.closed {\n margin-top: 0; }\n .dg.a .save-row {\n position: fixed;\n top: 0;\n z-index: 1002; }\n .dg li {\n -webkit-transition: height 0.1s ease-out;\n -o-transition: height 0.1s ease-out;\n -moz-transition: height 0.1s ease-out;\n transition: height 0.1s ease-out; }\n .dg li:not(.folder) {\n cursor: auto;\n height: 27px;\n line-height: 27px;\n overflow: hidden;\n padding: 0 4px 0 5px; }\n .dg li.folder {\n padding: 0;\n border-left: 4px solid rgba(0, 0, 0, 0); }\n .dg li.title {\n cursor: pointer;\n margin-left: -4px; }\n .dg .closed li:not(.title),\n .dg .closed ul li,\n .dg .closed ul li > * {\n height: 0;\n overflow: hidden;\n border: 0; }\n .dg .cr {\n clear: both;\n padding-left: 3px;\n height: 27px; }\n .dg .property-name {\n cursor: default;\n float: left;\n clear: left;\n width: 40%;\n overflow: hidden;\n text-overflow: ellipsis; }\n .dg .c {\n float: left;\n width: 60%; }\n .dg .c input[type=text] {\n border: 0;\n margin-top: 4px;\n padding: 3px;\n width: 100%;\n float: right; }\n .dg .has-slider input[type=text] {\n width: 30%;\n /*display: none;*/\n margin-left: 0; }\n .dg .slider {\n float: left;\n width: 66%;\n margin-left: -5px;\n margin-right: 0;\n height: 19px;\n margin-top: 4px; }\n .dg .slider-fg {\n height: 100%; }\n .dg .c input[type=checkbox] {\n margin-top: 9px; }\n .dg .c select {\n margin-top: 5px; }\n .dg .cr.function,\n .dg .cr.function .property-name,\n .dg .cr.function *,\n .dg .cr.boolean,\n .dg .cr.boolean * {\n cursor: pointer; }\n .dg .selector {\n display: none;\n position: absolute;\n margin-left: -9px;\n margin-top: 23px;\n z-index: 10; }\n .dg .c:hover .selector,\n .dg .selector.drag {\n display: block; }\n .dg li.save-row {\n padding: 0; }\n .dg li.save-row .button {\n display: inline-block;\n padding: 0px 6px; }\n .dg.dialogue {\n background-color: #222;\n width: 460px;\n padding: 15px;\n font-size: 13px;\n line-height: 15px; }\n\n/* TODO Separate style and structure */\n#dg-new-constructor {\n padding: 10px;\n color: #222;\n font-family: Monaco, monospace;\n font-size: 10px;\n border: 0;\n resize: none;\n box-shadow: inset 1px 1px 1px #888;\n word-wrap: break-word;\n margin: 12px 0;\n display: block;\n width: 440px;\n overflow-y: scroll;\n height: 100px;\n position: relative; }\n\n#dg-local-explain {\n display: none;\n font-size: 11px;\n line-height: 17px;\n border-radius: 3px;\n background-color: #333;\n padding: 8px;\n margin-top: 10px; }\n #dg-local-explain code {\n font-size: 10px; }\n\n#dat-gui-save-locally {\n display: none; }\n\n/** Main type */\n.dg {\n color: #eee;\n font: 11px 'Lucida Grande', sans-serif;\n text-shadow: 0 -1px 0 #111;\n /** Auto place */\n /* Controller row,
  • */\n /** Controllers */ }\n .dg.main {\n /** Scrollbar */ }\n .dg.main::-webkit-scrollbar {\n width: 5px;\n background: #1a1a1a; }\n .dg.main::-webkit-scrollbar-corner {\n height: 0;\n display: none; }\n .dg.main::-webkit-scrollbar-thumb {\n border-radius: 5px;\n background: #676767; }\n .dg li:not(.folder) {\n background: #1a1a1a;\n border-bottom: 1px solid #2c2c2c; }\n .dg li.save-row {\n line-height: 25px;\n background: #dad5cb;\n border: 0; }\n .dg li.save-row select {\n margin-left: 5px;\n width: 108px; }\n .dg li.save-row .button {\n margin-left: 5px;\n margin-top: 1px;\n border-radius: 2px;\n font-size: 9px;\n line-height: 7px;\n padding: 4px 4px 5px 4px;\n background: #c5bdad;\n color: #fff;\n text-shadow: 0 1px 0 #b0a58f;\n box-shadow: 0 -1px 0 #b0a58f;\n cursor: pointer; }\n .dg li.save-row .button.gears {\n background: #c5bdad url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAANCAYAAAB/9ZQ7AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAQJJREFUeNpiYKAU/P//PwGIC/ApCABiBSAW+I8AClAcgKxQ4T9hoMAEUrxx2QSGN6+egDX+/vWT4e7N82AMYoPAx/evwWoYoSYbACX2s7KxCxzcsezDh3evFoDEBYTEEqycggWAzA9AuUSQQgeYPa9fPv6/YWm/Acx5IPb7ty/fw+QZblw67vDs8R0YHyQhgObx+yAJkBqmG5dPPDh1aPOGR/eugW0G4vlIoTIfyFcA+QekhhHJhPdQxbiAIguMBTQZrPD7108M6roWYDFQiIAAv6Aow/1bFwXgis+f2LUAynwoIaNcz8XNx3Dl7MEJUDGQpx9gtQ8YCueB+D26OECAAQDadt7e46D42QAAAABJRU5ErkJggg==) 2px 1px no-repeat;\n height: 7px;\n width: 8px; }\n .dg li.save-row .button:hover {\n background-color: #bab19e;\n box-shadow: 0 -1px 0 #b0a58f; }\n .dg li.folder {\n border-bottom: 0; }\n .dg li.title {\n padding-left: 16px;\n background: black url(data:image/gif;base64,R0lGODlhBQAFAJEAAP////Pz8////////yH5BAEAAAIALAAAAAAFAAUAAAIIlI+hKgFxoCgAOw==) 6px 10px no-repeat;\n cursor: pointer;\n border-bottom: 1px solid rgba(255, 255, 255, 0.2); }\n .dg .closed li.title {\n background-image: url(data:image/gif;base64,R0lGODlhBQAFAJEAAP////Pz8////////yH5BAEAAAIALAAAAAAFAAUAAAIIlGIWqMCbWAEAOw==); }\n .dg .cr.boolean {\n border-left: 3px solid #806787; }\n .dg .cr.function {\n border-left: 3px solid #e61d5f; }\n .dg .cr.number {\n border-left: 3px solid #2fa1d6; }\n .dg .cr.number input[type=text] {\n color: #2fa1d6; }\n .dg .cr.string {\n border-left: 3px solid #1ed36f; }\n .dg .cr.string input[type=text] {\n color: #1ed36f; }\n .dg .cr.function:hover, .dg .cr.boolean:hover {\n background: #111; }\n .dg .c input[type=text] {\n background: #303030;\n outline: none; }\n .dg .c input[type=text]:hover {\n background: #3c3c3c; }\n .dg .c input[type=text]:focus {\n background: #494949;\n color: #fff; }\n .dg .c .slider {\n background: #303030;\n cursor: ew-resize; }\n .dg .c .slider-fg {\n background: #2fa1d6; }\n .dg .c .slider:hover {\n background: #3c3c3c; }\n .dg .c .slider:hover .slider-fg {\n background: #44abda; }\n", -dat.controllers.factory=function(f,a,d,e,c,b,p){return function(q,l,r,n){var u=q[l];if(p.isArray(r)||p.isObject(r))return new f(q,l,r);if(p.isNumber(u))return p.isNumber(r)&&p.isNumber(n)?new d(q,l,r,n):new a(q,l,{min:r,max:n});if(p.isString(u))return new e(q,l);if(p.isFunction(u))return new c(q,l,"");if(p.isBoolean(u))return new b(q,l)}}(dat.controllers.OptionController,dat.controllers.NumberControllerBox,dat.controllers.NumberControllerSlider,dat.controllers.StringController=function(f,a,d){var e= -function(c,b){function d(){f.setValue(f.__input.value)}e.superclass.call(this,c,b);var f=this;this.__input=document.createElement("input");this.__input.setAttribute("type","text");a.bind(this.__input,"keyup",d);a.bind(this.__input,"change",d);a.bind(this.__input,"blur",function(){f.__onFinishChange&&f.__onFinishChange.call(f,f.getValue())});a.bind(this.__input,"keydown",function(a){13===a.keyCode&&this.blur()});this.updateDisplay();this.domElement.appendChild(this.__input)};e.superclass=f;d.extend(e.prototype, -f.prototype,{updateDisplay:function(){a.isActive(this.__input)||(this.__input.value=this.getValue());return e.superclass.prototype.updateDisplay.call(this)}});return e}(dat.controllers.Controller,dat.dom.dom,dat.utils.common),dat.controllers.FunctionController,dat.controllers.BooleanController,dat.utils.common),dat.controllers.Controller,dat.controllers.BooleanController,dat.controllers.FunctionController,dat.controllers.NumberControllerBox,dat.controllers.NumberControllerSlider,dat.controllers.OptionController, -dat.controllers.ColorController=function(f,a,d,e,c){function b(a,b,d,e){a.style.background="";c.each(l,function(c){a.style.cssText+="background: "+c+"linear-gradient("+b+", "+d+" 0%, "+e+" 100%); "})}function p(a){a.style.background="";a.style.cssText+="background: -moz-linear-gradient(top, #ff0000 0%, #ff00ff 17%, #0000ff 34%, #00ffff 50%, #00ff00 67%, #ffff00 84%, #ff0000 100%);";a.style.cssText+="background: -webkit-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);"; -a.style.cssText+="background: -o-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);";a.style.cssText+="background: -ms-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);";a.style.cssText+="background: linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);"}var q=function(f,n){function u(b){v(b);a.bind(window,"mousemove",v);a.bind(window, -"mouseup",l)}function l(){a.unbind(window,"mousemove",v);a.unbind(window,"mouseup",l)}function g(){var a=e(this.value);!1!==a?(t.__color.__state=a,t.setValue(t.__color.toOriginal())):this.value=t.__color.toString()}function k(){a.unbind(window,"mousemove",w);a.unbind(window,"mouseup",k)}function v(b){b.preventDefault();var c=a.getWidth(t.__saturation_field),d=a.getOffset(t.__saturation_field),e=(b.clientX-d.left+document.body.scrollLeft)/c;b=1-(b.clientY-d.top+document.body.scrollTop)/c;1 -b&&(b=0);1e&&(e=0);t.__color.v=b;t.__color.s=e;t.setValue(t.__color.toOriginal());return!1}function w(b){b.preventDefault();var c=a.getHeight(t.__hue_field),d=a.getOffset(t.__hue_field);b=1-(b.clientY-d.top+document.body.scrollTop)/c;1b&&(b=0);t.__color.h=360*b;t.setValue(t.__color.toOriginal());return!1}q.superclass.call(this,f,n);this.__color=new d(this.getValue());this.__temp=new d(0);var t=this;this.domElement=document.createElement("div");a.makeSelectable(this.domElement,!1); -this.__selector=document.createElement("div");this.__selector.className="selector";this.__saturation_field=document.createElement("div");this.__saturation_field.className="saturation-field";this.__field_knob=document.createElement("div");this.__field_knob.className="field-knob";this.__field_knob_border="2px solid ";this.__hue_knob=document.createElement("div");this.__hue_knob.className="hue-knob";this.__hue_field=document.createElement("div");this.__hue_field.className="hue-field";this.__input=document.createElement("input"); -this.__input.type="text";this.__input_textShadow="0 1px 1px ";a.bind(this.__input,"keydown",function(a){13===a.keyCode&&g.call(this)});a.bind(this.__input,"blur",g);a.bind(this.__selector,"mousedown",function(b){a.addClass(this,"drag").bind(window,"mouseup",function(b){a.removeClass(t.__selector,"drag")})});var y=document.createElement("div");c.extend(this.__selector.style,{width:"122px",height:"102px",padding:"3px",backgroundColor:"#222",boxShadow:"0px 1px 3px rgba(0,0,0,0.3)"});c.extend(this.__field_knob.style, -{position:"absolute",width:"12px",height:"12px",border:this.__field_knob_border+(.5>this.__color.v?"#fff":"#000"),boxShadow:"0px 1px 3px rgba(0,0,0,0.5)",borderRadius:"12px",zIndex:1});c.extend(this.__hue_knob.style,{position:"absolute",width:"15px",height:"2px",borderRight:"4px solid #fff",zIndex:1});c.extend(this.__saturation_field.style,{width:"100px",height:"100px",border:"1px solid #555",marginRight:"3px",display:"inline-block",cursor:"pointer"});c.extend(y.style,{width:"100%",height:"100%", -background:"none"});b(y,"top","rgba(0,0,0,0)","#000");c.extend(this.__hue_field.style,{width:"15px",height:"100px",display:"inline-block",border:"1px solid #555",cursor:"ns-resize"});p(this.__hue_field);c.extend(this.__input.style,{outline:"none",textAlign:"center",color:"#fff",border:0,fontWeight:"bold",textShadow:this.__input_textShadow+"rgba(0,0,0,0.7)"});a.bind(this.__saturation_field,"mousedown",u);a.bind(this.__field_knob,"mousedown",u);a.bind(this.__hue_field,"mousedown",function(b){w(b);a.bind(window, -"mousemove",w);a.bind(window,"mouseup",k)});this.__saturation_field.appendChild(y);this.__selector.appendChild(this.__field_knob);this.__selector.appendChild(this.__saturation_field);this.__selector.appendChild(this.__hue_field);this.__hue_field.appendChild(this.__hue_knob);this.domElement.appendChild(this.__input);this.domElement.appendChild(this.__selector);this.updateDisplay()};q.superclass=f;c.extend(q.prototype,f.prototype,{updateDisplay:function(){var a=e(this.getValue());if(!1!==a){var f=!1; -c.each(d.COMPONENTS,function(b){if(!c.isUndefined(a[b])&&!c.isUndefined(this.__color.__state[b])&&a[b]!==this.__color.__state[b])return f=!0,{}},this);f&&c.extend(this.__color.__state,a)}c.extend(this.__temp.__state,this.__color.__state);this.__temp.a=1;var l=.5>this.__color.v||.5a&&(a+=1);return{h:360*a,s:c/b,v:b/255}},rgb_to_hex:function(a,d,e){a=this.hex_with_component(0,2,a);a=this.hex_with_component(a,1,d);return a=this.hex_with_component(a,0,e)},component_from_hex:function(a,d){return a>>8*d&255},hex_with_component:function(a,d,e){return e<<(f=8*d)|a&~(255<', { + id: group.id, + class: "color-picker" + }); + var updateColors = function(red, green, blue) { + $colPickContainer.css('background-color', "rgb(" + + red + "," + + green + "," + + blue + ")"); + }; + + var inputs = ["red","green","blue"]; + var domArray = []; + + for (var index in inputs) { + var element = document.createElement("input"); + if (group.defaultColor) { + element.value = group.defaultColor[inputs[index]]; + } else if (inputs[index] === "red"){ + element.value = 255; + } else { + element.value = 0; + } + element.setAttribute("type","number"); + element.className = inputs[index]; + element.setAttribute("min",0); + element.setAttribute("max",255); + element.id = group.id + "-" + inputs[index]; + element.oninput = function(event) { + $colPickContainer.colpickSetColor({r: domArray[0].value, g: domArray[1].value, b: domArray[2].value}, + true); + + + // + } + domArray.push(element); + } + + updateColors(domArray[0].value, domArray[1].value, domArray[2].value); + + // Could probably write a custom one for this to completely write out jquery, + // but for now, using the same as earlier. + + /* Color Picker Logic Here */ + + parent.appendChild($colPickContainer[0]); + var changeTimer; + $colPickContainer.colpick({ + colorScheme: 'dark', + layout: 'hex', + color: { r: domArray[0].value, g: domArray[1].value, b: domArray[2].value}, + onChange: function(hsb, hex, rgb, el){ + updateColors(rgb.r, rgb.g, rgb.b); + + domArray[0].value = rgb.r; + domArray[1].value = rgb.g; + domArray[2].value = rgb.b; + // Reimplement lodash + if (changeTimer) { + clearTimeout(changeTimer); + } + changeTimer = setTimeout(function () { + console.log("WebEvent Here"); + }, 250); + }, + onSubmit: function (hsb, hex, rgb, el) { + $(el).css('background-color', '#' + hex); + $(el).colpickHide(); + domArray[0].value = rgb.r; + domArray[1].value = rgb.g; + domArray[2].value = rgb.b; + if (changeTimer) { + clearTimeout(changeTimer); + } + changeTimer = setTimeout(function () { + console.log("WebEvent Here"); + }, 250); + } + }); + var li = document.createElement("li"); + li.className ="cr object color"; + + + this.addLabel(parent, group.name); + parent.className += " property color-section rgb"; + + // Add Tuple and the rest + var tupleContainer = document.createElement("div"); + tupleContainer.className = "tuple"; + for (var domIndex in domArray) { + var container = domArray[domIndex]; + var div = document.createElement("div"); + var label = document.createElement("label"); + label.innerHTML = inputs[domIndex] + ":"; + label.setAttribute("for", container.id); + div.appendChild(container); + div.appendChild(label); + tupleContainer.appendChild(div); + } + parent.appendChild(tupleContainer); + + + }, + addTextureField: function(parent, group) { + this.addLabel(parent, group.name); + parent.className += " property texture"; + var textureImage = document.createElement("div"); + var textureUrl = document.createElement("input"); + textureUrl.setAttribute("type", "text"); + textureImage.className = "texture-image no-texture"; + var image = document.createElement("img"); + + var timer; + textureUrl.oninput = function (event) { + // Add throttle + var url = event.target.value; + if (timer) { + clearTimeout(timer); + } + timer = setTimeout(function(){ + if (url.length > 0) { + textureImage.className = textureImage.className.replace(' no-texture',''); + image.src = url; + image.style.display = "block"; + } else { + image.src = ""; + image.style.display = "none"; + textureImage.className += " no-texture"; + } + }, 250); + }; + + textureImage.appendChild(image); + parent.appendChild(textureImage); + parent.appendChild(textureUrl); + }, + addSlider: function(parent, group) { + this.addLabel(parent, group.name); + parent.className += " property range"; + var container = document.createElement("div"); + container.className = "slider-wrapper"; + var slider = document.createElement("input"); + slider.setAttribute("type", "range"); + + var inputField = document.createElement("input"); + inputField.setAttribute("type", "number"); + + container.appendChild(slider); + container.appendChild(inputField); + parent.appendChild(container); + + if (group.type === "SliderInteger") { + inputField.setAttribute("min", group.min !== undefined ? group.min: 0); + inputField.setAttribute("step", 1); + + slider.setAttribute("min", group.min !== undefined ? group.min: 0); + slider.setAttribute("max", group.max !== undefined ? group.max: 10000); + slider.setAttribute("step", 1); + + inputField.onchange = function (event){ + slider.value = event.target.value; + // bind web sock update here. + }; + slider.oninput = function (event){ + inputField.value = event.target.value; + }; + + inputField.id = group.id; + } else if (group.type === "SliderRadian") { + slider.setAttribute("min", group.min !== undefined ? group.min: 0); + slider.setAttribute("max", group.max !== undefined ? group.max: Math.PI); + slider.setAttribute("step", Math.PI/36); + + inputField.setAttribute("min", (group.min !== undefined ? group.min: 0) / (Math.PI/180)); + inputField.setAttribute("max", (group.max !== undefined ? group.max: Math.PI)/ (Math.PI/180)); + + inputField.onchange = function (event){ + slider.value = (Math.PI/180) * event.target.value; + }; + slider.oninput = function (event){ + inputField.value = Math.round((event.target.value / (Math.PI/180)) * 100)/100; + // bind web sock update here. + }; + var degrees = document.createElement("label"); + degrees.innerHTML = "°"; + degrees.style.fontSize = "1.4rem"; + degrees.style.display = "inline"; + degrees.style.verticalAlign = "top"; + degrees.style.paddingLeft = "0.4rem"; + container.appendChild(degrees); + + slider.id = group.id; + } else { + // Must then be Float + inputField.setAttribute("min", group.min !== undefined? group.min: 0); + + slider.setAttribute("min", group.min !== undefined ? group.min: 0); + slider.setAttribute("max", group.max !== undefined ? group.max: 1); + slider.setAttribute("step", 0.025); + + inputField.onchange = function (event){ + slider.value = event.target.value; + // bind web sock update here. + }; + slider.oninput = function (event){ + inputField.value = event.target.value; + }; + + inputField.id = group.id; + } + + // UpdateBinding + }, + addRow: function (parent, group) { + + var self = this; + var property = document.createElement("div"); + property.id = group.id; + + var row = document.createElement("div"); + switch (group.type){ + case "Button": + var exportSettingsButton = document.createElement("input"); + exportSettingsButton.setAttribute("type", "button"); + exportSettingsButton.className = group.class; + exportSettingsButton.value = group.name; + parent.appendChild(exportSettingsButton); + break; + case "Row": + var hr = document.createElement("hr"); + hr.className = "splitter"; + parent.appendChild(hr); + break; + case "Boolean": + var checkBox = document.createElement("input"); + checkBox.setAttribute("type", "checkbox"); + row.appendChild(checkBox); + self.addLabel(row, group.name); + row.className += " property checkbox"; + parent.appendChild(row); + break; + case "SliderFloat": + case "SliderInteger": + case "SliderRadian": + self.addSlider(row, group); + parent.appendChild(row); + break; + case "Texture": + self.addTextureField(row, group); + parent.appendChild(row); + break; + case "Color": + self.addColorPicker(row, group); + parent.appendChild(row); + break; + case "Vector": + case "VectorQuaternion": + self.addLabel(row, group.name); + parent.appendChild(row); + break; + default: + console.log("not defined"); + } + + } +}; diff --git a/scripts/system/particle_explorer/lodash.min.js b/scripts/system/particle_explorer/lodash.min.js new file mode 100644 index 0000000000..ca447f4e82 --- /dev/null +++ b/scripts/system/particle_explorer/lodash.min.js @@ -0,0 +1,136 @@ +/** + * @license + * Lodash lodash.com/license | Underscore.js 1.8.3 underscorejs.org/LICENSE + */ +;(function(){function n(n,t){return n.set(t[0],t[1]),n}function t(n,t){return n.add(t),n}function r(n,t,r){switch(r.length){case 0:return n.call(t);case 1:return n.call(t,r[0]);case 2:return n.call(t,r[0],r[1]);case 3:return n.call(t,r[0],r[1],r[2])}return n.apply(t,r)}function e(n,t,r,e){for(var u=-1,i=null==n?0:n.length;++u"']/g,J=RegExp(G.source),Y=RegExp(H.source),Q=/<%-([\s\S]+?)%>/g,X=/<%([\s\S]+?)%>/g,nn=/<%=([\s\S]+?)%>/g,tn=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,rn=/^\w*$/,en=/^\./,un=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,on=/[\\^$.*+?()[\]{}|]/g,fn=RegExp(on.source),cn=/^\s+|\s+$/g,an=/^\s+/,ln=/\s+$/,sn=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,hn=/\{\n\/\* \[wrapped with (.+)\] \*/,pn=/,? & /,_n=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,vn=/\\(\\)?/g,gn=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,dn=/\w*$/,yn=/^[-+]0x[0-9a-f]+$/i,bn=/^0b[01]+$/i,xn=/^\[object .+?Constructor\]$/,jn=/^0o[0-7]+$/i,wn=/^(?:0|[1-9]\d*)$/,mn=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,An=/($^)/,kn=/['\n\r\u2028\u2029\\]/g,En="[\\ufe0e\\ufe0f]?(?:[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|\\ud83c[\\udffb-\\udfff])?(?:\\u200d(?:[^\\ud800-\\udfff]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff])[\\ufe0e\\ufe0f]?(?:[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|\\ud83c[\\udffb-\\udfff])?)*",On="(?:[\\u2700-\\u27bf]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff])"+En,Sn="(?:[^\\ud800-\\udfff][\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]?|[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\ud800-\\udfff])",In=RegExp("['\u2019]","g"),Rn=RegExp("[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]","g"),zn=RegExp("\\ud83c[\\udffb-\\udfff](?=\\ud83c[\\udffb-\\udfff])|"+Sn+En,"g"),Wn=RegExp(["[A-Z\\xc0-\\xd6\\xd8-\\xde]?[a-z\\xdf-\\xf6\\xf8-\\xff]+(?:['\u2019](?:d|ll|m|re|s|t|ve))?(?=[\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000]|[A-Z\\xc0-\\xd6\\xd8-\\xde]|$)|(?:[A-Z\\xc0-\\xd6\\xd8-\\xde]|[^\\ud800-\\udfff\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde])+(?:['\u2019](?:D|LL|M|RE|S|T|VE))?(?=[\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000]|[A-Z\\xc0-\\xd6\\xd8-\\xde](?:[a-z\\xdf-\\xf6\\xf8-\\xff]|[^\\ud800-\\udfff\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde])|$)|[A-Z\\xc0-\\xd6\\xd8-\\xde]?(?:[a-z\\xdf-\\xf6\\xf8-\\xff]|[^\\ud800-\\udfff\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde])+(?:['\u2019](?:d|ll|m|re|s|t|ve))?|[A-Z\\xc0-\\xd6\\xd8-\\xde]+(?:['\u2019](?:D|LL|M|RE|S|T|VE))?|\\d*(?:(?:1ST|2ND|3RD|(?![123])\\dTH)\\b)|\\d*(?:(?:1st|2nd|3rd|(?![123])\\dth)\\b)|\\d+",On].join("|"),"g"),Bn=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]"),Ln=/[a-z][A-Z]|[A-Z]{2,}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,Un="Array Buffer DataView Date Error Float32Array Float64Array Function Int8Array Int16Array Int32Array Map Math Object Promise RegExp Set String Symbol TypeError Uint8Array Uint8ClampedArray Uint16Array Uint32Array WeakMap _ clearTimeout isFinite parseInt setTimeout".split(" "),Cn={}; +Cn["[object Float32Array]"]=Cn["[object Float64Array]"]=Cn["[object Int8Array]"]=Cn["[object Int16Array]"]=Cn["[object Int32Array]"]=Cn["[object Uint8Array]"]=Cn["[object Uint8ClampedArray]"]=Cn["[object Uint16Array]"]=Cn["[object Uint32Array]"]=true,Cn["[object Arguments]"]=Cn["[object Array]"]=Cn["[object ArrayBuffer]"]=Cn["[object Boolean]"]=Cn["[object DataView]"]=Cn["[object Date]"]=Cn["[object Error]"]=Cn["[object Function]"]=Cn["[object Map]"]=Cn["[object Number]"]=Cn["[object Object]"]=Cn["[object RegExp]"]=Cn["[object Set]"]=Cn["[object String]"]=Cn["[object WeakMap]"]=false; +var Dn={};Dn["[object Arguments]"]=Dn["[object Array]"]=Dn["[object ArrayBuffer]"]=Dn["[object DataView]"]=Dn["[object Boolean]"]=Dn["[object Date]"]=Dn["[object Float32Array]"]=Dn["[object Float64Array]"]=Dn["[object Int8Array]"]=Dn["[object Int16Array]"]=Dn["[object Int32Array]"]=Dn["[object Map]"]=Dn["[object Number]"]=Dn["[object Object]"]=Dn["[object RegExp]"]=Dn["[object Set]"]=Dn["[object String]"]=Dn["[object Symbol]"]=Dn["[object Uint8Array]"]=Dn["[object Uint8ClampedArray]"]=Dn["[object Uint16Array]"]=Dn["[object Uint32Array]"]=true, +Dn["[object Error]"]=Dn["[object Function]"]=Dn["[object WeakMap]"]=false;var Mn,Tn={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},$n=parseFloat,Fn=parseInt,Nn=typeof global=="object"&&global&&global.Object===Object&&global,Pn=typeof self=="object"&&self&&self.Object===Object&&self,Zn=Nn||Pn||Function("return this")(),qn=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Vn=qn&&typeof module=="object"&&module&&!module.nodeType&&module,Kn=Vn&&Vn.exports===qn,Gn=Kn&&Nn.process; +n:{try{Mn=Gn&&Gn.binding&&Gn.binding("util");break n}catch(n){}Mn=void 0}var Hn=Mn&&Mn.isArrayBuffer,Jn=Mn&&Mn.isDate,Yn=Mn&&Mn.isMap,Qn=Mn&&Mn.isRegExp,Xn=Mn&&Mn.isSet,nt=Mn&&Mn.isTypedArray,tt=j("length"),rt=w({"\xc0":"A","\xc1":"A","\xc2":"A","\xc3":"A","\xc4":"A","\xc5":"A","\xe0":"a","\xe1":"a","\xe2":"a","\xe3":"a","\xe4":"a","\xe5":"a","\xc7":"C","\xe7":"c","\xd0":"D","\xf0":"d","\xc8":"E","\xc9":"E","\xca":"E","\xcb":"E","\xe8":"e","\xe9":"e","\xea":"e","\xeb":"e","\xcc":"I","\xcd":"I","\xce":"I", +"\xcf":"I","\xec":"i","\xed":"i","\xee":"i","\xef":"i","\xd1":"N","\xf1":"n","\xd2":"O","\xd3":"O","\xd4":"O","\xd5":"O","\xd6":"O","\xd8":"O","\xf2":"o","\xf3":"o","\xf4":"o","\xf5":"o","\xf6":"o","\xf8":"o","\xd9":"U","\xda":"U","\xdb":"U","\xdc":"U","\xf9":"u","\xfa":"u","\xfb":"u","\xfc":"u","\xdd":"Y","\xfd":"y","\xff":"y","\xc6":"Ae","\xe6":"ae","\xde":"Th","\xfe":"th","\xdf":"ss","\u0100":"A","\u0102":"A","\u0104":"A","\u0101":"a","\u0103":"a","\u0105":"a","\u0106":"C","\u0108":"C","\u010a":"C", +"\u010c":"C","\u0107":"c","\u0109":"c","\u010b":"c","\u010d":"c","\u010e":"D","\u0110":"D","\u010f":"d","\u0111":"d","\u0112":"E","\u0114":"E","\u0116":"E","\u0118":"E","\u011a":"E","\u0113":"e","\u0115":"e","\u0117":"e","\u0119":"e","\u011b":"e","\u011c":"G","\u011e":"G","\u0120":"G","\u0122":"G","\u011d":"g","\u011f":"g","\u0121":"g","\u0123":"g","\u0124":"H","\u0126":"H","\u0125":"h","\u0127":"h","\u0128":"I","\u012a":"I","\u012c":"I","\u012e":"I","\u0130":"I","\u0129":"i","\u012b":"i","\u012d":"i", +"\u012f":"i","\u0131":"i","\u0134":"J","\u0135":"j","\u0136":"K","\u0137":"k","\u0138":"k","\u0139":"L","\u013b":"L","\u013d":"L","\u013f":"L","\u0141":"L","\u013a":"l","\u013c":"l","\u013e":"l","\u0140":"l","\u0142":"l","\u0143":"N","\u0145":"N","\u0147":"N","\u014a":"N","\u0144":"n","\u0146":"n","\u0148":"n","\u014b":"n","\u014c":"O","\u014e":"O","\u0150":"O","\u014d":"o","\u014f":"o","\u0151":"o","\u0154":"R","\u0156":"R","\u0158":"R","\u0155":"r","\u0157":"r","\u0159":"r","\u015a":"S","\u015c":"S", +"\u015e":"S","\u0160":"S","\u015b":"s","\u015d":"s","\u015f":"s","\u0161":"s","\u0162":"T","\u0164":"T","\u0166":"T","\u0163":"t","\u0165":"t","\u0167":"t","\u0168":"U","\u016a":"U","\u016c":"U","\u016e":"U","\u0170":"U","\u0172":"U","\u0169":"u","\u016b":"u","\u016d":"u","\u016f":"u","\u0171":"u","\u0173":"u","\u0174":"W","\u0175":"w","\u0176":"Y","\u0177":"y","\u0178":"Y","\u0179":"Z","\u017b":"Z","\u017d":"Z","\u017a":"z","\u017c":"z","\u017e":"z","\u0132":"IJ","\u0133":"ij","\u0152":"Oe","\u0153":"oe", +"\u0149":"'n","\u017f":"s"}),et=w({"&":"&","<":"<",">":">",'"':""","'":"'"}),ut=w({"&":"&","<":"<",">":">",""":'"',"'":"'"}),it=function w(En){function On(n){if(xu(n)&&!af(n)&&!(n instanceof Mn)){if(n instanceof zn)return n;if(ci.call(n,"__wrapped__"))return Pe(n)}return new zn(n)}function Sn(){}function zn(n,t){this.__wrapped__=n,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=F}function Mn(n){this.__wrapped__=n,this.__actions__=[],this.__dir__=1, +this.__filtered__=false,this.__iteratees__=[],this.__takeCount__=4294967295,this.__views__=[]}function Tn(n){var t=-1,r=null==n?0:n.length;for(this.clear();++t=t?n:t)),n}function dt(n,t,r,e,i,o){var f,c=1&t,a=2&t,l=4&t;if(r&&(f=i?r(n,e,i,o):r(n)),f!==F)return f;if(!bu(n))return n;if(e=af(n)){if(f=Ee(n),!c)return Mr(n,f)}else{var s=yo(n),h="[object Function]"==s||"[object GeneratorFunction]"==s;if(sf(n))return Wr(n,c);if("[object Object]"==s||"[object Arguments]"==s||h&&!i){if(f=a||h?{}:Oe(n),!c)return a?Fr(n,pt(f,n)):$r(n,ht(f,n))}else{if(!Dn[s])return i?n:{};f=Se(n,s,dt,c)}}if(o||(o=new Vn), +i=o.get(n))return i;o.set(n,f);var a=l?a?ye:de:a?Uu:Lu,p=e?F:a(n);return u(p||n,function(e,u){p&&(u=e,e=n[u]),at(f,u,dt(e,t,r,u,n,o))}),f}function yt(n){var t=Lu(n);return function(r){return bt(r,n,t)}}function bt(n,t,r){var e=r.length;if(null==n)return!e;for(n=ni(n);e--;){var u=r[e],i=t[u],o=n[u];if(o===F&&!(u in n)||!i(o))return false}return true}function xt(n,t,r){if(typeof n!="function")throw new ei("Expected a function");return jo(function(){n.apply(F,r)},t)}function jt(n,t,r,e){var u=-1,i=c,o=true,f=n.length,s=[],h=t.length; +if(!f)return s;r&&(t=l(t,S(r))),e?(i=a,o=false):200<=t.length&&(i=R,o=false,t=new qn(t));n:for(;++ut}function Bt(n,t){return null!=n&&ci.call(n,t)}function Lt(n,t){return null!=n&&t in ni(n)}function Ut(n,t,r){for(var e=r?a:c,u=n[0].length,i=n.length,o=i,f=Hu(i),s=1/0,h=[];o--;){var p=n[o];o&&t&&(p=l(p,S(t))),s=Mi(p.length,s),f[o]=!r&&(t||120<=u&&120<=p.length)?new qn(o&&p):F}var p=n[0],_=-1,v=f[0];n:for(;++_t.length?n:It(n,vr(t,0,-1)),t=null==n?n:n[$e(Ge(t))],null==t?F:r(t,n,e)}function Mt(n){return xu(n)&&"[object Arguments]"==zt(n)}function Tt(n){return xu(n)&&"[object ArrayBuffer]"==zt(n)}function $t(n){return xu(n)&&"[object Date]"==zt(n)}function Ft(n,t,r,e,u){if(n===t)t=true;else if(null==n||null==t||!xu(n)&&!xu(t))t=n!==n&&t!==t;else n:{ +var i=af(n),o=af(t),f=i?"[object Array]":yo(n),c=o?"[object Array]":yo(t),f="[object Arguments]"==f?"[object Object]":f,c="[object Arguments]"==c?"[object Object]":c,a="[object Object]"==f,o="[object Object]"==c;if((c=f==c)&&sf(n)){if(!sf(t)){t=false;break n}i=true,a=false}if(c&&!a)u||(u=new Vn),t=i||gf(n)?_e(n,t,r,e,Ft,u):ve(n,t,f,r,e,Ft,u);else{if(!(1&r)&&(i=a&&ci.call(n,"__wrapped__"),f=o&&ci.call(t,"__wrapped__"),i||f)){n=i?n.value():n,t=f?t.value():t,u||(u=new Vn),t=Ft(n,t,r,e,u);break n}if(c)t:if(u||(u=new Vn), +i=1&r,f=de(n),o=f.length,c=de(t).length,o==c||i){for(a=o;a--;){var l=f[a];if(!(i?l in t:ci.call(t,l))){t=false;break t}}if((c=u.get(n))&&u.get(t))t=c==t;else{c=true,u.set(n,t),u.set(t,n);for(var s=i;++at?r:0,Re(t,r)?n[t]:F}function rr(n,t,r){var e=-1;return t=l(t.length?t:[Nu],S(je())),n=Yt(n,function(n){return{a:l(t,function(t){return t(n)}),b:++e,c:n}}),A(n,function(n,t){var e;n:{e=-1;for(var u=n.a,i=t.a,o=u.length,f=r.length;++e=f?c:c*("desc"==r[e]?-1:1); +break n}}e=n.b-t.b}return e})}function er(n,t){return ur(n,t,function(t,r){return Bu(n,r)})}function ur(n,t,r){for(var e=-1,u=t.length,i={};++et||9007199254740991t&&(t=-t>u?0:u+t),r=r>u?u:r,0>r&&(r+=u),u=t>r?0:r-t>>>0,t>>>=0,r=Hu(u);++e=u){for(;e>>1,o=n[i];null!==o&&!Au(o)&&(r?o<=t:ot.length?n:It(n,vr(t,0,-1)), +null==n||delete n[$e(Ge(t))]}function Ar(n,t,r,e){for(var u=n.length,i=e?u:-1;(e?i--:++ie)return e?wr(n[0]):[];for(var u=-1,i=Hu(e);++u=e?n:vr(n,t,r)}function Wr(n,t){if(t)return n.slice();var r=n.length,r=yi?yi(r):new n.constructor(r);return n.copy(r),r}function Br(n){var t=new n.constructor(n.byteLength);return new di(t).set(new di(n)),t}function Lr(n,t){return new n.constructor(t?Br(n.buffer):n.buffer,n.byteOffset,n.length)}function Ur(n,t){ +if(n!==t){var r=n!==F,e=null===n,u=n===n,i=Au(n),o=t!==F,f=null===t,c=t===t,a=Au(t);if(!f&&!a&&!i&&n>t||i&&o&&c&&!f&&!a||e&&o&&c||!r&&c||!u)return 1;if(!e&&!i&&!a&&nu?F:i,u=1),t=ni(t);++eo&&f[0]!==a&&f[o-1]!==a?[]:C(f,a),o-=c.length,or?r?ar(t,n):t:(r=ar(t,Ri(n/T(t))),Bn.test(t)?zr($(r),0,n).join(""):r.slice(0,n))}function ue(n,t,e,u){function i(){for(var t=-1,c=arguments.length,a=-1,l=u.length,s=Hu(l+c),h=this&&this!==Zn&&this instanceof i?f:n;++at||e)&&(1&n&&(i[2]=h[2],t|=1&r?0:4),(r=h[3])&&(e=i[3],i[3]=e?Cr(e,r,h[4]):r,i[4]=e?C(i[3],"__lodash_placeholder__"):h[4]),(r=h[5])&&(e=i[5],i[5]=e?Dr(e,r,h[6]):r,i[6]=e?C(i[5],"__lodash_placeholder__"):h[6]),(r=h[7])&&(i[7]=r),128&n&&(i[8]=null==i[8]?h[8]:Mi(i[8],h[8])),null==i[9]&&(i[9]=h[9]),i[0]=h[0],i[1]=t),n=i[0],t=i[1], +r=i[2],e=i[3],u=i[4],f=i[9]=i[9]===F?c?0:n.length:Di(i[9]-a,0),!f&&24&t&&(t&=-25),De((h?lo:xo)(t&&1!=t?8==t||16==t?Jr(n,t,f):32!=t&&33!=t||u.length?Xr.apply(F,i):ue(n,t,r,e):Vr(n,t,r),i),n,t)}function se(n,t,r,e){return n===F||hu(n,ii[r])&&!ci.call(e,r)?t:n}function he(n,t,r,e,u,i){return bu(n)&&bu(t)&&(i.set(t,n),nr(n,t,F,he,i),i.delete(t)),n}function pe(n){return wu(n)?F:n}function _e(n,t,r,e,u,i){var o=1&r,f=n.length,c=t.length;if(f!=c&&!(o&&c>f))return false;if((c=i.get(n))&&i.get(t))return c==t;var c=-1,a=true,l=2&r?new qn:F; +for(i.set(n,t),i.set(t,n);++cr&&(r=Di(e+r,0)),g(n,je(t,3),r)):-1}function qe(n,t,r){var e=null==n?0:n.length;if(!e)return-1;var u=e-1;return r!==F&&(u=Ou(r),u=0>r?Di(e+u,0):Mi(u,e-1)), +g(n,je(t,3),u,true)}function Ve(n){return(null==n?0:n.length)?kt(n,1):[]}function Ke(n){return n&&n.length?n[0]:F}function Ge(n){var t=null==n?0:n.length;return t?n[t-1]:F}function He(n,t){return n&&n.length&&t&&t.length?or(n,t):n}function Je(n){return null==n?n:Ni.call(n)}function Ye(n){if(!n||!n.length)return[];var t=0;return n=f(n,function(n){if(_u(n))return t=Di(n.length,t),true}),E(t,function(t){return l(n,j(t))})}function Qe(n,t){if(!n||!n.length)return[];var e=Ye(n);return null==t?e:l(e,function(n){ +return r(t,F,n)})}function Xe(n){return n=On(n),n.__chain__=true,n}function nu(n,t){return t(n)}function tu(){return this}function ru(n,t){return(af(n)?u:oo)(n,je(t,3))}function eu(n,t){return(af(n)?i:fo)(n,je(t,3))}function uu(n,t){return(af(n)?l:Yt)(n,je(t,3))}function iu(n,t,r){return t=r?F:t,t=n&&null==t?n.length:t,le(n,128,F,F,F,F,t)}function ou(n,t){var r;if(typeof t!="function")throw new ei("Expected a function");return n=Ou(n),function(){return 0<--n&&(r=t.apply(this,arguments)),1>=n&&(t=F), +r}}function fu(n,t,r){return t=r?F:t,n=le(n,8,F,F,F,F,F,t),n.placeholder=fu.placeholder,n}function cu(n,t,r){return t=r?F:t,n=le(n,16,F,F,F,F,F,t),n.placeholder=cu.placeholder,n}function au(n,t,r){function e(t){var r=c,e=a;return c=a=F,_=t,s=n.apply(e,r)}function u(n){var r=n-p;return n-=_,p===F||r>=t||0>r||g&&n>=l}function i(){var n=Jo();if(u(n))return o(n);var r,e=jo;r=n-_,n=t-(n-p),r=g?Mi(n,l-r):n,h=e(i,r)}function o(n){return h=F,d&&c?e(n):(c=a=F,s)}function f(){var n=Jo(),r=u(n);if(c=arguments, +a=this,p=n,r){if(h===F)return _=n=p,h=jo(i,t),v?e(n):s;if(g)return h=jo(i,t),e(p)}return h===F&&(h=jo(i,t)),s}var c,a,l,s,h,p,_=0,v=false,g=false,d=true;if(typeof n!="function")throw new ei("Expected a function");return t=Iu(t)||0,bu(r)&&(v=!!r.leading,l=(g="maxWait"in r)?Di(Iu(r.maxWait)||0,t):l,d="trailing"in r?!!r.trailing:d),f.cancel=function(){h!==F&&ho(h),_=0,c=p=a=h=F},f.flush=function(){return h===F?s:o(Jo())},f}function lu(n,t){function r(){var e=arguments,u=t?t.apply(this,e):e[0],i=r.cache;return i.has(u)?i.get(u):(e=n.apply(this,e), +r.cache=i.set(u,e)||i,e)}if(typeof n!="function"||null!=t&&typeof t!="function")throw new ei("Expected a function");return r.cache=new(lu.Cache||Pn),r}function su(n){if(typeof n!="function")throw new ei("Expected a function");return function(){var t=arguments;switch(t.length){case 0:return!n.call(this);case 1:return!n.call(this,t[0]);case 2:return!n.call(this,t[0],t[1]);case 3:return!n.call(this,t[0],t[1],t[2])}return!n.apply(this,t)}}function hu(n,t){return n===t||n!==n&&t!==t}function pu(n){return null!=n&&yu(n.length)&&!gu(n); +}function _u(n){return xu(n)&&pu(n)}function vu(n){if(!xu(n))return false;var t=zt(n);return"[object Error]"==t||"[object DOMException]"==t||typeof n.message=="string"&&typeof n.name=="string"&&!wu(n)}function gu(n){return!!bu(n)&&(n=zt(n),"[object Function]"==n||"[object GeneratorFunction]"==n||"[object AsyncFunction]"==n||"[object Proxy]"==n)}function du(n){return typeof n=="number"&&n==Ou(n)}function yu(n){return typeof n=="number"&&-1=n}function bu(n){var t=typeof n;return null!=n&&("object"==t||"function"==t); +}function xu(n){return null!=n&&typeof n=="object"}function ju(n){return typeof n=="number"||xu(n)&&"[object Number]"==zt(n)}function wu(n){return!(!xu(n)||"[object Object]"!=zt(n))&&(n=bi(n),null===n||(n=ci.call(n,"constructor")&&n.constructor,typeof n=="function"&&n instanceof n&&fi.call(n)==hi))}function mu(n){return typeof n=="string"||!af(n)&&xu(n)&&"[object String]"==zt(n)}function Au(n){return typeof n=="symbol"||xu(n)&&"[object Symbol]"==zt(n)}function ku(n){if(!n)return[];if(pu(n))return mu(n)?$(n):Mr(n); +if(Ai&&n[Ai]){n=n[Ai]();for(var t,r=[];!(t=n.next()).done;)r.push(t.value);return r}return t=yo(n),("[object Map]"==t?L:"[object Set]"==t?D:Du)(n)}function Eu(n){return n?(n=Iu(n),n===N||n===-N?1.7976931348623157e308*(0>n?-1:1):n===n?n:0):0===n?n:0}function Ou(n){n=Eu(n);var t=n%1;return n===n?t?n-t:n:0}function Su(n){return n?gt(Ou(n),0,4294967295):0}function Iu(n){if(typeof n=="number")return n;if(Au(n))return P;if(bu(n)&&(n=typeof n.valueOf=="function"?n.valueOf():n,n=bu(n)?n+"":n),typeof n!="string")return 0===n?n:+n; +n=n.replace(cn,"");var t=bn.test(n);return t||jn.test(n)?Fn(n.slice(2),t?2:8):yn.test(n)?P:+n}function Ru(n){return Tr(n,Uu(n))}function zu(n){return null==n?"":jr(n)}function Wu(n,t,r){return n=null==n?F:It(n,t),n===F?r:n}function Bu(n,t){return null!=n&&ke(n,t,Lt)}function Lu(n){return pu(n)?Gn(n):Ht(n)}function Uu(n){if(pu(n))n=Gn(n,true);else if(bu(n)){var t,r=Le(n),e=[];for(t in n)("constructor"!=t||!r&&ci.call(n,t))&&e.push(t);n=e}else{if(t=[],null!=n)for(r in ni(n))t.push(r);n=t}return n}function Cu(n,t){ +if(null==n)return{};var r=l(ye(n),function(n){return[n]});return t=je(t),ur(n,r,function(n,r){return t(n,r[0])})}function Du(n){return null==n?[]:I(n,Lu(n))}function Mu(n){return Nf(zu(n).toLowerCase())}function Tu(n){return(n=zu(n))&&n.replace(mn,rt).replace(Rn,"")}function $u(n,t,r){return n=zu(n),t=r?F:t,t===F?Ln.test(n)?n.match(Wn)||[]:n.match(_n)||[]:n.match(t)||[]}function Fu(n){return function(){return n}}function Nu(n){return n}function Pu(n){return Gt(typeof n=="function"?n:dt(n,1))}function Zu(n,t,r){ +var e=Lu(t),i=St(t,e);null!=r||bu(t)&&(i.length||!e.length)||(r=t,t=n,n=this,i=St(t,Lu(t)));var o=!(bu(r)&&"chain"in r&&!r.chain),f=gu(n);return u(i,function(r){var e=t[r];n[r]=e,f&&(n.prototype[r]=function(){var t=this.__chain__;if(o||t){var r=n(this.__wrapped__);return(r.__actions__=Mr(this.__actions__)).push({func:e,args:arguments,thisArg:n}),r.__chain__=t,r}return e.apply(n,s([this.value()],arguments))})}),n}function qu(){}function Vu(n){return We(n)?j($e(n)):ir(n)}function Ku(){return[]}function Gu(){ +return false}En=null==En?Zn:it.defaults(Zn.Object(),En,it.pick(Zn,Un));var Hu=En.Array,Ju=En.Date,Yu=En.Error,Qu=En.Function,Xu=En.Math,ni=En.Object,ti=En.RegExp,ri=En.String,ei=En.TypeError,ui=Hu.prototype,ii=ni.prototype,oi=En["__core-js_shared__"],fi=Qu.prototype.toString,ci=ii.hasOwnProperty,ai=0,li=function(){var n=/[^.]+$/.exec(oi&&oi.keys&&oi.keys.IE_PROTO||"");return n?"Symbol(src)_1."+n:""}(),si=ii.toString,hi=fi.call(ni),pi=Zn._,_i=ti("^"+fi.call(ci).replace(on,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),vi=Kn?En.Buffer:F,gi=En.Symbol,di=En.Uint8Array,yi=vi?vi.f:F,bi=U(ni.getPrototypeOf,ni),xi=ni.create,ji=ii.propertyIsEnumerable,wi=ui.splice,mi=gi?gi.isConcatSpreadable:F,Ai=gi?gi.iterator:F,ki=gi?gi.toStringTag:F,Ei=function(){ +try{var n=Ae(ni,"defineProperty");return n({},"",{}),n}catch(n){}}(),Oi=En.clearTimeout!==Zn.clearTimeout&&En.clearTimeout,Si=Ju&&Ju.now!==Zn.Date.now&&Ju.now,Ii=En.setTimeout!==Zn.setTimeout&&En.setTimeout,Ri=Xu.ceil,zi=Xu.floor,Wi=ni.getOwnPropertySymbols,Bi=vi?vi.isBuffer:F,Li=En.isFinite,Ui=ui.join,Ci=U(ni.keys,ni),Di=Xu.max,Mi=Xu.min,Ti=Ju.now,$i=En.parseInt,Fi=Xu.random,Ni=ui.reverse,Pi=Ae(En,"DataView"),Zi=Ae(En,"Map"),qi=Ae(En,"Promise"),Vi=Ae(En,"Set"),Ki=Ae(En,"WeakMap"),Gi=Ae(ni,"create"),Hi=Ki&&new Ki,Ji={},Yi=Fe(Pi),Qi=Fe(Zi),Xi=Fe(qi),no=Fe(Vi),to=Fe(Ki),ro=gi?gi.prototype:F,eo=ro?ro.valueOf:F,uo=ro?ro.toString:F,io=function(){ +function n(){}return function(t){return bu(t)?xi?xi(t):(n.prototype=t,t=new n,n.prototype=F,t):{}}}();On.templateSettings={escape:Q,evaluate:X,interpolate:nn,variable:"",imports:{_:On}},On.prototype=Sn.prototype,On.prototype.constructor=On,zn.prototype=io(Sn.prototype),zn.prototype.constructor=zn,Mn.prototype=io(Sn.prototype),Mn.prototype.constructor=Mn,Tn.prototype.clear=function(){this.__data__=Gi?Gi(null):{},this.size=0},Tn.prototype.delete=function(n){return n=this.has(n)&&delete this.__data__[n], +this.size-=n?1:0,n},Tn.prototype.get=function(n){var t=this.__data__;return Gi?(n=t[n],"__lodash_hash_undefined__"===n?F:n):ci.call(t,n)?t[n]:F},Tn.prototype.has=function(n){var t=this.__data__;return Gi?t[n]!==F:ci.call(t,n)},Tn.prototype.set=function(n,t){var r=this.__data__;return this.size+=this.has(n)?0:1,r[n]=Gi&&t===F?"__lodash_hash_undefined__":t,this},Nn.prototype.clear=function(){this.__data__=[],this.size=0},Nn.prototype.delete=function(n){var t=this.__data__;return n=lt(t,n),!(0>n)&&(n==t.length-1?t.pop():wi.call(t,n,1), +--this.size,true)},Nn.prototype.get=function(n){var t=this.__data__;return n=lt(t,n),0>n?F:t[n][1]},Nn.prototype.has=function(n){return-1e?(++this.size,r.push([n,t])):r[e][1]=t,this},Pn.prototype.clear=function(){this.size=0,this.__data__={hash:new Tn,map:new(Zi||Nn),string:new Tn}},Pn.prototype.delete=function(n){return n=we(this,n).delete(n),this.size-=n?1:0,n},Pn.prototype.get=function(n){return we(this,n).get(n); +},Pn.prototype.has=function(n){return we(this,n).has(n)},Pn.prototype.set=function(n,t){var r=we(this,n),e=r.size;return r.set(n,t),this.size+=r.size==e?0:1,this},qn.prototype.add=qn.prototype.push=function(n){return this.__data__.set(n,"__lodash_hash_undefined__"),this},qn.prototype.has=function(n){return this.__data__.has(n)},Vn.prototype.clear=function(){this.__data__=new Nn,this.size=0},Vn.prototype.delete=function(n){var t=this.__data__;return n=t.delete(n),this.size=t.size,n},Vn.prototype.get=function(n){ +return this.__data__.get(n)},Vn.prototype.has=function(n){return this.__data__.has(n)},Vn.prototype.set=function(n,t){var r=this.__data__;if(r instanceof Nn){var e=r.__data__;if(!Zi||199>e.length)return e.push([n,t]),this.size=++r.size,this;r=this.__data__=new Pn(e)}return r.set(n,t),this.size=r.size,this};var oo=Zr(Et),fo=Zr(Ot,true),co=qr(),ao=qr(true),lo=Hi?function(n,t){return Hi.set(n,t),n}:Nu,so=Ei?function(n,t){return Ei(n,"toString",{configurable:true,enumerable:false,value:Fu(t),writable:true})}:Nu,ho=Oi||function(n){ +return Zn.clearTimeout(n)},po=Vi&&1/D(new Vi([,-0]))[1]==N?function(n){return new Vi(n)}:qu,_o=Hi?function(n){return Hi.get(n)}:qu,vo=Wi?function(n){return null==n?[]:(n=ni(n),f(Wi(n),function(t){return ji.call(n,t)}))}:Ku,go=Wi?function(n){for(var t=[];n;)s(t,vo(n)),n=bi(n);return t}:Ku,yo=zt;(Pi&&"[object DataView]"!=yo(new Pi(new ArrayBuffer(1)))||Zi&&"[object Map]"!=yo(new Zi)||qi&&"[object Promise]"!=yo(qi.resolve())||Vi&&"[object Set]"!=yo(new Vi)||Ki&&"[object WeakMap]"!=yo(new Ki))&&(yo=function(n){ +var t=zt(n);if(n=(n="[object Object]"==t?n.constructor:F)?Fe(n):"")switch(n){case Yi:return"[object DataView]";case Qi:return"[object Map]";case Xi:return"[object Promise]";case no:return"[object Set]";case to:return"[object WeakMap]"}return t});var bo=oi?gu:Gu,xo=Me(lo),jo=Ii||function(n,t){return Zn.setTimeout(n,t)},wo=Me(so),mo=function(n){n=lu(n,function(n){return 500===t.size&&t.clear(),n});var t=n.cache;return n}(function(n){var t=[];return en.test(n)&&t.push(""),n.replace(un,function(n,r,e,u){ +t.push(e?u.replace(vn,"$1"):r||n)}),t}),Ao=lr(function(n,t){return _u(n)?jt(n,kt(t,1,_u,true)):[]}),ko=lr(function(n,t){var r=Ge(t);return _u(r)&&(r=F),_u(n)?jt(n,kt(t,1,_u,true),je(r,2)):[]}),Eo=lr(function(n,t){var r=Ge(t);return _u(r)&&(r=F),_u(n)?jt(n,kt(t,1,_u,true),F,r):[]}),Oo=lr(function(n){var t=l(n,Sr);return t.length&&t[0]===n[0]?Ut(t):[]}),So=lr(function(n){var t=Ge(n),r=l(n,Sr);return t===Ge(r)?t=F:r.pop(),r.length&&r[0]===n[0]?Ut(r,je(t,2)):[]}),Io=lr(function(n){var t=Ge(n),r=l(n,Sr);return(t=typeof t=="function"?t:F)&&r.pop(), +r.length&&r[0]===n[0]?Ut(r,F,t):[]}),Ro=lr(He),zo=ge(function(n,t){var r=null==n?0:n.length,e=vt(n,t);return fr(n,l(t,function(n){return Re(n,r)?+n:n}).sort(Ur)),e}),Wo=lr(function(n){return wr(kt(n,1,_u,true))}),Bo=lr(function(n){var t=Ge(n);return _u(t)&&(t=F),wr(kt(n,1,_u,true),je(t,2))}),Lo=lr(function(n){var t=Ge(n),t=typeof t=="function"?t:F;return wr(kt(n,1,_u,true),F,t)}),Uo=lr(function(n,t){return _u(n)?jt(n,t):[]}),Co=lr(function(n){return Er(f(n,_u))}),Do=lr(function(n){var t=Ge(n);return _u(t)&&(t=F), +Er(f(n,_u),je(t,2))}),Mo=lr(function(n){var t=Ge(n),t=typeof t=="function"?t:F;return Er(f(n,_u),F,t)}),To=lr(Ye),$o=lr(function(n){var t=n.length,t=1=t}),cf=Mt(function(){return arguments}())?Mt:function(n){return xu(n)&&ci.call(n,"callee")&&!ji.call(n,"callee")},af=Hu.isArray,lf=Hn?S(Hn):Tt,sf=Bi||Gu,hf=Jn?S(Jn):$t,pf=Yn?S(Yn):Nt,_f=Qn?S(Qn):qt,vf=Xn?S(Xn):Vt,gf=nt?S(nt):Kt,df=oe(Jt),yf=oe(function(n,t){return n<=t}),bf=Pr(function(n,t){ +if(Le(t)||pu(t))Tr(t,Lu(t),n);else for(var r in t)ci.call(t,r)&&at(n,r,t[r])}),xf=Pr(function(n,t){Tr(t,Uu(t),n)}),jf=Pr(function(n,t,r,e){Tr(t,Uu(t),n,e)}),wf=Pr(function(n,t,r,e){Tr(t,Lu(t),n,e)}),mf=ge(vt),Af=lr(function(n){return n.push(F,se),r(jf,F,n)}),kf=lr(function(n){return n.push(F,he),r(Rf,F,n)}),Ef=ne(function(n,t,r){n[t]=r},Fu(Nu)),Of=ne(function(n,t,r){ci.call(n,t)?n[t].push(r):n[t]=[r]},je),Sf=lr(Dt),If=Pr(function(n,t,r){nr(n,t,r)}),Rf=Pr(function(n,t,r,e){nr(n,t,r,e)}),zf=ge(function(n,t){ +var r={};if(null==n)return r;var e=false;t=l(t,function(t){return t=Rr(t,n),e||(e=1--n)return t.apply(this,arguments)}},On.ary=iu,On.assign=bf,On.assignIn=xf,On.assignInWith=jf,On.assignWith=wf,On.at=mf,On.before=ou,On.bind=Yo,On.bindAll=Zf,On.bindKey=Qo,On.castArray=function(){if(!arguments.length)return[];var n=arguments[0];return af(n)?n:[n]}, +On.chain=Xe,On.chunk=function(n,t,r){if(t=(r?ze(n,t,r):t===F)?1:Di(Ou(t),0),r=null==n?0:n.length,!r||1>t)return[];for(var e=0,u=0,i=Hu(Ri(r/t));et?0:t,e)):[]},On.dropRight=function(n,t,r){var e=null==n?0:n.length;return e?(t=r||t===F?1:Ou(t),t=e-t,vr(n,0,0>t?0:t)):[]},On.dropRightWhile=function(n,t){return n&&n.length?Ar(n,je(t,3),true,true):[]},On.dropWhile=function(n,t){return n&&n.length?Ar(n,je(t,3),true):[]},On.fill=function(n,t,r,e){var u=null==n?0:n.length;if(!u)return[];for(r&&typeof r!="number"&&ze(n,t,r)&&(r=0,e=u),u=n.length,r=Ou(r),0>r&&(r=-r>u?0:u+r),e=e===F||e>u?u:Ou(e),0>e&&(e+=u),e=r>e?0:Su(e);r>>0,r?(n=zu(n))&&(typeof t=="string"||null!=t&&!_f(t))&&(t=jr(t), +!t&&Bn.test(n))?zr($(n),0,r):n.split(t,r):[]},On.spread=function(n,t){if(typeof n!="function")throw new ei("Expected a function");return t=null==t?0:Di(Ou(t),0),lr(function(e){var u=e[t];return e=zr(e,0,t),u&&s(e,u),r(n,this,e)})},On.tail=function(n){var t=null==n?0:n.length;return t?vr(n,1,t):[]},On.take=function(n,t,r){return n&&n.length?(t=r||t===F?1:Ou(t),vr(n,0,0>t?0:t)):[]},On.takeRight=function(n,t,r){var e=null==n?0:n.length;return e?(t=r||t===F?1:Ou(t),t=e-t,vr(n,0>t?0:t,e)):[]},On.takeRightWhile=function(n,t){ +return n&&n.length?Ar(n,je(t,3),false,true):[]},On.takeWhile=function(n,t){return n&&n.length?Ar(n,je(t,3)):[]},On.tap=function(n,t){return t(n),n},On.throttle=function(n,t,r){var e=true,u=true;if(typeof n!="function")throw new ei("Expected a function");return bu(r)&&(e="leading"in r?!!r.leading:e,u="trailing"in r?!!r.trailing:u),au(n,t,{leading:e,maxWait:t,trailing:u})},On.thru=nu,On.toArray=ku,On.toPairs=Bf,On.toPairsIn=Lf,On.toPath=function(n){return af(n)?l(n,$e):Au(n)?[n]:Mr(mo(zu(n)))},On.toPlainObject=Ru, +On.transform=function(n,t,r){var e=af(n),i=e||sf(n)||gf(n);if(t=je(t,4),null==r){var o=n&&n.constructor;r=i?e?new o:[]:bu(n)&&gu(o)?io(bi(n)):{}}return(i?u:Et)(n,function(n,e,u){return t(r,n,e,u)}),r},On.unary=function(n){return iu(n,1)},On.union=Wo,On.unionBy=Bo,On.unionWith=Lo,On.uniq=function(n){return n&&n.length?wr(n):[]},On.uniqBy=function(n,t){return n&&n.length?wr(n,je(t,2)):[]},On.uniqWith=function(n,t){return t=typeof t=="function"?t:F,n&&n.length?wr(n,F,t):[]},On.unset=function(n,t){return null==n||mr(n,t); +},On.unzip=Ye,On.unzipWith=Qe,On.update=function(n,t,r){return null==n?n:pr(n,t,Ir(r)(It(n,t)),void 0)},On.updateWith=function(n,t,r,e){return e=typeof e=="function"?e:F,null!=n&&(n=pr(n,t,Ir(r)(It(n,t)),e)),n},On.values=Du,On.valuesIn=function(n){return null==n?[]:I(n,Uu(n))},On.without=Uo,On.words=$u,On.wrap=function(n,t){return rf(Ir(t),n)},On.xor=Co,On.xorBy=Do,On.xorWith=Mo,On.zip=To,On.zipObject=function(n,t){return Or(n||[],t||[],at)},On.zipObjectDeep=function(n,t){return Or(n||[],t||[],pr); +},On.zipWith=$o,On.entries=Bf,On.entriesIn=Lf,On.extend=xf,On.extendWith=jf,Zu(On,On),On.add=nc,On.attempt=Pf,On.camelCase=Uf,On.capitalize=Mu,On.ceil=tc,On.clamp=function(n,t,r){return r===F&&(r=t,t=F),r!==F&&(r=Iu(r),r=r===r?r:0),t!==F&&(t=Iu(t),t=t===t?t:0),gt(Iu(n),t,r)},On.clone=function(n){return dt(n,4)},On.cloneDeep=function(n){return dt(n,5)},On.cloneDeepWith=function(n,t){return t=typeof t=="function"?t:F,dt(n,5,t)},On.cloneWith=function(n,t){return t=typeof t=="function"?t:F,dt(n,4,t)}, +On.conformsTo=function(n,t){return null==t||bt(n,t,Lu(t))},On.deburr=Tu,On.defaultTo=function(n,t){return null==n||n!==n?t:n},On.divide=rc,On.endsWith=function(n,t,r){n=zu(n),t=jr(t);var e=n.length,e=r=r===F?e:gt(Ou(r),0,e);return r-=t.length,0<=r&&n.slice(r,e)==t},On.eq=hu,On.escape=function(n){return(n=zu(n))&&Y.test(n)?n.replace(H,et):n},On.escapeRegExp=function(n){return(n=zu(n))&&fn.test(n)?n.replace(on,"\\$&"):n},On.every=function(n,t,r){var e=af(n)?o:wt;return r&&ze(n,t,r)&&(t=F),e(n,je(t,3)); +},On.find=Po,On.findIndex=Ze,On.findKey=function(n,t){return v(n,je(t,3),Et)},On.findLast=Zo,On.findLastIndex=qe,On.findLastKey=function(n,t){return v(n,je(t,3),Ot)},On.floor=ec,On.forEach=ru,On.forEachRight=eu,On.forIn=function(n,t){return null==n?n:co(n,je(t,3),Uu)},On.forInRight=function(n,t){return null==n?n:ao(n,je(t,3),Uu)},On.forOwn=function(n,t){return n&&Et(n,je(t,3))},On.forOwnRight=function(n,t){return n&&Ot(n,je(t,3))},On.get=Wu,On.gt=of,On.gte=ff,On.has=function(n,t){return null!=n&&ke(n,t,Bt); +},On.hasIn=Bu,On.head=Ke,On.identity=Nu,On.includes=function(n,t,r,e){return n=pu(n)?n:Du(n),r=r&&!e?Ou(r):0,e=n.length,0>r&&(r=Di(e+r,0)),mu(n)?r<=e&&-1r&&(r=Di(e+r,0)),d(n,t,r)):-1},On.inRange=function(n,t,r){return t=Eu(t),r===F?(r=t,t=0):r=Eu(r),n=Iu(n),n>=Mi(t,r)&&n=n},On.isSet=vf,On.isString=mu,On.isSymbol=Au,On.isTypedArray=gf,On.isUndefined=function(n){return n===F},On.isWeakMap=function(n){return xu(n)&&"[object WeakMap]"==yo(n)},On.isWeakSet=function(n){return xu(n)&&"[object WeakSet]"==zt(n)},On.join=function(n,t){ +return null==n?"":Ui.call(n,t)},On.kebabCase=Cf,On.last=Ge,On.lastIndexOf=function(n,t,r){var e=null==n?0:n.length;if(!e)return-1;var u=e;if(r!==F&&(u=Ou(r),u=0>u?Di(e+u,0):Mi(u,e-1)),t===t){for(r=u+1;r--&&n[r]!==t;);n=r}else n=g(n,b,u,true);return n},On.lowerCase=Df,On.lowerFirst=Mf,On.lt=df,On.lte=yf,On.max=function(n){return n&&n.length?mt(n,Nu,Wt):F},On.maxBy=function(n,t){return n&&n.length?mt(n,je(t,2),Wt):F},On.mean=function(n){return x(n,Nu)},On.meanBy=function(n,t){return x(n,je(t,2))},On.min=function(n){ +return n&&n.length?mt(n,Nu,Jt):F},On.minBy=function(n,t){return n&&n.length?mt(n,je(t,2),Jt):F},On.stubArray=Ku,On.stubFalse=Gu,On.stubObject=function(){return{}},On.stubString=function(){return""},On.stubTrue=function(){return true},On.multiply=uc,On.nth=function(n,t){return n&&n.length?tr(n,Ou(t)):F},On.noConflict=function(){return Zn._===this&&(Zn._=pi),this},On.noop=qu,On.now=Jo,On.pad=function(n,t,r){n=zu(n);var e=(t=Ou(t))?T(n):0;return!t||e>=t?n:(t=(t-e)/2,ee(zi(t),r)+n+ee(Ri(t),r))},On.padEnd=function(n,t,r){ +n=zu(n);var e=(t=Ou(t))?T(n):0;return t&&et){var e=n;n=t,t=e}return r||n%1||t%1?(r=Fi(),Mi(n+r*(t-n+$n("1e-"+((r+"").length-1))),t)):cr(n,t); +},On.reduce=function(n,t,r){var e=af(n)?h:m,u=3>arguments.length;return e(n,je(t,4),r,u,oo)},On.reduceRight=function(n,t,r){var e=af(n)?p:m,u=3>arguments.length;return e(n,je(t,4),r,u,fo)},On.repeat=function(n,t,r){return t=(r?ze(n,t,r):t===F)?1:Ou(t),ar(zu(n),t)},On.replace=function(){var n=arguments,t=zu(n[0]);return 3>n.length?t:t.replace(n[1],n[2])},On.result=function(n,t,r){t=Rr(t,n);var e=-1,u=t.length;for(u||(u=1,n=F);++en||9007199254740991=i)return n;if(i=r-T(e),1>i)return e; +if(r=o?zr(o,0,i).join(""):n.slice(0,i),u===F)return r+e;if(o&&(i+=r.length-i),_f(u)){if(n.slice(i).search(u)){var f=r;for(u.global||(u=ti(u.source,zu(dn.exec(u))+"g")),u.lastIndex=0;o=u.exec(f);)var c=o.index;r=r.slice(0,c===F?i:c)}}else n.indexOf(jr(u),i)!=i&&(u=r.lastIndexOf(u),-1e.__dir__?"Right":"")}),e},Mn.prototype[n+"Right"]=function(t){ +return this.reverse()[n](t).reverse()}}),u(["filter","map","takeWhile"],function(n,t){var r=t+1,e=1==r||3==r;Mn.prototype[n]=function(n){var t=this.clone();return t.__iteratees__.push({iteratee:je(n,3),type:r}),t.__filtered__=t.__filtered__||e,t}}),u(["head","last"],function(n,t){var r="take"+(t?"Right":"");Mn.prototype[n]=function(){return this[r](1).value()[0]}}),u(["initial","tail"],function(n,t){var r="drop"+(t?"":"Right");Mn.prototype[n]=function(){return this.__filtered__?new Mn(this):this[r](1); +}}),Mn.prototype.compact=function(){return this.filter(Nu)},Mn.prototype.find=function(n){return this.filter(n).head()},Mn.prototype.findLast=function(n){return this.reverse().find(n)},Mn.prototype.invokeMap=lr(function(n,t){return typeof n=="function"?new Mn(this):this.map(function(r){return Dt(r,n,t)})}),Mn.prototype.reject=function(n){return this.filter(su(je(n)))},Mn.prototype.slice=function(n,t){n=Ou(n);var r=this;return r.__filtered__&&(0t)?new Mn(r):(0>n?r=r.takeRight(-n):n&&(r=r.drop(n)), +t!==F&&(t=Ou(t),r=0>t?r.dropRight(-t):r.take(t-n)),r)},Mn.prototype.takeRightWhile=function(n){return this.reverse().takeWhile(n).reverse()},Mn.prototype.toArray=function(){return this.take(4294967295)},Et(Mn.prototype,function(n,t){var r=/^(?:filter|find|map|reject)|While$/.test(t),e=/^(?:head|last)$/.test(t),u=On[e?"take"+("last"==t?"Right":""):t],i=e||/^find/.test(t);u&&(On.prototype[t]=function(){function t(n){return n=u.apply(On,s([n],f)),e&&h?n[0]:n}var o=this.__wrapped__,f=e?[1]:arguments,c=o instanceof Mn,a=f[0],l=c||af(o); +l&&r&&typeof a=="function"&&1!=a.length&&(c=l=false);var h=this.__chain__,p=!!this.__actions__.length,a=i&&!h,c=c&&!p;return!i&&l?(o=c?o:new Mn(this),o=n.apply(o,f),o.__actions__.push({func:nu,args:[t],thisArg:F}),new zn(o,h)):a&&c?n.apply(this,f):(o=this.thru(t),a?e?o.value()[0]:o.value():o)})}),u("pop push shift sort splice unshift".split(" "),function(n){var t=ui[n],r=/^(?:push|sort|unshift)$/.test(n)?"tap":"thru",e=/^(?:pop|shift)$/.test(n);On.prototype[n]=function(){var n=arguments;if(e&&!this.__chain__){ +var u=this.value();return t.apply(af(u)?u:[],n)}return this[r](function(r){return t.apply(af(r)?r:[],n)})}}),Et(Mn.prototype,function(n,t){var r=On[t];if(r){var e=r.name+"";(Ji[e]||(Ji[e]=[])).push({name:t,func:r})}}),Ji[Xr(F,2).name]=[{name:"wrapper",func:F}],Mn.prototype.clone=function(){var n=new Mn(this.__wrapped__);return n.__actions__=Mr(this.__actions__),n.__dir__=this.__dir__,n.__filtered__=this.__filtered__,n.__iteratees__=Mr(this.__iteratees__),n.__takeCount__=this.__takeCount__,n.__views__=Mr(this.__views__), +n},Mn.prototype.reverse=function(){if(this.__filtered__){var n=new Mn(this);n.__dir__=-1,n.__filtered__=true}else n=this.clone(),n.__dir__*=-1;return n},Mn.prototype.value=function(){var n,t=this.__wrapped__.value(),r=this.__dir__,e=af(t),u=0>r,i=e?t.length:0;n=i;for(var o=this.__views__,f=0,c=-1,a=o.length;++c=this.__values__.length;return{done:n,value:n?F:this.__values__[this.__index__++]}},On.prototype.plant=function(n){for(var t,r=this;r instanceof Sn;){var e=Pe(r);e.__index__=0,e.__values__=F,t?u.__wrapped__=e:t=e;var u=e,r=r.__wrapped__}return u.__wrapped__=n,t},On.prototype.reverse=function(){var n=this.__wrapped__;return n instanceof Mn?(this.__actions__.length&&(n=new Mn(this)),n=n.reverse(),n.__actions__.push({func:nu,args:[Je],thisArg:F}),new zn(n,this.__chain__)):this.thru(Je); +},On.prototype.toJSON=On.prototype.valueOf=On.prototype.value=function(){return kr(this.__wrapped__,this.__actions__)},On.prototype.first=On.prototype.head,Ai&&(On.prototype[Ai]=tu),On}();typeof define=="function"&&typeof define.amd=="object"&&define.amd?(Zn._=it, define(function(){return it})):Vn?((Vn.exports=it)._=it,qn._=it):Zn._=it}).call(this); \ No newline at end of file diff --git a/scripts/system/particle_explorer/particle-style.css b/scripts/system/particle_explorer/particle-style.css new file mode 100644 index 0000000000..6338162f19 --- /dev/null +++ b/scripts/system/particle_explorer/particle-style.css @@ -0,0 +1,119 @@ +/* +// particle-style.css +// +// Created by Matti 'Menithal' Lahtinen on 21 May 2017 +// Copyright 2017 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +*/ + +input[type="button"] { + margin: 0.4rem; + +} + +.spatial-group { + max-height: 0; + -webkit-transition: max-height 0.15s ease-out; + transition: max-height 0.15s ease-out; + overflow: hidden; +} +.spatial-group.visible { + transition: max-height 0.25s ease-in; +} +.section-wrap { + width: 100%; +} +.property { + padding: 0.4rem 0; + margin: 0; +} +.property.checkbox { + margin: 0; +} +.property.range label{ + display: block; +} +.property.range input[type=number]{ + margin-left: 0.8rem; + width: 4.2rem; + height: 1.8rem; +} +input[type=range] { + -webkit-appearance: none; + background: #2e2e2e; + height: 1.8rem; + border-radius: 1rem; +} +input[type=range]::-webkit-slider-thumb { + -webkit-appearance:none; + width: 0.6rem; + height: 1.8rem; + padding:0; + margin: 0; + background-color: #696969; + border-radius: 1rem; +} +input[type=range]:focus { /*#252525*/ + outline: none; +} +.tuple label { + text-transform: capitalize; +} +.slider-wrapper { + display: table; + padding: 0.4rem 0; +} +hr.splitter{ + width: 100%; + padding: 0.2rem 0 0 0; + margin: 0; + position: relative; + clear: both; +} +hr.splitter:last-of-type{ + padding:0; +} +#rem { + height: 1rem; + width: 1rem; +} +.property { + width: 14rem; + min-height: 2rem; + float:left; +} +.property.color-section{ + + width: 24rem; +} + +.property.texture { + display: block; +} +.property.texture input{ + margin: 0.4rem 0; +} +.texture-image img{ + padding: 0; + margin: 0; + width: 100%; + height: 100%; + display: none; +} +.texture-image { + display: block; + position: relative; + background-repeat: no-repeat; + background-position: center; + background-size: 100% 100%; + margin-top: 0.4rem; + height:128px; + width: 128px; + background-image: url('data:image/png;base64,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'); +} + +.texture-image.no-texture{ + background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAAB81JREFUeNrsnTGPm0oXht97FWm2Ch2pTEeHpUihsyvTuXO67Ta/IPkr+Qfp3MWdO7Zad0SKZDo6XIWOrTzV9xVXZ8SygGHXG4/t96lW68GGw8vMmZlzDv98+/btfyBXy780wXXzTv74/fs3rXFFfPz4kT0AoQAoAJqAAiAUAKEACAVAKABCARAKgFAAhAIgFAChAAgFQCgAQgEQCoBQAIQCIBQAoQAIBUAoAHLmvDv3C7i7u4PjOMiyDOv1+mC75XKJoiga2wRBAN/34TgOHMdBWZYoigJpmiLPcwrARhzHAQD4vg/P81pvlLRrwvM8zGYz00ZrbY5xHAe+7yPPc9zf36MsSwrAVmazGX78+DHoGM/zsFgsAAB5nmOz2ZgeQimF8XiMMAxNu+VyaQRCH8Ai8jyH4zgIw7D3MUopzOdzAECaplitVk+GB601kiTBz58/obWG4ziIoohOoI38+vULABCGYWd3X2U6nUIphbIsEcdxa7uiKPDw8GCGGtd1KQDbKMsSWZZBKYXJZNLrGN/3zdN/iDRNTdcvx1EAFqGUwmazeeIQduG6LpRSAIAsy3r9hrRjD2BxL5AkiXEI+8wetNa9PXtp13eIoQBOQJIkxmHrcgjlJkov8JKpJwVgIVpr47CFYdh6g/f7/ZM5/9CehgKwmDRNURQFlFKYTqeNN/rx8dH0AH2faBn7KYAzQKZ1QRCYZd0qf/78MX+PRqNe3ymO5W63owBsR9bwZShoGirEq++zeBQEweBZAwVwYh4eHqC1RhAErQ6jOHVdK3yu65qhJE1TDgHn5BDKTW6auxdFYdYOgiDAYrF40k4phTAM8fnzZyilUBRF54rhOfIOF06SJMYPaPt8v99jOp3C8zx4nget9bPZQ5ZlF3fzL0IAZVke9OLv7+/Njl/brCHLMozHY4xGI3z48MH0EEVRIMuyi40H+EdqBbNS6HXBSqGEAiAUAAVAE1AAhAIgFAChAAgFQCgAQgGQq+Eom0GLxeJgGHYVSdCUhM02yrI0qV5hGGIymaAsy9b0LNd1cXt7CwDYbDa98wOA/zKLVquVSQGr/nYTbe2iKDIh53JtZVmiLEvsdjtst9tn5z7EDmfXA3QFXdaTMbvYbrdm568tgkdueJ7njbt3QwJA+8YJ1tsFQQDXdXFzc2N2E0Uwk8kEX758eXbMEDtY2QOsVqtn//v69SsAYL1eH9xK7dNGgjuiKMJ4PH4WmSN7+QBMFu/3798bn1oAzz47NvVrqmYgz2azRpv1scNV+wDVaN969y6JIEmSWBmyJenlIgZbcgvOzgmUqJxqkmY18ldCvGwkz/MntQcogBcgETrVMV98Aptvfh1JTKEAXsBms4HWGp7nYT6fw3Ec5Hlufbi253lQSkFr3VqmhgLoQVmW2G63ZigQx8/2my/FKCR17WLWAV7LfD5vzOFLkqS1W0/T1HT9RVFY5/jNZjMz3ouvorVGHMet9QheYoer7AGq478Y2LaiDTc3N3Bd90megSwG2YQVPcDQ+a/ccK01ttutWSWsetl/i7bfq16TzP1lGFgul0exw9X2AJLGJV3joRXCl3rnXbUDhmQKl2WJ9XoNrbV1vdXZCUCWWqvVQGR8HFIgqmuaKUiCSJcA+nrzWmvzdA/ZN6EAKlTz/eXmA3iSuXOoNEzfBRsA+PTpU+PnUjxSfnvo9/ZNR6cAakjFj2rqd3VtQJ6u1z5h1e+SdYbqdK5aWHLImC0OoFQgpRN4YPoD/LfRVC8C2TQlkhVC3/dfVDG0/l1xHCOKIvi+b572atJoURSdtYnbfAHxV0aj0TP/oY8dzqYH6OscHXK26tO+rqcujmNTIKqtJkDfc0vTFMvl8smu436/R57niOO4NSbh0HfLkFHtpYbY4dgwOfRKYXIooQAIBUAB0AQUAKEACAVAKABCARAKgFAA5Gp4s93AKIrw/v17ExsnFEWB/X6P3W6HLMtaN0+GJkwOad+W2FlPLq3GHFSRdq85h2PYyGoByG6cvJOnHiEryZJSg7e+s1ZNmOyzSza0ffWYJsIwbMzk7Tp+6Dm81kZWC0BoCnSU7dowDE2K12q1alT60EDJYwVWKqUQRdHgPf9jnfMQG52dDyA5fLKnLlGztiB5Bn1eP3fuNvr31IaWZM9jhHIdEwk5G1Jk4hxtdPJZQJZlJrLWlnBpx3FMmrnrup3RReduIyumgXJxtryRUxw4mQXIO4Yv0UZWCMDWN3I2vX7u0mxk1RtDmp6yoQmTbe27kjK7iOMYt7e3CIIA2+22VyLIWyZ5Hrsnsmol0Jac+fo51QtSXJKNrOgBuvLsTrUOUO8FxAP3ff/gTXiLc3irt5aevAdQSpmpja0vZqq+fm4ymfz18i5vaaOTC0DSvapv8rQRmRY6joPxeHwxNjqpAGSpUwx8ikKJQ5AyNFKb4BJsdBIfwPM8BEFgFjXSNG3debMJSUv7GyuWf8tGby6Aaq2c+qvaJce/a3p2ioTJQ73A3d3di6aBbef8WhtZKQDJ6K1fTJ7neHx8PFjWTcbbvvPePm8QbVtc6ft/+UwKUdfbDT3n19roGDA59EphciihAAgFQAHQBBQAoQAIBUAoAEIBEAqAUACEAiAUAKEACAVAKABCARAKgFAAhAIgFAChAAgFQC4CkxgiceKEPQC5Iv4/APgB2O7x8IXXAAAAAElFTkSuQmCC'); +} diff --git a/scripts/system/particle_explorer/particleExplorer.html b/scripts/system/particle_explorer/particleExplorer.html index d0d86d79da..bbdb2315ff 100644 --- a/scripts/system/particle_explorer/particleExplorer.html +++ b/scripts/system/particle_explorer/particleExplorer.html @@ -1,95 +1,42 @@ +// + --> - - - - - - - - - - + + + - -
    - -
    -
    -
    -
    -
    - + +
    +
    + + +
    + +
    +
    + diff --git a/scripts/system/particle_explorer/particleExplorer.js b/scripts/system/particle_explorer/particleExplorer.js index 5f66fe7ae6..41fd90b634 100644 --- a/scripts/system/particle_explorer/particleExplorer.js +++ b/scripts/system/particle_explorer/particleExplorer.js @@ -2,550 +2,241 @@ // particleExplorer.js // // Created by James B. Pollack @imgntn on 9/26/2015 -// Copyright 2015 High Fidelity, Inc. +// Copyright 2017 High Fidelity, Inc. +// +// Reworked by Menithal on 20/5/2017 +// // Web app side of the App - contains GUI. -// This is an example of a new, easy way to do two way bindings between dynamically created GUI and in-world entities. +// This is an example of a new, easy way to do two way bindings between dynamically created GUI and in-world entities. // // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -/* global window, alert, EventBridge, dat, listenForSettingsUpdates, createVec3Folder, createQuatFolder, writeVec3ToInterface, writeDataToInterface, - $, document, _, openEventBridge */ +/* HifiEntityUI */ -var Settings = function () { - this.exportSettings = function () { - // copyExportSettingsToClipboard(); - showPreselectedPrompt(); +(function(){ + var menuStructure = { + General: [ + { + id: "importSettings", + name: "Import Settings", + type: "Button", + class: "blue", + callback: function(){} + }, + { + id: "exportSettings", + name: "Export Settings", + type: "Button", + class: "red", + callback: function(){} + }, + { type: "Row" }, + { + id: "isEmitting", + name: "Is Emitting", + type: "Boolean" + }, + { type: "Row" }, + { + id: "lifespan", + name: "Lifespan", + type: "SliderInteger", + min: -1, + max: 3600 + }, + { type: "Row" }, + { + id: "maxParticles", + name: "Max Particles", + type: "SliderInteger", + min: 1, + max: 1000 + }, + { type: "Row" }, + { + id: "textures", + name: "Textures", + type: "Texture" + }, + { type: "Row" } + ], + Emit: [ + { + id: "emitRate", + name: "Emit Rate", + type: "SliderInteger", + max: 1000 + }, + { + id: "emitSpeed", + name: "Emit Speed", + type: "SliderFloat", + max: 5 + }, + + { type: "Row" }, + { + id: "emitOrientation", + name: "Emit Orientation", + type: "VectorQuaternion" + }, + + { type: "Row" }, + { + id: "emitShouldTrail", + name: "Emit Should Trail", + type: "Boolean" + }, + { type: "Row" } + ], + Color: [ + { + id: "color", + name: "Color", + type: "Color", + defaultColor: { + red: 255, + green: 255, + blue: 255 + } + }, + { type: "Row" }, + { + id: "colorSpread", + name: "Color Spread", + type: "Color", + defaultColor: { + red: 0, + green: 0, + blue: 0 + } + }, + { type: "Row" }, + { + id: "colorStart", + name: "Color Start", + type: "Color", + defaultColor: { + red: 255, + green: 255, + blue: 255 + } + }, + { type: "Row" }, + { + id: "colorFinish", + name: "Color Finish", + type: "Color", + defaultColor: { + red: 255, + green: 255, + blue: 255 + } + }, + { type: "Row" } + ], + Acceleration: [ + { + id: "emitAcceleration", + name: "Emit Acceleration", + type: "Vector" + }, + { type: "Row" }, + { + id: "accelerationSpread", + name: "Acceleration Spread", + type: "Vector" + }, + { type: "Row" } + ], + Alpha: [ + { + id: "alpha", + name: "Alpha", + type: "SliderFloat" + }, + { type: "Row" }, + { + id: "alphaSpread", + name: "Alpha Spread", + type: "SliderFloat" + }, + { + id: "alphaStart", + name: "Alpha Start", + type: "SliderFloat" + }, + { + id: "alphaFinish", + name: "Alpha Finish", + type: "SliderFloat" + }, + { type: "Row" } + ], + Polar: [ + { + id: "polarStart", + name: "Polar Start", + type: "SliderRadian" + }, + { + id: "polarFinish", + name: "Polar Finish", + type: "SliderRadian" + }, + { type: "Row" } + ], + Azimuth: [ + { + id: "azimuthStart", + name: "Azimuth Start", + type: "SliderRadian", + min: -Math.PI, + max: 0 + }, + { + id: "azimuthFinish", + name: "Azimuth Finish", + type: "SliderRadian" + }, + { type: "Row" } + ], + Radius: [ + { + id: "particleRadius", + name: "Particle Radius", + type: "SliderFloat", + max: 4.0 + }, + { type: "Row" }, + { + id: "radiusSpread", + name: "Radius Spread", + type: "SliderFloat", + max: 4.0 + }, + { + id: "radiusStart", + name: "Radius Start", + type: "SliderFloat", + max: 4.0 + }, + { + id: "radiusFinish", + name: "Radius Finish", + type: "SliderFloat", + max: 4.0 + }, + { type: "Row" } + ] }; - this.importSettings = function () { - importSettings(); - }; -}; + // Web Bridge Binding here! -// 2-way bindings-aren't quite ready yet. see bottom of file. -var AUTO_UPDATE = false; -var UPDATE_ALL_FREQUENCY = 100; + var root = document.getElementById("particle-explorer"); -var controllers = []; -var colpickKeys = []; -var folders = []; -var gui = null; -var settings = new Settings(); -var updateInterval; - -var active = false; - -var currentInputField; -var storedController; -// CHANGE TO WHITELIST -var keysToAllow = [ - 'isEmitting', - 'maxParticles', - 'lifespan', - 'emitRate', - 'emitSpeed', - 'speedSpread', - 'emitOrientation', - 'emitDimensions', - 'polarStart', - 'polarFinish', - 'azimuthStart', - 'azimuthFinish', - 'emitAcceleration', - 'accelerationSpread', - 'particleRadius', - 'radiusSpread', - 'radiusStart', - 'radiusFinish', - 'color', - 'colorSpread', - 'colorStart', - 'colorFinish', - 'alpha', - 'alphaSpread', - 'alphaStart', - 'alphaFinish', - 'emitterShouldTrail', - 'textures' -]; - -var individualKeys = []; -var vec3Keys = []; -var quatKeys = []; -var colorKeys = []; - -window.onload = function () { - openEventBridge(function () { - var stringifiedData = JSON.stringify({ - messageType: 'page_loaded' - }); - - EventBridge.emitWebEvent( - stringifiedData - ); - - listenForSettingsUpdates(); - window.onresize = setGUIWidthToWindowWidth; + window.addEventListener('load', function(){ + var ui = new HifiEntityUI(root, menuStructure); + ui.build(); }); - -}; - -function loadGUI() { - // whether or not to autoplace - gui = new dat.GUI({ - autoPlace: false - }); - - // if not autoplacing, put gui in a custom container - if (gui.autoPlace === false) { - var customContainer = document.getElementById('my-gui-container'); - customContainer.appendChild(gui.domElement); - } - - // presets for the GUI itself. a little confusing and import/export is mostly what we want to do at the moment. - // gui.remember(settings); - - colpickKeys = []; - var keys = _.keys(settings); - - _.each(keys, function(key) { - var shouldAllow = _.contains(keysToAllow, key); - - if (shouldAllow) { - var subKeys = _.keys(settings[key]); - var hasX = _.contains(subKeys, 'x'); - var hasY = _.contains(subKeys, 'y'); - var hasZ = _.contains(subKeys, 'z'); - var hasW = _.contains(subKeys, 'w'); - var hasRed = _.contains(subKeys, 'red'); - var hasGreen = _.contains(subKeys, 'green'); - var hasBlue = _.contains(subKeys, 'blue'); - - if ((hasX && hasY && hasZ) && hasW === false) { - vec3Keys.push(key); - } else if (hasX && hasY && hasZ && hasW) { - quatKeys.push(key); - } else if (hasRed || hasGreen || hasBlue) { - colorKeys.push(key); - - } else { - individualKeys.push(key); - } - } - }); - - // alphabetize our keys - individualKeys.sort(); - vec3Keys.sort(); - quatKeys.sort(); - colorKeys.sort(); - - // add to gui in the order they should appear - gui.add(settings, 'importSettings'); - gui.add(settings, 'exportSettings'); - addIndividualKeys(); - addFolders(); - - // set the gui width to match the web window width - gui.width = window.innerWidth; - - // 2-way binding stuff - // if (AUTO_UPDATE) { - // setInterval(manuallyUpdateDisplay, UPDATE_ALL_FREQUENCY); - // registerDOMElementsForListenerBlocking(); - // } - -} - -function addIndividualKeys() { - _.each(individualKeys, function(key) { - // temporary patch for not crashing when this goes below 0 - var controller; - - if (key.indexOf('emitRate') > -1) { - controller = gui.add(settings, key).min(0); - } else { - controller = gui.add(settings, key); - } - - // 2-way - need to fix not being able to input exact values if constantly listening - // controller.listen(); - - // keep track of our controller - controllers.push(controller); - - // hook into change events for this gui controller - controller.onChange(function(value) { - // Fires on every change, drag, keypress, etc. - writeDataToInterface(this.property, value); - }); - - }); -} - -function addFolders() { - _.each(colorKeys, function(key) { - createColorPicker(key); - }); - _.each(vec3Keys, function(key) { - createVec3Folder(key); - }); - _.each(quatKeys, function(key) { - createQuatFolder(key); - }); -} - -function createColorPicker(key) { - var colorObject = settings[key]; - - // Embed colpick's color picker into dat.GUI - var name = document.createElement('span'); - name.className = 'property-name'; - name.innerHTML = key; - - var container = document.createElement('div'); - container.appendChild(name); - - var $colPickContainer = $('
    ', { - id: key.toString(), - class: "color-box" - }); - $colPickContainer.css('background-color', "rgb(" + colorObject.red + "," + colorObject.green + "," + colorObject.blue + ")"); - container.appendChild($colPickContainer[0]); - - var $li = $('
  • ', { class: 'cr object color' }); - $li.append(container); - gui.__ul.appendChild($li[0]); - gui.onResize(); - - $colPickContainer.colpick({ - colorScheme: 'dark', - layout: 'hex', - color: { r: colorObject.red, g: colorObject.green, b: colorObject.blue }, - onSubmit: function (hsb, hex, rgb, el) { - $(el).css('background-color', '#' + hex); - $(el).colpickHide(); - - var obj = {}; - obj[key] = { red: rgb.r, green: rgb.g, blue: rgb.b }; - writeVec3ToInterface(obj); - } - }); - - colpickKeys.push(key); -} - -function createVec3Folder(category) { - var folder = gui.addFolder(category); - - folder.add(settings[category], 'x').step(0.1).onChange(function(value) { - // Fires when a controller loses focus. - var obj = {}; - obj[category] = {}; - obj[category][this.property] = value; - obj[category].y = settings[category].y; - obj[category].z = settings[category].z; - writeVec3ToInterface(obj); - }); - - folder.add(settings[category], 'y').step(0.1).onChange(function(value) { - // Fires when a controller loses focus. - var obj = {}; - obj[category] = {}; - obj[category].x = settings[category].x; - obj[category][this.property] = value; - obj[category].z = settings[category].z; - writeVec3ToInterface(obj); - }); - - folder.add(settings[category], 'z').step(0.1).onChange(function(value) { - // Fires when a controller loses focus. - var obj = {}; - obj[category] = {}; - obj[category].y = settings[category].y; - obj[category].x = settings[category].x; - obj[category][this.property] = value; - writeVec3ToInterface(obj); - }); - - folders.push(folder); - folder.open(); -} - -function createQuatFolder(category) { - var folder = gui.addFolder(category); - - folder.add(settings[category], 'x').step(0.1).onChange(function(value) { - // Fires when a controller loses focus. - var obj = {}; - obj[category] = {}; - obj[category][this.property] = value; - obj[category].y = settings[category].y; - obj[category].z = settings[category].z; - obj[category].w = settings[category].w; - writeVec3ToInterface(obj); - }); - - folder.add(settings[category], 'y').step(0.1).onChange(function(value) { - // Fires when a controller loses focus. - var obj = {}; - obj[category] = {}; - obj[category].x = settings[category].x; - obj[category][this.property] = value; - obj[category].z = settings[category].z; - obj[category].w = settings[category].w; - writeVec3ToInterface(obj); - }); - - folder.add(settings[category], 'z').step(0.1).onChange(function(value) { - // Fires when a controller loses focus. - var obj = {}; - obj[category] = {}; - obj[category].x = settings[category].x; - obj[category].y = settings[category].y; - obj[category][this.property] = value; - obj[category].w = settings[category].w; - writeVec3ToInterface(obj); - }); - - folder.add(settings[category], 'w').step(0.1).onChange(function(value) { - // Fires when a controller loses focus. - var obj = {}; - obj[category] = {}; - obj[category].x = settings[category].x; - obj[category].y = settings[category].y; - obj[category].z = settings[category].z; - obj[category][this.property] = value; - writeVec3ToInterface(obj); - }); - - folders.push(folder); - folder.open(); -} - -function convertColorObjectToArray(colorObject) { - var colorArray = []; - - _.each(colorObject, function(singleColor) { - colorArray.push(singleColor); - }); - - return colorArray; -} - -function convertColorArrayToObject(colorArray) { - var colorObject = { - red: colorArray[0], - green: colorArray[1], - blue: colorArray[2] - }; - - return colorObject; -} - -function writeDataToInterface(property, value) { - var data = {}; - data[property] = value; - - var sendData = { - messageType: "settings_update", - updatedSettings: data - }; - - var stringifiedData = JSON.stringify(sendData); - - EventBridge.emitWebEvent(stringifiedData); -} - -function writeVec3ToInterface(obj) { - var sendData = { - messageType: "settings_update", - updatedSettings: obj - }; - - var stringifiedData = JSON.stringify(sendData); - - EventBridge.emitWebEvent(stringifiedData); -} - -function listenForSettingsUpdates() { - EventBridge.scriptEventReceived.connect(function(data) { - data = JSON.parse(data); - if (data.messageType === 'particle_settings') { - _.each(data.currentProperties, function(value, key) { - settings[key] = {}; - settings[key] = value; - }); - - if (gui) { - manuallyUpdateDisplay(); - } else { - loadGUI(); - } - if (!active) { - // gui.toggleHide(); - gui.closed = false; - } - active = true; - - } else if (data.messageType === "particle_close") { - // none of this seems to work. - // if (active) { - // gui.toggleHide(); - // } - active = false; - gui.closed = true; - } - }); -} - -function manuallyUpdateDisplay() { - // Iterate over all controllers - // this is expensive, write a method for indiviudal controllers and use it when the value is different than a cached value, perhaps. - var i; - for (i in gui.__controllers) { - gui.__controllers[i].updateDisplay(); - } - - // Update color pickers - for (i in colpickKeys) { - var color = settings[colpickKeys[i]]; - var $object = $('#' + colpickKeys[i]); - $object.css('background-color', "rgb(" + color.red + "," + color.green + "," + color.blue + ")"); - $object.colpickSetColor({ r: color.red, g: color.green, b: color.blue }, true); - } -} - -function setGUIWidthToWindowWidth() { - if (gui !== null) { - gui.width = window.innerWidth; - } -} - -function handleInputKeyPress(e) { - if (e.keyCode === 13) { - importSettings(); - } - return false; -} - -function importSettings() { - var importInput = document.getElementById('importer-input'); - - try { - var importedSettings = JSON.parse(importInput.value); - - var keys = _.keys(importedSettings); - - _.each(keys, function(key) { - var shouldAllow = _.contains(keysToAllow, key); - - if (!shouldAllow) { - return; - } - - settings[key] = importedSettings[key]; - }); - - writeVec3ToInterface(settings); - - manuallyUpdateDisplay(); - } catch (e) { - alert('Not properly formatted JSON'); - } -} - -function prepareSettingsForExport() { - var keys = _.keys(settings); - - var exportSettings = {}; - - _.each(keys, function(key) { - var shouldAllow = _.contains(keysToAllow, key); - - if (!shouldAllow) { - return; - } - - if (key.indexOf('color') > -1) { - var colorObject = convertColorArrayToObject(settings[key]); - settings[key] = colorObject; - } - - exportSettings[key] = settings[key]; - }); - - return JSON.stringify(exportSettings, null, 4); -} - -function showPreselectedPrompt() { - var elem = document.getElementById("exported-props"); - var exportSettings = prepareSettingsForExport(); - elem.innerHTML = ""; - var buttonnode = document.createElement('input'); - buttonnode.setAttribute('type', 'button'); - buttonnode.setAttribute('value', 'close'); - elem.appendChild(document.createTextNode("COPY THE BELOW FIELD TO CLIPBOARD:")); - elem.appendChild(document.createElement("br")); - var textAreaNode = document.createElement("textarea"); - textAreaNode.value = exportSettings; - elem.appendChild(textAreaNode); - elem.appendChild(document.createElement("br")); - elem.appendChild(buttonnode); - - buttonnode.onclick = function() { - console.log("click"); - elem.innerHTML = ""; - }; - - // window.alert("Ctrl-C to copy, then Enter.", prepareSettingsForExport()); -} - -function removeContainerDomElement() { - var elem = document.getElementById("my-gui-container"); - elem.parentNode.removeChild(elem); -} - -function removeListenerFromGUI(key) { - _.each(gui.__listening, function(controller, index) { - if (controller.property === key) { - storedController = controller; - gui.__listening.splice(index, 1); - } - }); -} - -// the section below is to try to work at achieving two way bindings; - -function addListenersBackToGUI() { - gui.__listening.push(storedController); - storedController = null; -} - -function registerDOMElementsForListenerBlocking() { - _.each(gui.__controllers, function(controller) { - var input = controller.domElement.childNodes[0]; - input.addEventListener('focus', function() { - console.log('INPUT ELEMENT GOT FOCUS!' + controller.property); - removeListenerFromGUI(controller.property); - }); - }); - - _.each(gui.__controllers, function(controller) { - var input = controller.domElement.childNodes[0]; - input.addEventListener('blur', function() { - console.log('INPUT ELEMENT GOT BLUR!' + controller.property); - addListenersBackToGUI(); - }); - }); - - // also listen to inputs inside of folders - _.each(gui.__folders, function(folder) { - _.each(folder.__controllers, function(controller) { - var input = controller.__input; - input.addEventListener('focus', function() { - console.log('FOLDER ELEMENT GOT FOCUS!' + controller.property); - }); - }); - }); -} +})(); diff --git a/scripts/system/particle_explorer/particleExplorerTool.js b/scripts/system/particle_explorer/particleExplorerTool.js index b3db475ab0..ba5cb8bc3a 100644 --- a/scripts/system/particle_explorer/particleExplorerTool.js +++ b/scripts/system/particle_explorer/particleExplorerTool.js @@ -4,7 +4,7 @@ // Created by Eric Levin on 2/15/16 // Copyright 2016 High Fidelity, Inc. // Adds particleExplorer tool to the edit panel when a user selects a particle entity from the edit tool window -// This is an example of a new, easy way to do two way bindings between dynamically created GUI and in-world entities. +// This is an example of a new, easy way to do two way bindings between dynamically created GUI and in-world entities. // // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html @@ -20,7 +20,7 @@ ParticleExplorerTool = function() { that.createWebView = function() { that.webView = Tablet.getTablet("com.highfidelity.interface.tablet.system"); that.webView.setVisible = function(value) {}; - that.webView.webEventReceived.connect(that.webEventReceived); + that.webView.webEventReceived.connect(that.webEventReceived); } that.destroyWebView = function() { diff --git a/scripts/system/particle_explorer/tester.js b/scripts/system/particle_explorer/tester.js new file mode 100644 index 0000000000..99a3c10838 --- /dev/null +++ b/scripts/system/particle_explorer/tester.js @@ -0,0 +1,8 @@ + +var commsPanel = new OverlayWebWindow({ + title: "Explorer", + source: Script.resolvePath("particleExplorer.html"), + width: 460, + height: 900, + visible: true +}); diff --git a/scripts/system/particle_explorer/underscore-min.js b/scripts/system/particle_explorer/underscore-min.js deleted file mode 100644 index f01025b7bc..0000000000 --- a/scripts/system/particle_explorer/underscore-min.js +++ /dev/null @@ -1,6 +0,0 @@ -// Underscore.js 1.8.3 -// http://underscorejs.org -// (c) 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors -// Underscore may be freely distributed under the MIT license. -(function(){function n(n){function t(t,r,e,u,i,o){for(;i>=0&&o>i;i+=n){var a=u?u[i]:i;e=r(e,t[a],a,t)}return e}return function(r,e,u,i){e=b(e,i,4);var o=!k(r)&&m.keys(r),a=(o||r).length,c=n>0?0:a-1;return arguments.length<3&&(u=r[o?o[c]:c],c+=n),t(r,e,u,o,c,a)}}function t(n){return function(t,r,e){r=x(r,e);for(var u=O(t),i=n>0?0:u-1;i>=0&&u>i;i+=n)if(r(t[i],i,t))return i;return-1}}function r(n,t,r){return function(e,u,i){var o=0,a=O(e);if("number"==typeof i)n>0?o=i>=0?i:Math.max(i+a,o):a=i>=0?Math.min(i+1,a):i+a+1;else if(r&&i&&a)return i=r(e,u),e[i]===u?i:-1;if(u!==u)return i=t(l.call(e,o,a),m.isNaN),i>=0?i+o:-1;for(i=n>0?o:a-1;i>=0&&a>i;i+=n)if(e[i]===u)return i;return-1}}function e(n,t){var r=I.length,e=n.constructor,u=m.isFunction(e)&&e.prototype||a,i="constructor";for(m.has(n,i)&&!m.contains(t,i)&&t.push(i);r--;)i=I[r],i in n&&n[i]!==u[i]&&!m.contains(t,i)&&t.push(i)}var u=this,i=u._,o=Array.prototype,a=Object.prototype,c=Function.prototype,f=o.push,l=o.slice,s=a.toString,p=a.hasOwnProperty,h=Array.isArray,v=Object.keys,g=c.bind,y=Object.create,d=function(){},m=function(n){return n instanceof m?n:this instanceof m?void(this._wrapped=n):new m(n)};"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=m),exports._=m):u._=m,m.VERSION="1.8.3";var b=function(n,t,r){if(t===void 0)return n;switch(null==r?3:r){case 1:return function(r){return n.call(t,r)};case 2:return function(r,e){return n.call(t,r,e)};case 3:return function(r,e,u){return n.call(t,r,e,u)};case 4:return function(r,e,u,i){return n.call(t,r,e,u,i)}}return function(){return n.apply(t,arguments)}},x=function(n,t,r){return null==n?m.identity:m.isFunction(n)?b(n,t,r):m.isObject(n)?m.matcher(n):m.property(n)};m.iteratee=function(n,t){return x(n,t,1/0)};var _=function(n,t){return function(r){var e=arguments.length;if(2>e||null==r)return r;for(var u=1;e>u;u++)for(var i=arguments[u],o=n(i),a=o.length,c=0;a>c;c++){var f=o[c];t&&r[f]!==void 0||(r[f]=i[f])}return r}},j=function(n){if(!m.isObject(n))return{};if(y)return y(n);d.prototype=n;var t=new d;return d.prototype=null,t},w=function(n){return function(t){return null==t?void 0:t[n]}},A=Math.pow(2,53)-1,O=w("length"),k=function(n){var t=O(n);return"number"==typeof t&&t>=0&&A>=t};m.each=m.forEach=function(n,t,r){t=b(t,r);var e,u;if(k(n))for(e=0,u=n.length;u>e;e++)t(n[e],e,n);else{var i=m.keys(n);for(e=0,u=i.length;u>e;e++)t(n[i[e]],i[e],n)}return n},m.map=m.collect=function(n,t,r){t=x(t,r);for(var e=!k(n)&&m.keys(n),u=(e||n).length,i=Array(u),o=0;u>o;o++){var a=e?e[o]:o;i[o]=t(n[a],a,n)}return i},m.reduce=m.foldl=m.inject=n(1),m.reduceRight=m.foldr=n(-1),m.find=m.detect=function(n,t,r){var e;return e=k(n)?m.findIndex(n,t,r):m.findKey(n,t,r),e!==void 0&&e!==-1?n[e]:void 0},m.filter=m.select=function(n,t,r){var e=[];return t=x(t,r),m.each(n,function(n,r,u){t(n,r,u)&&e.push(n)}),e},m.reject=function(n,t,r){return m.filter(n,m.negate(x(t)),r)},m.every=m.all=function(n,t,r){t=x(t,r);for(var e=!k(n)&&m.keys(n),u=(e||n).length,i=0;u>i;i++){var o=e?e[i]:i;if(!t(n[o],o,n))return!1}return!0},m.some=m.any=function(n,t,r){t=x(t,r);for(var e=!k(n)&&m.keys(n),u=(e||n).length,i=0;u>i;i++){var o=e?e[i]:i;if(t(n[o],o,n))return!0}return!1},m.contains=m.includes=m.include=function(n,t,r,e){return k(n)||(n=m.values(n)),("number"!=typeof r||e)&&(r=0),m.indexOf(n,t,r)>=0},m.invoke=function(n,t){var r=l.call(arguments,2),e=m.isFunction(t);return m.map(n,function(n){var u=e?t:n[t];return null==u?u:u.apply(n,r)})},m.pluck=function(n,t){return m.map(n,m.property(t))},m.where=function(n,t){return m.filter(n,m.matcher(t))},m.findWhere=function(n,t){return m.find(n,m.matcher(t))},m.max=function(n,t,r){var e,u,i=-1/0,o=-1/0;if(null==t&&null!=n){n=k(n)?n:m.values(n);for(var a=0,c=n.length;c>a;a++)e=n[a],e>i&&(i=e)}else t=x(t,r),m.each(n,function(n,r,e){u=t(n,r,e),(u>o||u===-1/0&&i===-1/0)&&(i=n,o=u)});return i},m.min=function(n,t,r){var e,u,i=1/0,o=1/0;if(null==t&&null!=n){n=k(n)?n:m.values(n);for(var a=0,c=n.length;c>a;a++)e=n[a],i>e&&(i=e)}else t=x(t,r),m.each(n,function(n,r,e){u=t(n,r,e),(o>u||1/0===u&&1/0===i)&&(i=n,o=u)});return i},m.shuffle=function(n){for(var t,r=k(n)?n:m.values(n),e=r.length,u=Array(e),i=0;e>i;i++)t=m.random(0,i),t!==i&&(u[i]=u[t]),u[t]=r[i];return u},m.sample=function(n,t,r){return null==t||r?(k(n)||(n=m.values(n)),n[m.random(n.length-1)]):m.shuffle(n).slice(0,Math.max(0,t))},m.sortBy=function(n,t,r){return t=x(t,r),m.pluck(m.map(n,function(n,r,e){return{value:n,index:r,criteria:t(n,r,e)}}).sort(function(n,t){var r=n.criteria,e=t.criteria;if(r!==e){if(r>e||r===void 0)return 1;if(e>r||e===void 0)return-1}return n.index-t.index}),"value")};var F=function(n){return function(t,r,e){var u={};return r=x(r,e),m.each(t,function(e,i){var o=r(e,i,t);n(u,e,o)}),u}};m.groupBy=F(function(n,t,r){m.has(n,r)?n[r].push(t):n[r]=[t]}),m.indexBy=F(function(n,t,r){n[r]=t}),m.countBy=F(function(n,t,r){m.has(n,r)?n[r]++:n[r]=1}),m.toArray=function(n){return n?m.isArray(n)?l.call(n):k(n)?m.map(n,m.identity):m.values(n):[]},m.size=function(n){return null==n?0:k(n)?n.length:m.keys(n).length},m.partition=function(n,t,r){t=x(t,r);var e=[],u=[];return m.each(n,function(n,r,i){(t(n,r,i)?e:u).push(n)}),[e,u]},m.first=m.head=m.take=function(n,t,r){return null==n?void 0:null==t||r?n[0]:m.initial(n,n.length-t)},m.initial=function(n,t,r){return l.call(n,0,Math.max(0,n.length-(null==t||r?1:t)))},m.last=function(n,t,r){return null==n?void 0:null==t||r?n[n.length-1]:m.rest(n,Math.max(0,n.length-t))},m.rest=m.tail=m.drop=function(n,t,r){return l.call(n,null==t||r?1:t)},m.compact=function(n){return m.filter(n,m.identity)};var S=function(n,t,r,e){for(var u=[],i=0,o=e||0,a=O(n);a>o;o++){var c=n[o];if(k(c)&&(m.isArray(c)||m.isArguments(c))){t||(c=S(c,t,r));var f=0,l=c.length;for(u.length+=l;l>f;)u[i++]=c[f++]}else r||(u[i++]=c)}return u};m.flatten=function(n,t){return S(n,t,!1)},m.without=function(n){return m.difference(n,l.call(arguments,1))},m.uniq=m.unique=function(n,t,r,e){m.isBoolean(t)||(e=r,r=t,t=!1),null!=r&&(r=x(r,e));for(var u=[],i=[],o=0,a=O(n);a>o;o++){var c=n[o],f=r?r(c,o,n):c;t?(o&&i===f||u.push(c),i=f):r?m.contains(i,f)||(i.push(f),u.push(c)):m.contains(u,c)||u.push(c)}return u},m.union=function(){return m.uniq(S(arguments,!0,!0))},m.intersection=function(n){for(var t=[],r=arguments.length,e=0,u=O(n);u>e;e++){var i=n[e];if(!m.contains(t,i)){for(var o=1;r>o&&m.contains(arguments[o],i);o++);o===r&&t.push(i)}}return t},m.difference=function(n){var t=S(arguments,!0,!0,1);return m.filter(n,function(n){return!m.contains(t,n)})},m.zip=function(){return m.unzip(arguments)},m.unzip=function(n){for(var t=n&&m.max(n,O).length||0,r=Array(t),e=0;t>e;e++)r[e]=m.pluck(n,e);return r},m.object=function(n,t){for(var r={},e=0,u=O(n);u>e;e++)t?r[n[e]]=t[e]:r[n[e][0]]=n[e][1];return r},m.findIndex=t(1),m.findLastIndex=t(-1),m.sortedIndex=function(n,t,r,e){r=x(r,e,1);for(var u=r(t),i=0,o=O(n);o>i;){var a=Math.floor((i+o)/2);r(n[a])i;i++,n+=r)u[i]=n;return u};var E=function(n,t,r,e,u){if(!(e instanceof t))return n.apply(r,u);var i=j(n.prototype),o=n.apply(i,u);return m.isObject(o)?o:i};m.bind=function(n,t){if(g&&n.bind===g)return g.apply(n,l.call(arguments,1));if(!m.isFunction(n))throw new TypeError("Bind must be called on a function");var r=l.call(arguments,2),e=function(){return E(n,e,t,this,r.concat(l.call(arguments)))};return e},m.partial=function(n){var t=l.call(arguments,1),r=function(){for(var e=0,u=t.length,i=Array(u),o=0;u>o;o++)i[o]=t[o]===m?arguments[e++]:t[o];for(;e=e)throw new Error("bindAll must be passed function names");for(t=1;e>t;t++)r=arguments[t],n[r]=m.bind(n[r],n);return n},m.memoize=function(n,t){var r=function(e){var u=r.cache,i=""+(t?t.apply(this,arguments):e);return m.has(u,i)||(u[i]=n.apply(this,arguments)),u[i]};return r.cache={},r},m.delay=function(n,t){var r=l.call(arguments,2);return setTimeout(function(){return n.apply(null,r)},t)},m.defer=m.partial(m.delay,m,1),m.throttle=function(n,t,r){var e,u,i,o=null,a=0;r||(r={});var c=function(){a=r.leading===!1?0:m.now(),o=null,i=n.apply(e,u),o||(e=u=null)};return function(){var f=m.now();a||r.leading!==!1||(a=f);var l=t-(f-a);return e=this,u=arguments,0>=l||l>t?(o&&(clearTimeout(o),o=null),a=f,i=n.apply(e,u),o||(e=u=null)):o||r.trailing===!1||(o=setTimeout(c,l)),i}},m.debounce=function(n,t,r){var e,u,i,o,a,c=function(){var f=m.now()-o;t>f&&f>=0?e=setTimeout(c,t-f):(e=null,r||(a=n.apply(i,u),e||(i=u=null)))};return function(){i=this,u=arguments,o=m.now();var f=r&&!e;return e||(e=setTimeout(c,t)),f&&(a=n.apply(i,u),i=u=null),a}},m.wrap=function(n,t){return m.partial(t,n)},m.negate=function(n){return function(){return!n.apply(this,arguments)}},m.compose=function(){var n=arguments,t=n.length-1;return function(){for(var r=t,e=n[t].apply(this,arguments);r--;)e=n[r].call(this,e);return e}},m.after=function(n,t){return function(){return--n<1?t.apply(this,arguments):void 0}},m.before=function(n,t){var r;return function(){return--n>0&&(r=t.apply(this,arguments)),1>=n&&(t=null),r}},m.once=m.partial(m.before,2);var M=!{toString:null}.propertyIsEnumerable("toString"),I=["valueOf","isPrototypeOf","toString","propertyIsEnumerable","hasOwnProperty","toLocaleString"];m.keys=function(n){if(!m.isObject(n))return[];if(v)return v(n);var t=[];for(var r in n)m.has(n,r)&&t.push(r);return M&&e(n,t),t},m.allKeys=function(n){if(!m.isObject(n))return[];var t=[];for(var r in n)t.push(r);return M&&e(n,t),t},m.values=function(n){for(var t=m.keys(n),r=t.length,e=Array(r),u=0;r>u;u++)e[u]=n[t[u]];return e},m.mapObject=function(n,t,r){t=x(t,r);for(var e,u=m.keys(n),i=u.length,o={},a=0;i>a;a++)e=u[a],o[e]=t(n[e],e,n);return o},m.pairs=function(n){for(var t=m.keys(n),r=t.length,e=Array(r),u=0;r>u;u++)e[u]=[t[u],n[t[u]]];return e},m.invert=function(n){for(var t={},r=m.keys(n),e=0,u=r.length;u>e;e++)t[n[r[e]]]=r[e];return t},m.functions=m.methods=function(n){var t=[];for(var r in n)m.isFunction(n[r])&&t.push(r);return t.sort()},m.extend=_(m.allKeys),m.extendOwn=m.assign=_(m.keys),m.findKey=function(n,t,r){t=x(t,r);for(var e,u=m.keys(n),i=0,o=u.length;o>i;i++)if(e=u[i],t(n[e],e,n))return e},m.pick=function(n,t,r){var e,u,i={},o=n;if(null==o)return i;m.isFunction(t)?(u=m.allKeys(o),e=b(t,r)):(u=S(arguments,!1,!1,1),e=function(n,t,r){return t in r},o=Object(o));for(var a=0,c=u.length;c>a;a++){var f=u[a],l=o[f];e(l,f,o)&&(i[f]=l)}return i},m.omit=function(n,t,r){if(m.isFunction(t))t=m.negate(t);else{var e=m.map(S(arguments,!1,!1,1),String);t=function(n,t){return!m.contains(e,t)}}return m.pick(n,t,r)},m.defaults=_(m.allKeys,!0),m.create=function(n,t){var r=j(n);return t&&m.extendOwn(r,t),r},m.clone=function(n){return m.isObject(n)?m.isArray(n)?n.slice():m.extend({},n):n},m.tap=function(n,t){return t(n),n},m.isMatch=function(n,t){var r=m.keys(t),e=r.length;if(null==n)return!e;for(var u=Object(n),i=0;e>i;i++){var o=r[i];if(t[o]!==u[o]||!(o in u))return!1}return!0};var N=function(n,t,r,e){if(n===t)return 0!==n||1/n===1/t;if(null==n||null==t)return n===t;n instanceof m&&(n=n._wrapped),t instanceof m&&(t=t._wrapped);var u=s.call(n);if(u!==s.call(t))return!1;switch(u){case"[object RegExp]":case"[object String]":return""+n==""+t;case"[object Number]":return+n!==+n?+t!==+t:0===+n?1/+n===1/t:+n===+t;case"[object Date]":case"[object Boolean]":return+n===+t}var i="[object Array]"===u;if(!i){if("object"!=typeof n||"object"!=typeof t)return!1;var o=n.constructor,a=t.constructor;if(o!==a&&!(m.isFunction(o)&&o instanceof o&&m.isFunction(a)&&a instanceof a)&&"constructor"in n&&"constructor"in t)return!1}r=r||[],e=e||[];for(var c=r.length;c--;)if(r[c]===n)return e[c]===t;if(r.push(n),e.push(t),i){if(c=n.length,c!==t.length)return!1;for(;c--;)if(!N(n[c],t[c],r,e))return!1}else{var f,l=m.keys(n);if(c=l.length,m.keys(t).length!==c)return!1;for(;c--;)if(f=l[c],!m.has(t,f)||!N(n[f],t[f],r,e))return!1}return r.pop(),e.pop(),!0};m.isEqual=function(n,t){return N(n,t)},m.isEmpty=function(n){return null==n?!0:k(n)&&(m.isArray(n)||m.isString(n)||m.isArguments(n))?0===n.length:0===m.keys(n).length},m.isElement=function(n){return!(!n||1!==n.nodeType)},m.isArray=h||function(n){return"[object Array]"===s.call(n)},m.isObject=function(n){var t=typeof n;return"function"===t||"object"===t&&!!n},m.each(["Arguments","Function","String","Number","Date","RegExp","Error"],function(n){m["is"+n]=function(t){return s.call(t)==="[object "+n+"]"}}),m.isArguments(arguments)||(m.isArguments=function(n){return m.has(n,"callee")}),"function"!=typeof/./&&"object"!=typeof Int8Array&&(m.isFunction=function(n){return"function"==typeof n||!1}),m.isFinite=function(n){return isFinite(n)&&!isNaN(parseFloat(n))},m.isNaN=function(n){return m.isNumber(n)&&n!==+n},m.isBoolean=function(n){return n===!0||n===!1||"[object Boolean]"===s.call(n)},m.isNull=function(n){return null===n},m.isUndefined=function(n){return n===void 0},m.has=function(n,t){return null!=n&&p.call(n,t)},m.noConflict=function(){return u._=i,this},m.identity=function(n){return n},m.constant=function(n){return function(){return n}},m.noop=function(){},m.property=w,m.propertyOf=function(n){return null==n?function(){}:function(t){return n[t]}},m.matcher=m.matches=function(n){return n=m.extendOwn({},n),function(t){return m.isMatch(t,n)}},m.times=function(n,t,r){var e=Array(Math.max(0,n));t=b(t,r,1);for(var u=0;n>u;u++)e[u]=t(u);return e},m.random=function(n,t){return null==t&&(t=n,n=0),n+Math.floor(Math.random()*(t-n+1))},m.now=Date.now||function(){return(new Date).getTime()};var B={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`"},T=m.invert(B),R=function(n){var t=function(t){return n[t]},r="(?:"+m.keys(n).join("|")+")",e=RegExp(r),u=RegExp(r,"g");return function(n){return n=null==n?"":""+n,e.test(n)?n.replace(u,t):n}};m.escape=R(B),m.unescape=R(T),m.result=function(n,t,r){var e=null==n?void 0:n[t];return e===void 0&&(e=r),m.isFunction(e)?e.call(n):e};var q=0;m.uniqueId=function(n){var t=++q+"";return n?n+t:t},m.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var K=/(.)^/,z={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},D=/\\|'|\r|\n|\u2028|\u2029/g,L=function(n){return"\\"+z[n]};m.template=function(n,t,r){!t&&r&&(t=r),t=m.defaults({},t,m.templateSettings);var e=RegExp([(t.escape||K).source,(t.interpolate||K).source,(t.evaluate||K).source].join("|")+"|$","g"),u=0,i="__p+='";n.replace(e,function(t,r,e,o,a){return i+=n.slice(u,a).replace(D,L),u=a+t.length,r?i+="'+\n((__t=("+r+"))==null?'':_.escape(__t))+\n'":e?i+="'+\n((__t=("+e+"))==null?'':__t)+\n'":o&&(i+="';\n"+o+"\n__p+='"),t}),i+="';\n",t.variable||(i="with(obj||{}){\n"+i+"}\n"),i="var __t,__p='',__j=Array.prototype.join,"+"print=function(){__p+=__j.call(arguments,'');};\n"+i+"return __p;\n";try{var o=new Function(t.variable||"obj","_",i)}catch(a){throw a.source=i,a}var c=function(n){return o.call(this,n,m)},f=t.variable||"obj";return c.source="function("+f+"){\n"+i+"}",c},m.chain=function(n){var t=m(n);return t._chain=!0,t};var P=function(n,t){return n._chain?m(t).chain():t};m.mixin=function(n){m.each(m.functions(n),function(t){var r=m[t]=n[t];m.prototype[t]=function(){var n=[this._wrapped];return f.apply(n,arguments),P(this,r.apply(m,n))}})},m.mixin(m),m.each(["pop","push","reverse","shift","sort","splice","unshift"],function(n){var t=o[n];m.prototype[n]=function(){var r=this._wrapped;return t.apply(r,arguments),"shift"!==n&&"splice"!==n||0!==r.length||delete r[0],P(this,r)}}),m.each(["concat","join","slice"],function(n){var t=o[n];m.prototype[n]=function(){return P(this,t.apply(this._wrapped,arguments))}}),m.prototype.value=function(){return this._wrapped},m.prototype.valueOf=m.prototype.toJSON=m.prototype.value,m.prototype.toString=function(){return""+this._wrapped},"function"==typeof define&&define.amd&&define("underscore",[],function(){return m})}).call(this); -//# sourceMappingURL=underscore-min.map \ No newline at end of file From c6a22bcfa3d70c3b6eb605bc72286a7d4202395c Mon Sep 17 00:00:00 2001 From: Menithal Date: Sun, 21 May 2017 20:49:07 +0300 Subject: [PATCH 028/357] Majority of the Bindings complete --- .../particle_explorer/hifi-entity-ui.js | 165 ++++++++++++------ .../particle_explorer/particle-style.css | 2 +- .../particle_explorer/particleExplorer.html | 1 + 3 files changed, 115 insertions(+), 53 deletions(-) diff --git a/scripts/system/particle_explorer/hifi-entity-ui.js b/scripts/system/particle_explorer/hifi-entity-ui.js index 3c5d17bb0d..dee5ca8c31 100644 --- a/scripts/system/particle_explorer/hifi-entity-ui.js +++ b/scripts/system/particle_explorer/hifi-entity-ui.js @@ -1,4 +1,4 @@ -/* global window, document, print, alert, console,setTimeout, clearTimeout, $ */ +/* global window, document, print, alert, console,setTimeout, clearTimeout, _ $ */ /** UI Builder V1.0 @@ -38,10 +38,14 @@ and If there is any changes to either the Entities or properties of **/ - +var RADIAN = Math.PI/180; function HifiEntityUI(parent, structure){ this.parent = parent; this.structure = structure; + this.webBridgeSync = _.debounce(function(id, val){ + console.log(id, val); + + }, 125); } HifiEntityUI.prototype = { @@ -79,7 +83,7 @@ HifiEntityUI.prototype = { animationWrapper.className = "section-wrap"; for (var property in properties) { - self.addRow(animationWrapper, properties[property]); + self.addElement(animationWrapper, properties[property]); } sectionDivBody.appendChild(animationWrapper); parent.appendChild(sectionDivBody); @@ -116,9 +120,60 @@ HifiEntityUI.prototype = { var label = document.createElement("label"); label.innerHTML = name; parent.appendChild(label); + return label; + }, + addQuaternionVector: function(parent, group){ + /* + + x = RotationAxis.x * sin(RotationAngle / 2) + y = RotationAxis.y * sin(RotationAngle / 2) + z = RotationAxis.z * sin(RotationAngle / 2) + w = cos(RotationAngle / 2) + */ + }, + addVector: function(parent, group){ + var self = this; + var inputs = ["x","y","z"]; + var domArray = []; + parent.id = group.id; + for (var index in inputs) { + var element = document.createElement("input"); + if (group.defaultColor) { + element.value = group.defaultColor[inputs[index]]; + } else if (inputs[index] === "red"){ + element.value = 255; + } else { + element.value = 0; + } + element.setAttribute("type","number"); + element.className = inputs[index]; + element.id = group.id + "-" + inputs[index]; + element.oninput = function(event) { + self.webBridgeSync(group.id, {x: domArray[0].value, y: domArray[1].value, z: domArray[2].value}) + } + domArray.push(element); + } + + this.addLabel(parent, group.name); + parent.className += " property vector-section xyz"; + + // Add Tuple and the rest + var tupleContainer = document.createElement("div"); + tupleContainer.className = "tuple"; + for (var domIndex in domArray) { + var container = domArray[domIndex]; + var div = document.createElement("div"); + var label = document.createElement("label"); + label.innerHTML = inputs[domIndex] + ":"; + label.setAttribute("for", container.id); + div.appendChild(container); + div.appendChild(label); + tupleContainer.appendChild(div); + } + parent.appendChild(tupleContainer); }, addColorPicker: function(parent, group) { - + var self = this; var $colPickContainer = $('
    ', { id: group.id, class: "color-picker" @@ -164,8 +219,8 @@ HifiEntityUI.prototype = { /* Color Picker Logic Here */ - parent.appendChild($colPickContainer[0]); - var changeTimer; + parent.appendChild($colPickContainer[0]) + $colPickContainer.colpick({ colorScheme: 'dark', layout: 'hex', @@ -176,13 +231,7 @@ HifiEntityUI.prototype = { domArray[0].value = rgb.r; domArray[1].value = rgb.g; domArray[2].value = rgb.b; - // Reimplement lodash - if (changeTimer) { - clearTimeout(changeTimer); - } - changeTimer = setTimeout(function () { - console.log("WebEvent Here"); - }, 250); + self.webBridgeSync(group.id, {red: rgb.r, green: rgb.g, blue: rgb.b} ); }, onSubmit: function (hsb, hex, rgb, el) { $(el).css('background-color', '#' + hex); @@ -190,12 +239,7 @@ HifiEntityUI.prototype = { domArray[0].value = rgb.r; domArray[1].value = rgb.g; domArray[2].value = rgb.b; - if (changeTimer) { - clearTimeout(changeTimer); - } - changeTimer = setTimeout(function () { - console.log("WebEvent Here"); - }, 250); + self.webBridgeSync(group.id, {red: rgb.r, green: rgb.g, blue: rgb.b} ); } }); var li = document.createElement("li"); @@ -203,7 +247,7 @@ HifiEntityUI.prototype = { this.addLabel(parent, group.name); - parent.className += " property color-section rgb"; + parent.className += " property vector-section rgb"; // Add Tuple and the rest var tupleContainer = document.createElement("div"); @@ -223,6 +267,7 @@ HifiEntityUI.prototype = { }, addTextureField: function(parent, group) { + var self = this; this.addLabel(parent, group.name); parent.className += " property texture"; var textureImage = document.createElement("div"); @@ -230,25 +275,23 @@ HifiEntityUI.prototype = { textureUrl.setAttribute("type", "text"); textureImage.className = "texture-image no-texture"; var image = document.createElement("img"); + var imageLoad = _.debounce(function(url){ + if (url.length > 0) { + textureImage.className = textureImage.className.replace(' no-texture',''); + image.src = url; + image.style.display = "block"; + } else { + image.src = ""; + image.style.display = "none"; + textureImage.className += " no-texture"; + } + self.webBridgeSync(group.id, url); + }, 250); - var timer; textureUrl.oninput = function (event) { // Add throttle var url = event.target.value; - if (timer) { - clearTimeout(timer); - } - timer = setTimeout(function(){ - if (url.length > 0) { - textureImage.className = textureImage.className.replace(' no-texture',''); - image.src = url; - image.style.display = "block"; - } else { - image.src = ""; - image.style.display = "none"; - textureImage.className += " no-texture"; - } - }, 250); + imageLoad(url); }; textureImage.appendChild(image); @@ -256,6 +299,7 @@ HifiEntityUI.prototype = { parent.appendChild(textureUrl); }, addSlider: function(parent, group) { + var self = this; this.addLabel(parent, group.name); parent.className += " property range"; var container = document.createElement("div"); @@ -278,29 +322,31 @@ HifiEntityUI.prototype = { slider.setAttribute("max", group.max !== undefined ? group.max: 10000); slider.setAttribute("step", 1); - inputField.onchange = function (event){ + inputField.oninput = function (event){ slider.value = event.target.value; - // bind web sock update here. + self.webBridgeSync(group.id, slider.value); }; slider.oninput = function (event){ inputField.value = event.target.value; + self.webBridgeSync(group.id, slider.value); }; inputField.id = group.id; } else if (group.type === "SliderRadian") { slider.setAttribute("min", group.min !== undefined ? group.min: 0); slider.setAttribute("max", group.max !== undefined ? group.max: Math.PI); - slider.setAttribute("step", Math.PI/36); + slider.setAttribute("step", Math.PI/180); - inputField.setAttribute("min", (group.min !== undefined ? group.min: 0) / (Math.PI/180)); - inputField.setAttribute("max", (group.max !== undefined ? group.max: Math.PI)/ (Math.PI/180)); + inputField.setAttribute("min", (group.min !== undefined ? group.min: 0) / RADIAN); + inputField.setAttribute("max", (group.max !== undefined ? group.max: Math.PI)/ RADIAN); - inputField.onchange = function (event){ - slider.value = (Math.PI/180) * event.target.value; + inputField.oninput = function (event){ + slider.value = RADIAN * event.target.value; + self.webBridgeSync(group.id, slider.value); }; slider.oninput = function (event){ - inputField.value = Math.round((event.target.value / (Math.PI/180)) * 100)/100; - // bind web sock update here. + inputField.value = Math.round((event.target.value / RADIAN) * 100)/100; + self.webBridgeSync(group.id, slider.value); }; var degrees = document.createElement("label"); degrees.innerHTML = "°"; @@ -314,17 +360,20 @@ HifiEntityUI.prototype = { } else { // Must then be Float inputField.setAttribute("min", group.min !== undefined? group.min: 0); + slider.setAttribute("step", 0.01); slider.setAttribute("min", group.min !== undefined ? group.min: 0); slider.setAttribute("max", group.max !== undefined ? group.max: 1); - slider.setAttribute("step", 0.025); + slider.setAttribute("step", 0.01); - inputField.onchange = function (event){ + inputField.oninput = function (event){ slider.value = event.target.value; + self.webBridgeSync(group.id, slider.value); // bind web sock update here. }; slider.oninput = function (event){ inputField.value = event.target.value; + self.webBridgeSync(group.id, inputField.value); }; inputField.id = group.id; @@ -332,7 +381,20 @@ HifiEntityUI.prototype = { // UpdateBinding }, - addRow: function (parent, group) { + addCheckBox: function (parent,group) { + var checkBox = document.createElement("input"); + checkBox.setAttribute("type", "checkbox"); + var self = this; + checkBox.onchange = function(event) { + self.webBridgeSync(group.id, event.target.checked); + }; + checkBox.id = group.id; + parent.appendChild(checkBox); + var label = this.addLabel(parent, group.name); + label.setAttribute("for", checkBox.id); + parent.className += " property checkbox"; + }, + addElement: function (parent, group) { var self = this; var property = document.createElement("div"); @@ -353,11 +415,7 @@ HifiEntityUI.prototype = { parent.appendChild(hr); break; case "Boolean": - var checkBox = document.createElement("input"); - checkBox.setAttribute("type", "checkbox"); - row.appendChild(checkBox); - self.addLabel(row, group.name); - row.className += " property checkbox"; + self.addCheckBox(row, group); parent.appendChild(row); break; case "SliderFloat": @@ -375,6 +433,9 @@ HifiEntityUI.prototype = { parent.appendChild(row); break; case "Vector": + self.addVector(row,group); + parent.appendChild(row); + break; case "VectorQuaternion": self.addLabel(row, group.name); parent.appendChild(row); diff --git a/scripts/system/particle_explorer/particle-style.css b/scripts/system/particle_explorer/particle-style.css index 6338162f19..ef8f1c6dd6 100644 --- a/scripts/system/particle_explorer/particle-style.css +++ b/scripts/system/particle_explorer/particle-style.css @@ -84,7 +84,7 @@ hr.splitter:last-of-type{ min-height: 2rem; float:left; } -.property.color-section{ +.property.vector-section{ width: 24rem; } diff --git a/scripts/system/particle_explorer/particleExplorer.html b/scripts/system/particle_explorer/particleExplorer.html index bbdb2315ff..09ced857bf 100644 --- a/scripts/system/particle_explorer/particleExplorer.html +++ b/scripts/system/particle_explorer/particleExplorer.html @@ -22,6 +22,7 @@ + From b8695e2509b4081930c63d18bdb2f6fda68a3444 Mon Sep 17 00:00:00 2001 From: Menithal Date: Mon, 22 May 2017 01:14:51 +0300 Subject: [PATCH 029/357] Returned undescore, is smaller overally actually --- .../particle_explorer/hifi-entity-ui.js | 121 ++++++++-------- .../system/particle_explorer/lodash.min.js | 136 ------------------ .../particle_explorer/particle-style.css | 4 +- .../particle_explorer/particleExplorer.html | 2 +- .../particle_explorer/particleExplorer.js | 17 ++- .../particle_explorer/particleExplorerTool.js | 4 +- .../particle_explorer/underscore-min.js | 6 + 7 files changed, 88 insertions(+), 202 deletions(-) delete mode 100644 scripts/system/particle_explorer/lodash.min.js create mode 100644 scripts/system/particle_explorer/underscore-min.js diff --git a/scripts/system/particle_explorer/hifi-entity-ui.js b/scripts/system/particle_explorer/hifi-entity-ui.js index dee5ca8c31..cec724b2f5 100644 --- a/scripts/system/particle_explorer/hifi-entity-ui.js +++ b/scripts/system/particle_explorer/hifi-entity-ui.js @@ -42,14 +42,17 @@ var RADIAN = Math.PI/180; function HifiEntityUI(parent, structure){ this.parent = parent; this.structure = structure; + var self = this; this.webBridgeSync = _.debounce(function(id, val){ console.log(id, val); - + if(self.bridge){ + self.bridge.emitWebEvent(JSON.stringify({})); + } }, 125); } HifiEntityUI.prototype = { - bindWeb: function (bridge){ + bindBridge: function (bridge){ this.bridge = bridge; }, build: function () { @@ -78,7 +81,7 @@ HifiEntityUI.prototype = { parent.appendChild(sectionDivHeader); var sectionDivBody = document.createElement("div"); - sectionDivBody.className = "spatial-group"; + sectionDivBody.className = "property-group"; var animationWrapper = document.createElement("div"); animationWrapper.className = "section-wrap"; @@ -87,49 +90,47 @@ HifiEntityUI.prototype = { } sectionDivBody.appendChild(animationWrapper); parent.appendChild(sectionDivBody); - - var height = (animationWrapper.clientHeight) + "px"; - if (collapsed) { - sectionDivBody.className = sectionDivBody.className - .replace("visible", "") - .replace(/\s{2,}/g, " "); - - sectionDivBody.style.maxHeight = "0px"; - } else { - sectionDivBody.className += " visible"; - sectionDivBody.style.maxHeight = height; - } - - sectionDivHeader.onclick = function( ) { - collapsed = !collapsed; + _.defer(function() { + var height = (animationWrapper.clientHeight) + "px"; if (collapsed) { sectionDivBody.className = sectionDivBody.className .replace("visible", "") .replace(/\s{2,}/g, " "); + sectionDivBody.style.maxHeight = "0px"; } else { sectionDivBody.className += " visible"; sectionDivBody.style.maxHeight = height; } - // sectionDivBody.style.display = collapsed ? "none": "block"; - dropDown.innerHTML = collapsed ? "L": "M"; - sectionDivHeader.setAttribute("collapsed", collapsed); - }; - }, - addLabel: function(parent, name) { - var label = document.createElement("label"); - label.innerHTML = name; - parent.appendChild(label); - return label; - }, - addQuaternionVector: function(parent, group){ - /* - x = RotationAxis.x * sin(RotationAngle / 2) - y = RotationAxis.y * sin(RotationAngle / 2) - z = RotationAxis.z * sin(RotationAngle / 2) - w = cos(RotationAngle / 2) - */ + sectionDivHeader.onclick = function( ) { + collapsed = !collapsed; + if (collapsed) { + sectionDivBody.className = sectionDivBody.className + .replace("visible", "") + .replace(/\s{2,}/g, " "); + sectionDivBody.style.maxHeight = "0px"; + } else { + sectionDivBody.className += " visible"; + sectionDivBody.style.maxHeight = height; + } + // sectionDivBody.style.display = collapsed ? "none": "block"; + dropDown.innerHTML = collapsed ? "L": "M"; + sectionDivHeader.setAttribute("collapsed", collapsed); + }; + }); + }, + addLabel: function(parent, group) { + var label = document.createElement("label"); + label.innerHTML = group.name; + parent.appendChild(label); + if (group.unit) { + var span = document.createElement("span"); + span.innerHTML = group.unit; + span.className = "unit"; + label.appendChild(span); + } + return label; }, addVector: function(parent, group){ var self = this; @@ -149,12 +150,12 @@ HifiEntityUI.prototype = { element.className = inputs[index]; element.id = group.id + "-" + inputs[index]; element.oninput = function(event) { - self.webBridgeSync(group.id, {x: domArray[0].value, y: domArray[1].value, z: domArray[2].value}) - } + self.webBridgeSync(group.id, {x: domArray[0].value, y: domArray[1].value, z: domArray[2].value}); + }; domArray.push(element); } - this.addLabel(parent, group.name); + this.addLabel(parent, group); parent.className += " property vector-section xyz"; // Add Tuple and the rest @@ -172,6 +173,9 @@ HifiEntityUI.prototype = { } parent.appendChild(tupleContainer); }, + addVectorQuaternion: function(parent, group) { + this.addVector(parent,group); + }, addColorPicker: function(parent, group) { var self = this; var $colPickContainer = $('
    ', { @@ -205,10 +209,7 @@ HifiEntityUI.prototype = { element.oninput = function(event) { $colPickContainer.colpickSetColor({r: domArray[0].value, g: domArray[1].value, b: domArray[2].value}, true); - - - // - } + }; domArray.push(element); } @@ -219,7 +220,7 @@ HifiEntityUI.prototype = { /* Color Picker Logic Here */ - parent.appendChild($colPickContainer[0]) + parent.appendChild($colPickContainer[0]); $colPickContainer.colpick({ colorScheme: 'dark', @@ -246,7 +247,7 @@ HifiEntityUI.prototype = { li.className ="cr object color"; - this.addLabel(parent, group.name); + this.addLabel(parent, group); parent.className += " property vector-section rgb"; // Add Tuple and the rest @@ -268,7 +269,7 @@ HifiEntityUI.prototype = { }, addTextureField: function(parent, group) { var self = this; - this.addLabel(parent, group.name); + this.addLabel(parent, group); parent.className += " property texture"; var textureImage = document.createElement("div"); var textureUrl = document.createElement("input"); @@ -300,7 +301,7 @@ HifiEntityUI.prototype = { }, addSlider: function(parent, group) { var self = this; - this.addLabel(parent, group.name); + this.addLabel(parent, group); parent.className += " property range"; var container = document.createElement("div"); container.className = "slider-wrapper"; @@ -334,19 +335,23 @@ HifiEntityUI.prototype = { inputField.id = group.id; } else if (group.type === "SliderRadian") { slider.setAttribute("min", group.min !== undefined ? group.min: 0); - slider.setAttribute("max", group.max !== undefined ? group.max: Math.PI); - slider.setAttribute("step", Math.PI/180); + slider.setAttribute("max", group.max !== undefined ? group.max: 180); + slider.setAttribute("step", 1); - inputField.setAttribute("min", (group.min !== undefined ? group.min: 0) / RADIAN); - inputField.setAttribute("max", (group.max !== undefined ? group.max: Math.PI)/ RADIAN); + inputField.setAttribute("min", (group.min !== undefined ? group.min: 0) ); + inputField.setAttribute("max", (group.max !== undefined ? group.max: 180)); inputField.oninput = function (event){ - slider.value = RADIAN * event.target.value; - self.webBridgeSync(group.id, slider.value); + slider.value = event.target.value; + self.webBridgeSync(group.id, slider.value * RADIAN ); }; slider.oninput = function (event){ - inputField.value = Math.round((event.target.value / RADIAN) * 100)/100; - self.webBridgeSync(group.id, slider.value); + if (event.target.value > 0){ + inputField.value = Math.floor(event.target.value); + } else { + inputField.value = Math.ceil(event.target.value); + } + self.webBridgeSync(group.id, slider.value * RADIAN); }; var degrees = document.createElement("label"); degrees.innerHTML = "°"; @@ -390,7 +395,7 @@ HifiEntityUI.prototype = { }; checkBox.id = group.id; parent.appendChild(checkBox); - var label = this.addLabel(parent, group.name); + var label = this.addLabel(parent, group); label.setAttribute("for", checkBox.id); parent.className += " property checkbox"; }, @@ -433,11 +438,11 @@ HifiEntityUI.prototype = { parent.appendChild(row); break; case "Vector": - self.addVector(row,group); + self.addVector(row, group); parent.appendChild(row); break; case "VectorQuaternion": - self.addLabel(row, group.name); + self.addVectorQuaternion(row, group); parent.appendChild(row); break; default: diff --git a/scripts/system/particle_explorer/lodash.min.js b/scripts/system/particle_explorer/lodash.min.js deleted file mode 100644 index ca447f4e82..0000000000 --- a/scripts/system/particle_explorer/lodash.min.js +++ /dev/null @@ -1,136 +0,0 @@ -/** - * @license - * Lodash lodash.com/license | Underscore.js 1.8.3 underscorejs.org/LICENSE - */ -;(function(){function n(n,t){return n.set(t[0],t[1]),n}function t(n,t){return n.add(t),n}function r(n,t,r){switch(r.length){case 0:return n.call(t);case 1:return n.call(t,r[0]);case 2:return n.call(t,r[0],r[1]);case 3:return n.call(t,r[0],r[1],r[2])}return n.apply(t,r)}function e(n,t,r,e){for(var u=-1,i=null==n?0:n.length;++u"']/g,J=RegExp(G.source),Y=RegExp(H.source),Q=/<%-([\s\S]+?)%>/g,X=/<%([\s\S]+?)%>/g,nn=/<%=([\s\S]+?)%>/g,tn=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,rn=/^\w*$/,en=/^\./,un=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,on=/[\\^$.*+?()[\]{}|]/g,fn=RegExp(on.source),cn=/^\s+|\s+$/g,an=/^\s+/,ln=/\s+$/,sn=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,hn=/\{\n\/\* \[wrapped with (.+)\] \*/,pn=/,? & /,_n=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,vn=/\\(\\)?/g,gn=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,dn=/\w*$/,yn=/^[-+]0x[0-9a-f]+$/i,bn=/^0b[01]+$/i,xn=/^\[object .+?Constructor\]$/,jn=/^0o[0-7]+$/i,wn=/^(?:0|[1-9]\d*)$/,mn=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,An=/($^)/,kn=/['\n\r\u2028\u2029\\]/g,En="[\\ufe0e\\ufe0f]?(?:[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|\\ud83c[\\udffb-\\udfff])?(?:\\u200d(?:[^\\ud800-\\udfff]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff])[\\ufe0e\\ufe0f]?(?:[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|\\ud83c[\\udffb-\\udfff])?)*",On="(?:[\\u2700-\\u27bf]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff])"+En,Sn="(?:[^\\ud800-\\udfff][\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]?|[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\ud800-\\udfff])",In=RegExp("['\u2019]","g"),Rn=RegExp("[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]","g"),zn=RegExp("\\ud83c[\\udffb-\\udfff](?=\\ud83c[\\udffb-\\udfff])|"+Sn+En,"g"),Wn=RegExp(["[A-Z\\xc0-\\xd6\\xd8-\\xde]?[a-z\\xdf-\\xf6\\xf8-\\xff]+(?:['\u2019](?:d|ll|m|re|s|t|ve))?(?=[\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000]|[A-Z\\xc0-\\xd6\\xd8-\\xde]|$)|(?:[A-Z\\xc0-\\xd6\\xd8-\\xde]|[^\\ud800-\\udfff\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde])+(?:['\u2019](?:D|LL|M|RE|S|T|VE))?(?=[\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000]|[A-Z\\xc0-\\xd6\\xd8-\\xde](?:[a-z\\xdf-\\xf6\\xf8-\\xff]|[^\\ud800-\\udfff\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde])|$)|[A-Z\\xc0-\\xd6\\xd8-\\xde]?(?:[a-z\\xdf-\\xf6\\xf8-\\xff]|[^\\ud800-\\udfff\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde])+(?:['\u2019](?:d|ll|m|re|s|t|ve))?|[A-Z\\xc0-\\xd6\\xd8-\\xde]+(?:['\u2019](?:D|LL|M|RE|S|T|VE))?|\\d*(?:(?:1ST|2ND|3RD|(?![123])\\dTH)\\b)|\\d*(?:(?:1st|2nd|3rd|(?![123])\\dth)\\b)|\\d+",On].join("|"),"g"),Bn=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]"),Ln=/[a-z][A-Z]|[A-Z]{2,}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,Un="Array Buffer DataView Date Error Float32Array Float64Array Function Int8Array Int16Array Int32Array Map Math Object Promise RegExp Set String Symbol TypeError Uint8Array Uint8ClampedArray Uint16Array Uint32Array WeakMap _ clearTimeout isFinite parseInt setTimeout".split(" "),Cn={}; -Cn["[object Float32Array]"]=Cn["[object Float64Array]"]=Cn["[object Int8Array]"]=Cn["[object Int16Array]"]=Cn["[object Int32Array]"]=Cn["[object Uint8Array]"]=Cn["[object Uint8ClampedArray]"]=Cn["[object Uint16Array]"]=Cn["[object Uint32Array]"]=true,Cn["[object Arguments]"]=Cn["[object Array]"]=Cn["[object ArrayBuffer]"]=Cn["[object Boolean]"]=Cn["[object DataView]"]=Cn["[object Date]"]=Cn["[object Error]"]=Cn["[object Function]"]=Cn["[object Map]"]=Cn["[object Number]"]=Cn["[object Object]"]=Cn["[object RegExp]"]=Cn["[object Set]"]=Cn["[object String]"]=Cn["[object WeakMap]"]=false; -var Dn={};Dn["[object Arguments]"]=Dn["[object Array]"]=Dn["[object ArrayBuffer]"]=Dn["[object DataView]"]=Dn["[object Boolean]"]=Dn["[object Date]"]=Dn["[object Float32Array]"]=Dn["[object Float64Array]"]=Dn["[object Int8Array]"]=Dn["[object Int16Array]"]=Dn["[object Int32Array]"]=Dn["[object Map]"]=Dn["[object Number]"]=Dn["[object Object]"]=Dn["[object RegExp]"]=Dn["[object Set]"]=Dn["[object String]"]=Dn["[object Symbol]"]=Dn["[object Uint8Array]"]=Dn["[object Uint8ClampedArray]"]=Dn["[object Uint16Array]"]=Dn["[object Uint32Array]"]=true, -Dn["[object Error]"]=Dn["[object Function]"]=Dn["[object WeakMap]"]=false;var Mn,Tn={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},$n=parseFloat,Fn=parseInt,Nn=typeof global=="object"&&global&&global.Object===Object&&global,Pn=typeof self=="object"&&self&&self.Object===Object&&self,Zn=Nn||Pn||Function("return this")(),qn=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Vn=qn&&typeof module=="object"&&module&&!module.nodeType&&module,Kn=Vn&&Vn.exports===qn,Gn=Kn&&Nn.process; -n:{try{Mn=Gn&&Gn.binding&&Gn.binding("util");break n}catch(n){}Mn=void 0}var Hn=Mn&&Mn.isArrayBuffer,Jn=Mn&&Mn.isDate,Yn=Mn&&Mn.isMap,Qn=Mn&&Mn.isRegExp,Xn=Mn&&Mn.isSet,nt=Mn&&Mn.isTypedArray,tt=j("length"),rt=w({"\xc0":"A","\xc1":"A","\xc2":"A","\xc3":"A","\xc4":"A","\xc5":"A","\xe0":"a","\xe1":"a","\xe2":"a","\xe3":"a","\xe4":"a","\xe5":"a","\xc7":"C","\xe7":"c","\xd0":"D","\xf0":"d","\xc8":"E","\xc9":"E","\xca":"E","\xcb":"E","\xe8":"e","\xe9":"e","\xea":"e","\xeb":"e","\xcc":"I","\xcd":"I","\xce":"I", -"\xcf":"I","\xec":"i","\xed":"i","\xee":"i","\xef":"i","\xd1":"N","\xf1":"n","\xd2":"O","\xd3":"O","\xd4":"O","\xd5":"O","\xd6":"O","\xd8":"O","\xf2":"o","\xf3":"o","\xf4":"o","\xf5":"o","\xf6":"o","\xf8":"o","\xd9":"U","\xda":"U","\xdb":"U","\xdc":"U","\xf9":"u","\xfa":"u","\xfb":"u","\xfc":"u","\xdd":"Y","\xfd":"y","\xff":"y","\xc6":"Ae","\xe6":"ae","\xde":"Th","\xfe":"th","\xdf":"ss","\u0100":"A","\u0102":"A","\u0104":"A","\u0101":"a","\u0103":"a","\u0105":"a","\u0106":"C","\u0108":"C","\u010a":"C", -"\u010c":"C","\u0107":"c","\u0109":"c","\u010b":"c","\u010d":"c","\u010e":"D","\u0110":"D","\u010f":"d","\u0111":"d","\u0112":"E","\u0114":"E","\u0116":"E","\u0118":"E","\u011a":"E","\u0113":"e","\u0115":"e","\u0117":"e","\u0119":"e","\u011b":"e","\u011c":"G","\u011e":"G","\u0120":"G","\u0122":"G","\u011d":"g","\u011f":"g","\u0121":"g","\u0123":"g","\u0124":"H","\u0126":"H","\u0125":"h","\u0127":"h","\u0128":"I","\u012a":"I","\u012c":"I","\u012e":"I","\u0130":"I","\u0129":"i","\u012b":"i","\u012d":"i", -"\u012f":"i","\u0131":"i","\u0134":"J","\u0135":"j","\u0136":"K","\u0137":"k","\u0138":"k","\u0139":"L","\u013b":"L","\u013d":"L","\u013f":"L","\u0141":"L","\u013a":"l","\u013c":"l","\u013e":"l","\u0140":"l","\u0142":"l","\u0143":"N","\u0145":"N","\u0147":"N","\u014a":"N","\u0144":"n","\u0146":"n","\u0148":"n","\u014b":"n","\u014c":"O","\u014e":"O","\u0150":"O","\u014d":"o","\u014f":"o","\u0151":"o","\u0154":"R","\u0156":"R","\u0158":"R","\u0155":"r","\u0157":"r","\u0159":"r","\u015a":"S","\u015c":"S", -"\u015e":"S","\u0160":"S","\u015b":"s","\u015d":"s","\u015f":"s","\u0161":"s","\u0162":"T","\u0164":"T","\u0166":"T","\u0163":"t","\u0165":"t","\u0167":"t","\u0168":"U","\u016a":"U","\u016c":"U","\u016e":"U","\u0170":"U","\u0172":"U","\u0169":"u","\u016b":"u","\u016d":"u","\u016f":"u","\u0171":"u","\u0173":"u","\u0174":"W","\u0175":"w","\u0176":"Y","\u0177":"y","\u0178":"Y","\u0179":"Z","\u017b":"Z","\u017d":"Z","\u017a":"z","\u017c":"z","\u017e":"z","\u0132":"IJ","\u0133":"ij","\u0152":"Oe","\u0153":"oe", -"\u0149":"'n","\u017f":"s"}),et=w({"&":"&","<":"<",">":">",'"':""","'":"'"}),ut=w({"&":"&","<":"<",">":">",""":'"',"'":"'"}),it=function w(En){function On(n){if(xu(n)&&!af(n)&&!(n instanceof Mn)){if(n instanceof zn)return n;if(ci.call(n,"__wrapped__"))return Pe(n)}return new zn(n)}function Sn(){}function zn(n,t){this.__wrapped__=n,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=F}function Mn(n){this.__wrapped__=n,this.__actions__=[],this.__dir__=1, -this.__filtered__=false,this.__iteratees__=[],this.__takeCount__=4294967295,this.__views__=[]}function Tn(n){var t=-1,r=null==n?0:n.length;for(this.clear();++t=t?n:t)),n}function dt(n,t,r,e,i,o){var f,c=1&t,a=2&t,l=4&t;if(r&&(f=i?r(n,e,i,o):r(n)),f!==F)return f;if(!bu(n))return n;if(e=af(n)){if(f=Ee(n),!c)return Mr(n,f)}else{var s=yo(n),h="[object Function]"==s||"[object GeneratorFunction]"==s;if(sf(n))return Wr(n,c);if("[object Object]"==s||"[object Arguments]"==s||h&&!i){if(f=a||h?{}:Oe(n),!c)return a?Fr(n,pt(f,n)):$r(n,ht(f,n))}else{if(!Dn[s])return i?n:{};f=Se(n,s,dt,c)}}if(o||(o=new Vn), -i=o.get(n))return i;o.set(n,f);var a=l?a?ye:de:a?Uu:Lu,p=e?F:a(n);return u(p||n,function(e,u){p&&(u=e,e=n[u]),at(f,u,dt(e,t,r,u,n,o))}),f}function yt(n){var t=Lu(n);return function(r){return bt(r,n,t)}}function bt(n,t,r){var e=r.length;if(null==n)return!e;for(n=ni(n);e--;){var u=r[e],i=t[u],o=n[u];if(o===F&&!(u in n)||!i(o))return false}return true}function xt(n,t,r){if(typeof n!="function")throw new ei("Expected a function");return jo(function(){n.apply(F,r)},t)}function jt(n,t,r,e){var u=-1,i=c,o=true,f=n.length,s=[],h=t.length; -if(!f)return s;r&&(t=l(t,S(r))),e?(i=a,o=false):200<=t.length&&(i=R,o=false,t=new qn(t));n:for(;++ut}function Bt(n,t){return null!=n&&ci.call(n,t)}function Lt(n,t){return null!=n&&t in ni(n)}function Ut(n,t,r){for(var e=r?a:c,u=n[0].length,i=n.length,o=i,f=Hu(i),s=1/0,h=[];o--;){var p=n[o];o&&t&&(p=l(p,S(t))),s=Mi(p.length,s),f[o]=!r&&(t||120<=u&&120<=p.length)?new qn(o&&p):F}var p=n[0],_=-1,v=f[0];n:for(;++_t.length?n:It(n,vr(t,0,-1)),t=null==n?n:n[$e(Ge(t))],null==t?F:r(t,n,e)}function Mt(n){return xu(n)&&"[object Arguments]"==zt(n)}function Tt(n){return xu(n)&&"[object ArrayBuffer]"==zt(n)}function $t(n){return xu(n)&&"[object Date]"==zt(n)}function Ft(n,t,r,e,u){if(n===t)t=true;else if(null==n||null==t||!xu(n)&&!xu(t))t=n!==n&&t!==t;else n:{ -var i=af(n),o=af(t),f=i?"[object Array]":yo(n),c=o?"[object Array]":yo(t),f="[object Arguments]"==f?"[object Object]":f,c="[object Arguments]"==c?"[object Object]":c,a="[object Object]"==f,o="[object Object]"==c;if((c=f==c)&&sf(n)){if(!sf(t)){t=false;break n}i=true,a=false}if(c&&!a)u||(u=new Vn),t=i||gf(n)?_e(n,t,r,e,Ft,u):ve(n,t,f,r,e,Ft,u);else{if(!(1&r)&&(i=a&&ci.call(n,"__wrapped__"),f=o&&ci.call(t,"__wrapped__"),i||f)){n=i?n.value():n,t=f?t.value():t,u||(u=new Vn),t=Ft(n,t,r,e,u);break n}if(c)t:if(u||(u=new Vn), -i=1&r,f=de(n),o=f.length,c=de(t).length,o==c||i){for(a=o;a--;){var l=f[a];if(!(i?l in t:ci.call(t,l))){t=false;break t}}if((c=u.get(n))&&u.get(t))t=c==t;else{c=true,u.set(n,t),u.set(t,n);for(var s=i;++at?r:0,Re(t,r)?n[t]:F}function rr(n,t,r){var e=-1;return t=l(t.length?t:[Nu],S(je())),n=Yt(n,function(n){return{a:l(t,function(t){return t(n)}),b:++e,c:n}}),A(n,function(n,t){var e;n:{e=-1;for(var u=n.a,i=t.a,o=u.length,f=r.length;++e=f?c:c*("desc"==r[e]?-1:1); -break n}}e=n.b-t.b}return e})}function er(n,t){return ur(n,t,function(t,r){return Bu(n,r)})}function ur(n,t,r){for(var e=-1,u=t.length,i={};++et||9007199254740991t&&(t=-t>u?0:u+t),r=r>u?u:r,0>r&&(r+=u),u=t>r?0:r-t>>>0,t>>>=0,r=Hu(u);++e=u){for(;e>>1,o=n[i];null!==o&&!Au(o)&&(r?o<=t:ot.length?n:It(n,vr(t,0,-1)), -null==n||delete n[$e(Ge(t))]}function Ar(n,t,r,e){for(var u=n.length,i=e?u:-1;(e?i--:++ie)return e?wr(n[0]):[];for(var u=-1,i=Hu(e);++u=e?n:vr(n,t,r)}function Wr(n,t){if(t)return n.slice();var r=n.length,r=yi?yi(r):new n.constructor(r);return n.copy(r),r}function Br(n){var t=new n.constructor(n.byteLength);return new di(t).set(new di(n)),t}function Lr(n,t){return new n.constructor(t?Br(n.buffer):n.buffer,n.byteOffset,n.length)}function Ur(n,t){ -if(n!==t){var r=n!==F,e=null===n,u=n===n,i=Au(n),o=t!==F,f=null===t,c=t===t,a=Au(t);if(!f&&!a&&!i&&n>t||i&&o&&c&&!f&&!a||e&&o&&c||!r&&c||!u)return 1;if(!e&&!i&&!a&&nu?F:i,u=1),t=ni(t);++eo&&f[0]!==a&&f[o-1]!==a?[]:C(f,a),o-=c.length,or?r?ar(t,n):t:(r=ar(t,Ri(n/T(t))),Bn.test(t)?zr($(r),0,n).join(""):r.slice(0,n))}function ue(n,t,e,u){function i(){for(var t=-1,c=arguments.length,a=-1,l=u.length,s=Hu(l+c),h=this&&this!==Zn&&this instanceof i?f:n;++at||e)&&(1&n&&(i[2]=h[2],t|=1&r?0:4),(r=h[3])&&(e=i[3],i[3]=e?Cr(e,r,h[4]):r,i[4]=e?C(i[3],"__lodash_placeholder__"):h[4]),(r=h[5])&&(e=i[5],i[5]=e?Dr(e,r,h[6]):r,i[6]=e?C(i[5],"__lodash_placeholder__"):h[6]),(r=h[7])&&(i[7]=r),128&n&&(i[8]=null==i[8]?h[8]:Mi(i[8],h[8])),null==i[9]&&(i[9]=h[9]),i[0]=h[0],i[1]=t),n=i[0],t=i[1], -r=i[2],e=i[3],u=i[4],f=i[9]=i[9]===F?c?0:n.length:Di(i[9]-a,0),!f&&24&t&&(t&=-25),De((h?lo:xo)(t&&1!=t?8==t||16==t?Jr(n,t,f):32!=t&&33!=t||u.length?Xr.apply(F,i):ue(n,t,r,e):Vr(n,t,r),i),n,t)}function se(n,t,r,e){return n===F||hu(n,ii[r])&&!ci.call(e,r)?t:n}function he(n,t,r,e,u,i){return bu(n)&&bu(t)&&(i.set(t,n),nr(n,t,F,he,i),i.delete(t)),n}function pe(n){return wu(n)?F:n}function _e(n,t,r,e,u,i){var o=1&r,f=n.length,c=t.length;if(f!=c&&!(o&&c>f))return false;if((c=i.get(n))&&i.get(t))return c==t;var c=-1,a=true,l=2&r?new qn:F; -for(i.set(n,t),i.set(t,n);++cr&&(r=Di(e+r,0)),g(n,je(t,3),r)):-1}function qe(n,t,r){var e=null==n?0:n.length;if(!e)return-1;var u=e-1;return r!==F&&(u=Ou(r),u=0>r?Di(e+u,0):Mi(u,e-1)), -g(n,je(t,3),u,true)}function Ve(n){return(null==n?0:n.length)?kt(n,1):[]}function Ke(n){return n&&n.length?n[0]:F}function Ge(n){var t=null==n?0:n.length;return t?n[t-1]:F}function He(n,t){return n&&n.length&&t&&t.length?or(n,t):n}function Je(n){return null==n?n:Ni.call(n)}function Ye(n){if(!n||!n.length)return[];var t=0;return n=f(n,function(n){if(_u(n))return t=Di(n.length,t),true}),E(t,function(t){return l(n,j(t))})}function Qe(n,t){if(!n||!n.length)return[];var e=Ye(n);return null==t?e:l(e,function(n){ -return r(t,F,n)})}function Xe(n){return n=On(n),n.__chain__=true,n}function nu(n,t){return t(n)}function tu(){return this}function ru(n,t){return(af(n)?u:oo)(n,je(t,3))}function eu(n,t){return(af(n)?i:fo)(n,je(t,3))}function uu(n,t){return(af(n)?l:Yt)(n,je(t,3))}function iu(n,t,r){return t=r?F:t,t=n&&null==t?n.length:t,le(n,128,F,F,F,F,t)}function ou(n,t){var r;if(typeof t!="function")throw new ei("Expected a function");return n=Ou(n),function(){return 0<--n&&(r=t.apply(this,arguments)),1>=n&&(t=F), -r}}function fu(n,t,r){return t=r?F:t,n=le(n,8,F,F,F,F,F,t),n.placeholder=fu.placeholder,n}function cu(n,t,r){return t=r?F:t,n=le(n,16,F,F,F,F,F,t),n.placeholder=cu.placeholder,n}function au(n,t,r){function e(t){var r=c,e=a;return c=a=F,_=t,s=n.apply(e,r)}function u(n){var r=n-p;return n-=_,p===F||r>=t||0>r||g&&n>=l}function i(){var n=Jo();if(u(n))return o(n);var r,e=jo;r=n-_,n=t-(n-p),r=g?Mi(n,l-r):n,h=e(i,r)}function o(n){return h=F,d&&c?e(n):(c=a=F,s)}function f(){var n=Jo(),r=u(n);if(c=arguments, -a=this,p=n,r){if(h===F)return _=n=p,h=jo(i,t),v?e(n):s;if(g)return h=jo(i,t),e(p)}return h===F&&(h=jo(i,t)),s}var c,a,l,s,h,p,_=0,v=false,g=false,d=true;if(typeof n!="function")throw new ei("Expected a function");return t=Iu(t)||0,bu(r)&&(v=!!r.leading,l=(g="maxWait"in r)?Di(Iu(r.maxWait)||0,t):l,d="trailing"in r?!!r.trailing:d),f.cancel=function(){h!==F&&ho(h),_=0,c=p=a=h=F},f.flush=function(){return h===F?s:o(Jo())},f}function lu(n,t){function r(){var e=arguments,u=t?t.apply(this,e):e[0],i=r.cache;return i.has(u)?i.get(u):(e=n.apply(this,e), -r.cache=i.set(u,e)||i,e)}if(typeof n!="function"||null!=t&&typeof t!="function")throw new ei("Expected a function");return r.cache=new(lu.Cache||Pn),r}function su(n){if(typeof n!="function")throw new ei("Expected a function");return function(){var t=arguments;switch(t.length){case 0:return!n.call(this);case 1:return!n.call(this,t[0]);case 2:return!n.call(this,t[0],t[1]);case 3:return!n.call(this,t[0],t[1],t[2])}return!n.apply(this,t)}}function hu(n,t){return n===t||n!==n&&t!==t}function pu(n){return null!=n&&yu(n.length)&&!gu(n); -}function _u(n){return xu(n)&&pu(n)}function vu(n){if(!xu(n))return false;var t=zt(n);return"[object Error]"==t||"[object DOMException]"==t||typeof n.message=="string"&&typeof n.name=="string"&&!wu(n)}function gu(n){return!!bu(n)&&(n=zt(n),"[object Function]"==n||"[object GeneratorFunction]"==n||"[object AsyncFunction]"==n||"[object Proxy]"==n)}function du(n){return typeof n=="number"&&n==Ou(n)}function yu(n){return typeof n=="number"&&-1=n}function bu(n){var t=typeof n;return null!=n&&("object"==t||"function"==t); -}function xu(n){return null!=n&&typeof n=="object"}function ju(n){return typeof n=="number"||xu(n)&&"[object Number]"==zt(n)}function wu(n){return!(!xu(n)||"[object Object]"!=zt(n))&&(n=bi(n),null===n||(n=ci.call(n,"constructor")&&n.constructor,typeof n=="function"&&n instanceof n&&fi.call(n)==hi))}function mu(n){return typeof n=="string"||!af(n)&&xu(n)&&"[object String]"==zt(n)}function Au(n){return typeof n=="symbol"||xu(n)&&"[object Symbol]"==zt(n)}function ku(n){if(!n)return[];if(pu(n))return mu(n)?$(n):Mr(n); -if(Ai&&n[Ai]){n=n[Ai]();for(var t,r=[];!(t=n.next()).done;)r.push(t.value);return r}return t=yo(n),("[object Map]"==t?L:"[object Set]"==t?D:Du)(n)}function Eu(n){return n?(n=Iu(n),n===N||n===-N?1.7976931348623157e308*(0>n?-1:1):n===n?n:0):0===n?n:0}function Ou(n){n=Eu(n);var t=n%1;return n===n?t?n-t:n:0}function Su(n){return n?gt(Ou(n),0,4294967295):0}function Iu(n){if(typeof n=="number")return n;if(Au(n))return P;if(bu(n)&&(n=typeof n.valueOf=="function"?n.valueOf():n,n=bu(n)?n+"":n),typeof n!="string")return 0===n?n:+n; -n=n.replace(cn,"");var t=bn.test(n);return t||jn.test(n)?Fn(n.slice(2),t?2:8):yn.test(n)?P:+n}function Ru(n){return Tr(n,Uu(n))}function zu(n){return null==n?"":jr(n)}function Wu(n,t,r){return n=null==n?F:It(n,t),n===F?r:n}function Bu(n,t){return null!=n&&ke(n,t,Lt)}function Lu(n){return pu(n)?Gn(n):Ht(n)}function Uu(n){if(pu(n))n=Gn(n,true);else if(bu(n)){var t,r=Le(n),e=[];for(t in n)("constructor"!=t||!r&&ci.call(n,t))&&e.push(t);n=e}else{if(t=[],null!=n)for(r in ni(n))t.push(r);n=t}return n}function Cu(n,t){ -if(null==n)return{};var r=l(ye(n),function(n){return[n]});return t=je(t),ur(n,r,function(n,r){return t(n,r[0])})}function Du(n){return null==n?[]:I(n,Lu(n))}function Mu(n){return Nf(zu(n).toLowerCase())}function Tu(n){return(n=zu(n))&&n.replace(mn,rt).replace(Rn,"")}function $u(n,t,r){return n=zu(n),t=r?F:t,t===F?Ln.test(n)?n.match(Wn)||[]:n.match(_n)||[]:n.match(t)||[]}function Fu(n){return function(){return n}}function Nu(n){return n}function Pu(n){return Gt(typeof n=="function"?n:dt(n,1))}function Zu(n,t,r){ -var e=Lu(t),i=St(t,e);null!=r||bu(t)&&(i.length||!e.length)||(r=t,t=n,n=this,i=St(t,Lu(t)));var o=!(bu(r)&&"chain"in r&&!r.chain),f=gu(n);return u(i,function(r){var e=t[r];n[r]=e,f&&(n.prototype[r]=function(){var t=this.__chain__;if(o||t){var r=n(this.__wrapped__);return(r.__actions__=Mr(this.__actions__)).push({func:e,args:arguments,thisArg:n}),r.__chain__=t,r}return e.apply(n,s([this.value()],arguments))})}),n}function qu(){}function Vu(n){return We(n)?j($e(n)):ir(n)}function Ku(){return[]}function Gu(){ -return false}En=null==En?Zn:it.defaults(Zn.Object(),En,it.pick(Zn,Un));var Hu=En.Array,Ju=En.Date,Yu=En.Error,Qu=En.Function,Xu=En.Math,ni=En.Object,ti=En.RegExp,ri=En.String,ei=En.TypeError,ui=Hu.prototype,ii=ni.prototype,oi=En["__core-js_shared__"],fi=Qu.prototype.toString,ci=ii.hasOwnProperty,ai=0,li=function(){var n=/[^.]+$/.exec(oi&&oi.keys&&oi.keys.IE_PROTO||"");return n?"Symbol(src)_1."+n:""}(),si=ii.toString,hi=fi.call(ni),pi=Zn._,_i=ti("^"+fi.call(ci).replace(on,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),vi=Kn?En.Buffer:F,gi=En.Symbol,di=En.Uint8Array,yi=vi?vi.f:F,bi=U(ni.getPrototypeOf,ni),xi=ni.create,ji=ii.propertyIsEnumerable,wi=ui.splice,mi=gi?gi.isConcatSpreadable:F,Ai=gi?gi.iterator:F,ki=gi?gi.toStringTag:F,Ei=function(){ -try{var n=Ae(ni,"defineProperty");return n({},"",{}),n}catch(n){}}(),Oi=En.clearTimeout!==Zn.clearTimeout&&En.clearTimeout,Si=Ju&&Ju.now!==Zn.Date.now&&Ju.now,Ii=En.setTimeout!==Zn.setTimeout&&En.setTimeout,Ri=Xu.ceil,zi=Xu.floor,Wi=ni.getOwnPropertySymbols,Bi=vi?vi.isBuffer:F,Li=En.isFinite,Ui=ui.join,Ci=U(ni.keys,ni),Di=Xu.max,Mi=Xu.min,Ti=Ju.now,$i=En.parseInt,Fi=Xu.random,Ni=ui.reverse,Pi=Ae(En,"DataView"),Zi=Ae(En,"Map"),qi=Ae(En,"Promise"),Vi=Ae(En,"Set"),Ki=Ae(En,"WeakMap"),Gi=Ae(ni,"create"),Hi=Ki&&new Ki,Ji={},Yi=Fe(Pi),Qi=Fe(Zi),Xi=Fe(qi),no=Fe(Vi),to=Fe(Ki),ro=gi?gi.prototype:F,eo=ro?ro.valueOf:F,uo=ro?ro.toString:F,io=function(){ -function n(){}return function(t){return bu(t)?xi?xi(t):(n.prototype=t,t=new n,n.prototype=F,t):{}}}();On.templateSettings={escape:Q,evaluate:X,interpolate:nn,variable:"",imports:{_:On}},On.prototype=Sn.prototype,On.prototype.constructor=On,zn.prototype=io(Sn.prototype),zn.prototype.constructor=zn,Mn.prototype=io(Sn.prototype),Mn.prototype.constructor=Mn,Tn.prototype.clear=function(){this.__data__=Gi?Gi(null):{},this.size=0},Tn.prototype.delete=function(n){return n=this.has(n)&&delete this.__data__[n], -this.size-=n?1:0,n},Tn.prototype.get=function(n){var t=this.__data__;return Gi?(n=t[n],"__lodash_hash_undefined__"===n?F:n):ci.call(t,n)?t[n]:F},Tn.prototype.has=function(n){var t=this.__data__;return Gi?t[n]!==F:ci.call(t,n)},Tn.prototype.set=function(n,t){var r=this.__data__;return this.size+=this.has(n)?0:1,r[n]=Gi&&t===F?"__lodash_hash_undefined__":t,this},Nn.prototype.clear=function(){this.__data__=[],this.size=0},Nn.prototype.delete=function(n){var t=this.__data__;return n=lt(t,n),!(0>n)&&(n==t.length-1?t.pop():wi.call(t,n,1), ---this.size,true)},Nn.prototype.get=function(n){var t=this.__data__;return n=lt(t,n),0>n?F:t[n][1]},Nn.prototype.has=function(n){return-1e?(++this.size,r.push([n,t])):r[e][1]=t,this},Pn.prototype.clear=function(){this.size=0,this.__data__={hash:new Tn,map:new(Zi||Nn),string:new Tn}},Pn.prototype.delete=function(n){return n=we(this,n).delete(n),this.size-=n?1:0,n},Pn.prototype.get=function(n){return we(this,n).get(n); -},Pn.prototype.has=function(n){return we(this,n).has(n)},Pn.prototype.set=function(n,t){var r=we(this,n),e=r.size;return r.set(n,t),this.size+=r.size==e?0:1,this},qn.prototype.add=qn.prototype.push=function(n){return this.__data__.set(n,"__lodash_hash_undefined__"),this},qn.prototype.has=function(n){return this.__data__.has(n)},Vn.prototype.clear=function(){this.__data__=new Nn,this.size=0},Vn.prototype.delete=function(n){var t=this.__data__;return n=t.delete(n),this.size=t.size,n},Vn.prototype.get=function(n){ -return this.__data__.get(n)},Vn.prototype.has=function(n){return this.__data__.has(n)},Vn.prototype.set=function(n,t){var r=this.__data__;if(r instanceof Nn){var e=r.__data__;if(!Zi||199>e.length)return e.push([n,t]),this.size=++r.size,this;r=this.__data__=new Pn(e)}return r.set(n,t),this.size=r.size,this};var oo=Zr(Et),fo=Zr(Ot,true),co=qr(),ao=qr(true),lo=Hi?function(n,t){return Hi.set(n,t),n}:Nu,so=Ei?function(n,t){return Ei(n,"toString",{configurable:true,enumerable:false,value:Fu(t),writable:true})}:Nu,ho=Oi||function(n){ -return Zn.clearTimeout(n)},po=Vi&&1/D(new Vi([,-0]))[1]==N?function(n){return new Vi(n)}:qu,_o=Hi?function(n){return Hi.get(n)}:qu,vo=Wi?function(n){return null==n?[]:(n=ni(n),f(Wi(n),function(t){return ji.call(n,t)}))}:Ku,go=Wi?function(n){for(var t=[];n;)s(t,vo(n)),n=bi(n);return t}:Ku,yo=zt;(Pi&&"[object DataView]"!=yo(new Pi(new ArrayBuffer(1)))||Zi&&"[object Map]"!=yo(new Zi)||qi&&"[object Promise]"!=yo(qi.resolve())||Vi&&"[object Set]"!=yo(new Vi)||Ki&&"[object WeakMap]"!=yo(new Ki))&&(yo=function(n){ -var t=zt(n);if(n=(n="[object Object]"==t?n.constructor:F)?Fe(n):"")switch(n){case Yi:return"[object DataView]";case Qi:return"[object Map]";case Xi:return"[object Promise]";case no:return"[object Set]";case to:return"[object WeakMap]"}return t});var bo=oi?gu:Gu,xo=Me(lo),jo=Ii||function(n,t){return Zn.setTimeout(n,t)},wo=Me(so),mo=function(n){n=lu(n,function(n){return 500===t.size&&t.clear(),n});var t=n.cache;return n}(function(n){var t=[];return en.test(n)&&t.push(""),n.replace(un,function(n,r,e,u){ -t.push(e?u.replace(vn,"$1"):r||n)}),t}),Ao=lr(function(n,t){return _u(n)?jt(n,kt(t,1,_u,true)):[]}),ko=lr(function(n,t){var r=Ge(t);return _u(r)&&(r=F),_u(n)?jt(n,kt(t,1,_u,true),je(r,2)):[]}),Eo=lr(function(n,t){var r=Ge(t);return _u(r)&&(r=F),_u(n)?jt(n,kt(t,1,_u,true),F,r):[]}),Oo=lr(function(n){var t=l(n,Sr);return t.length&&t[0]===n[0]?Ut(t):[]}),So=lr(function(n){var t=Ge(n),r=l(n,Sr);return t===Ge(r)?t=F:r.pop(),r.length&&r[0]===n[0]?Ut(r,je(t,2)):[]}),Io=lr(function(n){var t=Ge(n),r=l(n,Sr);return(t=typeof t=="function"?t:F)&&r.pop(), -r.length&&r[0]===n[0]?Ut(r,F,t):[]}),Ro=lr(He),zo=ge(function(n,t){var r=null==n?0:n.length,e=vt(n,t);return fr(n,l(t,function(n){return Re(n,r)?+n:n}).sort(Ur)),e}),Wo=lr(function(n){return wr(kt(n,1,_u,true))}),Bo=lr(function(n){var t=Ge(n);return _u(t)&&(t=F),wr(kt(n,1,_u,true),je(t,2))}),Lo=lr(function(n){var t=Ge(n),t=typeof t=="function"?t:F;return wr(kt(n,1,_u,true),F,t)}),Uo=lr(function(n,t){return _u(n)?jt(n,t):[]}),Co=lr(function(n){return Er(f(n,_u))}),Do=lr(function(n){var t=Ge(n);return _u(t)&&(t=F), -Er(f(n,_u),je(t,2))}),Mo=lr(function(n){var t=Ge(n),t=typeof t=="function"?t:F;return Er(f(n,_u),F,t)}),To=lr(Ye),$o=lr(function(n){var t=n.length,t=1=t}),cf=Mt(function(){return arguments}())?Mt:function(n){return xu(n)&&ci.call(n,"callee")&&!ji.call(n,"callee")},af=Hu.isArray,lf=Hn?S(Hn):Tt,sf=Bi||Gu,hf=Jn?S(Jn):$t,pf=Yn?S(Yn):Nt,_f=Qn?S(Qn):qt,vf=Xn?S(Xn):Vt,gf=nt?S(nt):Kt,df=oe(Jt),yf=oe(function(n,t){return n<=t}),bf=Pr(function(n,t){ -if(Le(t)||pu(t))Tr(t,Lu(t),n);else for(var r in t)ci.call(t,r)&&at(n,r,t[r])}),xf=Pr(function(n,t){Tr(t,Uu(t),n)}),jf=Pr(function(n,t,r,e){Tr(t,Uu(t),n,e)}),wf=Pr(function(n,t,r,e){Tr(t,Lu(t),n,e)}),mf=ge(vt),Af=lr(function(n){return n.push(F,se),r(jf,F,n)}),kf=lr(function(n){return n.push(F,he),r(Rf,F,n)}),Ef=ne(function(n,t,r){n[t]=r},Fu(Nu)),Of=ne(function(n,t,r){ci.call(n,t)?n[t].push(r):n[t]=[r]},je),Sf=lr(Dt),If=Pr(function(n,t,r){nr(n,t,r)}),Rf=Pr(function(n,t,r,e){nr(n,t,r,e)}),zf=ge(function(n,t){ -var r={};if(null==n)return r;var e=false;t=l(t,function(t){return t=Rr(t,n),e||(e=1--n)return t.apply(this,arguments)}},On.ary=iu,On.assign=bf,On.assignIn=xf,On.assignInWith=jf,On.assignWith=wf,On.at=mf,On.before=ou,On.bind=Yo,On.bindAll=Zf,On.bindKey=Qo,On.castArray=function(){if(!arguments.length)return[];var n=arguments[0];return af(n)?n:[n]}, -On.chain=Xe,On.chunk=function(n,t,r){if(t=(r?ze(n,t,r):t===F)?1:Di(Ou(t),0),r=null==n?0:n.length,!r||1>t)return[];for(var e=0,u=0,i=Hu(Ri(r/t));et?0:t,e)):[]},On.dropRight=function(n,t,r){var e=null==n?0:n.length;return e?(t=r||t===F?1:Ou(t),t=e-t,vr(n,0,0>t?0:t)):[]},On.dropRightWhile=function(n,t){return n&&n.length?Ar(n,je(t,3),true,true):[]},On.dropWhile=function(n,t){return n&&n.length?Ar(n,je(t,3),true):[]},On.fill=function(n,t,r,e){var u=null==n?0:n.length;if(!u)return[];for(r&&typeof r!="number"&&ze(n,t,r)&&(r=0,e=u),u=n.length,r=Ou(r),0>r&&(r=-r>u?0:u+r),e=e===F||e>u?u:Ou(e),0>e&&(e+=u),e=r>e?0:Su(e);r>>0,r?(n=zu(n))&&(typeof t=="string"||null!=t&&!_f(t))&&(t=jr(t), -!t&&Bn.test(n))?zr($(n),0,r):n.split(t,r):[]},On.spread=function(n,t){if(typeof n!="function")throw new ei("Expected a function");return t=null==t?0:Di(Ou(t),0),lr(function(e){var u=e[t];return e=zr(e,0,t),u&&s(e,u),r(n,this,e)})},On.tail=function(n){var t=null==n?0:n.length;return t?vr(n,1,t):[]},On.take=function(n,t,r){return n&&n.length?(t=r||t===F?1:Ou(t),vr(n,0,0>t?0:t)):[]},On.takeRight=function(n,t,r){var e=null==n?0:n.length;return e?(t=r||t===F?1:Ou(t),t=e-t,vr(n,0>t?0:t,e)):[]},On.takeRightWhile=function(n,t){ -return n&&n.length?Ar(n,je(t,3),false,true):[]},On.takeWhile=function(n,t){return n&&n.length?Ar(n,je(t,3)):[]},On.tap=function(n,t){return t(n),n},On.throttle=function(n,t,r){var e=true,u=true;if(typeof n!="function")throw new ei("Expected a function");return bu(r)&&(e="leading"in r?!!r.leading:e,u="trailing"in r?!!r.trailing:u),au(n,t,{leading:e,maxWait:t,trailing:u})},On.thru=nu,On.toArray=ku,On.toPairs=Bf,On.toPairsIn=Lf,On.toPath=function(n){return af(n)?l(n,$e):Au(n)?[n]:Mr(mo(zu(n)))},On.toPlainObject=Ru, -On.transform=function(n,t,r){var e=af(n),i=e||sf(n)||gf(n);if(t=je(t,4),null==r){var o=n&&n.constructor;r=i?e?new o:[]:bu(n)&&gu(o)?io(bi(n)):{}}return(i?u:Et)(n,function(n,e,u){return t(r,n,e,u)}),r},On.unary=function(n){return iu(n,1)},On.union=Wo,On.unionBy=Bo,On.unionWith=Lo,On.uniq=function(n){return n&&n.length?wr(n):[]},On.uniqBy=function(n,t){return n&&n.length?wr(n,je(t,2)):[]},On.uniqWith=function(n,t){return t=typeof t=="function"?t:F,n&&n.length?wr(n,F,t):[]},On.unset=function(n,t){return null==n||mr(n,t); -},On.unzip=Ye,On.unzipWith=Qe,On.update=function(n,t,r){return null==n?n:pr(n,t,Ir(r)(It(n,t)),void 0)},On.updateWith=function(n,t,r,e){return e=typeof e=="function"?e:F,null!=n&&(n=pr(n,t,Ir(r)(It(n,t)),e)),n},On.values=Du,On.valuesIn=function(n){return null==n?[]:I(n,Uu(n))},On.without=Uo,On.words=$u,On.wrap=function(n,t){return rf(Ir(t),n)},On.xor=Co,On.xorBy=Do,On.xorWith=Mo,On.zip=To,On.zipObject=function(n,t){return Or(n||[],t||[],at)},On.zipObjectDeep=function(n,t){return Or(n||[],t||[],pr); -},On.zipWith=$o,On.entries=Bf,On.entriesIn=Lf,On.extend=xf,On.extendWith=jf,Zu(On,On),On.add=nc,On.attempt=Pf,On.camelCase=Uf,On.capitalize=Mu,On.ceil=tc,On.clamp=function(n,t,r){return r===F&&(r=t,t=F),r!==F&&(r=Iu(r),r=r===r?r:0),t!==F&&(t=Iu(t),t=t===t?t:0),gt(Iu(n),t,r)},On.clone=function(n){return dt(n,4)},On.cloneDeep=function(n){return dt(n,5)},On.cloneDeepWith=function(n,t){return t=typeof t=="function"?t:F,dt(n,5,t)},On.cloneWith=function(n,t){return t=typeof t=="function"?t:F,dt(n,4,t)}, -On.conformsTo=function(n,t){return null==t||bt(n,t,Lu(t))},On.deburr=Tu,On.defaultTo=function(n,t){return null==n||n!==n?t:n},On.divide=rc,On.endsWith=function(n,t,r){n=zu(n),t=jr(t);var e=n.length,e=r=r===F?e:gt(Ou(r),0,e);return r-=t.length,0<=r&&n.slice(r,e)==t},On.eq=hu,On.escape=function(n){return(n=zu(n))&&Y.test(n)?n.replace(H,et):n},On.escapeRegExp=function(n){return(n=zu(n))&&fn.test(n)?n.replace(on,"\\$&"):n},On.every=function(n,t,r){var e=af(n)?o:wt;return r&&ze(n,t,r)&&(t=F),e(n,je(t,3)); -},On.find=Po,On.findIndex=Ze,On.findKey=function(n,t){return v(n,je(t,3),Et)},On.findLast=Zo,On.findLastIndex=qe,On.findLastKey=function(n,t){return v(n,je(t,3),Ot)},On.floor=ec,On.forEach=ru,On.forEachRight=eu,On.forIn=function(n,t){return null==n?n:co(n,je(t,3),Uu)},On.forInRight=function(n,t){return null==n?n:ao(n,je(t,3),Uu)},On.forOwn=function(n,t){return n&&Et(n,je(t,3))},On.forOwnRight=function(n,t){return n&&Ot(n,je(t,3))},On.get=Wu,On.gt=of,On.gte=ff,On.has=function(n,t){return null!=n&&ke(n,t,Bt); -},On.hasIn=Bu,On.head=Ke,On.identity=Nu,On.includes=function(n,t,r,e){return n=pu(n)?n:Du(n),r=r&&!e?Ou(r):0,e=n.length,0>r&&(r=Di(e+r,0)),mu(n)?r<=e&&-1r&&(r=Di(e+r,0)),d(n,t,r)):-1},On.inRange=function(n,t,r){return t=Eu(t),r===F?(r=t,t=0):r=Eu(r),n=Iu(n),n>=Mi(t,r)&&n=n},On.isSet=vf,On.isString=mu,On.isSymbol=Au,On.isTypedArray=gf,On.isUndefined=function(n){return n===F},On.isWeakMap=function(n){return xu(n)&&"[object WeakMap]"==yo(n)},On.isWeakSet=function(n){return xu(n)&&"[object WeakSet]"==zt(n)},On.join=function(n,t){ -return null==n?"":Ui.call(n,t)},On.kebabCase=Cf,On.last=Ge,On.lastIndexOf=function(n,t,r){var e=null==n?0:n.length;if(!e)return-1;var u=e;if(r!==F&&(u=Ou(r),u=0>u?Di(e+u,0):Mi(u,e-1)),t===t){for(r=u+1;r--&&n[r]!==t;);n=r}else n=g(n,b,u,true);return n},On.lowerCase=Df,On.lowerFirst=Mf,On.lt=df,On.lte=yf,On.max=function(n){return n&&n.length?mt(n,Nu,Wt):F},On.maxBy=function(n,t){return n&&n.length?mt(n,je(t,2),Wt):F},On.mean=function(n){return x(n,Nu)},On.meanBy=function(n,t){return x(n,je(t,2))},On.min=function(n){ -return n&&n.length?mt(n,Nu,Jt):F},On.minBy=function(n,t){return n&&n.length?mt(n,je(t,2),Jt):F},On.stubArray=Ku,On.stubFalse=Gu,On.stubObject=function(){return{}},On.stubString=function(){return""},On.stubTrue=function(){return true},On.multiply=uc,On.nth=function(n,t){return n&&n.length?tr(n,Ou(t)):F},On.noConflict=function(){return Zn._===this&&(Zn._=pi),this},On.noop=qu,On.now=Jo,On.pad=function(n,t,r){n=zu(n);var e=(t=Ou(t))?T(n):0;return!t||e>=t?n:(t=(t-e)/2,ee(zi(t),r)+n+ee(Ri(t),r))},On.padEnd=function(n,t,r){ -n=zu(n);var e=(t=Ou(t))?T(n):0;return t&&et){var e=n;n=t,t=e}return r||n%1||t%1?(r=Fi(),Mi(n+r*(t-n+$n("1e-"+((r+"").length-1))),t)):cr(n,t); -},On.reduce=function(n,t,r){var e=af(n)?h:m,u=3>arguments.length;return e(n,je(t,4),r,u,oo)},On.reduceRight=function(n,t,r){var e=af(n)?p:m,u=3>arguments.length;return e(n,je(t,4),r,u,fo)},On.repeat=function(n,t,r){return t=(r?ze(n,t,r):t===F)?1:Ou(t),ar(zu(n),t)},On.replace=function(){var n=arguments,t=zu(n[0]);return 3>n.length?t:t.replace(n[1],n[2])},On.result=function(n,t,r){t=Rr(t,n);var e=-1,u=t.length;for(u||(u=1,n=F);++en||9007199254740991=i)return n;if(i=r-T(e),1>i)return e; -if(r=o?zr(o,0,i).join(""):n.slice(0,i),u===F)return r+e;if(o&&(i+=r.length-i),_f(u)){if(n.slice(i).search(u)){var f=r;for(u.global||(u=ti(u.source,zu(dn.exec(u))+"g")),u.lastIndex=0;o=u.exec(f);)var c=o.index;r=r.slice(0,c===F?i:c)}}else n.indexOf(jr(u),i)!=i&&(u=r.lastIndexOf(u),-1e.__dir__?"Right":"")}),e},Mn.prototype[n+"Right"]=function(t){ -return this.reverse()[n](t).reverse()}}),u(["filter","map","takeWhile"],function(n,t){var r=t+1,e=1==r||3==r;Mn.prototype[n]=function(n){var t=this.clone();return t.__iteratees__.push({iteratee:je(n,3),type:r}),t.__filtered__=t.__filtered__||e,t}}),u(["head","last"],function(n,t){var r="take"+(t?"Right":"");Mn.prototype[n]=function(){return this[r](1).value()[0]}}),u(["initial","tail"],function(n,t){var r="drop"+(t?"":"Right");Mn.prototype[n]=function(){return this.__filtered__?new Mn(this):this[r](1); -}}),Mn.prototype.compact=function(){return this.filter(Nu)},Mn.prototype.find=function(n){return this.filter(n).head()},Mn.prototype.findLast=function(n){return this.reverse().find(n)},Mn.prototype.invokeMap=lr(function(n,t){return typeof n=="function"?new Mn(this):this.map(function(r){return Dt(r,n,t)})}),Mn.prototype.reject=function(n){return this.filter(su(je(n)))},Mn.prototype.slice=function(n,t){n=Ou(n);var r=this;return r.__filtered__&&(0t)?new Mn(r):(0>n?r=r.takeRight(-n):n&&(r=r.drop(n)), -t!==F&&(t=Ou(t),r=0>t?r.dropRight(-t):r.take(t-n)),r)},Mn.prototype.takeRightWhile=function(n){return this.reverse().takeWhile(n).reverse()},Mn.prototype.toArray=function(){return this.take(4294967295)},Et(Mn.prototype,function(n,t){var r=/^(?:filter|find|map|reject)|While$/.test(t),e=/^(?:head|last)$/.test(t),u=On[e?"take"+("last"==t?"Right":""):t],i=e||/^find/.test(t);u&&(On.prototype[t]=function(){function t(n){return n=u.apply(On,s([n],f)),e&&h?n[0]:n}var o=this.__wrapped__,f=e?[1]:arguments,c=o instanceof Mn,a=f[0],l=c||af(o); -l&&r&&typeof a=="function"&&1!=a.length&&(c=l=false);var h=this.__chain__,p=!!this.__actions__.length,a=i&&!h,c=c&&!p;return!i&&l?(o=c?o:new Mn(this),o=n.apply(o,f),o.__actions__.push({func:nu,args:[t],thisArg:F}),new zn(o,h)):a&&c?n.apply(this,f):(o=this.thru(t),a?e?o.value()[0]:o.value():o)})}),u("pop push shift sort splice unshift".split(" "),function(n){var t=ui[n],r=/^(?:push|sort|unshift)$/.test(n)?"tap":"thru",e=/^(?:pop|shift)$/.test(n);On.prototype[n]=function(){var n=arguments;if(e&&!this.__chain__){ -var u=this.value();return t.apply(af(u)?u:[],n)}return this[r](function(r){return t.apply(af(r)?r:[],n)})}}),Et(Mn.prototype,function(n,t){var r=On[t];if(r){var e=r.name+"";(Ji[e]||(Ji[e]=[])).push({name:t,func:r})}}),Ji[Xr(F,2).name]=[{name:"wrapper",func:F}],Mn.prototype.clone=function(){var n=new Mn(this.__wrapped__);return n.__actions__=Mr(this.__actions__),n.__dir__=this.__dir__,n.__filtered__=this.__filtered__,n.__iteratees__=Mr(this.__iteratees__),n.__takeCount__=this.__takeCount__,n.__views__=Mr(this.__views__), -n},Mn.prototype.reverse=function(){if(this.__filtered__){var n=new Mn(this);n.__dir__=-1,n.__filtered__=true}else n=this.clone(),n.__dir__*=-1;return n},Mn.prototype.value=function(){var n,t=this.__wrapped__.value(),r=this.__dir__,e=af(t),u=0>r,i=e?t.length:0;n=i;for(var o=this.__views__,f=0,c=-1,a=o.length;++c=this.__values__.length;return{done:n,value:n?F:this.__values__[this.__index__++]}},On.prototype.plant=function(n){for(var t,r=this;r instanceof Sn;){var e=Pe(r);e.__index__=0,e.__values__=F,t?u.__wrapped__=e:t=e;var u=e,r=r.__wrapped__}return u.__wrapped__=n,t},On.prototype.reverse=function(){var n=this.__wrapped__;return n instanceof Mn?(this.__actions__.length&&(n=new Mn(this)),n=n.reverse(),n.__actions__.push({func:nu,args:[Je],thisArg:F}),new zn(n,this.__chain__)):this.thru(Je); -},On.prototype.toJSON=On.prototype.valueOf=On.prototype.value=function(){return kr(this.__wrapped__,this.__actions__)},On.prototype.first=On.prototype.head,Ai&&(On.prototype[Ai]=tu),On}();typeof define=="function"&&typeof define.amd=="object"&&define.amd?(Zn._=it, define(function(){return it})):Vn?((Vn.exports=it)._=it,qn._=it):Zn._=it}).call(this); \ No newline at end of file diff --git a/scripts/system/particle_explorer/particle-style.css b/scripts/system/particle_explorer/particle-style.css index ef8f1c6dd6..c4e252117e 100644 --- a/scripts/system/particle_explorer/particle-style.css +++ b/scripts/system/particle_explorer/particle-style.css @@ -13,13 +13,13 @@ input[type="button"] { } -.spatial-group { +.property-group { max-height: 0; -webkit-transition: max-height 0.15s ease-out; transition: max-height 0.15s ease-out; overflow: hidden; } -.spatial-group.visible { +.property-group.visible { transition: max-height 0.25s ease-in; } .section-wrap { diff --git a/scripts/system/particle_explorer/particleExplorer.html b/scripts/system/particle_explorer/particleExplorer.html index 09ced857bf..fd8fec3f21 100644 --- a/scripts/system/particle_explorer/particleExplorer.html +++ b/scripts/system/particle_explorer/particleExplorer.html @@ -22,7 +22,7 @@ - + diff --git a/scripts/system/particle_explorer/particleExplorer.js b/scripts/system/particle_explorer/particleExplorer.js index 41fd90b634..94fced626f 100644 --- a/scripts/system/particle_explorer/particleExplorer.js +++ b/scripts/system/particle_explorer/particleExplorer.js @@ -68,6 +68,7 @@ type: "SliderInteger", max: 1000 }, + { type: "Row" }, { id: "emitSpeed", name: "Emit Speed", @@ -78,10 +79,10 @@ { type: "Row" }, { id: "emitOrientation", + unit: "deg", name: "Emit Orientation", - type: "VectorQuaternion" + type: "Vector" }, - { type: "Row" }, { id: "emitShouldTrail", @@ -162,11 +163,13 @@ name: "Alpha Spread", type: "SliderFloat" }, + { type: "Row" }, { id: "alphaStart", name: "Alpha Start", type: "SliderFloat" }, + { type: "Row" }, { id: "alphaFinish", name: "Alpha Finish", @@ -178,11 +181,14 @@ { id: "polarStart", name: "Polar Start", + unit: "deg", type: "SliderRadian" }, + { type: "Row" }, { id: "polarFinish", name: "Polar Finish", + unit: "deg", type: "SliderRadian" }, { type: "Row" } @@ -191,13 +197,16 @@ { id: "azimuthStart", name: "Azimuth Start", + unit: "deg", type: "SliderRadian", - min: -Math.PI, + min: -180, max: 0 }, + { type: "Row" }, { id: "azimuthFinish", name: "Azimuth Finish", + unit: "deg", type: "SliderRadian" }, { type: "Row" } @@ -216,12 +225,14 @@ type: "SliderFloat", max: 4.0 }, + { type: "Row" }, { id: "radiusStart", name: "Radius Start", type: "SliderFloat", max: 4.0 }, + { type: "Row" }, { id: "radiusFinish", name: "Radius Finish", diff --git a/scripts/system/particle_explorer/particleExplorerTool.js b/scripts/system/particle_explorer/particleExplorerTool.js index ba5cb8bc3a..5e240ed192 100644 --- a/scripts/system/particle_explorer/particleExplorerTool.js +++ b/scripts/system/particle_explorer/particleExplorerTool.js @@ -12,12 +12,12 @@ /*global window, alert, EventBridge, dat, listenForSettingsUpdates,createVec3Folder,createQuatFolder,writeVec3ToInterface,writeDataToInterface*/ -var PARTICLE_EXPLORER_HTML_URL = Script.resolvePath('particleExplorer.html'); +var PARTICLE_EXPLORER_HTML_URL = Script.resolvePath(' .html'); ParticleExplorerTool = function() { var that = {}; - that.createWebView = function() { + that.createWebView = function() { that.webView = Tablet.getTablet("com.highfidelity.interface.tablet.system"); that.webView.setVisible = function(value) {}; that.webView.webEventReceived.connect(that.webEventReceived); diff --git a/scripts/system/particle_explorer/underscore-min.js b/scripts/system/particle_explorer/underscore-min.js new file mode 100644 index 0000000000..f01025b7bc --- /dev/null +++ b/scripts/system/particle_explorer/underscore-min.js @@ -0,0 +1,6 @@ +// Underscore.js 1.8.3 +// http://underscorejs.org +// (c) 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors +// Underscore may be freely distributed under the MIT license. +(function(){function n(n){function t(t,r,e,u,i,o){for(;i>=0&&o>i;i+=n){var a=u?u[i]:i;e=r(e,t[a],a,t)}return e}return function(r,e,u,i){e=b(e,i,4);var o=!k(r)&&m.keys(r),a=(o||r).length,c=n>0?0:a-1;return arguments.length<3&&(u=r[o?o[c]:c],c+=n),t(r,e,u,o,c,a)}}function t(n){return function(t,r,e){r=x(r,e);for(var u=O(t),i=n>0?0:u-1;i>=0&&u>i;i+=n)if(r(t[i],i,t))return i;return-1}}function r(n,t,r){return function(e,u,i){var o=0,a=O(e);if("number"==typeof i)n>0?o=i>=0?i:Math.max(i+a,o):a=i>=0?Math.min(i+1,a):i+a+1;else if(r&&i&&a)return i=r(e,u),e[i]===u?i:-1;if(u!==u)return i=t(l.call(e,o,a),m.isNaN),i>=0?i+o:-1;for(i=n>0?o:a-1;i>=0&&a>i;i+=n)if(e[i]===u)return i;return-1}}function e(n,t){var r=I.length,e=n.constructor,u=m.isFunction(e)&&e.prototype||a,i="constructor";for(m.has(n,i)&&!m.contains(t,i)&&t.push(i);r--;)i=I[r],i in n&&n[i]!==u[i]&&!m.contains(t,i)&&t.push(i)}var u=this,i=u._,o=Array.prototype,a=Object.prototype,c=Function.prototype,f=o.push,l=o.slice,s=a.toString,p=a.hasOwnProperty,h=Array.isArray,v=Object.keys,g=c.bind,y=Object.create,d=function(){},m=function(n){return n instanceof m?n:this instanceof m?void(this._wrapped=n):new m(n)};"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=m),exports._=m):u._=m,m.VERSION="1.8.3";var b=function(n,t,r){if(t===void 0)return n;switch(null==r?3:r){case 1:return function(r){return n.call(t,r)};case 2:return function(r,e){return n.call(t,r,e)};case 3:return function(r,e,u){return n.call(t,r,e,u)};case 4:return function(r,e,u,i){return n.call(t,r,e,u,i)}}return function(){return n.apply(t,arguments)}},x=function(n,t,r){return null==n?m.identity:m.isFunction(n)?b(n,t,r):m.isObject(n)?m.matcher(n):m.property(n)};m.iteratee=function(n,t){return x(n,t,1/0)};var _=function(n,t){return function(r){var e=arguments.length;if(2>e||null==r)return r;for(var u=1;e>u;u++)for(var i=arguments[u],o=n(i),a=o.length,c=0;a>c;c++){var f=o[c];t&&r[f]!==void 0||(r[f]=i[f])}return r}},j=function(n){if(!m.isObject(n))return{};if(y)return y(n);d.prototype=n;var t=new d;return d.prototype=null,t},w=function(n){return function(t){return null==t?void 0:t[n]}},A=Math.pow(2,53)-1,O=w("length"),k=function(n){var t=O(n);return"number"==typeof t&&t>=0&&A>=t};m.each=m.forEach=function(n,t,r){t=b(t,r);var e,u;if(k(n))for(e=0,u=n.length;u>e;e++)t(n[e],e,n);else{var i=m.keys(n);for(e=0,u=i.length;u>e;e++)t(n[i[e]],i[e],n)}return n},m.map=m.collect=function(n,t,r){t=x(t,r);for(var e=!k(n)&&m.keys(n),u=(e||n).length,i=Array(u),o=0;u>o;o++){var a=e?e[o]:o;i[o]=t(n[a],a,n)}return i},m.reduce=m.foldl=m.inject=n(1),m.reduceRight=m.foldr=n(-1),m.find=m.detect=function(n,t,r){var e;return e=k(n)?m.findIndex(n,t,r):m.findKey(n,t,r),e!==void 0&&e!==-1?n[e]:void 0},m.filter=m.select=function(n,t,r){var e=[];return t=x(t,r),m.each(n,function(n,r,u){t(n,r,u)&&e.push(n)}),e},m.reject=function(n,t,r){return m.filter(n,m.negate(x(t)),r)},m.every=m.all=function(n,t,r){t=x(t,r);for(var e=!k(n)&&m.keys(n),u=(e||n).length,i=0;u>i;i++){var o=e?e[i]:i;if(!t(n[o],o,n))return!1}return!0},m.some=m.any=function(n,t,r){t=x(t,r);for(var e=!k(n)&&m.keys(n),u=(e||n).length,i=0;u>i;i++){var o=e?e[i]:i;if(t(n[o],o,n))return!0}return!1},m.contains=m.includes=m.include=function(n,t,r,e){return k(n)||(n=m.values(n)),("number"!=typeof r||e)&&(r=0),m.indexOf(n,t,r)>=0},m.invoke=function(n,t){var r=l.call(arguments,2),e=m.isFunction(t);return m.map(n,function(n){var u=e?t:n[t];return null==u?u:u.apply(n,r)})},m.pluck=function(n,t){return m.map(n,m.property(t))},m.where=function(n,t){return m.filter(n,m.matcher(t))},m.findWhere=function(n,t){return m.find(n,m.matcher(t))},m.max=function(n,t,r){var e,u,i=-1/0,o=-1/0;if(null==t&&null!=n){n=k(n)?n:m.values(n);for(var a=0,c=n.length;c>a;a++)e=n[a],e>i&&(i=e)}else t=x(t,r),m.each(n,function(n,r,e){u=t(n,r,e),(u>o||u===-1/0&&i===-1/0)&&(i=n,o=u)});return i},m.min=function(n,t,r){var e,u,i=1/0,o=1/0;if(null==t&&null!=n){n=k(n)?n:m.values(n);for(var a=0,c=n.length;c>a;a++)e=n[a],i>e&&(i=e)}else t=x(t,r),m.each(n,function(n,r,e){u=t(n,r,e),(o>u||1/0===u&&1/0===i)&&(i=n,o=u)});return i},m.shuffle=function(n){for(var t,r=k(n)?n:m.values(n),e=r.length,u=Array(e),i=0;e>i;i++)t=m.random(0,i),t!==i&&(u[i]=u[t]),u[t]=r[i];return u},m.sample=function(n,t,r){return null==t||r?(k(n)||(n=m.values(n)),n[m.random(n.length-1)]):m.shuffle(n).slice(0,Math.max(0,t))},m.sortBy=function(n,t,r){return t=x(t,r),m.pluck(m.map(n,function(n,r,e){return{value:n,index:r,criteria:t(n,r,e)}}).sort(function(n,t){var r=n.criteria,e=t.criteria;if(r!==e){if(r>e||r===void 0)return 1;if(e>r||e===void 0)return-1}return n.index-t.index}),"value")};var F=function(n){return function(t,r,e){var u={};return r=x(r,e),m.each(t,function(e,i){var o=r(e,i,t);n(u,e,o)}),u}};m.groupBy=F(function(n,t,r){m.has(n,r)?n[r].push(t):n[r]=[t]}),m.indexBy=F(function(n,t,r){n[r]=t}),m.countBy=F(function(n,t,r){m.has(n,r)?n[r]++:n[r]=1}),m.toArray=function(n){return n?m.isArray(n)?l.call(n):k(n)?m.map(n,m.identity):m.values(n):[]},m.size=function(n){return null==n?0:k(n)?n.length:m.keys(n).length},m.partition=function(n,t,r){t=x(t,r);var e=[],u=[];return m.each(n,function(n,r,i){(t(n,r,i)?e:u).push(n)}),[e,u]},m.first=m.head=m.take=function(n,t,r){return null==n?void 0:null==t||r?n[0]:m.initial(n,n.length-t)},m.initial=function(n,t,r){return l.call(n,0,Math.max(0,n.length-(null==t||r?1:t)))},m.last=function(n,t,r){return null==n?void 0:null==t||r?n[n.length-1]:m.rest(n,Math.max(0,n.length-t))},m.rest=m.tail=m.drop=function(n,t,r){return l.call(n,null==t||r?1:t)},m.compact=function(n){return m.filter(n,m.identity)};var S=function(n,t,r,e){for(var u=[],i=0,o=e||0,a=O(n);a>o;o++){var c=n[o];if(k(c)&&(m.isArray(c)||m.isArguments(c))){t||(c=S(c,t,r));var f=0,l=c.length;for(u.length+=l;l>f;)u[i++]=c[f++]}else r||(u[i++]=c)}return u};m.flatten=function(n,t){return S(n,t,!1)},m.without=function(n){return m.difference(n,l.call(arguments,1))},m.uniq=m.unique=function(n,t,r,e){m.isBoolean(t)||(e=r,r=t,t=!1),null!=r&&(r=x(r,e));for(var u=[],i=[],o=0,a=O(n);a>o;o++){var c=n[o],f=r?r(c,o,n):c;t?(o&&i===f||u.push(c),i=f):r?m.contains(i,f)||(i.push(f),u.push(c)):m.contains(u,c)||u.push(c)}return u},m.union=function(){return m.uniq(S(arguments,!0,!0))},m.intersection=function(n){for(var t=[],r=arguments.length,e=0,u=O(n);u>e;e++){var i=n[e];if(!m.contains(t,i)){for(var o=1;r>o&&m.contains(arguments[o],i);o++);o===r&&t.push(i)}}return t},m.difference=function(n){var t=S(arguments,!0,!0,1);return m.filter(n,function(n){return!m.contains(t,n)})},m.zip=function(){return m.unzip(arguments)},m.unzip=function(n){for(var t=n&&m.max(n,O).length||0,r=Array(t),e=0;t>e;e++)r[e]=m.pluck(n,e);return r},m.object=function(n,t){for(var r={},e=0,u=O(n);u>e;e++)t?r[n[e]]=t[e]:r[n[e][0]]=n[e][1];return r},m.findIndex=t(1),m.findLastIndex=t(-1),m.sortedIndex=function(n,t,r,e){r=x(r,e,1);for(var u=r(t),i=0,o=O(n);o>i;){var a=Math.floor((i+o)/2);r(n[a])i;i++,n+=r)u[i]=n;return u};var E=function(n,t,r,e,u){if(!(e instanceof t))return n.apply(r,u);var i=j(n.prototype),o=n.apply(i,u);return m.isObject(o)?o:i};m.bind=function(n,t){if(g&&n.bind===g)return g.apply(n,l.call(arguments,1));if(!m.isFunction(n))throw new TypeError("Bind must be called on a function");var r=l.call(arguments,2),e=function(){return E(n,e,t,this,r.concat(l.call(arguments)))};return e},m.partial=function(n){var t=l.call(arguments,1),r=function(){for(var e=0,u=t.length,i=Array(u),o=0;u>o;o++)i[o]=t[o]===m?arguments[e++]:t[o];for(;e=e)throw new Error("bindAll must be passed function names");for(t=1;e>t;t++)r=arguments[t],n[r]=m.bind(n[r],n);return n},m.memoize=function(n,t){var r=function(e){var u=r.cache,i=""+(t?t.apply(this,arguments):e);return m.has(u,i)||(u[i]=n.apply(this,arguments)),u[i]};return r.cache={},r},m.delay=function(n,t){var r=l.call(arguments,2);return setTimeout(function(){return n.apply(null,r)},t)},m.defer=m.partial(m.delay,m,1),m.throttle=function(n,t,r){var e,u,i,o=null,a=0;r||(r={});var c=function(){a=r.leading===!1?0:m.now(),o=null,i=n.apply(e,u),o||(e=u=null)};return function(){var f=m.now();a||r.leading!==!1||(a=f);var l=t-(f-a);return e=this,u=arguments,0>=l||l>t?(o&&(clearTimeout(o),o=null),a=f,i=n.apply(e,u),o||(e=u=null)):o||r.trailing===!1||(o=setTimeout(c,l)),i}},m.debounce=function(n,t,r){var e,u,i,o,a,c=function(){var f=m.now()-o;t>f&&f>=0?e=setTimeout(c,t-f):(e=null,r||(a=n.apply(i,u),e||(i=u=null)))};return function(){i=this,u=arguments,o=m.now();var f=r&&!e;return e||(e=setTimeout(c,t)),f&&(a=n.apply(i,u),i=u=null),a}},m.wrap=function(n,t){return m.partial(t,n)},m.negate=function(n){return function(){return!n.apply(this,arguments)}},m.compose=function(){var n=arguments,t=n.length-1;return function(){for(var r=t,e=n[t].apply(this,arguments);r--;)e=n[r].call(this,e);return e}},m.after=function(n,t){return function(){return--n<1?t.apply(this,arguments):void 0}},m.before=function(n,t){var r;return function(){return--n>0&&(r=t.apply(this,arguments)),1>=n&&(t=null),r}},m.once=m.partial(m.before,2);var M=!{toString:null}.propertyIsEnumerable("toString"),I=["valueOf","isPrototypeOf","toString","propertyIsEnumerable","hasOwnProperty","toLocaleString"];m.keys=function(n){if(!m.isObject(n))return[];if(v)return v(n);var t=[];for(var r in n)m.has(n,r)&&t.push(r);return M&&e(n,t),t},m.allKeys=function(n){if(!m.isObject(n))return[];var t=[];for(var r in n)t.push(r);return M&&e(n,t),t},m.values=function(n){for(var t=m.keys(n),r=t.length,e=Array(r),u=0;r>u;u++)e[u]=n[t[u]];return e},m.mapObject=function(n,t,r){t=x(t,r);for(var e,u=m.keys(n),i=u.length,o={},a=0;i>a;a++)e=u[a],o[e]=t(n[e],e,n);return o},m.pairs=function(n){for(var t=m.keys(n),r=t.length,e=Array(r),u=0;r>u;u++)e[u]=[t[u],n[t[u]]];return e},m.invert=function(n){for(var t={},r=m.keys(n),e=0,u=r.length;u>e;e++)t[n[r[e]]]=r[e];return t},m.functions=m.methods=function(n){var t=[];for(var r in n)m.isFunction(n[r])&&t.push(r);return t.sort()},m.extend=_(m.allKeys),m.extendOwn=m.assign=_(m.keys),m.findKey=function(n,t,r){t=x(t,r);for(var e,u=m.keys(n),i=0,o=u.length;o>i;i++)if(e=u[i],t(n[e],e,n))return e},m.pick=function(n,t,r){var e,u,i={},o=n;if(null==o)return i;m.isFunction(t)?(u=m.allKeys(o),e=b(t,r)):(u=S(arguments,!1,!1,1),e=function(n,t,r){return t in r},o=Object(o));for(var a=0,c=u.length;c>a;a++){var f=u[a],l=o[f];e(l,f,o)&&(i[f]=l)}return i},m.omit=function(n,t,r){if(m.isFunction(t))t=m.negate(t);else{var e=m.map(S(arguments,!1,!1,1),String);t=function(n,t){return!m.contains(e,t)}}return m.pick(n,t,r)},m.defaults=_(m.allKeys,!0),m.create=function(n,t){var r=j(n);return t&&m.extendOwn(r,t),r},m.clone=function(n){return m.isObject(n)?m.isArray(n)?n.slice():m.extend({},n):n},m.tap=function(n,t){return t(n),n},m.isMatch=function(n,t){var r=m.keys(t),e=r.length;if(null==n)return!e;for(var u=Object(n),i=0;e>i;i++){var o=r[i];if(t[o]!==u[o]||!(o in u))return!1}return!0};var N=function(n,t,r,e){if(n===t)return 0!==n||1/n===1/t;if(null==n||null==t)return n===t;n instanceof m&&(n=n._wrapped),t instanceof m&&(t=t._wrapped);var u=s.call(n);if(u!==s.call(t))return!1;switch(u){case"[object RegExp]":case"[object String]":return""+n==""+t;case"[object Number]":return+n!==+n?+t!==+t:0===+n?1/+n===1/t:+n===+t;case"[object Date]":case"[object Boolean]":return+n===+t}var i="[object Array]"===u;if(!i){if("object"!=typeof n||"object"!=typeof t)return!1;var o=n.constructor,a=t.constructor;if(o!==a&&!(m.isFunction(o)&&o instanceof o&&m.isFunction(a)&&a instanceof a)&&"constructor"in n&&"constructor"in t)return!1}r=r||[],e=e||[];for(var c=r.length;c--;)if(r[c]===n)return e[c]===t;if(r.push(n),e.push(t),i){if(c=n.length,c!==t.length)return!1;for(;c--;)if(!N(n[c],t[c],r,e))return!1}else{var f,l=m.keys(n);if(c=l.length,m.keys(t).length!==c)return!1;for(;c--;)if(f=l[c],!m.has(t,f)||!N(n[f],t[f],r,e))return!1}return r.pop(),e.pop(),!0};m.isEqual=function(n,t){return N(n,t)},m.isEmpty=function(n){return null==n?!0:k(n)&&(m.isArray(n)||m.isString(n)||m.isArguments(n))?0===n.length:0===m.keys(n).length},m.isElement=function(n){return!(!n||1!==n.nodeType)},m.isArray=h||function(n){return"[object Array]"===s.call(n)},m.isObject=function(n){var t=typeof n;return"function"===t||"object"===t&&!!n},m.each(["Arguments","Function","String","Number","Date","RegExp","Error"],function(n){m["is"+n]=function(t){return s.call(t)==="[object "+n+"]"}}),m.isArguments(arguments)||(m.isArguments=function(n){return m.has(n,"callee")}),"function"!=typeof/./&&"object"!=typeof Int8Array&&(m.isFunction=function(n){return"function"==typeof n||!1}),m.isFinite=function(n){return isFinite(n)&&!isNaN(parseFloat(n))},m.isNaN=function(n){return m.isNumber(n)&&n!==+n},m.isBoolean=function(n){return n===!0||n===!1||"[object Boolean]"===s.call(n)},m.isNull=function(n){return null===n},m.isUndefined=function(n){return n===void 0},m.has=function(n,t){return null!=n&&p.call(n,t)},m.noConflict=function(){return u._=i,this},m.identity=function(n){return n},m.constant=function(n){return function(){return n}},m.noop=function(){},m.property=w,m.propertyOf=function(n){return null==n?function(){}:function(t){return n[t]}},m.matcher=m.matches=function(n){return n=m.extendOwn({},n),function(t){return m.isMatch(t,n)}},m.times=function(n,t,r){var e=Array(Math.max(0,n));t=b(t,r,1);for(var u=0;n>u;u++)e[u]=t(u);return e},m.random=function(n,t){return null==t&&(t=n,n=0),n+Math.floor(Math.random()*(t-n+1))},m.now=Date.now||function(){return(new Date).getTime()};var B={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`"},T=m.invert(B),R=function(n){var t=function(t){return n[t]},r="(?:"+m.keys(n).join("|")+")",e=RegExp(r),u=RegExp(r,"g");return function(n){return n=null==n?"":""+n,e.test(n)?n.replace(u,t):n}};m.escape=R(B),m.unescape=R(T),m.result=function(n,t,r){var e=null==n?void 0:n[t];return e===void 0&&(e=r),m.isFunction(e)?e.call(n):e};var q=0;m.uniqueId=function(n){var t=++q+"";return n?n+t:t},m.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var K=/(.)^/,z={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},D=/\\|'|\r|\n|\u2028|\u2029/g,L=function(n){return"\\"+z[n]};m.template=function(n,t,r){!t&&r&&(t=r),t=m.defaults({},t,m.templateSettings);var e=RegExp([(t.escape||K).source,(t.interpolate||K).source,(t.evaluate||K).source].join("|")+"|$","g"),u=0,i="__p+='";n.replace(e,function(t,r,e,o,a){return i+=n.slice(u,a).replace(D,L),u=a+t.length,r?i+="'+\n((__t=("+r+"))==null?'':_.escape(__t))+\n'":e?i+="'+\n((__t=("+e+"))==null?'':__t)+\n'":o&&(i+="';\n"+o+"\n__p+='"),t}),i+="';\n",t.variable||(i="with(obj||{}){\n"+i+"}\n"),i="var __t,__p='',__j=Array.prototype.join,"+"print=function(){__p+=__j.call(arguments,'');};\n"+i+"return __p;\n";try{var o=new Function(t.variable||"obj","_",i)}catch(a){throw a.source=i,a}var c=function(n){return o.call(this,n,m)},f=t.variable||"obj";return c.source="function("+f+"){\n"+i+"}",c},m.chain=function(n){var t=m(n);return t._chain=!0,t};var P=function(n,t){return n._chain?m(t).chain():t};m.mixin=function(n){m.each(m.functions(n),function(t){var r=m[t]=n[t];m.prototype[t]=function(){var n=[this._wrapped];return f.apply(n,arguments),P(this,r.apply(m,n))}})},m.mixin(m),m.each(["pop","push","reverse","shift","sort","splice","unshift"],function(n){var t=o[n];m.prototype[n]=function(){var r=this._wrapped;return t.apply(r,arguments),"shift"!==n&&"splice"!==n||0!==r.length||delete r[0],P(this,r)}}),m.each(["concat","join","slice"],function(n){var t=o[n];m.prototype[n]=function(){return P(this,t.apply(this._wrapped,arguments))}}),m.prototype.value=function(){return this._wrapped},m.prototype.valueOf=m.prototype.toJSON=m.prototype.value,m.prototype.toString=function(){return""+this._wrapped},"function"==typeof define&&define.amd&&define("underscore",[],function(){return m})}).call(this); +//# sourceMappingURL=underscore-min.map \ No newline at end of file From d5b7a4e36bbe48bf15ad7e75336999f077399ceb Mon Sep 17 00:00:00 2001 From: Menithal Date: Mon, 22 May 2017 02:45:24 +0300 Subject: [PATCH 030/357] Doing some one-way binding for now. - Oddly, there is still an issue with the webview occasionally not appearing when a particle is selected, and appearing inthe wrong time. Investigate. --- .../resources/qml/hifi/tablet/EditTabView.qml | 3 +- .../particle_explorer/hifi-entity-ui.js | 103 ++++++++++++++++-- .../particle_explorer/particleExplorer.js | 11 +- 3 files changed, 101 insertions(+), 16 deletions(-) diff --git a/interface/resources/qml/hifi/tablet/EditTabView.qml b/interface/resources/qml/hifi/tablet/EditTabView.qml index bd42fb06a8..c4927fdfbb 100644 --- a/interface/resources/qml/hifi/tablet/EditTabView.qml +++ b/interface/resources/qml/hifi/tablet/EditTabView.qml @@ -274,10 +274,11 @@ TabView { // that it would remove by title name instead. function enableParticles(enabled) { if (enabled && editTabView.children.length < 4) { + console.log("ADDING PARTICLES TAB"); editTabView.addTab("P", Qt.createComponent("tabs/ParticleTab.qml")); } else if (!enabled && editTabView.children.length > 2) { + console.log("REMOVING PARTICLES TAB"); editTabView.removeTab(4); - editTabView.removeTab(5); } } diff --git a/scripts/system/particle_explorer/hifi-entity-ui.js b/scripts/system/particle_explorer/hifi-entity-ui.js index cec724b2f5..0173b1f527 100644 --- a/scripts/system/particle_explorer/hifi-entity-ui.js +++ b/scripts/system/particle_explorer/hifi-entity-ui.js @@ -44,21 +44,90 @@ function HifiEntityUI(parent, structure){ this.structure = structure; var self = this; this.webBridgeSync = _.debounce(function(id, val){ - console.log(id, val); - if(self.bridge){ - self.bridge.emitWebEvent(JSON.stringify({})); + if (self.EventBridge){ + var sendPackage = {}; + sendPackage[id] = val; + var message = { + messageType: "settings_update", + updateSettings: sendPackage + }; + self.EventBridge.emitWebEvent(JSON.stringify(message)); } }, 125); } HifiEntityUI.prototype = { - bindBridge: function (bridge){ - this.bridge = bridge; + connect: function (EventBridge){ + this.EventBridge = EventBridge; + var self = this; + EventBridge.emitWebEvent(JSON.stringify({ + messageType: 'page_loaded' + })); + + EventBridge.scriptEventReceived.connect(function(data){ + data = JSON.parse(data); + if (data.messageType === 'particle_settings') { + // Update settings + var currentProperties = data.currentProperties; + // Do expected property match with structure; + Object.keys(currentProperties).forEach(function(value, index) { + var property = currentProperties[value]; + var field = self.builtRows[value]; + if (field) { + + var el = document.getElementById(value); + + console.log(value, property, field, el); + if (field.className.indexOf("radian") !== -1) { + el.value = property / RADIAN; + el.onchange({target: el}); + } else if (field.className.indexOf("range") !== -1 || field.className.indexOf("texture") !== -1){ + el.value = property; + el.onchange({target: el}); + } else if (field.className.indexOf("checkbox") !== -1) { + if (property){ + el.setAttribute("checked", property); + } else { + el.removeAttribute("checked"); + } + } else if (field.className.indexOf("vector-section") !== -1) { + if (field.className.indexOf("rgb") !== -1) { + var red = document.getElementById(value+"-red"); + var blue = document.getElementById(value+"-blue"); + var green = document.getElementById(value+"-green"); + red.value = property.red; + blue.value = property.blue; + green.value = property.green; + // crashes here. + + } else if (field.className.indexOf("xyz")) { + + var x = document.getElementById(value+"-x"); + var y = document.getElementById(value+"-y"); + var z = document.getElementById(value+"-z"); + // crashes here. + + if (value === "emitOrientation") { + + } else { + x.value = property.x; + y.value = property.y; + z.value = property.z; + } + } + } + } + + }); + } else if (data.messageType === 'particle_close') { + // Legacy event on particle close. This webview actually gets removed now + } + }); }, build: function () { var self = this; var sections = Object.keys(this.structure); - + this.builtRows = {}; sections.forEach(function(section, index){ var properties = self.structure[section]; self.addSection(self.parent,section,properties,index); @@ -86,7 +155,12 @@ HifiEntityUI.prototype = { animationWrapper.className = "section-wrap"; for (var property in properties) { - self.addElement(animationWrapper, properties[property]); + + var builtRow = self.addElement(animationWrapper, properties[property]) + var id = properties[property].id; + if (id) { + self.builtRows[id] = builtRow; + } } sectionDivBody.appendChild(animationWrapper); parent.appendChild(sectionDivBody); @@ -152,6 +226,7 @@ HifiEntityUI.prototype = { element.oninput = function(event) { self.webBridgeSync(group.id, {x: domArray[0].value, y: domArray[1].value, z: domArray[2].value}); }; + element.onchange = element.oninput; domArray.push(element); } @@ -210,6 +285,7 @@ HifiEntityUI.prototype = { $colPickContainer.colpickSetColor({r: domArray[0].value, g: domArray[1].value, b: domArray[2].value}, true); }; + element.onchange = element.oninput; domArray.push(element); } @@ -274,6 +350,7 @@ HifiEntityUI.prototype = { var textureImage = document.createElement("div"); var textureUrl = document.createElement("input"); textureUrl.setAttribute("type", "text"); + textureUrl.id = group.id; textureImage.className = "texture-image no-texture"; var image = document.createElement("img"); var imageLoad = _.debounce(function(url){ @@ -294,7 +371,7 @@ HifiEntityUI.prototype = { var url = event.target.value; imageLoad(url); }; - + textureUrl.onchange = textureUrl.oninput; textureImage.appendChild(image); parent.appendChild(textureImage); parent.appendChild(textureUrl); @@ -327,6 +404,7 @@ HifiEntityUI.prototype = { slider.value = event.target.value; self.webBridgeSync(group.id, slider.value); }; + inputField.onchange = inputField.oninput; slider.oninput = function (event){ inputField.value = event.target.value; self.webBridgeSync(group.id, slider.value); @@ -337,7 +415,7 @@ HifiEntityUI.prototype = { slider.setAttribute("min", group.min !== undefined ? group.min: 0); slider.setAttribute("max", group.max !== undefined ? group.max: 180); slider.setAttribute("step", 1); - + parent.className += " radian"; inputField.setAttribute("min", (group.min !== undefined ? group.min: 0) ); inputField.setAttribute("max", (group.max !== undefined ? group.max: 180)); @@ -345,6 +423,9 @@ HifiEntityUI.prototype = { slider.value = event.target.value; self.webBridgeSync(group.id, slider.value * RADIAN ); }; + inputField.onchange = inputField.oninput; + + inputField.id = group.id; slider.oninput = function (event){ if (event.target.value > 0){ inputField.value = Math.floor(event.target.value); @@ -361,7 +442,6 @@ HifiEntityUI.prototype = { degrees.style.paddingLeft = "0.4rem"; container.appendChild(degrees); - slider.id = group.id; } else { // Must then be Float inputField.setAttribute("min", group.min !== undefined? group.min: 0); @@ -376,6 +456,7 @@ HifiEntityUI.prototype = { self.webBridgeSync(group.id, slider.value); // bind web sock update here. }; + inputField.onchange = inputField.oninput; slider.oninput = function (event){ inputField.value = event.target.value; self.webBridgeSync(group.id, inputField.value); @@ -448,6 +529,6 @@ HifiEntityUI.prototype = { default: console.log("not defined"); } - + return row; } }; diff --git a/scripts/system/particle_explorer/particleExplorer.js b/scripts/system/particle_explorer/particleExplorer.js index 94fced626f..cbb59bd9bc 100644 --- a/scripts/system/particle_explorer/particleExplorer.js +++ b/scripts/system/particle_explorer/particleExplorer.js @@ -12,7 +12,7 @@ // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -/* HifiEntityUI */ +/* global HifiEntityUI, openEventBridge, EventBridge, document, window */ (function(){ var menuStructure = { @@ -246,8 +246,11 @@ var root = document.getElementById("particle-explorer"); - window.addEventListener('load', function(){ + window.onload = function(){ var ui = new HifiEntityUI(root, menuStructure); - ui.build(); - }); + openEventBridge( function(EventBridge) { + ui.build(); + ui.connect(EventBridge); + }) + }; })(); From 6da46c2d4c35350ada8a16a0c613e8513206bb06 Mon Sep 17 00:00:00 2001 From: volansystech Date: Sat, 20 May 2017 02:01:10 +0530 Subject: [PATCH 031/357] Resolve Mouse hover issue. --- interface/src/ui/overlays/Web3DOverlay.cpp | 52 ++++++++++------------ 1 file changed, 23 insertions(+), 29 deletions(-) diff --git a/interface/src/ui/overlays/Web3DOverlay.cpp b/interface/src/ui/overlays/Web3DOverlay.cpp index 37dce9d6e4..8a06c0fdec 100644 --- a/interface/src/ui/overlays/Web3DOverlay.cpp +++ b/interface/src/ui/overlays/Web3DOverlay.cpp @@ -370,8 +370,7 @@ void Web3DOverlay::handlePointerEventAsTouch(const PointerEvent& event) { QEvent::Type touchType; Qt::TouchPointState touchPointState; - QEvent::Type mouseType; - + Qt::MouseButton button = Qt::NoButton; Qt::MouseButtons buttons = Qt::NoButton; if (event.getButton() == PointerEvent::PrimaryButton) { @@ -385,18 +384,15 @@ void Web3DOverlay::handlePointerEventAsTouch(const PointerEvent& event) { case PointerEvent::Press: touchType = QEvent::TouchBegin; touchPointState = Qt::TouchPointPressed; - mouseType = QEvent::MouseButtonPress; break; case PointerEvent::Release: touchType = QEvent::TouchEnd; touchPointState = Qt::TouchPointReleased; - mouseType = QEvent::MouseButtonRelease; break; case PointerEvent::Move: touchType = QEvent::TouchUpdate; touchPointState = Qt::TouchPointMoved; - mouseType = QEvent::MouseMove; - + if (((event.getButtons() & PointerEvent::PrimaryButton) > 0) != this->_pressed) { // Mouse was pressed/released while off the overlay; convert touch and mouse events to press/release to reflect // current mouse/touch status. @@ -404,12 +400,10 @@ void Web3DOverlay::handlePointerEventAsTouch(const PointerEvent& event) { if (this->_pressed) { touchType = QEvent::TouchBegin; touchPointState = Qt::TouchPointPressed; - mouseType = QEvent::MouseButtonPress; } else { touchType = QEvent::TouchEnd; touchPointState = Qt::TouchPointReleased; - mouseType = QEvent::MouseButtonRelease; } button = Qt::LeftButton; @@ -427,30 +421,30 @@ void Web3DOverlay::handlePointerEventAsTouch(const PointerEvent& event) { event.getButtons() == PointerEvent::SecondaryButton) { return; } - if (_inputMode == Touch) { - QTouchEvent::TouchPoint point; - point.setId(event.getID()); - point.setState(touchPointState); - point.setPos(windowPoint); - point.setScreenPos(windowPoint); - QList touchPoints; - touchPoints.push_back(point); + + QTouchEvent::TouchPoint point; + point.setId(event.getID()); + point.setState(touchPointState); + point.setPos(windowPoint); + point.setScreenPos(windowPoint); + QList touchPoints; + touchPoints.push_back(point); - QTouchEvent* touchEvent = new QTouchEvent(touchType, &_touchDevice, event.getKeyboardModifiers()); - touchEvent->setWindow(_webSurface->getWindow()); - touchEvent->setTarget(_webSurface->getRootItem()); - touchEvent->setTouchPoints(touchPoints); - touchEvent->setTouchPointStates(touchPointState); + QTouchEvent* touchEvent = new QTouchEvent(touchType, &_touchDevice, event.getKeyboardModifiers()); + touchEvent->setWindow(_webSurface->getWindow()); + touchEvent->setTarget(_webSurface->getRootItem()); + touchEvent->setTouchPoints(touchPoints); + touchEvent->setTouchPointStates(touchPointState); - QCoreApplication::postEvent(_webSurface->getWindow(), touchEvent); - } else { - // Send mouse events to the Web surface so that HTML dialog elements work with mouse press and hover. - // FIXME: Scroll bar dragging is a bit unstable in the tablet (content can jump up and down at times). - // This may be improved in Qt 5.8. Release notes: "Cleaned up touch and mouse event delivery". + QCoreApplication::postEvent(_webSurface->getWindow(), touchEvent, Qt::HighEventPriority); + + // Send mouse events to the Web surface so that HTML dialog elements work with mouse press and hover. + // FIXME: Scroll bar dragging is a bit unstable in the tablet (content can jump up and down at times). + // This may be improved in Qt 5.8. Release notes: "Cleaned up touch and mouse event delivery". - QMouseEvent* mouseEvent = new QMouseEvent(mouseType, windowPoint, windowPoint, windowPoint, button, buttons, Qt::NoModifier); - QCoreApplication::postEvent(_webSurface->getWindow(), mouseEvent); - } + QMouseEvent* mouseEvent = new QMouseEvent(QEvent::MouseMove, windowPoint, windowPoint, windowPoint, button, buttons, Qt::NoModifier); + QCoreApplication::postEvent(_webSurface->getWindow(), mouseEvent, Qt::LowEventPriority); + } void Web3DOverlay::handlePointerEventAsMouse(const PointerEvent& event) { From 46acbe1abac5a49b17b7f28b6a06d33226f9163e Mon Sep 17 00:00:00 2001 From: Menithal Date: Mon, 22 May 2017 11:27:32 +0300 Subject: [PATCH 032/357] Fixed typo --- scripts/system/particle_explorer/hifi-entity-ui.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/scripts/system/particle_explorer/hifi-entity-ui.js b/scripts/system/particle_explorer/hifi-entity-ui.js index 0173b1f527..167a022b58 100644 --- a/scripts/system/particle_explorer/hifi-entity-ui.js +++ b/scripts/system/particle_explorer/hifi-entity-ui.js @@ -45,11 +45,12 @@ function HifiEntityUI(parent, structure){ var self = this; this.webBridgeSync = _.debounce(function(id, val){ if (self.EventBridge){ + var sendPackage = {}; sendPackage[id] = val; var message = { messageType: "settings_update", - updateSettings: sendPackage + updatedSettings: sendPackage }; self.EventBridge.emitWebEvent(JSON.stringify(message)); } @@ -68,6 +69,7 @@ HifiEntityUI.prototype = { data = JSON.parse(data); if (data.messageType === 'particle_settings') { // Update settings + console.log(data); var currentProperties = data.currentProperties; // Do expected property match with structure; Object.keys(currentProperties).forEach(function(value, index) { @@ -76,8 +78,6 @@ HifiEntityUI.prototype = { if (field) { var el = document.getElementById(value); - - console.log(value, property, field, el); if (field.className.indexOf("radian") !== -1) { el.value = property / RADIAN; el.onchange({target: el}); @@ -98,6 +98,7 @@ HifiEntityUI.prototype = { red.value = property.red; blue.value = property.blue; green.value = property.green; + red.oninput({target: red}); // crashes here. } else if (field.className.indexOf("xyz")) { From 9aa7e2e56dae6dc88b320cd0b7003eca5110b42f Mon Sep 17 00:00:00 2001 From: Menithal Date: Tue, 23 May 2017 02:19:52 +0300 Subject: [PATCH 033/357] Adjusted values --- scripts/system/particle_explorer/particleExplorer.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/scripts/system/particle_explorer/particleExplorer.js b/scripts/system/particle_explorer/particleExplorer.js index cbb59bd9bc..5807b7d29e 100644 --- a/scripts/system/particle_explorer/particleExplorer.js +++ b/scripts/system/particle_explorer/particleExplorer.js @@ -41,9 +41,9 @@ { id: "lifespan", name: "Lifespan", - type: "SliderInteger", - min: -1, - max: 3600 + type: "SliderFloat", + min: 0.01, + max: 10 }, { type: "Row" }, { @@ -51,7 +51,7 @@ name: "Max Particles", type: "SliderInteger", min: 1, - max: 1000 + max: 10000 }, { type: "Row" }, { @@ -251,6 +251,6 @@ openEventBridge( function(EventBridge) { ui.build(); ui.connect(EventBridge); - }) + }); }; })(); From c256893575e9935ced4bb789318b5c6aea13247c Mon Sep 17 00:00:00 2001 From: samcake Date: Tue, 23 May 2017 18:00:22 -0700 Subject: [PATCH 034/357] some clean up: --- .../src/RenderableZoneEntityItem.cpp | 25 +++-- .../render-utils/src/RenderDeferredTask.cpp | 11 +- libraries/render-utils/src/ZoneRenderer.cpp | 102 +++++++++--------- libraries/render-utils/src/ZoneRenderer.h | 8 +- 4 files changed, 80 insertions(+), 66 deletions(-) diff --git a/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp b/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp index 970672787e..d5579aa022 100644 --- a/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp @@ -373,12 +373,6 @@ void RenderableZoneEntityItem::updateKeyZoneItemFromEntity(RenderableZoneEntityI if (!success) { keyZonePayload.editBound() = render::Item::Bound(); } - - updateKeySunFromEntity(keyZonePayload); - - updateKeyAmbientFromEntity(keyZonePayload); - - updateKeyBackgroundFromEntity(keyZonePayload); } @@ -387,8 +381,25 @@ void RenderableZoneEntityItem::sceneUpdateRenderItemFromEntity(render::Transacti return; } - transaction.updateItem(_myMetaItem, [&](RenderableZoneEntityItemMeta& data) { + bool sunChanged = _keyLightPropertiesChanged; + bool backgroundChanged = _backgroundPropertiesChanged; + bool stageChanged = _stagePropertiesChanged; + bool skyboxChanged = _skyboxPropertiesChanged; + + transaction.updateItem(_myMetaItem, [=](RenderableZoneEntityItemMeta& data) { + updateKeyZoneItemFromEntity(data); + + if (sunChanged) { + updateKeySunFromEntity(data); + } + + if (sunChanged || skyboxChanged) { + updateKeyAmbientFromEntity(data); + } + if (backgroundChanged || skyboxChanged) { + updateKeyBackgroundFromEntity(data); + } }); } diff --git a/libraries/render-utils/src/RenderDeferredTask.cpp b/libraries/render-utils/src/RenderDeferredTask.cpp index 21df88d4c4..b844da8bbe 100644 --- a/libraries/render-utils/src/RenderDeferredTask.cpp +++ b/libraries/render-utils/src/RenderDeferredTask.cpp @@ -123,7 +123,7 @@ void RenderDeferredTask::build(JobModel& task, const render::Varying& input, ren // Draw Lights just add the lights to the current list of lights to deal with. NOt really gpu job for now. task.addJob("DrawLight", lights); - // Filter zones + // Filter zones from the general metas bucket const auto zones = task.addJob("ZoneRenderer", metas); // Light Clustering @@ -138,12 +138,9 @@ void RenderDeferredTask::build(JobModel& task, const render::Varying& input, ren task.addJob("RenderDeferred", deferredLightingInputs); - // Use Stencil and draw background in Lighting buffer to complete filling in the opaque - //const auto backgroundInputs = DrawBackgroundDeferred::Inputs(background, lightingModel).hasVarying(); - //task.addJob("DrawBackgroundDeferred", backgroundInputs); - + // Similar to light stage, background stage has been filled by several potential render items and resolved for the frame in this job task.addJob("DrawBackgroundDeferred", lightingModel); - + // Render transparent objects forward in LightingBuffer const auto transparentsInputs = DrawDeferred::Inputs(transparents, lightingModel).hasVarying(); task.addJob("DrawTransparentDeferred", transparentsInputs, shapePlumber); @@ -207,7 +204,7 @@ void RenderDeferredTask::build(JobModel& task, const render::Varying& input, ren task.addJob("DrawStatus", opaques, DrawStatus(statusIconMap)); } - task.addJob("DebugZoneLighting", deferredFrameTransform); + task.addJob("DrawZoneStack", deferredFrameTransform); } diff --git a/libraries/render-utils/src/ZoneRenderer.cpp b/libraries/render-utils/src/ZoneRenderer.cpp index c51e8205cd..3b4870fd3f 100644 --- a/libraries/render-utils/src/ZoneRenderer.cpp +++ b/libraries/render-utils/src/ZoneRenderer.cpp @@ -127,34 +127,34 @@ void DebugZoneLighting::run(const render::RenderContextPointer& context, const I auto deferredTransform = inputs; auto lightStage = DependencyManager::get()->getLightStage(); - std::vector keyLightStack; + std::vector keyLightStack; if (lightStage && lightStage->_currentFrame._sunLights.size()) { - for (auto index : lightStage->_currentFrame._sunLights) { - keyLightStack.push_back(lightStage->getLight(index)); - } + for (auto index : lightStage->_currentFrame._sunLights) { + keyLightStack.push_back(lightStage->getLight(index)); + } } - keyLightStack.push_back(DependencyManager::get()->getGlobalLight()); + keyLightStack.push_back(DependencyManager::get()->getGlobalLight()); - std::vector ambientLightStack; - if (lightStage && lightStage->_currentFrame._ambientLights.size()) { - for (auto index : lightStage->_currentFrame._ambientLights) { - ambientLightStack.push_back(lightStage->getLight(index)); - } - } - ambientLightStack.push_back(DependencyManager::get()->getGlobalLight()); + std::vector ambientLightStack; + if (lightStage && lightStage->_currentFrame._ambientLights.size()) { + for (auto index : lightStage->_currentFrame._ambientLights) { + ambientLightStack.push_back(lightStage->getLight(index)); + } + } + ambientLightStack.push_back(DependencyManager::get()->getGlobalLight()); auto backgroundStage = DependencyManager::get()->getBackgroundStage(); - std::vector skyboxStack; + std::vector skyboxStack; if (backgroundStage && backgroundStage->_currentFrame._backgrounds.size()) { - for (auto index : backgroundStage->_currentFrame._backgrounds) { - auto background = backgroundStage->getBackground(index); - if (background) { - skyboxStack.push_back(background->getSkybox()); - } - } + for (auto index : backgroundStage->_currentFrame._backgrounds) { + auto background = backgroundStage->getBackground(index); + if (background) { + skyboxStack.push_back(background->getSkybox()); + } + } } - skyboxStack.push_back(DependencyManager::get()->getDefaultSkybox()); + skyboxStack.push_back(DependencyManager::get()->getDefaultSkybox()); gpu::doInBatch(args->_context, [=](gpu::Batch& batch) { @@ -169,40 +169,40 @@ void DebugZoneLighting::run(const render::RenderContextPointer& context, const I batch.setUniformBuffer(ZONE_DEFERRED_TRANSFORM_BUFFER, deferredTransform->getFrameTransformBuffer()); batch.setPipeline(getKeyLightPipeline()); - auto numKeys = keyLightStack.size(); - for (int i = numKeys - 1; i >= 0; i--) { - model.setTranslation(glm::vec3(-4.0, -3.0 + (i * 1.0), -10.0 - (i * 3.0))); - batch.setModelTransform(model); - if (keyLightStack[i]) { - batch.setUniformBuffer(ZONE_KEYLIGHT_BUFFER, keyLightStack[i]->getLightSchemaBuffer()); - batch.draw(gpu::TRIANGLE_STRIP, 4); - } - } + auto numKeys = keyLightStack.size(); + for (int i = numKeys - 1; i >= 0; i--) { + model.setTranslation(glm::vec3(-4.0, -3.0 + (i * 1.0), -10.0 - (i * 3.0))); + batch.setModelTransform(model); + if (keyLightStack[i]) { + batch.setUniformBuffer(ZONE_KEYLIGHT_BUFFER, keyLightStack[i]->getLightSchemaBuffer()); + batch.draw(gpu::TRIANGLE_STRIP, 4); + } + } batch.setPipeline(getAmbientPipeline()); - auto numAmbients = ambientLightStack.size(); - for (int i = numAmbients - 1; i >= 0; i--) { - model.setTranslation(glm::vec3(0.0, -3.0 + (i * 1.0), -10.0 - (i * 3.0))); - batch.setModelTransform(model); - if (ambientLightStack[i]) { - batch.setUniformBuffer(ZONE_AMBIENT_BUFFER, ambientLightStack[i]->getAmbientSchemaBuffer()); - if (ambientLightStack[i]->getAmbientMap()) { - batch.setResourceTexture(ZONE_AMBIENT_MAP, ambientLightStack[i]->getAmbientMap()); - } - batch.draw(gpu::TRIANGLE_STRIP, 4); - } - } + auto numAmbients = ambientLightStack.size(); + for (int i = numAmbients - 1; i >= 0; i--) { + model.setTranslation(glm::vec3(0.0, -3.0 + (i * 1.0), -10.0 - (i * 3.0))); + batch.setModelTransform(model); + if (ambientLightStack[i]) { + batch.setUniformBuffer(ZONE_AMBIENT_BUFFER, ambientLightStack[i]->getAmbientSchemaBuffer()); + if (ambientLightStack[i]->getAmbientMap()) { + batch.setResourceTexture(ZONE_AMBIENT_MAP, ambientLightStack[i]->getAmbientMap()); + } + batch.draw(gpu::TRIANGLE_STRIP, 4); + } + } batch.setPipeline(getBackgroundPipeline()); - auto numBackgrounds = skyboxStack.size(); - for (int i = numBackgrounds - 1; i >= 0; i--) { - model.setTranslation(glm::vec3(4.0, -3.0 + (i * 1.0), -10.0 - (i * 3.0))); - batch.setModelTransform(model); - if (skyboxStack[i]) { - batch.setResourceTexture(ZONE_SKYBOX_MAP, skyboxStack[i]->getCubemap()); - batch.setUniformBuffer(ZONE_SKYBOX_BUFFER, skyboxStack[i]->getSchemaBuffer()); - batch.draw(gpu::TRIANGLE_STRIP, 4); - } - } + auto numBackgrounds = skyboxStack.size(); + for (int i = numBackgrounds - 1; i >= 0; i--) { + model.setTranslation(glm::vec3(4.0, -3.0 + (i * 1.0), -10.0 - (i * 3.0))); + batch.setModelTransform(model); + if (skyboxStack[i]) { + batch.setResourceTexture(ZONE_SKYBOX_MAP, skyboxStack[i]->getCubemap()); + batch.setUniformBuffer(ZONE_SKYBOX_BUFFER, skyboxStack[i]->getSchemaBuffer()); + batch.draw(gpu::TRIANGLE_STRIP, 4); + } + } }); } diff --git a/libraries/render-utils/src/ZoneRenderer.h b/libraries/render-utils/src/ZoneRenderer.h index 40f9db2995..5737499270 100644 --- a/libraries/render-utils/src/ZoneRenderer.h +++ b/libraries/render-utils/src/ZoneRenderer.h @@ -54,11 +54,17 @@ protected: class DebugZoneLighting { public: + class Config : public render::JobConfig { + public: + Config(bool enabled = false) : JobConfig(enabled) {} + }; + using Inputs = DeferredFrameTransformPointer; - using JobModel = render::Job::ModelI; + using JobModel = render::Job::ModelI; DebugZoneLighting() {} + void configure(const Config& configuration) {} void run(const render::RenderContextPointer& context, const Inputs& inputs); protected: From 39654779fbfa9ca1015b65c3595623877f7921b4 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Wed, 24 May 2017 13:35:00 +1200 Subject: [PATCH 035/357] Position tablet relative to hand --- scripts/system/libraries/WebTablet.js | 33 ++++++++++++--------------- 1 file changed, 14 insertions(+), 19 deletions(-) diff --git a/scripts/system/libraries/WebTablet.js b/scripts/system/libraries/WebTablet.js index 757743accc..88e6ec763b 100644 --- a/scripts/system/libraries/WebTablet.js +++ b/scripts/system/libraries/WebTablet.js @@ -41,7 +41,7 @@ var LOCAL_TABLET_MODEL_PATH = Script.resourcesPath() + "meshes/tablet-with-home- // returns object with two fields: // * position - position in front of the user // * rotation - rotation of entity so it faces the user. -function calcSpawnInfo(hand, height) { +function calcSpawnInfo(hand, tabletHeight) { var finalPosition; var headPos = (HMD.active && Camera.mode === "first person") ? HMD.position : Camera.position; @@ -52,29 +52,24 @@ function calcSpawnInfo(hand, height) { } if (HMD.active && hand !== NO_HANDS) { - var handController = getControllerWorldLocation(hand, true); + // Orient tablet per hand orientation. + // Angle it back similar to holding it like a book. + // Move tablet up so that hand is at bottom. + // Move tablet back so that hand is in front. - var TABLET_UP_OFFSET = 0.1; - var TABLET_FORWARD_OFFSET = 0.1; - var normal = Vec3.multiplyQbyV(handController.rotation, {x: 0, y: -1, z: 0}); - var pitch = Math.asin(normal.y); - var MAX_PITCH = Math.PI / 4; - if (pitch < -MAX_PITCH) { - pitch = -MAX_PITCH; - } else if (pitch > MAX_PITCH) { - pitch = MAX_PITCH; + var handController = getControllerWorldLocation(hand, true); + var position = handController.position; + var rotation = handController.rotation; + if (hand === Controller.Standard.LeftHand) { + rotation = Quat.multiply(rotation, Quat.fromPitchYawRollDegrees(-60, 90, 0)); + } else { + rotation = Quat.multiply(rotation, Quat.fromPitchYawRollDegrees(-60, -90, 0)); } - // rebuild normal from pitch and heading. - var heading = Math.atan2(normal.z, normal.x); - normal = {x: Math.cos(heading), y: Math.sin(pitch), z: Math.sin(heading)}; - - var position = Vec3.sum(handController.position, {x: 0, y: TABLET_UP_OFFSET, z: 0}); - var rotation = Quat.lookAt({x: 0, y: 0, z: 0}, normal, Y_AXIS); - var offset = Vec3.multiplyQbyV(rotation, {x: 0, y: height / 2, z: TABLET_FORWARD_OFFSET}); + position = Vec3.sum(position, Vec3.multiplyQbyV(rotation, { x: 0, y: tabletHeight * 0.4, z: tabletHeight * 0.05 })); return { - position: Vec3.sum(offset, position), + position: position, rotation: rotation }; } else { From 674f1f5f3a133da9cd60aa3922b40bb0393a04f7 Mon Sep 17 00:00:00 2001 From: Menithal Date: Wed, 24 May 2017 09:53:01 +0300 Subject: [PATCH 036/357] Trying to hunt down a specific issue --- .../resources/qml/hifi/tablet/EditTabView.qml | 4 +- scripts/system/edit.js | 20 +++++----- .../particle_explorer/hifi-entity-ui.js | 38 ++++++++----------- .../particle_explorer/particleExplorer.html | 1 - .../particle_explorer/particleExplorer.js | 2 +- .../particle_explorer/particleExplorerTool.js | 24 ++++++++---- 6 files changed, 46 insertions(+), 43 deletions(-) diff --git a/interface/resources/qml/hifi/tablet/EditTabView.qml b/interface/resources/qml/hifi/tablet/EditTabView.qml index c4927fdfbb..ae83cc3f65 100644 --- a/interface/resources/qml/hifi/tablet/EditTabView.qml +++ b/interface/resources/qml/hifi/tablet/EditTabView.qml @@ -273,10 +273,10 @@ TabView { // This should eventually be done properly so that if more tabs are added // that it would remove by title name instead. function enableParticles(enabled) { - if (enabled && editTabView.children.length < 4) { + if (enabled && editTabView.count < 5) { console.log("ADDING PARTICLES TAB"); editTabView.addTab("P", Qt.createComponent("tabs/ParticleTab.qml")); - } else if (!enabled && editTabView.children.length > 2) { + } else if (!enabled && editTabView.count > 4) { console.log("REMOVING PARTICLES TAB"); editTabView.removeTab(4); } diff --git a/scripts/system/edit.js b/scripts/system/edit.js index ea029d44e5..7b014a7fd9 100644 --- a/scripts/system/edit.js +++ b/scripts/system/edit.js @@ -83,8 +83,8 @@ selectionManager.addEventListener(function () { if (type === "ParticleEffect") { // Destroy the old particles web view first - particleExplorerTool.destroyWebView(); - particleExplorerTool.createWebView(); + // particleExplorerTool.destroyWebView(); + particleExplorerTool.bindWebView(); var properties = Entities.getEntityProperties(selectedEntityID); var particleData = { messageType: "particle_settings", @@ -112,7 +112,7 @@ selectionManager.addEventListener(function () { if (needToDestroyParticleExplorer && selectedParticleEntityID !== null) { tablet.sendToQml({method: 'enableParticles', params: {enabled: false}}); selectedParticleEntityID = null; - particleExplorerTool.destroyWebView(); + particleExplorerTool.bindWebView(); } }); @@ -870,13 +870,13 @@ function mouseClickEvent(event) { selectedEntityID = foundEntity; orientation = MyAvatar.orientation; intersection = rayPlaneIntersection(pickRay, P, Quat.getForward(orientation)); - + /* if (event.isShifted) { particleExplorerTool.destroyWebView(); - } + }*/ if (properties.type !== "ParticleEffect") { tablet.sendToQml({method: 'enableParticles', params: {enabled: false}}); - particleExplorerTool.destroyWebView(); + // particleExplorerTool.destroyWebView(); } else { tablet.sendToQml({method: 'enableParticles', params: {enabled: true}}); } @@ -1310,7 +1310,7 @@ function parentSelectedEntities() { function deleteSelectedEntities() { if (SelectionManager.hasSelection()) { selectedParticleEntityID = null; - particleExplorerTool.destroyWebView(); + // particleExplorerTool.destroyWebView(); SelectionManager.saveProperties(); var savedProperties = []; var newSortedSelection = sortSelectedEntities(selectionManager.selections); @@ -2095,8 +2095,8 @@ function selectParticleEntity(entityID) { messageType: "particle_settings", currentProperties: properties }; - particleExplorerTool.destroyWebView(); - particleExplorerTool.createWebView(); + // particleExplorerTool.destroyWebView(); + particleExplorerTool.bindWebView(); selectedParticleEntity = entityID; particleExplorerTool.setActiveParticleEntity(entityID); @@ -2128,7 +2128,7 @@ entityListTool.webView.webEventReceived.connect(function (data) { } else { tablet.sendToQml({method: 'enableParticles', params: {enabled: false}}); selectedParticleEntity = 0; - particleExplorerTool.destroyWebView(); + //particleExplorerTool.destroyWebView(); } } } diff --git a/scripts/system/particle_explorer/hifi-entity-ui.js b/scripts/system/particle_explorer/hifi-entity-ui.js index 167a022b58..f9059b9b6b 100644 --- a/scripts/system/particle_explorer/hifi-entity-ui.js +++ b/scripts/system/particle_explorer/hifi-entity-ui.js @@ -69,7 +69,6 @@ HifiEntityUI.prototype = { data = JSON.parse(data); if (data.messageType === 'particle_settings') { // Update settings - console.log(data); var currentProperties = data.currentProperties; // Do expected property match with structure; Object.keys(currentProperties).forEach(function(value, index) { @@ -81,7 +80,7 @@ HifiEntityUI.prototype = { if (field.className.indexOf("radian") !== -1) { el.value = property / RADIAN; el.onchange({target: el}); - } else if (field.className.indexOf("range") !== -1 || field.className.indexOf("texture") !== -1){ + } else if (field.className.indexOf("range") !== -1 || field.className.indexOf("texture") !== -1) { el.value = property; el.onchange({target: el}); } else if (field.className.indexOf("checkbox") !== -1) { @@ -102,19 +101,16 @@ HifiEntityUI.prototype = { // crashes here. } else if (field.className.indexOf("xyz")) { - + /* var x = document.getElementById(value+"-x"); var y = document.getElementById(value+"-y"); var z = document.getElementById(value+"-z"); // crashes here. - if (value === "emitOrientation") { - - } else { - x.value = property.x; - y.value = property.y; - z.value = property.z; - } + x.value = property.x; + y.value = property.y; + z.value = property.z; + */ } } } @@ -157,7 +153,7 @@ HifiEntityUI.prototype = { for (var property in properties) { - var builtRow = self.addElement(animationWrapper, properties[property]) + var builtRow = self.addElement(animationWrapper, properties[property]); var id = properties[property].id; if (id) { self.builtRows[id] = builtRow; @@ -207,20 +203,14 @@ HifiEntityUI.prototype = { } return label; }, - addVector: function(parent, group){ + addVector: function(parent, group, labels){ var self = this; - var inputs = ["x","y","z"]; + var inputs = labels | ["x","y","z"]; var domArray = []; parent.id = group.id; for (var index in inputs) { var element = document.createElement("input"); - if (group.defaultColor) { - element.value = group.defaultColor[inputs[index]]; - } else if (inputs[index] === "red"){ - element.value = 255; - } else { - element.value = 0; - } + element.setAttribute("type","number"); element.className = inputs[index]; element.id = group.id + "-" + inputs[index]; @@ -232,7 +222,11 @@ HifiEntityUI.prototype = { } this.addLabel(parent, group); - parent.className += " property vector-section xyz"; + var className = ""; + for ( var i = 0; i < inputs.length; i++) { + className += inputs[i]; + } + parent.className += " property vector-section " + className; // Add Tuple and the rest var tupleContainer = document.createElement("div"); @@ -250,7 +244,7 @@ HifiEntityUI.prototype = { parent.appendChild(tupleContainer); }, addVectorQuaternion: function(parent, group) { - this.addVector(parent,group); + this.addVector(parent,group, ["Pitch", "Yaw", "Roll"]); }, addColorPicker: function(parent, group) { var self = this; diff --git a/scripts/system/particle_explorer/particleExplorer.html b/scripts/system/particle_explorer/particleExplorer.html index fd8fec3f21..f1afc25d82 100644 --- a/scripts/system/particle_explorer/particleExplorer.html +++ b/scripts/system/particle_explorer/particleExplorer.html @@ -33,7 +33,6 @@
    -
    diff --git a/scripts/system/particle_explorer/particleExplorer.js b/scripts/system/particle_explorer/particleExplorer.js index 5807b7d29e..c619d58a33 100644 --- a/scripts/system/particle_explorer/particleExplorer.js +++ b/scripts/system/particle_explorer/particleExplorer.js @@ -81,7 +81,7 @@ id: "emitOrientation", unit: "deg", name: "Emit Orientation", - type: "Vector" + type: "VectorQuaternion" }, { type: "Row" }, { diff --git a/scripts/system/particle_explorer/particleExplorerTool.js b/scripts/system/particle_explorer/particleExplorerTool.js index 5e240ed192..3d434b148a 100644 --- a/scripts/system/particle_explorer/particleExplorerTool.js +++ b/scripts/system/particle_explorer/particleExplorerTool.js @@ -16,8 +16,17 @@ var PARTICLE_EXPLORER_HTML_URL = Script.resolvePath(' .html'); ParticleExplorerTool = function() { var that = {}; - - that.createWebView = function() { + var bound = false; + that.bindWebView = function() { + if (!bound) { + that.webView = Tablet.getTablet("com.highfidelity.interface.tablet.system"); + that.webView.setVisible = function(value) {}; + that.webView.webEventReceived.connect(that.webEventReceived); + bound = true; + } + } + /* + that.createWebView = function() { that.webView = Tablet.getTablet("com.highfidelity.interface.tablet.system"); that.webView.setVisible = function(value) {}; that.webView.webEventReceived.connect(that.webEventReceived); @@ -35,16 +44,17 @@ ParticleExplorerTool = function() { that.webView.emitScriptEvent(JSON.stringify(messageData)); } + */ that.webEventReceived = function(data) { - var data = JSON.parse(data); - if (data.messageType === "settings_update") { - Entities.editEntity(that.activeParticleEntity, data.updatedSettings); + var message = JSON.parse(data); + if (message.messageType === "settings_update") { + Entities.editEntity(that.activeParticleEntity, message.updatedSettings); } - } + }; that.setActiveParticleEntity = function(id) { that.activeParticleEntity = id; - } + }; return that; }; From 0c4cd96bfddd85c2587f56821043635a46b169b0 Mon Sep 17 00:00:00 2001 From: volansystech Date: Wed, 24 May 2017 12:25:21 +0530 Subject: [PATCH 037/357] Initial Commit : Switch from HMD [Oculus Rift] mode to Desktop mode automatically when user removing Oculus Rift. --- interface/src/Application.cpp | 40 +++++++++++++++++++++++++++++++++++ interface/src/Application.h | 8 +++++-- 2 files changed, 46 insertions(+), 2 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index ae490c05e7..ced5e51565 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -1338,6 +1338,13 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo properties["active_display_plugin"] = getActiveDisplayPlugin()->getName(); properties["using_hmd"] = isHMDMode(); + if (isOculusRiftPluginAvailable()){ + qCDebug(interfaceapp) << "Oculus Rift Plugin is available"; + QTimer *switchModeTimer = new QTimer(this); + connect(switchModeTimer, SIGNAL(timeout()), this, SLOT(switchmode())); + switchModeTimer->start(500); + } + auto glInfo = getGLContextData(); properties["gl_info"] = glInfo; properties["gpu_used_memory"] = (int)BYTES_TO_MB(gpu::Context::getUsedGPUMemory()); @@ -6833,6 +6840,39 @@ void Application::updateDisplayMode() { Q_ASSERT_X(_displayPlugin, "Application::updateDisplayMode", "could not find an activated display plugin"); } +bool Application::isOculusRiftPluginAvailable(){ + bool isOculusRiftPluginAvailable = false; + auto displayPlugins = PluginManager::getInstance()->getDisplayPlugins(); + // Default to the first item on the list, in case none of the menu items match + DisplayPluginPointer defaultplugin = displayPlugins.at(0); + if (defaultplugin->isHmd() && defaultplugin->getName() == "Oculus Rift"){ + oculusRiftPlugin = defaultplugin; + return true; // No need to iterate again,so return + } + // Iterate to check If Oculus Rift Plugin is available + foreach(DisplayPluginPointer displayPlugin, PluginManager::getInstance()->getDisplayPlugins()) { + QString pluginname = displayPlugin->getName(); + if (displayPlugin->isHmd() && pluginname == "Oculus Rift") { + oculusRiftPlugin = displayPlugin; + _isDisplayVisible = displayPlugin->isDisplayVisible(); + isOculusRiftPluginAvailable = true; + break; + } + } + return isOculusRiftPluginAvailable; +} + +void Application::switchmode(){ + bool isDisplayVisible = oculusRiftPlugin->isDisplayVisible(); + if (isDisplayVisible != _isDisplayVisible){ + if (isDisplayVisible == false && _isDisplayVisible == true){ + qCDebug(interfaceapp) << "switching from HMD to desktop mode"; + setActiveDisplayPlugin("Desktop"); + } + } + _isDisplayVisible = isDisplayVisible; // assign current status +} + mat4 Application::getEyeProjection(int eye) const { QMutexLocker viewLocker(&_viewMutex); if (isHMDMode()) { diff --git a/interface/src/Application.h b/interface/src/Application.h index d9dc3f389f..c181e74c74 100644 --- a/interface/src/Application.h +++ b/interface/src/Application.h @@ -152,7 +152,7 @@ public: void paintGL(); void resizeGL(); - bool event(QEvent* event) override; + bool event(QEvent* event) override; bool eventFilter(QObject* object, QEvent* event) override; glm::uvec2 getCanvasSize() const; @@ -443,7 +443,7 @@ private slots: void addAssetToWorldErrorTimeout(); void handleSandboxStatus(QNetworkReply* reply); - + void switchmode(); private: static void initDisplay(); void init(); @@ -683,6 +683,10 @@ private: FileScriptingInterface* _fileDownload; AudioInjector* _snapshotSoundInjector { nullptr }; SharedSoundPointer _snapshotSound; + + bool isOculusRiftPluginAvailable(); + DisplayPluginPointer oculusRiftPlugin; + bool _isDisplayVisible; }; From 255540d0f819a9b21795251c673aff6c3174c0fa Mon Sep 17 00:00:00 2001 From: Menithal Date: Wed, 24 May 2017 10:16:46 +0300 Subject: [PATCH 038/357] Reverted a few files --- .../resources/qml/hifi/tablet/EditTabView.qml | 47 ++++++++++--------- .../qml/hifi/tablet/tabs/ParticleTab.qml | 19 -------- scripts/system/edit.js | 38 ++++++--------- 3 files changed, 38 insertions(+), 66 deletions(-) delete mode 100644 interface/resources/qml/hifi/tablet/tabs/ParticleTab.qml diff --git a/interface/resources/qml/hifi/tablet/EditTabView.qml b/interface/resources/qml/hifi/tablet/EditTabView.qml index ae83cc3f65..35f2b82f0f 100644 --- a/interface/resources/qml/hifi/tablet/EditTabView.qml +++ b/interface/resources/qml/hifi/tablet/EditTabView.qml @@ -22,7 +22,7 @@ TabView { enabled: true property string originalUrl: "" - Rectangle { + Rectangle { color: "#404040" Text { @@ -218,6 +218,22 @@ TabView { } } + Tab { + title: "P" + active: true + enabled: true + property string originalUrl: "" + + WebView { + id: particleExplorerWebView + url: "../../../../../scripts/system/particle_explorer/particleExplorer.html" + eventBridge: editRoot.eventBridge + anchors.fill: parent + enabled: true + } + } + + style: TabViewStyle { frameOverlap: 1 tab: Rectangle { @@ -262,23 +278,8 @@ TabView { case 'selectTab': selectTab(message.params.id); break; - case 'enableParticles': - enableParticles(message.params.enabled); - break; default: - console.warn('Unrecognized test message:', JSON.stringify(message)); - } - } - - // This should eventually be done properly so that if more tabs are added - // that it would remove by title name instead. - function enableParticles(enabled) { - if (enabled && editTabView.count < 5) { - console.log("ADDING PARTICLES TAB"); - editTabView.addTab("P", Qt.createComponent("tabs/ParticleTab.qml")); - } else if (!enabled && editTabView.count > 4) { - console.log("REMOVING PARTICLES TAB"); - editTabView.removeTab(4); + console.warn('Unrecognized message:', JSON.stringify(message)); } } @@ -289,7 +290,7 @@ TabView { editTabView.currentIndex = id; } else { console.warn('Attempt to switch to invalid tab:', id); - } + } } else if (typeof id === 'string'){ switch (id.toLowerCase()) { case 'create': @@ -297,16 +298,16 @@ TabView { break; case 'list': editTabView.currentIndex = 1; - break; + break; case 'properties': editTabView.currentIndex = 2; - break; + break; case 'grid': editTabView.currentIndex = 3; - break; + break; case 'particle': editTabView.currentIndex = 4; - break; + break; default: console.warn('Attempt to switch to invalid tab:', id); } @@ -314,4 +315,4 @@ TabView { console.warn('Attempt to switch tabs with invalid input:', JSON.stringify(id)); } } -} +} \ No newline at end of file diff --git a/interface/resources/qml/hifi/tablet/tabs/ParticleTab.qml b/interface/resources/qml/hifi/tablet/tabs/ParticleTab.qml deleted file mode 100644 index 3ee4295603..0000000000 --- a/interface/resources/qml/hifi/tablet/tabs/ParticleTab.qml +++ /dev/null @@ -1,19 +0,0 @@ -import QtQuick 2.5 -import QtQuick.Controls 1.4 -import QtWebEngine 1.1 -import QtWebChannel 1.0 -import QtQuick.Controls.Styles 1.4 -import "../../../controls" -import "../../toolbars" -import HFWebEngineProfile 1.0 -import QtGraphicalEffects 1.0 -import "../../../controls-uit" as HifiControls -import "../../../styles-uit" - -WebView { - id: particleExplorerWebView - url: "../../../../../../scripts/system/particle_explorer/particleExplorer.html" - eventBridge: editRoot.eventBridge - anchors.fill: parent - enabled: true -} diff --git a/scripts/system/edit.js b/scripts/system/edit.js index 7b014a7fd9..f39165f3df 100644 --- a/scripts/system/edit.js +++ b/scripts/system/edit.js @@ -12,7 +12,7 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -/* global Script, SelectionDisplay, LightOverlayManager, CameraManager, Grid, GridTool, EntityListTool, Vec3, SelectionManager, Overlays, OverlayWebWindow, UserActivityLogger, +/* global Script, SelectionDisplay, LightOverlayManager, CameraManager, Grid, GridTool, EntityListTool, Vec3, SelectionManager, Overlays, OverlayWebWindow, UserActivityLogger, Settings, Entities, Tablet, Toolbars, Messages, Menu, Camera, progressDialog, tooltip, MyAvatar, Quat, Controller, Clipboard, HMD, UndoStack, ParticleExplorerTool */ (function() { // BEGIN LOCAL_SCOPE @@ -70,7 +70,7 @@ var entityListTool = new EntityListTool(); selectionManager.addEventListener(function () { selectionDisplay.updateHandles(); entityIconOverlayManager.updatePositions(); - var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system"); + // Update particle explorer var needToDestroyParticleExplorer = false; if (selectionManager.selections.length === 1) { @@ -78,13 +78,11 @@ selectionManager.addEventListener(function () { if (selectedEntityID === selectedParticleEntityID) { return; } - var type = Entities.getEntityProperties(selectedEntityID, "type").type; if (type === "ParticleEffect") { // Destroy the old particles web view first - - // particleExplorerTool.destroyWebView(); - particleExplorerTool.bindWebView(); + particleExplorerTool.destroyWebView(); + particleExplorerTool.createWebView(); var properties = Entities.getEntityProperties(selectedEntityID); var particleData = { messageType: "particle_settings", @@ -101,6 +99,7 @@ selectionManager.addEventListener(function () { }); // Switch to particle explorer + var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system"); tablet.sendToQml({method: 'selectTab', params: {id: 'particle'}}); } else { needToDestroyParticleExplorer = true; @@ -110,9 +109,8 @@ selectionManager.addEventListener(function () { } if (needToDestroyParticleExplorer && selectedParticleEntityID !== null) { - tablet.sendToQml({method: 'enableParticles', params: {enabled: false}}); selectedParticleEntityID = null; - particleExplorerTool.bindWebView(); + particleExplorerTool.destroyWebView(); } }); @@ -829,14 +827,11 @@ function mouseClickEvent(event) { if (foundEntity === HMD.tabletID) { return; } - - var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system"); properties = Entities.getEntityProperties(foundEntity); if (isLocked(properties)) { if (wantDebug) { print("Model locked " + properties.id); } - tablet.sendToQml({method: 'enableParticles', params: {enabled: false}}); } else { var halfDiagonal = Vec3.length(properties.dimensions) / 2.0; @@ -870,15 +865,12 @@ function mouseClickEvent(event) { selectedEntityID = foundEntity; orientation = MyAvatar.orientation; intersection = rayPlaneIntersection(pickRay, P, Quat.getForward(orientation)); - /* + if (event.isShifted) { particleExplorerTool.destroyWebView(); - }*/ + } if (properties.type !== "ParticleEffect") { - tablet.sendToQml({method: 'enableParticles', params: {enabled: false}}); - // particleExplorerTool.destroyWebView(); - } else { - tablet.sendToQml({method: 'enableParticles', params: {enabled: true}}); + particleExplorerTool.destroyWebView(); } if (!event.isShifted) { @@ -1310,7 +1302,7 @@ function parentSelectedEntities() { function deleteSelectedEntities() { if (SelectionManager.hasSelection()) { selectedParticleEntityID = null; - // particleExplorerTool.destroyWebView(); + particleExplorerTool.destroyWebView(); SelectionManager.saveProperties(); var savedProperties = []; var newSortedSelection = sortSelectedEntities(selectionManager.selections); @@ -2095,8 +2087,8 @@ function selectParticleEntity(entityID) { messageType: "particle_settings", currentProperties: properties }; - // particleExplorerTool.destroyWebView(); - particleExplorerTool.bindWebView(); + particleExplorerTool.destroyWebView(); + particleExplorerTool.createWebView(); selectedParticleEntity = entityID; particleExplorerTool.setActiveParticleEntity(entityID); @@ -2115,8 +2107,6 @@ entityListTool.webView.webEventReceived.connect(function (data) { unparentSelectedEntities(); } else if (data.type === "selectionUpdate") { var ids = data.entityIds; - - var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system"); if (ids.length === 1) { if (Entities.getEntityProperties(ids[0], "type").type === "ParticleEffect") { if (JSON.stringify(selectedParticleEntity) === JSON.stringify(ids[0])) { @@ -2126,12 +2116,12 @@ entityListTool.webView.webEventReceived.connect(function (data) { // Destroy the old particles web view first selectParticleEntity(ids[0]); } else { - tablet.sendToQml({method: 'enableParticles', params: {enabled: false}}); selectedParticleEntity = 0; - //particleExplorerTool.destroyWebView(); + particleExplorerTool.destroyWebView(); } } } }); }()); // END LOCAL_SCOPE + From 3f9b306c7fa80beb58ab91013175cc8c4ac2b8f1 Mon Sep 17 00:00:00 2001 From: Menithal Date: Wed, 24 May 2017 21:23:30 +0300 Subject: [PATCH 039/357] Finalized UI changes doing final tests --- scripts/system/edit.js | 15 +- .../particle_explorer/hifi-entity-ui.js | 355 ++++++++----- .../particle_explorer/particleExplorer.js | 488 +++++++++--------- .../particle_explorer/particleExplorerTool.js | 26 +- scripts/system/particle_explorer/tester.js | 8 - 5 files changed, 510 insertions(+), 382 deletions(-) delete mode 100644 scripts/system/particle_explorer/tester.js diff --git a/scripts/system/edit.js b/scripts/system/edit.js index f39165f3df..0184136676 100644 --- a/scripts/system/edit.js +++ b/scripts/system/edit.js @@ -12,7 +12,7 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -/* global Script, SelectionDisplay, LightOverlayManager, CameraManager, Grid, GridTool, EntityListTool, Vec3, SelectionManager, Overlays, OverlayWebWindow, UserActivityLogger, +/* global Script, SelectionDisplay, LightOverlayManager, CameraManager, Grid, GridTool, EntityListTool, Vec3, SelectionManager, Overlays, OverlayWebWindow, UserActivityLogger, Settings, Entities, Tablet, Toolbars, Messages, Menu, Camera, progressDialog, tooltip, MyAvatar, Quat, Controller, Clipboard, HMD, UndoStack, ParticleExplorerTool */ (function() { // BEGIN LOCAL_SCOPE @@ -83,6 +83,7 @@ selectionManager.addEventListener(function () { // Destroy the old particles web view first particleExplorerTool.destroyWebView(); particleExplorerTool.createWebView(); + print("Particle Selected"); var properties = Entities.getEntityProperties(selectedEntityID); var particleData = { messageType: "particle_settings", @@ -90,13 +91,8 @@ selectionManager.addEventListener(function () { }; selectedParticleEntityID = selectedEntityID; particleExplorerTool.setActiveParticleEntity(selectedParticleEntityID); - - particleExplorerTool.webView.webEventReceived.connect(function (data) { - data = JSON.parse(data); - if (data.messageType === "page_loaded") { - particleExplorerTool.webView.emitScriptEvent(JSON.stringify(particleData)); - } - }); + particleData.emitOrientation = Quat.safeEulerAngles(particleData.emitOrientation); + particleExplorerTool.webView.emitScriptEvent(JSON.stringify(particleData)); // Switch to particle explorer var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system"); @@ -2083,6 +2079,7 @@ var selectedParticleEntityID = null; function selectParticleEntity(entityID) { var properties = Entities.getEntityProperties(entityID); + print("selected particle Entity"); var particleData = { messageType: "particle_settings", currentProperties: properties @@ -2114,6 +2111,7 @@ entityListTool.webView.webEventReceived.connect(function (data) { return; } // Destroy the old particles web view first + print("select particles"); selectParticleEntity(ids[0]); } else { selectedParticleEntity = 0; @@ -2124,4 +2122,3 @@ entityListTool.webView.webEventReceived.connect(function (data) { }); }()); // END LOCAL_SCOPE - diff --git a/scripts/system/particle_explorer/hifi-entity-ui.js b/scripts/system/particle_explorer/hifi-entity-ui.js index f9059b9b6b..fb728bbd92 100644 --- a/scripts/system/particle_explorer/hifi-entity-ui.js +++ b/scripts/system/particle_explorer/hifi-entity-ui.js @@ -1,8 +1,13 @@ /* global window, document, print, alert, console,setTimeout, clearTimeout, _ $ */ +/* eslint no-console: 0 */ /** UI Builder V1.0 +Created by Matti 'Menithal' Lahtinen +24/5/2017 +Copyright 2017 High Fidelity, Inc. + This can eventually be expanded to all of Edit, for now, starting with Particles Only. @@ -38,103 +43,193 @@ and If there is any changes to either the Entities or properties of **/ -var RADIAN = Math.PI/180; -function HifiEntityUI(parent, structure){ - this.parent = parent; - this.structure = structure; - var self = this; - this.webBridgeSync = _.debounce(function(id, val){ - if (self.EventBridge){ +var RADIAN = Math.PI / 180; +function HifiEntityUI(parent) { + this.parent = parent; + + var self = this; + this.webBridgeSync = _.debounce(function(id, val) { + if (self.EventBridge) { var sendPackage = {}; sendPackage[id] = val; - var message = { - messageType: "settings_update", - updatedSettings: sendPackage - }; - self.EventBridge.emitWebEvent(JSON.stringify(message)); + self.submitChanges(sendPackage); } }, 125); } HifiEntityUI.prototype = { - connect: function (EventBridge){ - this.EventBridge = EventBridge; + submitChanges: function (structure) { + var message = { + messageType: "settings_update", + updatedSettings: structure + }; + this.EventBridge.emitWebEvent(JSON.stringify(message)); + }, + setUI: function (structure) { + this.structure = structure; + }, + disableFields: function() { + var fields = document.getElementsByTagName("input"); + for (var i = 0; i < fields.length; i++) { + fields[i].setAttribute("disabled", true); + if (fields[i].getAttribute("type") !== "button") { + fields[i].value = ""; + } + } + + + var textareas = document.getElementsByTagName("textarea"); + for (var x = 0; x < textareas.length; x++) { + textareas[x].remove(); + } + }, + getSettings: function() { var self = this; + var json = {}; + var keys = Object.keys(self.builtRows); + + for (var i = 0; i < keys.length; i++) { + var key = keys[i]; + var el = self.builtRows[key]; + if (el.className.indexOf("checkbox") !== -1) { + json[key] = document.getElementById(key).checked ? true: false; + } else if (el.className.indexOf("vector-section") !== -1) { + var vector = {}; + if (el.className.indexOf("rgb") !== -1) { + var red = document.getElementById(key + "-red"); + var blue = document.getElementById(key + "-blue"); + var green = document.getElementById(key + "-green"); + vector.red = red.value; + vector.blue = blue.value; + vector.green = green.value; + } else if (el.className.indexOf("pyr") !== -1) { + var p = document.getElementById(key + "-Pitch"); + var y = document.getElementById(key + "-Yaw"); + var r = document.getElementById(key + "-Roll"); + vector.x = p.value; + vector.y = y.value; + vector.z = r.value; + } else { + var x = document.getElementById(key + "-x"); + var ey = document.getElementById(key + "-y"); + var z = document.getElementById(key + "-z"); + vector.x = x.value; + vector.y = ey.value; + vector.z = z.value; + } + json[key] = vector; + } else if (el.className.length > 0){ + json[key] = document.getElementById(key).value; + } + } + + return json; + }, + fillFields: function(currentProperties) { + var self = this; + + var fields = document.getElementsByTagName("input"); + for (var i = 0; i < fields.length; i++) { + fields[i].removeAttribute("disabled"); + } + + var keys = Object.keys(currentProperties); + for (var e in keys) { + var value = keys[e]; + + var property = currentProperties[value]; + var field = self.builtRows[value]; + if (field) { + var el = document.getElementById(value); + + if (field.className.indexOf("radian") !== -1) { + el.value = property / RADIAN; + el.onchange({ + target: el + }); + } else if (field.className.indexOf("range") !== -1 || field.className.indexOf("texture") !== -1) { + el.value = property; + el.onchange({ + target: el + }); + } else if (field.className.indexOf("checkbox") !== -1) { + if (property) { + el.setAttribute("checked", property); + } else { + el.removeAttribute("checked"); + } + } else if (field.className.indexOf("vector-section") !== -1) { + if (field.className.indexOf("rgb") !== -1) { + var red = document.getElementById(value + "-red"); + var blue = document.getElementById(value + "-blue"); + var green = document.getElementById(value + "-green"); + red.value = property.red; + blue.value = property.blue; + green.value = property.green; + + red.oninput({ + target: red + }); + } else if (field.className.indexOf("xyz") !== -1) { + var x = document.getElementById(value + "-x"); + var y = document.getElementById(value + "-y"); + var z = document.getElementById(value + "-z"); + // crashes here. + x.value = property.x; + y.value = property.y; + z.value = property.z; + } else if (field.className.indexOf("pyr") !== -1) { + var pitch = document.getElementById(value + "-Pitch"); + var yaw = document.getElementById(value + "-Yaw"); + var roll = document.getElementById(value + "-Roll"); + // crashes here. + pitch.value = property.x; + yaw.value = property.y; + roll.value = property.z; + } + } + } + } + }, + connect: function(EventBridge) { + this.EventBridge = EventBridge; + + var self = this; + EventBridge.emitWebEvent(JSON.stringify({ messageType: 'page_loaded' })); - EventBridge.scriptEventReceived.connect(function(data){ + EventBridge.scriptEventReceived.connect(function(data) { data = JSON.parse(data); + if (data.messageType === 'particle_settings') { // Update settings var currentProperties = data.currentProperties; + self.fillFields(currentProperties); // Do expected property match with structure; - Object.keys(currentProperties).forEach(function(value, index) { - var property = currentProperties[value]; - var field = self.builtRows[value]; - if (field) { - - var el = document.getElementById(value); - if (field.className.indexOf("radian") !== -1) { - el.value = property / RADIAN; - el.onchange({target: el}); - } else if (field.className.indexOf("range") !== -1 || field.className.indexOf("texture") !== -1) { - el.value = property; - el.onchange({target: el}); - } else if (field.className.indexOf("checkbox") !== -1) { - if (property){ - el.setAttribute("checked", property); - } else { - el.removeAttribute("checked"); - } - } else if (field.className.indexOf("vector-section") !== -1) { - if (field.className.indexOf("rgb") !== -1) { - var red = document.getElementById(value+"-red"); - var blue = document.getElementById(value+"-blue"); - var green = document.getElementById(value+"-green"); - red.value = property.red; - blue.value = property.blue; - green.value = property.green; - red.oninput({target: red}); - // crashes here. - - } else if (field.className.indexOf("xyz")) { - /* - var x = document.getElementById(value+"-x"); - var y = document.getElementById(value+"-y"); - var z = document.getElementById(value+"-z"); - // crashes here. - - x.value = property.x; - y.value = property.y; - z.value = property.z; - */ - } - } - } - - }); } else if (data.messageType === 'particle_close') { - // Legacy event on particle close. This webview actually gets removed now + self.disableFields(); } }); }, - build: function () { + build: function() { var self = this; var sections = Object.keys(this.structure); this.builtRows = {}; - sections.forEach(function(section, index){ + sections.forEach(function(section, index) { var properties = self.structure[section]; - self.addSection(self.parent,section,properties,index); + self.addSection(self.parent, section, properties, index); }); }, addSection: function(parent, section, properties, index) { var self = this; + var sectionDivHeader = document.createElement("div"); var title = document.createElement("label"); var dropDown = document.createElement("span"); + dropDown.className = "arrow"; sectionDivHeader.className = "section-header"; title.innerHTML = section; @@ -142,12 +237,13 @@ HifiEntityUI.prototype = { sectionDivHeader.appendChild(dropDown); var collapsed = index !== 0; - dropDown.innerHTML = collapsed ? "L": "M"; + dropDown.innerHTML = collapsed ? "L" : "M"; sectionDivHeader.setAttribute("collapsed", collapsed); parent.appendChild(sectionDivHeader); var sectionDivBody = document.createElement("div"); sectionDivBody.className = "property-group"; + var animationWrapper = document.createElement("div"); animationWrapper.className = "section-wrap"; @@ -174,7 +270,7 @@ HifiEntityUI.prototype = { sectionDivBody.style.maxHeight = height; } - sectionDivHeader.onclick = function( ) { + sectionDivHeader.onclick = function() { collapsed = !collapsed; if (collapsed) { sectionDivBody.className = sectionDivBody.className @@ -186,7 +282,7 @@ HifiEntityUI.prototype = { sectionDivBody.style.maxHeight = height; } // sectionDivBody.style.display = collapsed ? "none": "block"; - dropDown.innerHTML = collapsed ? "L": "M"; + dropDown.innerHTML = collapsed ? "L" : "M"; sectionDivHeader.setAttribute("collapsed", collapsed); }; }); @@ -203,19 +299,23 @@ HifiEntityUI.prototype = { } return label; }, - addVector: function(parent, group, labels){ + addVector: function(parent, group, labels) { var self = this; - var inputs = labels | ["x","y","z"]; + var inputs = labels ? labels : ["x", "y", "z"]; var domArray = []; parent.id = group.id; for (var index in inputs) { var element = document.createElement("input"); - element.setAttribute("type","number"); + element.setAttribute("type", "number"); element.className = inputs[index]; element.id = group.id + "-" + inputs[index]; element.oninput = function(event) { - self.webBridgeSync(group.id, {x: domArray[0].value, y: domArray[1].value, z: domArray[2].value}); + self.webBridgeSync(group.id, { + x: domArray[0].value, + y: domArray[1].value, + z: domArray[2].value + }); }; element.onchange = element.oninput; domArray.push(element); @@ -223,10 +323,10 @@ HifiEntityUI.prototype = { this.addLabel(parent, group); var className = ""; - for ( var i = 0; i < inputs.length; i++) { - className += inputs[i]; + for (var i = 0; i < inputs.length; i++) { + className += inputs[i].charAt(0).toLowerCase(); } - parent.className += " property vector-section " + className; + parent.className += " property vector-section " + className; // Add Tuple and the rest var tupleContainer = document.createElement("div"); @@ -244,7 +344,7 @@ HifiEntityUI.prototype = { parent.appendChild(tupleContainer); }, addVectorQuaternion: function(parent, group) { - this.addVector(parent,group, ["Pitch", "Yaw", "Roll"]); + this.addVector(parent, group, ["Pitch", "Yaw", "Roll"]); }, addColorPicker: function(parent, group) { var self = this; @@ -259,25 +359,30 @@ HifiEntityUI.prototype = { blue + ")"); }; - var inputs = ["red","green","blue"]; + var inputs = ["red", "green", "blue"]; var domArray = []; for (var index in inputs) { var element = document.createElement("input"); if (group.defaultColor) { element.value = group.defaultColor[inputs[index]]; - } else if (inputs[index] === "red"){ + } else if (inputs[index] === "red") { element.value = 255; } else { element.value = 0; } - element.setAttribute("type","number"); + element.setAttribute("type", "number"); element.className = inputs[index]; - element.setAttribute("min",0); - element.setAttribute("max",255); + element.setAttribute("min", 0); + element.setAttribute("max", 255); element.id = group.id + "-" + inputs[index]; element.oninput = function(event) { - $colPickContainer.colpickSetColor({r: domArray[0].value, g: domArray[1].value, b: domArray[2].value}, + $colPickContainer.colpickSetColor( + { + r: domArray[0].value, + g: domArray[1].value, + b: domArray[2].value + }, true); }; element.onchange = element.oninput; @@ -296,26 +401,38 @@ HifiEntityUI.prototype = { $colPickContainer.colpick({ colorScheme: 'dark', layout: 'hex', - color: { r: domArray[0].value, g: domArray[1].value, b: domArray[2].value}, - onChange: function(hsb, hex, rgb, el){ + color: { + r: domArray[0].value, + g: domArray[1].value, + b: domArray[2].value + }, + onChange: function(hsb, hex, rgb, el) { updateColors(rgb.r, rgb.g, rgb.b); domArray[0].value = rgb.r; domArray[1].value = rgb.g; domArray[2].value = rgb.b; - self.webBridgeSync(group.id, {red: rgb.r, green: rgb.g, blue: rgb.b} ); + self.webBridgeSync(group.id, { + red: rgb.r, + green: rgb.g, + blue: rgb.b + }); }, - onSubmit: function (hsb, hex, rgb, el) { + onSubmit: function(hsb, hex, rgb, el) { $(el).css('background-color', '#' + hex); $(el).colpickHide(); domArray[0].value = rgb.r; domArray[1].value = rgb.g; domArray[2].value = rgb.b; - self.webBridgeSync(group.id, {red: rgb.r, green: rgb.g, blue: rgb.b} ); + self.webBridgeSync(group.id, { + red: rgb.r, + green: rgb.g, + blue: rgb.b + }); } }); var li = document.createElement("li"); - li.className ="cr object color"; + li.className = "cr object color"; this.addLabel(parent, group); @@ -348,9 +465,9 @@ HifiEntityUI.prototype = { textureUrl.id = group.id; textureImage.className = "texture-image no-texture"; var image = document.createElement("img"); - var imageLoad = _.debounce(function(url){ + var imageLoad = _.debounce(function(url) { if (url.length > 0) { - textureImage.className = textureImage.className.replace(' no-texture',''); + textureImage.className = textureImage.className.replace(' no-texture', ''); image.src = url; image.style.display = "block"; } else { @@ -361,7 +478,7 @@ HifiEntityUI.prototype = { self.webBridgeSync(group.id, url); }, 250); - textureUrl.oninput = function (event) { + textureUrl.oninput = function(event) { // Add throttle var url = event.target.value; imageLoad(url); @@ -388,41 +505,41 @@ HifiEntityUI.prototype = { parent.appendChild(container); if (group.type === "SliderInteger") { - inputField.setAttribute("min", group.min !== undefined ? group.min: 0); + inputField.setAttribute("min", group.min !== undefined ? group.min : 0); inputField.setAttribute("step", 1); - slider.setAttribute("min", group.min !== undefined ? group.min: 0); - slider.setAttribute("max", group.max !== undefined ? group.max: 10000); + slider.setAttribute("min", group.min !== undefined ? group.min : 0); + slider.setAttribute("max", group.max !== undefined ? group.max : 10000); slider.setAttribute("step", 1); - inputField.oninput = function (event){ + inputField.oninput = function(event) { slider.value = event.target.value; self.webBridgeSync(group.id, slider.value); }; inputField.onchange = inputField.oninput; - slider.oninput = function (event){ + slider.oninput = function(event) { inputField.value = event.target.value; self.webBridgeSync(group.id, slider.value); }; inputField.id = group.id; } else if (group.type === "SliderRadian") { - slider.setAttribute("min", group.min !== undefined ? group.min: 0); - slider.setAttribute("max", group.max !== undefined ? group.max: 180); + slider.setAttribute("min", group.min !== undefined ? group.min : 0); + slider.setAttribute("max", group.max !== undefined ? group.max : 180); slider.setAttribute("step", 1); parent.className += " radian"; - inputField.setAttribute("min", (group.min !== undefined ? group.min: 0) ); - inputField.setAttribute("max", (group.max !== undefined ? group.max: 180)); + inputField.setAttribute("min", (group.min !== undefined ? group.min : 0)); + inputField.setAttribute("max", (group.max !== undefined ? group.max : 180)); - inputField.oninput = function (event){ + inputField.oninput = function(event) { slider.value = event.target.value; - self.webBridgeSync(group.id, slider.value * RADIAN ); + self.webBridgeSync(group.id, slider.value * RADIAN); }; inputField.onchange = inputField.oninput; inputField.id = group.id; - slider.oninput = function (event){ - if (event.target.value > 0){ + slider.oninput = function(event) { + if (event.target.value > 0) { inputField.value = Math.floor(event.target.value); } else { inputField.value = Math.ceil(event.target.value); @@ -439,20 +556,20 @@ HifiEntityUI.prototype = { } else { // Must then be Float - inputField.setAttribute("min", group.min !== undefined? group.min: 0); + inputField.setAttribute("min", group.min !== undefined ? group.min : 0); slider.setAttribute("step", 0.01); - slider.setAttribute("min", group.min !== undefined ? group.min: 0); - slider.setAttribute("max", group.max !== undefined ? group.max: 1); + slider.setAttribute("min", group.min !== undefined ? group.min : 0); + slider.setAttribute("max", group.max !== undefined ? group.max : 1); slider.setAttribute("step", 0.01); - inputField.oninput = function (event){ + inputField.oninput = function(event) { slider.value = event.target.value; self.webBridgeSync(group.id, slider.value); // bind web sock update here. }; inputField.onchange = inputField.oninput; - slider.oninput = function (event){ + slider.oninput = function(event) { inputField.value = event.target.value; self.webBridgeSync(group.id, inputField.value); }; @@ -462,7 +579,7 @@ HifiEntityUI.prototype = { // UpdateBinding }, - addCheckBox: function (parent,group) { + addCheckBox: function(parent, group) { var checkBox = document.createElement("input"); checkBox.setAttribute("type", "checkbox"); var self = this; @@ -475,24 +592,28 @@ HifiEntityUI.prototype = { label.setAttribute("for", checkBox.id); parent.className += " property checkbox"; }, - addElement: function (parent, group) { - + addElement: function(parent, group) { var self = this; var property = document.createElement("div"); property.id = group.id; var row = document.createElement("div"); - switch (group.type){ + switch (group.type) { case "Button": - var exportSettingsButton = document.createElement("input"); - exportSettingsButton.setAttribute("type", "button"); - exportSettingsButton.className = group.class; - exportSettingsButton.value = group.name; - parent.appendChild(exportSettingsButton); + var button = document.createElement("input"); + button.setAttribute("type", "button"); + button.className = group.class; + button.value = group.name; + + button.onclick = group.callback; + parent.appendChild(button); break; case "Row": var hr = document.createElement("hr"); hr.className = "splitter"; + if (group.id) { + hr.id = group.id; + } parent.appendChild(hr); break; case "Boolean": diff --git a/scripts/system/particle_explorer/particleExplorer.js b/scripts/system/particle_explorer/particleExplorer.js index c619d58a33..eef80b35af 100644 --- a/scripts/system/particle_explorer/particleExplorer.js +++ b/scripts/system/particle_explorer/particleExplorer.js @@ -12,242 +12,270 @@ // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -/* global HifiEntityUI, openEventBridge, EventBridge, document, window */ +/* global HifiEntityUI, openEventBridge, console, EventBridge, document, window */ +/* eslint no-console: 0 */ (function(){ - var menuStructure = { - General: [ - { - id: "importSettings", - name: "Import Settings", - type: "Button", - class: "blue", - callback: function(){} - }, - { - id: "exportSettings", - name: "Export Settings", - type: "Button", - class: "red", - callback: function(){} - }, - { type: "Row" }, - { - id: "isEmitting", - name: "Is Emitting", - type: "Boolean" - }, - { type: "Row" }, - { - id: "lifespan", - name: "Lifespan", - type: "SliderFloat", - min: 0.01, - max: 10 - }, - { type: "Row" }, - { - id: "maxParticles", - name: "Max Particles", - type: "SliderInteger", - min: 1, - max: 10000 - }, - { type: "Row" }, - { - id: "textures", - name: "Textures", - type: "Texture" - }, - { type: "Row" } - ], - Emit: [ - { - id: "emitRate", - name: "Emit Rate", - type: "SliderInteger", - max: 1000 - }, - { type: "Row" }, - { - id: "emitSpeed", - name: "Emit Speed", - type: "SliderFloat", - max: 5 - }, - - { type: "Row" }, - { - id: "emitOrientation", - unit: "deg", - name: "Emit Orientation", - type: "VectorQuaternion" - }, - { type: "Row" }, - { - id: "emitShouldTrail", - name: "Emit Should Trail", - type: "Boolean" - }, - { type: "Row" } - ], - Color: [ - { - id: "color", - name: "Color", - type: "Color", - defaultColor: { - red: 255, - green: 255, - blue: 255 - } - }, - { type: "Row" }, - { - id: "colorSpread", - name: "Color Spread", - type: "Color", - defaultColor: { - red: 0, - green: 0, - blue: 0 - } - }, - { type: "Row" }, - { - id: "colorStart", - name: "Color Start", - type: "Color", - defaultColor: { - red: 255, - green: 255, - blue: 255 - } - }, - { type: "Row" }, - { - id: "colorFinish", - name: "Color Finish", - type: "Color", - defaultColor: { - red: 255, - green: 255, - blue: 255 - } - }, - { type: "Row" } - ], - Acceleration: [ - { - id: "emitAcceleration", - name: "Emit Acceleration", - type: "Vector" - }, - { type: "Row" }, - { - id: "accelerationSpread", - name: "Acceleration Spread", - type: "Vector" - }, - { type: "Row" } - ], - Alpha: [ - { - id: "alpha", - name: "Alpha", - type: "SliderFloat" - }, - { type: "Row" }, - { - id: "alphaSpread", - name: "Alpha Spread", - type: "SliderFloat" - }, - { type: "Row" }, - { - id: "alphaStart", - name: "Alpha Start", - type: "SliderFloat" - }, - { type: "Row" }, - { - id: "alphaFinish", - name: "Alpha Finish", - type: "SliderFloat" - }, - { type: "Row" } - ], - Polar: [ - { - id: "polarStart", - name: "Polar Start", - unit: "deg", - type: "SliderRadian" - }, - { type: "Row" }, - { - id: "polarFinish", - name: "Polar Finish", - unit: "deg", - type: "SliderRadian" - }, - { type: "Row" } - ], - Azimuth: [ - { - id: "azimuthStart", - name: "Azimuth Start", - unit: "deg", - type: "SliderRadian", - min: -180, - max: 0 - }, - { type: "Row" }, - { - id: "azimuthFinish", - name: "Azimuth Finish", - unit: "deg", - type: "SliderRadian" - }, - { type: "Row" } - ], - Radius: [ - { - id: "particleRadius", - name: "Particle Radius", - type: "SliderFloat", - max: 4.0 - }, - { type: "Row" }, - { - id: "radiusSpread", - name: "Radius Spread", - type: "SliderFloat", - max: 4.0 - }, - { type: "Row" }, - { - id: "radiusStart", - name: "Radius Start", - type: "SliderFloat", - max: 4.0 - }, - { type: "Row" }, - { - id: "radiusFinish", - name: "Radius Finish", - type: "SliderFloat", - max: 4.0 - }, - { type: "Row" } - ] - }; - // Web Bridge Binding here! var root = document.getElementById("particle-explorer"); window.onload = function(){ - var ui = new HifiEntityUI(root, menuStructure); + var ui = new HifiEntityUI(root); + var textarea = document.createElement("textarea"); + + var menuStructure = { + General: [ + { type: "Row", id: "export-import-field" }, + { + id: "importSettings", + name: "Import Settings", + type: "Button", + class: "blue", + callback: function(event){ + + var insertZone = document.getElementById("export-import-field"); + + var json = ui.getSettings(); + textarea.value = JSON.stringify(json); + if (!insertZone.contains(textarea)) { + insertZone.appendChild(textarea); + insertZone.parentNode.parentNode.style.maxHeight = + insertZone.parentNode.clientHeight + "px"; + + } + textarea.onchange = function () { + ui.fillFields(JSON.parse(textarea.value)); + ui.submitChanges(JSON.parse(textarea.value)); + }; + } + }, + { + id: "exportSettings", + name: "Export Settings", + type: "Button", + class: "red", + callback: function(event){ + var json = ui.getSettings(); + textarea.onchange = function(){}; + var insertZone = document.getElementById("export-import-field"); + textarea.value = JSON.stringify(json); + if (!insertZone.parentNode.contains(textarea)) { + insertZone.appendChild(textarea); + } + } + }, + { type: "Row"}, + { + id: "isEmitting", + name: "Is Emitting", + type: "Boolean" + }, + { type: "Row" }, + { + id: "lifespan", + name: "Lifespan", + type: "SliderFloat", + min: 0.01, + max: 10 + }, + { type: "Row" }, + { + id: "maxParticles", + name: "Max Particles", + type: "SliderInteger", + min: 1, + max: 10000 + }, + { type: "Row" }, + { + id: "textures", + name: "Textures", + type: "Texture" + }, + { type: "Row" } + ], + Emit: [ + { + id: "emitRate", + name: "Emit Rate", + type: "SliderInteger", + max: 1000 + }, + { type: "Row" }, + { + id: "emitSpeed", + name: "Emit Speed", + type: "SliderFloat", + max: 5 + }, + + { type: "Row" }, + { + id: "emitOrientation", + unit: "deg", + name: "Emit Orientation", + type: "VectorQuaternion" + }, + { type: "Row" }, + { + id: "emitShouldTrail", + name: "Emit Should Trail", + type: "Boolean" + }, + { type: "Row" } + ], + Color: [ + { + id: "color", + name: "Color", + type: "Color", + defaultColor: { + red: 255, + green: 255, + blue: 255 + } + }, + { type: "Row" }, + { + id: "colorSpread", + name: "Color Spread", + type: "Color", + defaultColor: { + red: 0, + green: 0, + blue: 0 + } + }, + { type: "Row" }, + { + id: "colorStart", + name: "Color Start", + type: "Color", + defaultColor: { + red: 255, + green: 255, + blue: 255 + } + }, + { type: "Row" }, + { + id: "colorFinish", + name: "Color Finish", + type: "Color", + defaultColor: { + red: 255, + green: 255, + blue: 255 + } + }, + { type: "Row" } + ], + Acceleration: [ + { + id: "emitAcceleration", + name: "Emit Acceleration", + type: "Vector" + }, + { type: "Row" }, + { + id: "accelerationSpread", + name: "Acceleration Spread", + type: "Vector" + }, + { type: "Row" } + ], + Alpha: [ + { + id: "alpha", + name: "Alpha", + type: "SliderFloat" + }, + { type: "Row" }, + { + id: "alphaSpread", + name: "Alpha Spread", + type: "SliderFloat" + }, + { type: "Row" }, + { + id: "alphaStart", + name: "Alpha Start", + type: "SliderFloat" + }, + { type: "Row" }, + { + id: "alphaFinish", + name: "Alpha Finish", + type: "SliderFloat" + }, + { type: "Row" } + ], + Polar: [ + { + id: "polarStart", + name: "Polar Start", + unit: "deg", + type: "SliderRadian" + }, + { type: "Row" }, + { + id: "polarFinish", + name: "Polar Finish", + unit: "deg", + type: "SliderRadian" + }, + { type: "Row" } + ], + Azimuth: [ + { + id: "azimuthStart", + name: "Azimuth Start", + unit: "deg", + type: "SliderRadian", + min: -180, + max: 0 + }, + { type: "Row" }, + { + id: "azimuthFinish", + name: "Azimuth Finish", + unit: "deg", + type: "SliderRadian" + }, + { type: "Row" } + ], + Radius: [ + { + id: "particleRadius", + name: "Particle Radius", + type: "SliderFloat", + max: 4.0 + }, + { type: "Row" }, + { + id: "radiusSpread", + name: "Radius Spread", + type: "SliderFloat", + max: 4.0 + }, + { type: "Row" }, + { + id: "radiusStart", + name: "Radius Start", + type: "SliderFloat", + max: 4.0 + }, + { type: "Row" }, + { + id: "radiusFinish", + name: "Radius Finish", + type: "SliderFloat", + max: 4.0 + }, + { type: "Row" } + ] + }; + ui.setUI(menuStructure); openEventBridge( function(EventBridge) { ui.build(); ui.connect(EventBridge); diff --git a/scripts/system/particle_explorer/particleExplorerTool.js b/scripts/system/particle_explorer/particleExplorerTool.js index 3d434b148a..46bc0323c5 100644 --- a/scripts/system/particle_explorer/particleExplorerTool.js +++ b/scripts/system/particle_explorer/particleExplorerTool.js @@ -9,23 +9,13 @@ // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -/*global window, alert, EventBridge, dat, listenForSettingsUpdates,createVec3Folder,createQuatFolder,writeVec3ToInterface,writeDataToInterface*/ +/* global window, alert, ParticleExplorerTool, EventBridge, dat, listenForSettingsUpdates,createVec3Folder,createQuatFolder,writeVec3ToInterface,writeDataToInterface*/ -var PARTICLE_EXPLORER_HTML_URL = Script.resolvePath(' .html'); +var PARTICLE_EXPLORER_HTML_URL = Script.resolvePath('particleExplorer.html'); ParticleExplorerTool = function() { var that = {}; - var bound = false; - that.bindWebView = function() { - if (!bound) { - that.webView = Tablet.getTablet("com.highfidelity.interface.tablet.system"); - that.webView.setVisible = function(value) {}; - that.webView.webEventReceived.connect(that.webEventReceived); - bound = true; - } - } - /* that.createWebView = function() { that.webView = Tablet.getTablet("com.highfidelity.interface.tablet.system"); that.webView.setVisible = function(value) {}; @@ -44,17 +34,17 @@ ParticleExplorerTool = function() { that.webView.emitScriptEvent(JSON.stringify(messageData)); } - */ that.webEventReceived = function(data) { - var message = JSON.parse(data); - if (message.messageType === "settings_update") { - Entities.editEntity(that.activeParticleEntity, message.updatedSettings); + var data = JSON.parse(data); + if (data.messageType === "settings_update") { + data.updatedSettings.emitOrientation = Quat.fromVec3Degrees(data.updatedSettings.emitOrientation); + Entities.editEntity(that.activeParticleEntity, data.updatedSettings); } - }; + } that.setActiveParticleEntity = function(id) { that.activeParticleEntity = id; - }; + } return that; }; diff --git a/scripts/system/particle_explorer/tester.js b/scripts/system/particle_explorer/tester.js deleted file mode 100644 index 99a3c10838..0000000000 --- a/scripts/system/particle_explorer/tester.js +++ /dev/null @@ -1,8 +0,0 @@ - -var commsPanel = new OverlayWebWindow({ - title: "Explorer", - source: Script.resolvePath("particleExplorer.html"), - width: 460, - height: 900, - visible: true -}); From a3fc87fb23a04d61a4ab4d7d603428039886c8ef Mon Sep 17 00:00:00 2001 From: Menithal Date: Wed, 24 May 2017 21:27:47 +0300 Subject: [PATCH 040/357] Removed straggling print --- scripts/system/edit.js | 1 - 1 file changed, 1 deletion(-) diff --git a/scripts/system/edit.js b/scripts/system/edit.js index 0184136676..488f40b00b 100644 --- a/scripts/system/edit.js +++ b/scripts/system/edit.js @@ -83,7 +83,6 @@ selectionManager.addEventListener(function () { // Destroy the old particles web view first particleExplorerTool.destroyWebView(); particleExplorerTool.createWebView(); - print("Particle Selected"); var properties = Entities.getEntityProperties(selectedEntityID); var particleData = { messageType: "particle_settings", From 925cca97db51bbfabd30160d15259c0540208591 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Thu, 25 May 2017 09:16:17 +1200 Subject: [PATCH 041/357] Make the tablet horizontal --- scripts/system/libraries/WebTablet.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/scripts/system/libraries/WebTablet.js b/scripts/system/libraries/WebTablet.js index 88e6ec763b..a3090f05e7 100644 --- a/scripts/system/libraries/WebTablet.js +++ b/scripts/system/libraries/WebTablet.js @@ -54,17 +54,21 @@ function calcSpawnInfo(hand, tabletHeight) { if (HMD.active && hand !== NO_HANDS) { // Orient tablet per hand orientation. // Angle it back similar to holding it like a book. + // Make it horizontal. // Move tablet up so that hand is at bottom. // Move tablet back so that hand is in front. var handController = getControllerWorldLocation(hand, true); var position = handController.position; var rotation = handController.rotation; + if (hand === Controller.Standard.LeftHand) { rotation = Quat.multiply(rotation, Quat.fromPitchYawRollDegrees(-60, 90, 0)); } else { rotation = Quat.multiply(rotation, Quat.fromPitchYawRollDegrees(-60, -90, 0)); } + var eulers = Quat.safeEulerAngles(rotation); + rotation = Quat.fromPitchYawRollDegrees(eulers.x, eulers.y, 0); position = Vec3.sum(position, Vec3.multiplyQbyV(rotation, { x: 0, y: tabletHeight * 0.4, z: tabletHeight * 0.05 })); From 6452e92ac9436b712a47c51aade2b656f5f4917e Mon Sep 17 00:00:00 2001 From: David Rowe Date: Thu, 25 May 2017 11:28:26 +1200 Subject: [PATCH 042/357] Hand controller data may not be valid --- scripts/system/libraries/WebTablet.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/scripts/system/libraries/WebTablet.js b/scripts/system/libraries/WebTablet.js index a3090f05e7..5168e2340d 100644 --- a/scripts/system/libraries/WebTablet.js +++ b/scripts/system/libraries/WebTablet.js @@ -51,14 +51,18 @@ function calcSpawnInfo(hand, tabletHeight) { hand = NO_HANDS; } + var handController = null; if (HMD.active && hand !== NO_HANDS) { + handController = getControllerWorldLocation(hand, true); + } + + if (handController && handController.valid) { // Orient tablet per hand orientation. // Angle it back similar to holding it like a book. // Make it horizontal. // Move tablet up so that hand is at bottom. // Move tablet back so that hand is in front. - var handController = getControllerWorldLocation(hand, true); var position = handController.position; var rotation = handController.rotation; From f1dca5019a6f79209b167102cd61cdfc12312855 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Thu, 25 May 2017 11:48:28 +1200 Subject: [PATCH 043/357] Fix making the tablet horizontal --- scripts/system/libraries/WebTablet.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/scripts/system/libraries/WebTablet.js b/scripts/system/libraries/WebTablet.js index 5168e2340d..c9918589f6 100644 --- a/scripts/system/libraries/WebTablet.js +++ b/scripts/system/libraries/WebTablet.js @@ -57,9 +57,8 @@ function calcSpawnInfo(hand, tabletHeight) { } if (handController && handController.valid) { - // Orient tablet per hand orientation. + // Orient tablet per hand pitch and yaw. // Angle it back similar to holding it like a book. - // Make it horizontal. // Move tablet up so that hand is at bottom. // Move tablet back so that hand is in front. @@ -67,12 +66,13 @@ function calcSpawnInfo(hand, tabletHeight) { var rotation = handController.rotation; if (hand === Controller.Standard.LeftHand) { - rotation = Quat.multiply(rotation, Quat.fromPitchYawRollDegrees(-60, 90, 0)); + rotation = Quat.multiply(rotation, Quat.fromPitchYawRollDegrees(0, 90, 0)); } else { - rotation = Quat.multiply(rotation, Quat.fromPitchYawRollDegrees(-60, -90, 0)); + rotation = Quat.multiply(rotation, Quat.fromPitchYawRollDegrees(0, -90, 0)); } - var eulers = Quat.safeEulerAngles(rotation); - rotation = Quat.fromPitchYawRollDegrees(eulers.x, eulers.y, 0); + var normal = Vec3.multiplyQbyV(rotation, Vec3.UNIT_NEG_Y); + var lookAt = Quat.lookAt({x: 0, y: 0, z: 0}, normal, Vec3.UNIT_Y); + rotation = Quat.multiply(lookAt, Quat.fromPitchYawRollDegrees(30, 0, 0)); position = Vec3.sum(position, Vec3.multiplyQbyV(rotation, { x: 0, y: tabletHeight * 0.4, z: tabletHeight * 0.05 })); From ac55908e42984a27c91cd386609808f61073376b Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Wed, 24 May 2017 16:50:06 -0700 Subject: [PATCH 044/357] add additional information to stats/launch activities --- interface/src/Application.cpp | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index bd66a96879..253277b37f 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -946,6 +946,10 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo properties["processor_l3_cache_count"] = procInfo.numProcessorCachesL3; } + // add firstRun flag from settings to launch event + Setting::Handle firstRun { Settings::firstRun, true }; + properties["first_run"] = firstRun.get(); + UserActivityLogger::getInstance().logAction("launch", properties); // Tell our entity edit sender about our known jurisdictions @@ -1305,6 +1309,8 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo properties["kbps_in"] = bandwidthRecorder->getCachedTotalAverageInputKilobitsPerSecond(); properties["kbps_out"] = bandwidthRecorder->getCachedTotalAverageOutputKilobitsPerSecond(); + properties["asset_in_kbps"] = bandwidthRecorder->getAverageInputKilobitsPerSecond(NodeType::AssetServer); + auto nodeList = DependencyManager::get(); SharedNodePointer entityServerNode = nodeList->soloNodeOfType(NodeType::EntityServer); SharedNodePointer audioMixerNode = nodeList->soloNodeOfType(NodeType::AudioMixer); @@ -1317,10 +1323,14 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo properties["asset_ping"] = assetServerNode ? assetServerNode->getPingMs() : -1; properties["messages_ping"] = messagesMixerNode ? messagesMixerNode->getPingMs() : -1; + auto loadingRequests = ResourceCache::getLoadingRequests(); properties["active_downloads"] = loadingRequests.size(); properties["pending_downloads"] = ResourceCache::getPendingRequestCount(); + properties["processing_resources"] = DependencyManager::get()->getStat("Processing").toInt(); + properties["pending_processing_resources"] = DependencyManager::get()->getStat("PendingProcessing").toInt(); + properties["throttled"] = _displayPlugin ? _displayPlugin->isThrottled() : false; auto myAvatar = getMyAvatar(); @@ -1335,6 +1345,15 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo properties["deleted_entity_cnt"] = entityActivityTracking.deletedEntityCount; properties["edited_entity_cnt"] = entityActivityTracking.editedEntityCount; + NodeToOctreeSceneStats* octreeServerSceneStats = getOcteeSceneStats(); + unsigned long totalServerOctreeElements = 0; + for (NodeToOctreeSceneStatsIterator i = octreeServerSceneStats->begin(); i != octreeServerSceneStats->end(); i++) { + totalServerOctreeElements += i->second.getTotalElements(); + } + + properties["local_octree_elements"] = (qint64) OctreeElement::getInternalNodeCount(); + properties["server_octree_elements"] = (qint64) totalServerOctreeElements; + properties["active_display_plugin"] = getActiveDisplayPlugin()->getName(); properties["using_hmd"] = isHMDMode(); From 3743cd23b4fe6d74092d34ba3c62b1bb32b7f8fa Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Wed, 24 May 2017 17:20:24 -0700 Subject: [PATCH 045/357] add detailed download stats for file/http/atp --- interface/src/Application.cpp | 33 +++++++++++++++++-- .../networking/src/AssetResourceRequest.cpp | 22 +++++++++++-- .../networking/src/FileResourceRequest.cpp | 11 +++++++ .../networking/src/HTTPResourceRequest.cpp | 16 +++++++++ libraries/networking/src/ResourceRequest.h | 12 +++++++ 5 files changed, 90 insertions(+), 4 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 253277b37f..08981ee6c1 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -111,6 +111,7 @@ #include #include #include +#include #include #include #include @@ -1328,8 +1329,36 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo properties["active_downloads"] = loadingRequests.size(); properties["pending_downloads"] = ResourceCache::getPendingRequestCount(); - properties["processing_resources"] = DependencyManager::get()->getStat("Processing").toInt(); - properties["pending_processing_resources"] = DependencyManager::get()->getStat("PendingProcessing").toInt(); + auto statTracker = DependencyManager::get(); + + properties["processing_resources"] = statTracker->getStat("Processing").toInt(); + properties["pending_processing_resources"] = statTracker->getStat("PendingProcessing").toInt(); + + properties["started_atp_requests"] = statTracker->getStat(STAT_ATP_REQUEST_STARTED).toInt(); + properties["started_http_requests"] = statTracker->getStat(STAT_HTTP_REQUEST_STARTED).toInt(); + properties["started_file_requests"] = statTracker->getStat(STAT_FILE_REQUEST_STARTED).toInt(); + auto totalRequestsStarted = properties["started_atp_requests"].toInt() + + properties["started_http_requests"].toInt() + properties["started_file_requests"].toInt(); + properties["started_requests"] = totalRequestsStarted; + + properties["successful_atp_requests"] = statTracker->getStat(STAT_ATP_REQUEST_SUCCESS).toInt(); + properties["successful_http_requests"] = statTracker->getStat(STAT_HTTP_REQUEST_SUCCESS).toInt(); + properties["successful_file_requests"] = statTracker->getStat(STAT_FILE_REQUEST_SUCCESS).toInt(); + auto totalRequestsSuccessful = properties["successful_atp_requests"].toInt() + + properties["successful_http_requests"].toInt() + properties["successful_file_requests"].toInt(); + properties["successful_requests"] = totalRequestsSuccessful; + + properties["failed_atp_requests"] = statTracker->getStat(STAT_ATP_REQUEST_FAILED).toInt(); + properties["failed_http_requests"] = statTracker->getStat(STAT_HTTP_REQUEST_FAILED).toInt(); + properties["failed_file_requests"] = statTracker->getStat(STAT_FILE_REQUEST_FAILED).toInt(); + auto totalRequestsFailed = properties["failed_atp_requests"].toInt() + + properties["failed_http_requests"].toInt() + properties["failed_file_requests"].toInt(); + properties["failed_requests"] = totalRequestsFailed; + + properties["cache_atp_requests"] = statTracker->getStat(STAT_ATP_REQUEST_CACHE).toInt(); + properties["cache_http_requests"] = statTracker->getStat(STAT_HTTP_REQUEST_FAILED).toInt(); + auto totalRequestsCache = properties["cache_atp_requests"].toInt() + properties["cache_http_requests"].toInt(); + properties["cache_requests"] = totalRequestsCache; properties["throttled"] = _displayPlugin ? _displayPlugin->isThrottled() : false; diff --git a/libraries/networking/src/AssetResourceRequest.cpp b/libraries/networking/src/AssetResourceRequest.cpp index a4d5d66923..d23d85d79e 100644 --- a/libraries/networking/src/AssetResourceRequest.cpp +++ b/libraries/networking/src/AssetResourceRequest.cpp @@ -13,12 +13,14 @@ #include +#include +#include +#include + #include "AssetClient.h" #include "AssetUtils.h" #include "MappingRequest.h" #include "NetworkLogging.h" -#include -#include static const int DOWNLOAD_PROGRESS_LOG_INTERVAL_SECONDS = 5; @@ -48,6 +50,8 @@ bool AssetResourceRequest::urlIsAssetHash(const QUrl& url) { } void AssetResourceRequest::doSend() { + DependencyManager::get()->incrementStat(STAT_ATP_REQUEST_STARTED); + // We'll either have a hash or an ATP path to a file (that maps to a hash) if (urlIsAssetHash(_url)) { // We've detected that this is a hash - simply use AssetClient to request that asset @@ -100,6 +104,8 @@ void AssetResourceRequest::requestMappingForPath(const AssetPath& path) { _state = Finished; emit finished(); + DependencyManager::get()->incrementStat(STAT_ATP_REQUEST_FAILED); + break; } } @@ -140,10 +146,22 @@ void AssetResourceRequest::requestHash(const AssetHash& hash) { _result = Error; break; } + + auto statTracker = DependencyManager::get(); _state = Finished; emit finished(); + if (_result == Success) { + statTracker->incrementStat(STAT_ATP_REQUEST_SUCCESS); + + if (loadedFromCache()) { + statTracker->incrementStat(STAT_ATP_REQUEST_CACHE); + } + } else { + statTracker->incrementStat(STAT_ATP_REQUEST_FAILED); + } + _assetRequest->deleteLater(); _assetRequest = nullptr; }); diff --git a/libraries/networking/src/FileResourceRequest.cpp b/libraries/networking/src/FileResourceRequest.cpp index 1e549e5fa3..d0e2721679 100644 --- a/libraries/networking/src/FileResourceRequest.cpp +++ b/libraries/networking/src/FileResourceRequest.cpp @@ -15,7 +15,12 @@ #include +#include + void FileResourceRequest::doSend() { + auto statTracker = DependencyManager::get(); + statTracker->incrementStat(STAT_FILE_REQUEST_STARTED); + QString filename = _url.toLocalFile(); // sometimes on windows, we see the toLocalFile() return null, @@ -60,4 +65,10 @@ void FileResourceRequest::doSend() { _state = Finished; emit finished(); + + if (_result == ResourceRequest::Success) { + statTracker->incrementStat(STAT_FILE_REQUEST_SUCCESS); + } else { + statTracker->incrementStat(STAT_FILE_REQUEST_FAILED); + } } diff --git a/libraries/networking/src/HTTPResourceRequest.cpp b/libraries/networking/src/HTTPResourceRequest.cpp index c6a4b93e51..266ea429a0 100644 --- a/libraries/networking/src/HTTPResourceRequest.cpp +++ b/libraries/networking/src/HTTPResourceRequest.cpp @@ -17,6 +17,7 @@ #include #include +#include #include "NetworkAccessManager.h" #include "NetworkLogging.h" @@ -49,6 +50,8 @@ void HTTPResourceRequest::cleanupTimer() { } void HTTPResourceRequest::doSend() { + DependencyManager::get()->incrementStat(STAT_HTTP_REQUEST_STARTED); + QNetworkRequest networkRequest(_url); networkRequest.setAttribute(QNetworkRequest::FollowRedirectsAttribute, true); networkRequest.setHeader(QNetworkRequest::UserAgentHeader, HIGH_FIDELITY_USER_AGENT); @@ -178,6 +181,17 @@ void HTTPResourceRequest::onRequestFinished() { _state = Finished; emit finished(); + + auto statTracker = DependencyManager::get(); + if (_result == Success) { + statTracker->incrementStat(STAT_HTTP_REQUEST_SUCCESS); + + if (loadedFromCache()) { + statTracker->incrementStat(STAT_HTTP_REQUEST_CACHE); + } + } else { + statTracker->incrementStat(STAT_HTTP_REQUEST_FAILED); + } } void HTTPResourceRequest::onDownloadProgress(qint64 bytesReceived, qint64 bytesTotal) { @@ -202,4 +216,6 @@ void HTTPResourceRequest::onTimeout() { _result = Timeout; _state = Finished; emit finished(); + + DependencyManager::get()->incrementStat(STAT_HTTP_REQUEST_FAILED); } diff --git a/libraries/networking/src/ResourceRequest.h b/libraries/networking/src/ResourceRequest.h index ef40cb3455..452380f2f3 100644 --- a/libraries/networking/src/ResourceRequest.h +++ b/libraries/networking/src/ResourceRequest.h @@ -19,6 +19,18 @@ #include "ByteRange.h" +const QString STAT_ATP_REQUEST_STARTED = "StartedATPRequest"; +const QString STAT_HTTP_REQUEST_STARTED = "StartedHTTPRequest"; +const QString STAT_FILE_REQUEST_STARTED = "StartedFileRequest"; +const QString STAT_ATP_REQUEST_SUCCESS = "SuccessfulATPRequest"; +const QString STAT_HTTP_REQUEST_SUCCESS = "SuccessfulHTTPRequest"; +const QString STAT_FILE_REQUEST_SUCCESS = "SuccessfulFileRequest"; +const QString STAT_ATP_REQUEST_FAILED = "FailedATPRequest"; +const QString STAT_HTTP_REQUEST_FAILED = "FailedHTTPRequest"; +const QString STAT_FILE_REQUEST_FAILED = "FailedFileRequest"; +const QString STAT_ATP_REQUEST_CACHE = "CacheATPRequest"; +const QString STAT_HTTP_REQUEST_CACHE = "CacheHTTPRequest"; + class ResourceRequest : public QObject { Q_OBJECT public: From 575d4abdf710a7381cfe846d1dee7fed3252449f Mon Sep 17 00:00:00 2001 From: samcake Date: Wed, 24 May 2017 17:25:21 -0700 Subject: [PATCH 046/357] bad include fixed maybe --- interface/src/Application.cpp | 8 +------- .../entities-renderer/src/RenderableZoneEntityItem.cpp | 2 +- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 1d74fd31fd..6b41d921de 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -337,7 +337,7 @@ public: // Don't actually crash in debug builds, in case this apparent deadlock is simply from // the developer actively debugging code #ifdef NDEBUG - // deadlockDetectionCrash(); + deadlockDetectionCrash(); #endif } } @@ -5097,12 +5097,6 @@ void Application::displaySide(RenderArgs* renderArgs, Camera& theCamera, bool se }); } - // Setup the current Zone Entity lighting - { - // auto stage = DependencyManager::get()->getSkyStage(); - // DependencyManager::get()->setGlobalLight(stage->getSunLight()); - } - { PerformanceTimer perfTimer("SceneProcessTransaction"); _main3DScene->enqueueTransaction(transaction); diff --git a/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp b/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp index d5579aa022..7825a50f25 100644 --- a/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp @@ -19,6 +19,7 @@ #include #include #include +#include #include "EntityTreeRenderer.h" #include "RenderableEntityItem.h" @@ -26,7 +27,6 @@ #include #include "DeferredLightingEffect.h" -#include class RenderableZoneEntityItemMeta { public: From 48c4db1ca4a6bfcd687a76caaa66c6194d055142 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Wed, 24 May 2017 17:36:21 -0700 Subject: [PATCH 047/357] nest the download stats so they are cleaner --- interface/src/Application.cpp | 55 +++++++++++-------- .../networking/src/AssetResourceRequest.cpp | 10 +++- libraries/networking/src/ResourceRequest.h | 3 + 3 files changed, 43 insertions(+), 25 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 08981ee6c1..4d18c26296 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -1324,7 +1324,6 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo properties["asset_ping"] = assetServerNode ? assetServerNode->getPingMs() : -1; properties["messages_ping"] = messagesMixerNode ? messagesMixerNode->getPingMs() : -1; - auto loadingRequests = ResourceCache::getLoadingRequests(); properties["active_downloads"] = loadingRequests.size(); properties["pending_downloads"] = ResourceCache::getPendingRequestCount(); @@ -1334,31 +1333,41 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo properties["processing_resources"] = statTracker->getStat("Processing").toInt(); properties["pending_processing_resources"] = statTracker->getStat("PendingProcessing").toInt(); - properties["started_atp_requests"] = statTracker->getStat(STAT_ATP_REQUEST_STARTED).toInt(); - properties["started_http_requests"] = statTracker->getStat(STAT_HTTP_REQUEST_STARTED).toInt(); - properties["started_file_requests"] = statTracker->getStat(STAT_FILE_REQUEST_STARTED).toInt(); - auto totalRequestsStarted = properties["started_atp_requests"].toInt() - + properties["started_http_requests"].toInt() + properties["started_file_requests"].toInt(); - properties["started_requests"] = totalRequestsStarted; + QJsonObject startedRequests; + startedRequests["atp"] = statTracker->getStat(STAT_ATP_REQUEST_STARTED).toInt(); + startedRequests["http"] = statTracker->getStat(STAT_HTTP_REQUEST_STARTED).toInt(); + startedRequests["file"] = statTracker->getStat(STAT_FILE_REQUEST_STARTED).toInt(); + startedRequests["total"] = startedRequests["atp"].toInt() + startedRequests["http"].toInt() + + startedRequests["file"].toInt(); + properties["started_requests"] = startedRequests; - properties["successful_atp_requests"] = statTracker->getStat(STAT_ATP_REQUEST_SUCCESS).toInt(); - properties["successful_http_requests"] = statTracker->getStat(STAT_HTTP_REQUEST_SUCCESS).toInt(); - properties["successful_file_requests"] = statTracker->getStat(STAT_FILE_REQUEST_SUCCESS).toInt(); - auto totalRequestsSuccessful = properties["successful_atp_requests"].toInt() - + properties["successful_http_requests"].toInt() + properties["successful_file_requests"].toInt(); - properties["successful_requests"] = totalRequestsSuccessful; + QJsonObject successfulRequests; + successfulRequests["atp"] = statTracker->getStat(STAT_ATP_REQUEST_SUCCESS).toInt(); + successfulRequests["http"] = statTracker->getStat(STAT_HTTP_REQUEST_SUCCESS).toInt(); + successfulRequests["file"] = statTracker->getStat(STAT_FILE_REQUEST_SUCCESS).toInt(); + successfulRequests["total"] = successfulRequests["atp"].toInt() + successfulRequests["http"].toInt() + + successfulRequests["file"].toInt(); + properties["successful_requests"] = successfulRequests; - properties["failed_atp_requests"] = statTracker->getStat(STAT_ATP_REQUEST_FAILED).toInt(); - properties["failed_http_requests"] = statTracker->getStat(STAT_HTTP_REQUEST_FAILED).toInt(); - properties["failed_file_requests"] = statTracker->getStat(STAT_FILE_REQUEST_FAILED).toInt(); - auto totalRequestsFailed = properties["failed_atp_requests"].toInt() - + properties["failed_http_requests"].toInt() + properties["failed_file_requests"].toInt(); - properties["failed_requests"] = totalRequestsFailed; + QJsonObject failedRequests; + failedRequests["atp"] = statTracker->getStat(STAT_ATP_REQUEST_FAILED).toInt(); + failedRequests["http"] = statTracker->getStat(STAT_HTTP_REQUEST_FAILED).toInt(); + failedRequests["file"] = statTracker->getStat(STAT_FILE_REQUEST_FAILED).toInt(); + failedRequests["total"] = failedRequests["atp"].toInt() + failedRequests["http"].toInt() + + failedRequests["file"].toInt(); + properties["failed_requests"] = failedRequests; - properties["cache_atp_requests"] = statTracker->getStat(STAT_ATP_REQUEST_CACHE).toInt(); - properties["cache_http_requests"] = statTracker->getStat(STAT_HTTP_REQUEST_FAILED).toInt(); - auto totalRequestsCache = properties["cache_atp_requests"].toInt() + properties["cache_http_requests"].toInt(); - properties["cache_requests"] = totalRequestsCache; + QJsonObject cacheRequests; + cacheRequests["atp"] = statTracker->getStat(STAT_ATP_REQUEST_CACHE).toInt(); + cacheRequests["http"] = statTracker->getStat(STAT_HTTP_REQUEST_FAILED).toInt(); + cacheRequests["total"] = cacheRequests["atp"].toInt() + cacheRequests["http"].toInt(); + properties["cache_requests"] = cacheRequests; + + QJsonObject atpMappingRequests; + atpMappingRequests["started"] = statTracker->getStat(STAT_ATP_MAPPING_REQUEST_STARTED).toInt(); + atpMappingRequests["failed"] = statTracker->getStat(STAT_ATP_MAPPING_REQUEST_FAILED).toInt(); + atpMappingRequests["successful"] = statTracker->getStat(STAT_ATP_MAPPING_REQUEST_SUCCESS).toInt(); + properties["atp_mapping_requests"] = atpMappingRequests; properties["throttled"] = _displayPlugin ? _displayPlugin->isThrottled() : false; diff --git a/libraries/networking/src/AssetResourceRequest.cpp b/libraries/networking/src/AssetResourceRequest.cpp index d23d85d79e..fc83fb6cae 100644 --- a/libraries/networking/src/AssetResourceRequest.cpp +++ b/libraries/networking/src/AssetResourceRequest.cpp @@ -69,11 +69,14 @@ void AssetResourceRequest::doSend() { } void AssetResourceRequest::requestMappingForPath(const AssetPath& path) { + auto statTracker = DependencyManager::get(); + statTracker->incrementStat(STAT_ATP_MAPPING_REQUEST_STARTED); + auto assetClient = DependencyManager::get(); _assetMappingRequest = assetClient->createGetMappingRequest(path); // make sure we'll hear about the result of the get mapping request - connect(_assetMappingRequest, &GetMappingRequest::finished, this, [this, path](GetMappingRequest* request){ + connect(_assetMappingRequest, &GetMappingRequest::finished, this, [this, path, statTracker](GetMappingRequest* request){ Q_ASSERT(_state == InProgress); Q_ASSERT(request == _assetMappingRequest); @@ -84,6 +87,8 @@ void AssetResourceRequest::requestMappingForPath(const AssetPath& path) { requestHash(request->getHash()); + statTracker->incrementStat(STAT_ATP_MAPPING_REQUEST_SUCCESS); + break; default: { switch (request->getError()) { @@ -104,7 +109,8 @@ void AssetResourceRequest::requestMappingForPath(const AssetPath& path) { _state = Finished; emit finished(); - DependencyManager::get()->incrementStat(STAT_ATP_REQUEST_FAILED); + statTracker->incrementStat(STAT_ATP_MAPPING_REQUEST_FAILED); + statTracker->incrementStat(STAT_ATP_REQUEST_FAILED); break; } diff --git a/libraries/networking/src/ResourceRequest.h b/libraries/networking/src/ResourceRequest.h index 452380f2f3..39bcb3fe93 100644 --- a/libraries/networking/src/ResourceRequest.h +++ b/libraries/networking/src/ResourceRequest.h @@ -30,6 +30,9 @@ const QString STAT_HTTP_REQUEST_FAILED = "FailedHTTPRequest"; const QString STAT_FILE_REQUEST_FAILED = "FailedFileRequest"; const QString STAT_ATP_REQUEST_CACHE = "CacheATPRequest"; const QString STAT_HTTP_REQUEST_CACHE = "CacheHTTPRequest"; +const QString STAT_ATP_MAPPING_REQUEST_STARTED = "StartedATPMappingRequest"; +const QString STAT_ATP_MAPPING_REQUEST_FAILED = "FailedATPMappingRequest"; +const QString STAT_ATP_MAPPING_REQUEST_SUCCESS = "SuccessfulATPMappingRequest"; class ResourceRequest : public QObject { Q_OBJECT From 5e61f20df8d5c59cf02108579040245c51654805 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Wed, 24 May 2017 17:37:42 -0700 Subject: [PATCH 048/357] add more details about pending downloads --- interface/src/Application.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 4d18c26296..28d183a18b 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -1325,8 +1325,20 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo properties["messages_ping"] = messagesMixerNode ? messagesMixerNode->getPingMs() : -1; auto loadingRequests = ResourceCache::getLoadingRequests(); + + QJsonArray loadingRequestsStats; + for (const auto& request : loadingRequests) { + QJsonObject requestStats; + requestStats["filename"] = request->getURL().fileName(); + requestStats["received"] = request->getBytesReceived(); + requestStats["total"] = request->getBytesTotal(); + requestStats["attempts"] = (int)request->getDownloadAttempts(); + loadingRequestsStats.append(requestStats); + } + properties["active_downloads"] = loadingRequests.size(); properties["pending_downloads"] = ResourceCache::getPendingRequestCount(); + properties["active_downloads_details"] = loadingRequestsStats; auto statTracker = DependencyManager::get(); From c37fd335e1d6560692fdc1a3bfd0db642751cf38 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Wed, 24 May 2017 17:41:52 -0700 Subject: [PATCH 049/357] track the number of local socket changes --- interface/src/Application.cpp | 2 ++ libraries/networking/src/LimitedNodeList.cpp | 4 ++-- libraries/networking/src/LimitedNodeList.h | 2 ++ 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 28d183a18b..1f5eebee84 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -1429,6 +1429,8 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo lastLeftHandPose = leftHandPose; lastRightHandPose = rightHandPose; + properties["local_socket_changes"] = DependencyManager::get()->getStat(LOCAL_SOCKET_CHANGE_STAT).toInt(); + UserActivityLogger::getInstance().logAction("stats", properties); }); sendStatsTimer->start(); diff --git a/libraries/networking/src/LimitedNodeList.cpp b/libraries/networking/src/LimitedNodeList.cpp index 8feb695c79..cba1e664ab 100644 --- a/libraries/networking/src/LimitedNodeList.cpp +++ b/libraries/networking/src/LimitedNodeList.cpp @@ -29,6 +29,7 @@ #include #include #include +#include #include #include "AccountManager.h" @@ -37,7 +38,6 @@ #include "HifiSockAddr.h" #include "NetworkLogging.h" #include "udt/Packet.h" -#include static Setting::Handle LIMITED_NODELIST_LOCAL_PORT("LimitedNodeList.LocalPort", 0); @@ -1044,10 +1044,10 @@ void LimitedNodeList::setLocalSocket(const HifiSockAddr& sockAddr) { qCInfo(networking) << "Local socket is" << sockAddr; } else { qCInfo(networking) << "Local socket has changed from" << _localSockAddr << "to" << sockAddr; + DependencyManager::get()->incrementStat(LOCAL_SOCKET_CHANGE_STAT); } _localSockAddr = sockAddr; - emit localSockAddrChanged(_localSockAddr); } } diff --git a/libraries/networking/src/LimitedNodeList.h b/libraries/networking/src/LimitedNodeList.h index 3eb898463a..056a4d16cf 100644 --- a/libraries/networking/src/LimitedNodeList.h +++ b/libraries/networking/src/LimitedNodeList.h @@ -66,6 +66,8 @@ const QHostAddress DEFAULT_ASSIGNMENT_CLIENT_MONITOR_HOSTNAME = QHostAddress::Lo const QString USERNAME_UUID_REPLACEMENT_STATS_KEY = "$username"; +const QString LOCAL_SOCKET_CHANGE_STAT = "LocalSocketChanges"; + using namespace tbb; typedef std::pair UUIDNodePair; typedef concurrent_unordered_map NodeHash; From fefb34512d399fa2f164ab37ebe82ed205fc94c4 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Wed, 24 May 2017 17:44:09 -0700 Subject: [PATCH 050/357] change asset inbound key to atp --- interface/src/Application.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 1f5eebee84..e73d46185e 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -1310,7 +1310,7 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo properties["kbps_in"] = bandwidthRecorder->getCachedTotalAverageInputKilobitsPerSecond(); properties["kbps_out"] = bandwidthRecorder->getCachedTotalAverageOutputKilobitsPerSecond(); - properties["asset_in_kbps"] = bandwidthRecorder->getAverageInputKilobitsPerSecond(NodeType::AssetServer); + properties["atp_in_kbps"] = bandwidthRecorder->getAverageInputKilobitsPerSecond(NodeType::AssetServer); auto nodeList = DependencyManager::get(); SharedNodePointer entityServerNode = nodeList->soloNodeOfType(NodeType::EntityServer); From c671817fa3985967f9bc3dfb310e85ccc74158d0 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Wed, 24 May 2017 17:47:40 -0700 Subject: [PATCH 051/357] fix cache http request count in stats --- interface/src/Application.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index e73d46185e..0b05efbadb 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -1371,7 +1371,7 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo QJsonObject cacheRequests; cacheRequests["atp"] = statTracker->getStat(STAT_ATP_REQUEST_CACHE).toInt(); - cacheRequests["http"] = statTracker->getStat(STAT_HTTP_REQUEST_FAILED).toInt(); + cacheRequests["http"] = statTracker->getStat(STAT_HTTP_REQUEST_CACHE).toInt(); cacheRequests["total"] = cacheRequests["atp"].toInt() + cacheRequests["http"].toInt(); properties["cache_requests"] = cacheRequests; From a04fc41e17587853a3d6ebcf2e7a22238911f474 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Wed, 24 May 2017 17:54:07 -0700 Subject: [PATCH 052/357] don't capture strong pointer to stat tracker --- libraries/networking/src/AssetResourceRequest.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/libraries/networking/src/AssetResourceRequest.cpp b/libraries/networking/src/AssetResourceRequest.cpp index fc83fb6cae..c0150fd3ed 100644 --- a/libraries/networking/src/AssetResourceRequest.cpp +++ b/libraries/networking/src/AssetResourceRequest.cpp @@ -76,7 +76,9 @@ void AssetResourceRequest::requestMappingForPath(const AssetPath& path) { _assetMappingRequest = assetClient->createGetMappingRequest(path); // make sure we'll hear about the result of the get mapping request - connect(_assetMappingRequest, &GetMappingRequest::finished, this, [this, path, statTracker](GetMappingRequest* request){ + connect(_assetMappingRequest, &GetMappingRequest::finished, this, [this, path](GetMappingRequest* request){ + auto statTracker = DependencyManager::get(); + Q_ASSERT(_state == InProgress); Q_ASSERT(request == _assetMappingRequest); From 50285005beead11349656f0ca380ad98b144319d Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Wed, 24 May 2017 18:35:57 -0700 Subject: [PATCH 053/357] add machine fingerprint to the launch event --- interface/src/Application.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 0b05efbadb..2fe0af8556 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -69,6 +69,7 @@ #include #include #include +#include #include #include #include @@ -951,6 +952,9 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo Setting::Handle firstRun { Settings::firstRun, true }; properties["first_run"] = firstRun.get(); + // add the user's machine ID to the launch event + properties["machine_fingerprint"] = FingerprintUtils::getMachineFingerprint().toString(); + UserActivityLogger::getInstance().logAction("launch", properties); // Tell our entity edit sender about our known jurisdictions From f897f3f0902c4cef7f04357a26db448b26677f7f Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Wed, 24 May 2017 19:08:25 -0700 Subject: [PATCH 054/357] send machine fingerprint as uuid without curly braces --- interface/src/Application.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 2fe0af8556..abccc5197d 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -953,7 +953,7 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo properties["first_run"] = firstRun.get(); // add the user's machine ID to the launch event - properties["machine_fingerprint"] = FingerprintUtils::getMachineFingerprint().toString(); + properties["machine_fingerprint"] = uuidStringWithoutCurlyBraces(FingerprintUtils::getMachineFingerprint()); UserActivityLogger::getInstance().logAction("launch", properties); From d7b3ee9bcb06fbf3df764918e1629e9bbb10327b Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Wed, 24 May 2017 19:15:10 -0700 Subject: [PATCH 055/357] check for cached ATP assets in right place --- libraries/networking/src/AssetRequest.cpp | 9 +++++++-- libraries/networking/src/AssetRequest.h | 3 +++ libraries/networking/src/AssetResourceRequest.cpp | 6 +++++- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/libraries/networking/src/AssetRequest.cpp b/libraries/networking/src/AssetRequest.cpp index 920c7ae036..00fa3d9f2f 100644 --- a/libraries/networking/src/AssetRequest.cpp +++ b/libraries/networking/src/AssetRequest.cpp @@ -15,11 +15,13 @@ #include +#include +#include + #include "AssetClient.h" #include "NetworkLogging.h" #include "NodeList.h" #include "ResourceCache.h" -#include static int requestID = 0; @@ -62,9 +64,12 @@ void AssetRequest::start() { _data = loadFromCache(getUrl()); if (!_data.isNull()) { _error = NoError; - + + _loadedFromCache = true; + _state = Finished; emit finished(this); + return; } diff --git a/libraries/networking/src/AssetRequest.h b/libraries/networking/src/AssetRequest.h index b808ae0ca6..df5cf80ecd 100644 --- a/libraries/networking/src/AssetRequest.h +++ b/libraries/networking/src/AssetRequest.h @@ -52,6 +52,8 @@ public: QUrl getUrl() const { return ::getATPUrl(_hash); } QString getHash() const { return _hash; } + bool loadedFromCache() const { return _loadedFromCache; } + signals: void finished(AssetRequest* thisRequest); void progress(qint64 totalReceived, qint64 total); @@ -66,6 +68,7 @@ private: int _numPendingRequests { 0 }; MessageID _assetRequestID { INVALID_MESSAGE_ID }; const ByteRange _byteRange; + bool _loadedFromCache { false }; }; #endif diff --git a/libraries/networking/src/AssetResourceRequest.cpp b/libraries/networking/src/AssetResourceRequest.cpp index c0150fd3ed..f4a3b20fd5 100644 --- a/libraries/networking/src/AssetResourceRequest.cpp +++ b/libraries/networking/src/AssetResourceRequest.cpp @@ -156,7 +156,11 @@ void AssetResourceRequest::requestHash(const AssetHash& hash) { } auto statTracker = DependencyManager::get(); - + + if (_assetRequest->loadedFromCache()) { + _loadedFromCache = true; + } + _state = Finished; emit finished(); From 3eb95d2d193da2436a458e6f1b6d3a77f5c92268 Mon Sep 17 00:00:00 2001 From: Sam Cake Date: Thu, 25 May 2017 01:16:45 -0700 Subject: [PATCH 056/357] cleaning the commented code --- interface/src/Application.cpp | 99 -------- interface/src/Application.h | 2 - .../src/EntityTreeRenderer.cpp | 220 ------------------ .../src/EntityTreeRenderer.h | 5 +- .../src/RenderableZoneEntityItem.cpp | 41 ++-- .../utilities/render/deferredLighting.qml | 1 + 6 files changed, 21 insertions(+), 347 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 6b41d921de..89bd19cb48 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -4874,12 +4874,6 @@ QRect Application::getDesirableApplicationGeometry() const { return applicationGeometry; } -glm::vec3 Application::getSunDirection() const { - // Sun direction is in fact just the location of the sun relative to the origin - auto skyStage = DependencyManager::get()->getSkyStage(); - return skyStage->getSunLight()->getDirection(); -} - // FIXME, preprocessor guard this check to occur only in DEBUG builds static QThread * activeRenderingThread = nullptr; @@ -4946,90 +4940,6 @@ namespace render { } } -// Background Render Data & rendering functions -class BackgroundRenderData { -public: - typedef render::Payload Payload; - typedef Payload::DataPointer Pointer; - - static render::ItemID _item; // unique WorldBoxRenderData -}; - -render::ItemID BackgroundRenderData::_item = 0; - -namespace render { - template <> const ItemKey payloadGetKey(const BackgroundRenderData::Pointer& stuff) { - return ItemKey::Builder::background(); - } - - template <> const Item::Bound payloadGetBound(const BackgroundRenderData::Pointer& stuff) { - return Item::Bound(); - } - - template <> void payloadRender(const BackgroundRenderData::Pointer& background, RenderArgs* args) { - Q_ASSERT(args->_batch); - gpu::Batch& batch = *args->_batch; - - // Background rendering decision - auto skyStage = DependencyManager::get()->getSkyStage(); - auto backgroundMode = skyStage->getBackgroundMode(); - - switch (backgroundMode) { - case model::SunSkyStage::SKY_DEFAULT: { - auto scene = DependencyManager::get()->getStage(); - auto sceneKeyLight = scene->getKeyLight(); - - scene->setSunModelEnable(false); - sceneKeyLight->setColor(ColorUtils::toVec3(KeyLightPropertyGroup::DEFAULT_KEYLIGHT_COLOR)); - sceneKeyLight->setIntensity(KeyLightPropertyGroup::DEFAULT_KEYLIGHT_INTENSITY); - sceneKeyLight->setAmbientIntensity(KeyLightPropertyGroup::DEFAULT_KEYLIGHT_AMBIENT_INTENSITY); - sceneKeyLight->setDirection(KeyLightPropertyGroup::DEFAULT_KEYLIGHT_DIRECTION); - // fall through: render a skybox (if available), or the defaults (if requested) - } - - case model::SunSkyStage::SKY_BOX: { - auto skybox = skyStage->getSkybox(); - if (!skybox->empty()) { - PerformanceTimer perfTimer("skybox"); - skybox->render(batch, args->getViewFrustum()); - break; - } - // 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(); - if (defaultSkyboxAmbientTexture) { - sceneKeyLight->setAmbientSphere(defaultSkyboxAmbientTexture->getIrradiance()); - sceneKeyLight->setAmbientMap(defaultSkyboxAmbientTexture); - } else { - static QString repeatedMessage = LogHandler::getInstance().addRepeatedMessageRegex( - "Failed to get a valid Default Skybox Ambient Texture ? probably because it couldn't be find during initialization step"); - } - // fall through: render defaults skybox - } else { - break; - } - } - - 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: - break; - } - } -} - - void Application::displaySide(RenderArgs* renderArgs, Camera& theCamera, bool selfAvatarOnly) { // FIXME: This preDisplayRender call is temporary until we create a separate render::scene for the mirror rendering. @@ -5053,15 +4963,6 @@ void Application::displaySide(RenderArgs* renderArgs, Camera& theCamera, bool se // The pending changes collecting the changes here render::Transaction transaction; - // FIXME: Move this out of here!, Background / skybox should be driven by the enityt content just like the other entities - // Background rendering decision - if (!render::Item::isValidID(BackgroundRenderData::_item)) { - auto backgroundRenderData = make_shared(); - auto backgroundRenderPayload = make_shared(backgroundRenderData); - BackgroundRenderData::_item = _main3DScene->allocateID(); - transaction.resetItem(BackgroundRenderData::_item, backgroundRenderPayload); - } - // Assuming nothing gets rendered through that if (!selfAvatarOnly) { if (DependencyManager::get()->shouldRenderEntities()) { diff --git a/interface/src/Application.h b/interface/src/Application.h index e8507c39e8..9cf03f1cef 100644 --- a/interface/src/Application.h +++ b/interface/src/Application.h @@ -460,8 +460,6 @@ private: void queryOctree(NodeType_t serverType, PacketType packetType, NodeToJurisdictionMap& jurisdictions, bool forceResend = false); - glm::vec3 getSunDirection() const; - void renderRearViewMirror(RenderArgs* renderArgs, const QRect& region, bool isZoomed); int sendNackPackets(); diff --git a/libraries/entities-renderer/src/EntityTreeRenderer.cpp b/libraries/entities-renderer/src/EntityTreeRenderer.cpp index 94e0db60f9..be8f1db31a 100644 --- a/libraries/entities-renderer/src/EntityTreeRenderer.cpp +++ b/libraries/entities-renderer/src/EntityTreeRenderer.cpp @@ -23,7 +23,6 @@ #include #include #include -#include #include "EntityTreeRenderer.h" @@ -141,7 +140,6 @@ void EntityTreeRenderer::clear() { // reset the zone to the default (while we load the next scene) _layeredZones.clear(); - // applyZoneAndHasSkybox(nullptr); OctreeRenderer::clear(); } @@ -196,14 +194,6 @@ void EntityTreeRenderer::update() { // Handle enter/leave entity logic bool updated = checkEnterLeaveEntities(); - // If we haven't already updated and previously attempted to load a texture, - // check if the texture loaded and apply it - /* if (!updated && - ((_pendingAmbientTexture && (!_ambientTexture || _ambientTexture->isLoaded())) || - (_pendingSkyboxTexture && (!_skyboxTexture || _skyboxTexture->isLoaded())))) { - applySkyboxAndHasAmbient(); - }*/ - // Even if we're not moving the mouse, if we started clicking on an entity and we have // not yet released the hold then this is still considered a holdingClickOnEntity event // and we want to simulate this message here as well as in mouse move @@ -371,176 +361,6 @@ bool EntityTreeRenderer::applyLayeredZones() { return true; } -/* -bool EntityTreeRenderer::applyZoneAndHasSkybox(const std::shared_ptr& zone) { - auto textureCache = DependencyManager::get(); - auto scene = DependencyManager::get(); - auto sceneStage = scene->getStage(); - auto skyStage = scene->getSkyStage(); - auto sceneKeyLight = sceneStage->getKeyLight(); - - // If there is no zone, use the default background - if (!zone) { - _zoneUserData = QString(); - skyStage->getSkybox()->clear(); - - _pendingSkyboxTexture = false; - _skyboxTexture.clear(); - - _pendingAmbientTexture = false; - _ambientTexture.clear(); - - sceneKeyLight->resetAmbientSphere(); - sceneKeyLight->setAmbientMap(nullptr); - - skyStage->setBackgroundMode(model::SunSkyStage::SKY_DEFAULT); - return false; - } - - // Set the keylight - sceneKeyLight->setColor(ColorUtils::toVec3(zone->getKeyLightProperties().getColor())); - sceneKeyLight->setIntensity(zone->getKeyLightProperties().getIntensity()); - sceneKeyLight->setAmbientIntensity(zone->getKeyLightProperties().getAmbientIntensity()); - sceneKeyLight->setDirection(zone->getKeyLightProperties().getDirection()); - - // Set the stage - bool isSunModelEnabled = zone->getStageProperties().getSunModelEnabled(); - sceneStage->setSunModelEnable(isSunModelEnabled); - if (isSunModelEnabled) { - sceneStage->setLocation(zone->getStageProperties().getLongitude(), - zone->getStageProperties().getLatitude(), - zone->getStageProperties().getAltitude()); - - auto sceneTime = sceneStage->getTime(); - sceneTime->setHour(zone->getStageProperties().calculateHour()); - sceneTime->setDay(zone->getStageProperties().calculateDay()); - } - - // Set the ambient texture - _ambientTextureURL = zone->getKeyLightProperties().getAmbientURL(); - if (_ambientTextureURL.isEmpty()) { - _pendingAmbientTexture = false; - _ambientTexture.clear(); - } else { - _pendingAmbientTexture = true; - } - - // Set the skybox texture - return layerZoneAndHasSkybox(zone); -}*/ -/* -bool EntityTreeRenderer::layerZoneAndHasSkybox(const std::shared_ptr& zone) { - assert(zone); - - auto textureCache = DependencyManager::get(); - auto scene = DependencyManager::get(); - auto skyStage = scene->getSkyStage(); - auto skybox = skyStage->getSkybox(); - - bool hasSkybox = false; - - switch (zone->getBackgroundMode()) { - case BACKGROUND_MODE_SKYBOX: - hasSkybox = true; - - skybox->setColor(zone->getSkyboxProperties().getColorVec3()); - - if (_zoneUserData != zone->getUserData()) { - _zoneUserData = zone->getUserData(); - std::dynamic_pointer_cast(skybox)->parse(_zoneUserData); - } - - _skyboxTextureURL = zone->getSkyboxProperties().getURL(); - if (_skyboxTextureURL.isEmpty()) { - _pendingSkyboxTexture = false; - _skyboxTexture.clear(); - } else { - _pendingSkyboxTexture = true; - } - - applySkyboxAndHasAmbient(); - skyStage->setBackgroundMode(model::SunSkyStage::SKY_BOX); - - break; - - case BACKGROUND_MODE_INHERIT: - default: - // Clear the skybox to release its textures - skybox->clear(); - _zoneUserData = QString(); - - _pendingSkyboxTexture = false; - _skyboxTexture.clear(); - - // Let the application background through - if (applySkyboxAndHasAmbient()) { - skyStage->setBackgroundMode(model::SunSkyStage::SKY_DEFAULT_TEXTURE); - } else { - skyStage->setBackgroundMode(model::SunSkyStage::SKY_DEFAULT_AMBIENT_TEXTURE); - } - - break; - } - - return hasSkybox; -}*/ -/* -bool EntityTreeRenderer::applySkyboxAndHasAmbient() { - auto textureCache = DependencyManager::get(); - auto scene = DependencyManager::get(); - auto sceneStage = scene->getStage(); - auto skyStage = scene->getSkyStage(); - auto sceneKeyLight = sceneStage->getKeyLight(); - auto skybox = skyStage->getSkybox(); - - bool isAmbientSet = false; - if (_pendingAmbientTexture && !_ambientTexture) { - _ambientTexture = textureCache->getTexture(_ambientTextureURL, image::TextureUsage::CUBE_TEXTURE); - } - if (_ambientTexture && _ambientTexture->isLoaded()) { - _pendingAmbientTexture = false; - - auto texture = _ambientTexture->getGPUTexture(); - if (texture) { - isAmbientSet = true; - sceneKeyLight->setAmbientSphere(texture->getIrradiance()); - sceneKeyLight->setAmbientMap(texture); - } else { - qCDebug(entitiesrenderer) << "Failed to load ambient texture:" << _ambientTexture->getURL(); - } - } - - if (_pendingSkyboxTexture && - (!_skyboxTexture || (_skyboxTexture->getURL() != _skyboxTextureURL))) { - _skyboxTexture = textureCache->getTexture(_skyboxTextureURL, image::TextureUsage::CUBE_TEXTURE); - } - if (_skyboxTexture && _skyboxTexture->isLoaded()) { - _pendingSkyboxTexture = false; - - auto texture = _skyboxTexture->getGPUTexture(); - if (texture) { - skybox->setCubemap(texture); - if (!isAmbientSet) { - sceneKeyLight->setAmbientSphere(texture->getIrradiance()); - sceneKeyLight->setAmbientMap(texture); - isAmbientSet = true; - } - } else { - qCDebug(entitiesrenderer) << "Failed to load skybox texture:" << _skyboxTexture->getURL(); - skybox->setCubemap(nullptr); - } - } else { - skybox->setCubemap(nullptr); - } - - if (!isAmbientSet) { - sceneKeyLight->resetAmbientSphere(); - sceneKeyLight->setAmbientMap(nullptr); - } - - return isAmbientSet; -}*/ - const FBXGeometry* EntityTreeRenderer::getGeometryForEntity(EntityItemPointer entityItem) { const FBXGeometry* result = NULL; @@ -1168,8 +988,6 @@ std::pair EntityTreeRenderer:: void EntityTreeRenderer::LayeredZones::apply() { assert(_entityTreeRenderer); - - // applyPartial(begin()); } void EntityTreeRenderer::LayeredZones::update(std::shared_ptr zone) { @@ -1184,12 +1002,6 @@ void EntityTreeRenderer::LayeredZones::update(std::shared_ptr zo } else { LayeredZone zoneLayer(zone); - // should we update? only if this zone is tighter than the current skybox zone - bool shouldUpdate = false; - if (_skyboxLayer == end() || zoneLayer <= *_skyboxLayer) { - shouldUpdate = true; - } - // find this zone's layer, if it exists iterator layer = end(); auto it = _map.find(zoneLayer.id); @@ -1209,41 +1021,9 @@ void EntityTreeRenderer::LayeredZones::update(std::shared_ptr zo std::tie(layer, std::ignore) = insert(zoneLayer); _map.emplace(layer->id, layer); } - - if (shouldUpdate) { - // applyPartial(layer); - } } } -/* -void EntityTreeRenderer::LayeredZones::applyPartial(iterator layer) { - bool hasSkybox = false; - _skyboxLayer = end(); - if (layer == end()) { - if (empty()) { - _entityTreeRenderer->applyZoneAndHasSkybox(nullptr); - return; - } else { // a layer was removed - reapply from beginning - layer = begin(); - } - } - - if (layer == begin()) { - hasSkybox = _entityTreeRenderer->applyZoneAndHasSkybox(layer->zone); - } else { - hasSkybox = _entityTreeRenderer->layerZoneAndHasSkybox(layer->zone); - } - - if (layer != end()) { - while (!hasSkybox && ++layer != end()) { - hasSkybox = _entityTreeRenderer->layerZoneAndHasSkybox(layer->zone); - } - } - - _skyboxLayer = layer; -} -*/ bool EntityTreeRenderer::LayeredZones::contains(const LayeredZones& other) { bool result = std::equal(other.begin(), other._skyboxLayer, begin()); if (result) { diff --git a/libraries/entities-renderer/src/EntityTreeRenderer.h b/libraries/entities-renderer/src/EntityTreeRenderer.h index 92235b1a00..bf4148212b 100644 --- a/libraries/entities-renderer/src/EntityTreeRenderer.h +++ b/libraries/entities-renderer/src/EntityTreeRenderer.h @@ -147,9 +147,6 @@ private: void addEntityToScene(EntityItemPointer entity); bool findBestZoneAndMaybeContainingEntities(QVector* entitiesContainingAvatar = nullptr); - // bool applyZoneAndHasSkybox(const std::shared_ptr& zone); - // bool layerZoneAndHasSkybox(const std::shared_ptr& zone); - // bool applySkyboxAndHasAmbient(); bool applyLayeredZones(); void checkAndCallPreload(const EntityItemID& entityID, bool reload = false, bool unloadFirst = false); @@ -223,7 +220,7 @@ private: std::shared_ptr getZone() { return empty() ? nullptr : begin()->zone; } private: - // void applyPartial(iterator layer); + void applyPartial(iterator layer); std::map _map; iterator _skyboxLayer{ end() }; diff --git a/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp b/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp index 7825a50f25..c4960f0cfa 100644 --- a/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp @@ -245,28 +245,6 @@ void RenderableZoneEntityItem::render(RenderArgs* args) { _model->removeFromScene(scene, transaction); scene->enqueueTransaction(transaction); } - - /* - { - // Set the keylight - sceneKeyLight->setColor(ColorUtils::toVec3(this->getKeyLightProperties().getColor())); - sceneKeyLight->setIntensity(this->getKeyLightProperties().getIntensity()); - sceneKeyLight->setAmbientIntensity(this->getKeyLightProperties().getAmbientIntensity()); - sceneKeyLight->setDirection(this->getKeyLightProperties().getDirection()); - - // Set the stage - bool isSunModelEnabled = this->getStageProperties().getSunModelEnabled(); - sceneStage->setSunModelEnable(isSunModelEnabled); - if (isSunModelEnabled) { - sceneStage->setLocation(this->getStageProperties().getLongitude(), - this->getStageProperties().getLatitude(), - this->getStageProperties().getAltitude()); - - auto sceneTime = sceneStage->getTime(); - sceneTime->setHour(this->getStageProperties().calculateHour()); - sceneTime->setDay(this->getStageProperties().calculateDay()); - } - }*/ } bool RenderableZoneEntityItem::contains(const glm::vec3& point) const { @@ -289,6 +267,9 @@ bool RenderableZoneEntityItem::addToScene(EntityItemPointer self, const render:: auto renderData = std::make_shared(self); auto renderPayload = std::make_shared(renderData); updateKeyZoneItemFromEntity((*renderData)); + updateKeySunFromEntity((*renderData)); + updateKeyAmbientFromEntity((*renderData)); + updateKeyBackgroundFromEntity((*renderData)); render::Item::Status::Getters statusGetters; makeEntityItemStatusGetters(getThisPointer(), statusGetters); @@ -373,6 +354,22 @@ void RenderableZoneEntityItem::updateKeyZoneItemFromEntity(RenderableZoneEntityI if (!success) { keyZonePayload.editBound() = render::Item::Bound(); } + + /* TODO: Implement the sun model behavior / Keep this code here for reference, this is how we + { + // Set the stage + bool isSunModelEnabled = this->getStageProperties().getSunModelEnabled(); + sceneStage->setSunModelEnable(isSunModelEnabled); + if (isSunModelEnabled) { + sceneStage->setLocation(this->getStageProperties().getLongitude(), + this->getStageProperties().getLatitude(), + this->getStageProperties().getAltitude()); + + auto sceneTime = sceneStage->getTime(); + sceneTime->setHour(this->getStageProperties().calculateHour()); + sceneTime->setDay(this->getStageProperties().calculateDay()); + } + }*/ } diff --git a/scripts/developer/utilities/render/deferredLighting.qml b/scripts/developer/utilities/render/deferredLighting.qml index 730aa547e7..ff4621a87a 100644 --- a/scripts/developer/utilities/render/deferredLighting.qml +++ b/scripts/developer/utilities/render/deferredLighting.qml @@ -64,6 +64,7 @@ Column { "Point:LightingModel:enablePointLight", "Spot:LightingModel:enableSpotLight", "Light Contour:LightingModel:showLightContour", + "Zone Stack:DrawZoneStack:enabled", "Shadow:RenderShadowTask:enabled" ] CheckBox { From 1f24e38585cca9d1d7919e803b4806569af34570 Mon Sep 17 00:00:00 2001 From: volansystech Date: Wed, 24 May 2017 21:00:40 +0530 Subject: [PATCH 057/357] Initial Commit: Switching from Desktop mode to HMD [Oculus Rift] mode automatically when the user wear Oculus Rift. --- interface/src/Application.cpp | 54 ++++++++++++++----- interface/src/Application.h | 10 ++-- .../display-plugins/OpenGLDisplayPlugin.cpp | 15 +++++- .../src/display-plugins/OpenGLDisplayPlugin.h | 6 +++ libraries/plugins/src/plugins/Plugin.h | 13 +++++ .../oculus/src/OculusBaseDisplayPlugin.cpp | 11 ++++ plugins/oculus/src/OculusBaseDisplayPlugin.h | 2 + 7 files changed, 92 insertions(+), 19 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index ced5e51565..99c2b2febf 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -1338,11 +1338,18 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo properties["active_display_plugin"] = getActiveDisplayPlugin()->getName(); properties["using_hmd"] = isHMDMode(); - if (isOculusRiftPluginAvailable()){ - qCDebug(interfaceapp) << "Oculus Rift Plugin is available"; - QTimer *switchModeTimer = new QTimer(this); - connect(switchModeTimer, SIGNAL(timeout()), this, SLOT(switchmode())); - switchModeTimer->start(500); + if (isOculusRiftPluginAvailable()) { + // If Oculus Rift Plugin is Available,And Current Display Plugin is not Oculus Rift + // then startOculusRiftStandBySession to listen Oculus HMD Mounted status. + if (getActiveDisplayPlugin()->getName() != "Oculus Rift" && + !oculusRiftPlugin->isFakeSessionActive()) { + startOculusRiftStandBySession(); + } + // Poll periodically to check whether the user has worn Oculus HMD or not. And switch mode + // accordingly. If the user wear HMD, switch to VR mode, if remove switch to Desktop mode. + QTimer *switchDisplayModeTimer = new QTimer(this); + connect(switchDisplayModeTimer, SIGNAL(timeout()), this, SLOT(switchDisplayModeForOculus())); + switchDisplayModeTimer->start(500); } auto glInfo = getGLContextData(); @@ -1574,7 +1581,9 @@ void Application::aboutToQuit() { } getActiveDisplayPlugin()->deactivate(); - + if (oculusRiftPlugin && oculusRiftPlugin->isFakeSessionActive()){ + oculusRiftPlugin->endStandBySession(); + } // Hide Running Scripts dialog so that it gets destroyed in an orderly manner; prevents warnings at shutdown. DependencyManager::get()->hide("RunningScripts"); @@ -6845,7 +6854,7 @@ bool Application::isOculusRiftPluginAvailable(){ auto displayPlugins = PluginManager::getInstance()->getDisplayPlugins(); // Default to the first item on the list, in case none of the menu items match DisplayPluginPointer defaultplugin = displayPlugins.at(0); - if (defaultplugin->isHmd() && defaultplugin->getName() == "Oculus Rift"){ + if (defaultplugin->isHmd() && defaultplugin->getName() == "Oculus Rift") { oculusRiftPlugin = defaultplugin; return true; // No need to iterate again,so return } @@ -6854,7 +6863,7 @@ bool Application::isOculusRiftPluginAvailable(){ QString pluginname = displayPlugin->getName(); if (displayPlugin->isHmd() && pluginname == "Oculus Rift") { oculusRiftPlugin = displayPlugin; - _isDisplayVisible = displayPlugin->isDisplayVisible(); + _oculusHMDMountedStatus = displayPlugin->isDisplayVisible(); isOculusRiftPluginAvailable = true; break; } @@ -6862,15 +6871,32 @@ bool Application::isOculusRiftPluginAvailable(){ return isOculusRiftPluginAvailable; } -void Application::switchmode(){ - bool isDisplayVisible = oculusRiftPlugin->isDisplayVisible(); - if (isDisplayVisible != _isDisplayVisible){ - if (isDisplayVisible == false && _isDisplayVisible == true){ - qCDebug(interfaceapp) << "switching from HMD to desktop mode"; +void Application::switchDisplayModeForOculus(){ + bool currenthmdMountedStatus = oculusRiftPlugin->isDisplayVisible(); + if (currenthmdMountedStatus != _oculusHMDMountedStatus){ + // Switch to respective mode as soon as currenthmdMountedStatus changes + if (currenthmdMountedStatus == false && _oculusHMDMountedStatus == true) { + qCDebug(interfaceapp) << "Switching from HMD to desktop mode"; setActiveDisplayPlugin("Desktop"); + startOculusRiftStandBySession(); + } + if (currenthmdMountedStatus == true && _oculusHMDMountedStatus == false) { + qCDebug(interfaceapp) << "Switching from Desktop to HMD mode"; + endOculusRiftStandBySession(); + setActiveDisplayPlugin("Oculus Rift"); } } - _isDisplayVisible = isDisplayVisible; // assign current status + _oculusHMDMountedStatus = currenthmdMountedStatus; +} + +bool Application::startOculusRiftStandBySession(){ + bool isStandBySessionStarted = oculusRiftPlugin->startStandBySession(); + qCDebug(interfaceapp) << "startOculusRiftStandBySession: " << isStandBySessionStarted; + return isStandBySessionStarted; +} + +void Application::endOculusRiftStandBySession(){ + oculusRiftPlugin->endStandBySession(); } mat4 Application::getEyeProjection(int eye) const { diff --git a/interface/src/Application.h b/interface/src/Application.h index c181e74c74..a6ac244dc8 100644 --- a/interface/src/Application.h +++ b/interface/src/Application.h @@ -443,7 +443,7 @@ private slots: void addAssetToWorldErrorTimeout(); void handleSandboxStatus(QNetworkReply* reply); - void switchmode(); + void switchDisplayModeForOculus(); private: static void initDisplay(); void init(); @@ -684,9 +684,13 @@ private: AudioInjector* _snapshotSoundInjector { nullptr }; SharedSoundPointer _snapshotSound; - bool isOculusRiftPluginAvailable(); + DisplayPluginPointer oculusRiftPlugin; - bool _isDisplayVisible; + + bool isOculusRiftPluginAvailable(); + bool _oculusHMDMountedStatus; // Keep track of HMD Mounted Flag + bool startOculusRiftStandBySession(); + void endOculusRiftStandBySession(); }; diff --git a/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.cpp b/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.cpp index 306db98b35..639acc7739 100644 --- a/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.cpp +++ b/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.cpp @@ -315,8 +315,7 @@ bool OpenGLDisplayPlugin::activate() { if (isHmd() && (getHmdScreen() >= 0)) { _container->showDisplayPluginsTools(); } - - return Parent::activate(); + return Parent::activate(); } void OpenGLDisplayPlugin::deactivate() { @@ -339,6 +338,18 @@ void OpenGLDisplayPlugin::deactivate() { Parent::deactivate(); } +bool OpenGLDisplayPlugin::startStandBySession() { + if (!activateStandBySession()) { + return false; + } + return Parent::startStandBySession(); +} + +void OpenGLDisplayPlugin::endStandBySession() { + deactivateStandBySession(); + return Parent::endStandBySession(); +} + void OpenGLDisplayPlugin::customizeContext() { auto presentThread = DependencyManager::get(); Q_ASSERT(thread() == presentThread->thread()); diff --git a/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.h b/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.h index e1eea5de6c..ecde3b3c93 100644 --- a/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.h +++ b/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.h @@ -42,6 +42,8 @@ public: // between the main thread and the presentation thread bool activate() override final; void deactivate() override final; + bool startStandBySession() override final; + void endStandBySession() override final; bool eventFilter(QObject* receiver, QEvent* event) override; bool isDisplayVisible() const override { return true; } @@ -99,6 +101,10 @@ protected: // Returns true on successful activation virtual bool internalActivate() { return true; } virtual void internalDeactivate() {} + + // Returns true on successful activation of standby session + virtual bool activateStandBySession() { return true; } + virtual void deactivateStandBySession() {} // Plugin specific functionality to send the composed scene to the output window or device virtual void internalPresent(); diff --git a/libraries/plugins/src/plugins/Plugin.h b/libraries/plugins/src/plugins/Plugin.h index 15588fafa4..74f04fff18 100644 --- a/libraries/plugins/src/plugins/Plugin.h +++ b/libraries/plugins/src/plugins/Plugin.h @@ -53,6 +53,18 @@ public: virtual bool isActive() { return _active; } + virtual bool startStandBySession(){ + _standbysessionactive = true; + return _standbysessionactive; + } + + virtual void endStandBySession(){ + _standbysessionactive = false; + } + + virtual bool isFakeSessionActive() { + return _standbysessionactive; + } /** * Called by the application during it's idle phase. If the plugin needs to do @@ -73,6 +85,7 @@ signals: protected: bool _active { false }; + bool _standbysessionactive { false }; PluginContainer* _container { nullptr }; static const char* UNKNOWN_PLUGIN_ID; diff --git a/plugins/oculus/src/OculusBaseDisplayPlugin.cpp b/plugins/oculus/src/OculusBaseDisplayPlugin.cpp index 26906ef2fb..28e30e0d21 100644 --- a/plugins/oculus/src/OculusBaseDisplayPlugin.cpp +++ b/plugins/oculus/src/OculusBaseDisplayPlugin.cpp @@ -127,6 +127,17 @@ void OculusBaseDisplayPlugin::internalDeactivate() { _session = nullptr; } +bool OculusBaseDisplayPlugin::activateStandBySession() { + _session = acquireOculusSession(); + if (!_session) { + return false; + } + return true; +} +void OculusBaseDisplayPlugin::deactivateStandBySession() { + releaseOculusSession(); + _session = nullptr; +} void OculusBaseDisplayPlugin::updatePresentPose() { //mat4 sensorResetMat; //_currentPresentFrameInfo.sensorSampleTime = ovr_GetTimeInSeconds(); diff --git a/plugins/oculus/src/OculusBaseDisplayPlugin.h b/plugins/oculus/src/OculusBaseDisplayPlugin.h index e5dc75095d..79085f817b 100644 --- a/plugins/oculus/src/OculusBaseDisplayPlugin.h +++ b/plugins/oculus/src/OculusBaseDisplayPlugin.h @@ -33,6 +33,8 @@ protected: void uncustomizeContext() override; bool internalActivate() override; void internalDeactivate() override; + bool activateStandBySession() override; + void deactivateStandBySession() override; void updatePresentPose() override; protected: From cab6f3f7c37aa7e07965564a4341187ef8345971 Mon Sep 17 00:00:00 2001 From: volansystech Date: Thu, 25 May 2017 17:28:19 +0530 Subject: [PATCH 058/357] Solve Jitteriness while scrolling. --- interface/src/ui/overlays/Web3DOverlay.cpp | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/interface/src/ui/overlays/Web3DOverlay.cpp b/interface/src/ui/overlays/Web3DOverlay.cpp index 8a06c0fdec..bfb5291170 100644 --- a/interface/src/ui/overlays/Web3DOverlay.cpp +++ b/interface/src/ui/overlays/Web3DOverlay.cpp @@ -370,7 +370,8 @@ void Web3DOverlay::handlePointerEventAsTouch(const PointerEvent& event) { QEvent::Type touchType; Qt::TouchPointState touchPointState; - + QEvent::Type mouseType; + Qt::MouseButton button = Qt::NoButton; Qt::MouseButtons buttons = Qt::NoButton; if (event.getButton() == PointerEvent::PrimaryButton) { @@ -384,15 +385,18 @@ void Web3DOverlay::handlePointerEventAsTouch(const PointerEvent& event) { case PointerEvent::Press: touchType = QEvent::TouchBegin; touchPointState = Qt::TouchPointPressed; + mouseType = QEvent::MouseButtonPress; break; case PointerEvent::Release: touchType = QEvent::TouchEnd; touchPointState = Qt::TouchPointReleased; + mouseType = QEvent::MouseButtonRelease; break; case PointerEvent::Move: touchType = QEvent::TouchUpdate; touchPointState = Qt::TouchPointMoved; - + mouseType = QEvent::MouseMove; + if (((event.getButtons() & PointerEvent::PrimaryButton) > 0) != this->_pressed) { // Mouse was pressed/released while off the overlay; convert touch and mouse events to press/release to reflect // current mouse/touch status. @@ -400,10 +404,12 @@ void Web3DOverlay::handlePointerEventAsTouch(const PointerEvent& event) { if (this->_pressed) { touchType = QEvent::TouchBegin; touchPointState = Qt::TouchPointPressed; + mouseType = QEvent::MouseButtonPress; } else { touchType = QEvent::TouchEnd; touchPointState = Qt::TouchPointReleased; + mouseType = QEvent::MouseButtonRelease; } button = Qt::LeftButton; @@ -436,14 +442,18 @@ void Web3DOverlay::handlePointerEventAsTouch(const PointerEvent& event) { touchEvent->setTouchPoints(touchPoints); touchEvent->setTouchPointStates(touchPointState); - QCoreApplication::postEvent(_webSurface->getWindow(), touchEvent, Qt::HighEventPriority); + QCoreApplication::postEvent(_webSurface->getWindow(), touchEvent); + if (this->_pressed && event.getType() == PointerEvent::Move) { + return; + } + // Send mouse events to the Web surface so that HTML dialog elements work with mouse press and hover. // FIXME: Scroll bar dragging is a bit unstable in the tablet (content can jump up and down at times). // This may be improved in Qt 5.8. Release notes: "Cleaned up touch and mouse event delivery". - QMouseEvent* mouseEvent = new QMouseEvent(QEvent::MouseMove, windowPoint, windowPoint, windowPoint, button, buttons, Qt::NoModifier); - QCoreApplication::postEvent(_webSurface->getWindow(), mouseEvent, Qt::LowEventPriority); + QMouseEvent* mouseEvent = new QMouseEvent(mouseType, windowPoint, windowPoint, windowPoint, button, buttons, Qt::NoModifier); + QCoreApplication::postEvent(_webSurface->getWindow(), mouseEvent); } From a2851b5bcbe9db8147348e5d54543a666e2b690b Mon Sep 17 00:00:00 2001 From: volansystech Date: Thu, 25 May 2017 18:32:46 +0530 Subject: [PATCH 059/357] Put proper comments and indentation. --- interface/src/Application.cpp | 22 +++++++++---------- interface/src/Application.h | 5 ++--- .../display-plugins/OpenGLDisplayPlugin.cpp | 2 +- libraries/plugins/src/plugins/Plugin.h | 16 +++++++------- 4 files changed, 22 insertions(+), 23 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index fda9b7b8f9..a40f31a8bb 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -1339,14 +1339,14 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo properties["using_hmd"] = isHMDMode(); if (isOculusRiftPluginAvailable()) { - // If Oculus Rift Plugin is Available,And Current Display Plugin is not Oculus Rift + // If Oculus Rift Plugin is available and current display plugin is not Oculus Rift // then startOculusRiftStandBySession to listen Oculus HMD Mounted status. if (getActiveDisplayPlugin()->getName() != "Oculus Rift" && - !oculusRiftPlugin->isFakeSessionActive()) { + !oculusRiftPlugin->isStandBySessionActive()) { startOculusRiftStandBySession(); } - // Poll periodically to check whether the user has worn Oculus HMD or not. And switch mode - // accordingly. If the user wear HMD, switch to VR mode, if remove switch to Desktop mode. + // Poll periodically to check whether the user has worn Oculus HMD or not. And switch Display mode accordingly. + // If the user wear Oculus HMD then switch to VR mode. If the user removes Oculus HMD then switch to Desktop mode. QTimer *switchDisplayModeTimer = new QTimer(this); connect(switchDisplayModeTimer, SIGNAL(timeout()), this, SLOT(switchDisplayModeForOculus())); switchDisplayModeTimer->start(500); @@ -1581,7 +1581,7 @@ void Application::aboutToQuit() { } getActiveDisplayPlugin()->deactivate(); - if (oculusRiftPlugin && oculusRiftPlugin->isFakeSessionActive()){ + if (oculusRiftPlugin && oculusRiftPlugin->isStandBySessionActive()) { oculusRiftPlugin->endStandBySession(); } // Hide Running Scripts dialog so that it gets destroyed in an orderly manner; prevents warnings at shutdown. @@ -6846,14 +6846,14 @@ void Application::updateDisplayMode() { Q_ASSERT_X(_displayPlugin, "Application::updateDisplayMode", "could not find an activated display plugin"); } -bool Application::isOculusRiftPluginAvailable(){ +bool Application::isOculusRiftPluginAvailable() { bool isOculusRiftPluginAvailable = false; auto displayPlugins = PluginManager::getInstance()->getDisplayPlugins(); // Default to the first item on the list, in case none of the menu items match DisplayPluginPointer defaultplugin = displayPlugins.at(0); if (defaultplugin->isHmd() && defaultplugin->getName() == "Oculus Rift") { oculusRiftPlugin = defaultplugin; - return true; // No need to iterate again,so return + return true; } // Iterate to check If Oculus Rift Plugin is available foreach(DisplayPluginPointer displayPlugin, PluginManager::getInstance()->getDisplayPlugins()) { @@ -6868,9 +6868,9 @@ bool Application::isOculusRiftPluginAvailable(){ return isOculusRiftPluginAvailable; } -void Application::switchDisplayModeForOculus(){ +void Application::switchDisplayModeForOculus() { bool currenthmdMountedStatus = oculusRiftPlugin->isDisplayVisible(); - if (currenthmdMountedStatus != _oculusHMDMountedStatus){ + if (currenthmdMountedStatus != _oculusHMDMountedStatus) { // Switch to respective mode as soon as currenthmdMountedStatus changes if (currenthmdMountedStatus == false && _oculusHMDMountedStatus == true) { qCDebug(interfaceapp) << "Switching from HMD to desktop mode"; @@ -6886,13 +6886,13 @@ void Application::switchDisplayModeForOculus(){ _oculusHMDMountedStatus = currenthmdMountedStatus; } -bool Application::startOculusRiftStandBySession(){ +bool Application::startOculusRiftStandBySession() { bool isStandBySessionStarted = oculusRiftPlugin->startStandBySession(); qCDebug(interfaceapp) << "startOculusRiftStandBySession: " << isStandBySessionStarted; return isStandBySessionStarted; } -void Application::endOculusRiftStandBySession(){ +void Application::endOculusRiftStandBySession() { oculusRiftPlugin->endStandBySession(); } diff --git a/interface/src/Application.h b/interface/src/Application.h index 6b172cdb9e..112b650160 100644 --- a/interface/src/Application.h +++ b/interface/src/Application.h @@ -152,7 +152,7 @@ public: void paintGL(); void resizeGL(); - bool event(QEvent* event) override; + bool event(QEvent* event) override; bool eventFilter(QObject* object, QEvent* event) override; glm::uvec2 getCanvasSize() const; @@ -685,9 +685,8 @@ private: DisplayPluginPointer oculusRiftPlugin; - bool isOculusRiftPluginAvailable(); - bool _oculusHMDMountedStatus; // Keep track of HMD Mounted Flag + bool _oculusHMDMountedStatus; // Keep track of Oculus Rift HMDMounted Flag bool startOculusRiftStandBySession(); void endOculusRiftStandBySession(); }; diff --git a/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.cpp b/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.cpp index 96d3d8114c..cebe844b84 100644 --- a/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.cpp +++ b/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.cpp @@ -315,7 +315,7 @@ bool OpenGLDisplayPlugin::activate() { if (isHmd() && (getHmdScreen() >= 0)) { _container->showDisplayPluginsTools(); } - return Parent::activate(); + return Parent::activate(); } void OpenGLDisplayPlugin::deactivate() { diff --git a/libraries/plugins/src/plugins/Plugin.h b/libraries/plugins/src/plugins/Plugin.h index 74f04fff18..045a9eee15 100644 --- a/libraries/plugins/src/plugins/Plugin.h +++ b/libraries/plugins/src/plugins/Plugin.h @@ -53,17 +53,17 @@ public: virtual bool isActive() { return _active; } - virtual bool startStandBySession(){ - _standbysessionactive = true; - return _standbysessionactive; + virtual bool startStandBySession() { + _standbysessionstatus = true; + return _standbysessionstatus; } - virtual void endStandBySession(){ - _standbysessionactive = false; + virtual void endStandBySession() { + _standbysessionstatus = false; } - virtual bool isFakeSessionActive() { - return _standbysessionactive; + virtual bool isStandBySessionActive() { + return _standbysessionstatus; } /** @@ -85,7 +85,7 @@ signals: protected: bool _active { false }; - bool _standbysessionactive { false }; + bool _standbysessionstatus { false }; PluginContainer* _container { nullptr }; static const char* UNKNOWN_PLUGIN_ID; From 362e08a90d4f7861f08db2ef28444aecd3f9f064 Mon Sep 17 00:00:00 2001 From: Liv Date: Thu, 25 May 2017 10:23:28 -0700 Subject: [PATCH 060/357] Add extrudePolygon for cylinder --- libraries/render-utils/src/GeometryCache.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/libraries/render-utils/src/GeometryCache.cpp b/libraries/render-utils/src/GeometryCache.cpp index f1c995b943..f0e132ab7a 100644 --- a/libraries/render-utils/src/GeometryCache.cpp +++ b/libraries/render-utils/src/GeometryCache.cpp @@ -366,8 +366,6 @@ void GeometryCache::buildShapes() { shapeData.setupIndices(_shapeIndices, IndexVector(), wireIndices); } - // Not implememented yet: - //Triangle, extrudePolygon<3>(_shapes[Triangle], _shapeVertices, _shapeIndices); //Hexagon, @@ -375,11 +373,13 @@ void GeometryCache::buildShapes() { //Octagon, extrudePolygon<8>(_shapes[Octagon], _shapeVertices, _shapeIndices); + // Not implememented yet: //Quad, //Circle, //Torus, //Cone, - //Cylinder, + //Cylinder + extrudePolygon<48>(_shapes[Cylinder], _shapeVertices, _shapeIndices); } gpu::Stream::FormatPointer& getSolidStreamFormat() { From 74c163d04797ba9ecfa969c1b1402b95d919a960 Mon Sep 17 00:00:00 2001 From: howard-stearns Date: Thu, 25 May 2017 10:25:29 -0700 Subject: [PATCH 061/357] snapshot of safeLanding. Works as long as entities don't intersect. --- interface/src/avatar/MyAvatar.cpp | 88 +++++++++++++++++++++++++++++++ interface/src/avatar/MyAvatar.h | 1 + 2 files changed, 89 insertions(+) diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index 9996df2afc..bc8b4c33c3 100755 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -2180,6 +2180,94 @@ void MyAvatar::goToLocation(const glm::vec3& newPosition, emit transformChanged(); } +bool MyAvatar::safeLanding(const glm::vec3& position) { + // Considers all collision hull or non-collisionless primitive intersections on a vertical line through the point, regardless of "face direction". + // There to be a need for a "landing" if the closest above and the closest below are either: + // a) less than the avatar capsule height apart, or + // b) on the same entity (thus enclosing the point). + // If no landing is required, we go to that point directly and return false; + // When a landing is required, we the entity that has the nearest "above" intersection, and find the highest intersection on the same entity + // (which may be that same "nearest above intersection"). That highest intersection is the candidate landing point. + // We then recurse with that, and when it bottoms out, the last candidate point is where we place the avatar's feet, and return true; + // FIXME test: MyAvatar.safeLanding({x: 100, y: 100, z: 100}) + //qDebug() << "FIXME avatar position:" << getPosition() << "halfHeight:" << _characterController.getCapsuleHalfHeight() << "height:" << _skeletonModel->getBoundingCapsuleHeight() << "offset:" << _characterController.getCapsuleLocalOffset(); + auto direct = [&](QString label) { + qDebug() << "Already safe" << label << position; + goToLocation(position); + return false; + }; + auto halfHeight = _characterController.getCapsuleHalfHeight(); + if (halfHeight == 0) { + return direct("zero height avatar"); + } + auto entityTree = DependencyManager::get()->getTree(); + if (!entityTree) { + return direct("no entity tree"); + } + // FIXME: capsule has an offset from position! + + QVector include{}; + QVector ignore{}; + OctreeElementPointer element; + EntityItemPointer intersectedEntity = NULL; + bool intersects; + float distance; + BoxFace face; + glm::vec3 surfaceNormal; + const bool visibleOnly = false; + const bool collidableOnly = true; + const bool precisionPicking = true; + const auto lockType = Octree::Lock; // Should we refactor to take a lock just once? + bool* accurateResult = NULL; + // FIXME DRY this, and get rid of the extra vector arithmetic. + intersects = entityTree->findRayIntersection(position, Vectors::UNIT_Y, + include, ignore, visibleOnly, collidableOnly, precisionPicking, + element, distance, face, surfaceNormal, + (void**)&intersectedEntity, lockType, accurateResult); + if (!intersects || !intersectedEntity) { + return direct("no above"); + } + glm::vec3 upperIntersection = position + (Vectors::UNIT_Y * distance); + auto upperId = intersectedEntity->getEntityItemID(); + auto upperY = surfaceNormal.y; + + intersects = entityTree->findRayIntersection(position, Vectors::UNIT_NEG_Y, + include, ignore, visibleOnly, collidableOnly, precisionPicking, + element, distance, face, surfaceNormal, + (void**)&intersectedEntity, lockType, accurateResult); + if (!intersects || !intersectedEntity) { + return direct("no below"); + } + glm::vec3 lowerIntersection = position + (Vectors::UNIT_NEG_Y * distance); + auto lowerId = intersectedEntity->getEntityItemID(); + auto lowerY = surfaceNormal.y; + + auto delta = glm::distance(upperIntersection, lowerIntersection); + //qDebug() << "FIXME position:" << position << "upper:" << upperId << upperIntersection << "lower:" << lowerId << lowerIntersection << "distance:" << delta << "height:" << (2 * _characterController.getCapsuleHalfHeight()); + if ((upperId != lowerId) && (delta > (2 * halfHeight))) { + qDebug() << "FIXME upper:" << upperId << upperIntersection << " n:" << upperY << "lower:" << lowerId << lowerIntersection << " n:" << lowerY << "delta:" << delta << "halfHeight:" << halfHeight; + return direct("enough room"); + } + qDebug() << "FIXME need to compute safe landing for" << position; + const float big = (float)TREE_SCALE; + const auto skyHigh = Vectors::UNIT_Y * big; + include.push_back(upperId); + auto fromAbove = position + skyHigh; + intersects = entityTree->findRayIntersection(fromAbove, Vectors::UNIT_NEG_Y, + include, ignore, visibleOnly, collidableOnly, precisionPicking, + element, distance, face, surfaceNormal, + (void**)&intersectedEntity, lockType, accurateResult); + if (!intersects || !intersectedEntity) { + return direct("no landing"); + } + // Bottom of capsule is at intersection, so capsule center is above that, which also avoids looping on the same intersection. + auto newFloor = fromAbove + (Vectors::UNIT_NEG_Y * distance); + auto newTarget = newFloor + (Vectors::UNIT_Y * halfHeight); + qDebug() << "FIXME newFloor:" << newFloor << "newTarget:" << newTarget; + safeLanding(newTarget); + return true; +} + void MyAvatar::updateMotionBehaviorFromMenu() { if (QThread::currentThread() != thread()) { diff --git a/interface/src/avatar/MyAvatar.h b/interface/src/avatar/MyAvatar.h index fde350a43e..b41483d761 100644 --- a/interface/src/avatar/MyAvatar.h +++ b/interface/src/avatar/MyAvatar.h @@ -506,6 +506,7 @@ public slots: bool hasOrientation = false, const glm::quat& newOrientation = glm::quat(), bool shouldFaceLocation = false); void goToLocation(const QVariant& properties); + bool safeLanding(const glm::vec3& position); void restrictScaleFromDomainSettings(const QJsonObject& domainSettingsObject); void clearScaleRestriction(); From bdbc6ddcc13eff1c8f28ee298d0f2afc807f9298 Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Thu, 25 May 2017 10:50:41 -0700 Subject: [PATCH 062/357] change some code to look at head-controller position rather than hmd position --- interface/src/Application.cpp | 4 +- interface/src/avatar/MyAvatar.cpp | 55 ++++++++----------- interface/src/avatar/MyAvatar.h | 11 ++-- interface/src/avatar/MySkeletonModel.cpp | 2 +- .../src/scripting/HMDScriptingInterface.cpp | 2 +- libraries/controllers/src/controllers/Pose.h | 4 ++ 6 files changed, 39 insertions(+), 39 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index ae490c05e7..7926905273 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -3953,6 +3953,7 @@ void Application::updateMyAvatarLookAtPosition() { lookAtPosition.x = -lookAtPosition.x; } if (isHMD) { + // TODO -- this code is probably wrong, getHeadPose() returns something in sensor frame, not avatar glm::mat4 headPose = getActiveDisplayPlugin()->getHeadPose(); glm::quat hmdRotation = glm::quat_cast(headPose); lookAtSpot = _myCamera.getPosition() + myAvatar->getOrientation() * (hmdRotation * lookAtPosition); @@ -3995,7 +3996,8 @@ void Application::updateMyAvatarLookAtPosition() { } else { // I am not looking at anyone else, so just look forward if (isHMD) { - glm::mat4 worldHMDMat = myAvatar->getSensorToWorldMatrix() * myAvatar->getHMDSensorMatrix(); + glm::mat4 worldHMDMat = myAvatar->getSensorToWorldMatrix() * + (glm::mat4)myAvatar->getHeadControllerPoseInSensorFrame(); lookAtSpot = transformPoint(worldHMDMat, glm::vec3(0.0f, 0.0f, -TREE_SCALE)); } else { lookAtSpot = myAvatar->getHead()->getEyePosition() + diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index b4e418b6a2..4bb9a2ef5f 100755 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -401,7 +401,7 @@ void MyAvatar::update(float deltaTime) { // update moving average of HMD facing in xz plane. const float HMD_FACING_TIMESCALE = 4.0f; // very slow average float tau = deltaTime / HMD_FACING_TIMESCALE; - _hmdSensorFacingMovingAverage = lerp(_hmdSensorFacingMovingAverage, _hmdSensorFacing, tau); + _headControllerFacingMovingAverage = lerp(_headControllerFacingMovingAverage, _headControllerFacing, tau); if (_smoothOrientationTimer < SMOOTH_TIME_ORIENTATION) { _rotationChanged = usecTimestampNow(); @@ -409,16 +409,18 @@ void MyAvatar::update(float deltaTime) { } #ifdef DEBUG_DRAW_HMD_MOVING_AVERAGE - glm::vec3 p = transformPoint(getSensorToWorldMatrix(), _hmdSensorPosition + glm::vec3(_hmdSensorFacingMovingAverage.x, 0.0f, _hmdSensorFacingMovingAverage.y)); + glm::vec3 p = transformPoint(getSensorToWorldMatrix(), getHeadControllerPoseInAvatarFrame() + + glm::vec3(_headControllerFacingMovingAverage.x, 0.0f, _headControllerFacingMovingAverage.y)); DebugDraw::getInstance().addMarker("facing-avg", getOrientation(), p, glm::vec4(1.0f)); - p = transformPoint(getSensorToWorldMatrix(), _hmdSensorPosition + glm::vec3(_hmdSensorFacing.x, 0.0f, _hmdSensorFacing.y)); + p = transformPoint(getSensorToWorldMatrix(), getHMDSensorPosition() + + glm::vec3(_headControllerFacing.x, 0.0f, _headControllerFacing.y)); DebugDraw::getInstance().addMarker("facing", getOrientation(), p, glm::vec4(1.0f)); #endif if (_goToPending) { setPosition(_goToPosition); setOrientation(_goToOrientation); - _hmdSensorFacingMovingAverage = _hmdSensorFacing; // reset moving average + _headControllerFacingMovingAverage = _headControllerFacing; // reset moving average _goToPending = false; // updateFromHMDSensorMatrix (called from paintGL) expects that the sensorToWorldMatrix is updated for any position changes // that happen between render and Application::update (which calls updateSensorToWorldMatrix to do so). @@ -625,7 +627,7 @@ void MyAvatar::updateFromHMDSensorMatrix(const glm::mat4& hmdSensorMatrix) { _hmdSensorMatrix = hmdSensorMatrix; auto newHmdSensorPosition = extractTranslation(hmdSensorMatrix); - if (newHmdSensorPosition != _hmdSensorPosition && + if (newHmdSensorPosition != getHMDSensorPosition() && glm::length(newHmdSensorPosition) > MAX_HMD_ORIGIN_DISTANCE) { qWarning() << "Invalid HMD sensor position " << newHmdSensorPosition; // Ignore unreasonable HMD sensor data @@ -633,7 +635,7 @@ void MyAvatar::updateFromHMDSensorMatrix(const glm::mat4& hmdSensorMatrix) { } _hmdSensorPosition = newHmdSensorPosition; _hmdSensorOrientation = glm::quat_cast(hmdSensorMatrix); - _hmdSensorFacing = getFacingDir2D(_hmdSensorOrientation); + _headControllerFacing = getFacingDir2D(_headControllerPoseInSensorFrameCache.get().rotation); } void MyAvatar::updateJointFromController(controller::Action poseKey, ThreadSafeValueCache& matrixCache) { @@ -671,7 +673,7 @@ void MyAvatar::updateSensorToWorldMatrix() { // Update avatar head rotation with sensor data void MyAvatar::updateFromTrackers(float deltaTime) { - glm::vec3 estimatedPosition, estimatedRotation; + glm::vec3 estimatedRotation; bool inHmd = qApp->isHMDMode(); bool playing = DependencyManager::get()->isPlaying(); @@ -682,11 +684,7 @@ void MyAvatar::updateFromTrackers(float deltaTime) { FaceTracker* tracker = qApp->getActiveFaceTracker(); bool inFacetracker = tracker && !FaceTracker::isMuted(); - if (inHmd) { - estimatedPosition = extractTranslation(getHMDSensorMatrix()); - estimatedPosition.x *= -1.0f; - } else if (inFacetracker) { - estimatedPosition = tracker->getHeadTranslation(); + if (inFacetracker) { estimatedRotation = glm::degrees(safeEulerAngles(tracker->getHeadRotation())); } @@ -1884,20 +1882,14 @@ void MyAvatar::updateOrientation(float deltaTime) { getHead()->setBasePitch(getHead()->getBasePitch() + getDriveKey(PITCH) * _pitchSpeed * deltaTime); - if (qApp->isHMDMode()) { - glm::quat orientation = glm::quat_cast(getSensorToWorldMatrix()) * getHMDSensorOrientation(); - glm::quat bodyOrientation = getWorldBodyOrientation(); - glm::quat localOrientation = glm::inverse(bodyOrientation) * orientation; - - // these angles will be in radians - // ... so they need to be converted to degrees before we do math... - glm::vec3 euler = glm::eulerAngles(localOrientation) * DEGREES_PER_RADIAN; - - Head* head = getHead(); - head->setBaseYaw(YAW(euler)); - head->setBasePitch(PITCH(euler)); - head->setBaseRoll(ROLL(euler)); - } + glm::quat localOrientation = getHeadControllerPoseInAvatarFrame(); + // these angles will be in radians + // ... so they need to be converted to degrees before we do math... + glm::vec3 euler = glm::eulerAngles(localOrientation) * DEGREES_PER_RADIAN; + Head* head = getHead(); + head->setBaseYaw(YAW(euler)); + head->setBasePitch(PITCH(euler)); + head->setBaseRoll(ROLL(euler)); } void MyAvatar::updateActionMotor(float deltaTime) { @@ -2332,8 +2324,8 @@ glm::quat MyAvatar::getWorldBodyOrientation() const { glm::mat4 MyAvatar::deriveBodyFromHMDSensor() const { // HMD is in sensor space. - const glm::vec3 hmdPosition = getHMDSensorPosition(); - const glm::quat hmdOrientation = getHMDSensorOrientation(); + const glm::vec3 hmdPosition = getHeadControllerPoseInSensorFrame(); + const glm::quat hmdOrientation = getHeadControllerPoseInSensorFrame(); const glm::quat hmdOrientationYawOnly = cancelOutRollAndPitch(hmdOrientation); const Rig& rig = _skeletonModel->getRig(); @@ -2478,7 +2470,7 @@ bool MyAvatar::FollowHelper::shouldActivateRotation(const MyAvatar& myAvatar, co } else { const float FOLLOW_ROTATION_THRESHOLD = cosf(PI / 6.0f); // 30 degrees glm::vec2 bodyFacing = getFacingDir2D(currentBodyMatrix); - return glm::dot(myAvatar.getHMDSensorFacingMovingAverage(), bodyFacing) < FOLLOW_ROTATION_THRESHOLD; + return glm::dot(myAvatar.getHeadControllerFacingMovingAverage(), bodyFacing) < FOLLOW_ROTATION_THRESHOLD; } } @@ -2625,9 +2617,10 @@ glm::mat4 MyAvatar::computeCameraRelativeHandControllerMatrix(const glm::mat4& c cameraWorldMatrix *= createMatFromScaleQuatAndPos(vec3(-1.0f, 1.0f, 1.0f), glm::quat(), glm::vec3()); } - // compute a NEW sensorToWorldMatrix for the camera. The equation is cameraWorldMatrix = cameraSensorToWorldMatrix * _hmdSensorMatrix. + // compute a NEW sensorToWorldMatrix for the camera. + // The equation is cameraWorldMatrix = cameraSensorToWorldMatrix * _hmdSensorMatrix. // here we solve for the unknown cameraSensorToWorldMatrix. - glm::mat4 cameraSensorToWorldMatrix = cameraWorldMatrix * glm::inverse(_hmdSensorMatrix); + glm::mat4 cameraSensorToWorldMatrix = cameraWorldMatrix * glm::inverse(getHMDSensorMatrix()); // Using the new cameraSensorToWorldMatrix, compute where the controller is in world space. glm::mat4 controllerWorldMatrix = cameraSensorToWorldMatrix * controllerSensorMatrix; diff --git a/interface/src/avatar/MyAvatar.h b/interface/src/avatar/MyAvatar.h index fde350a43e..05615a600d 100644 --- a/interface/src/avatar/MyAvatar.h +++ b/interface/src/avatar/MyAvatar.h @@ -185,7 +185,6 @@ public: const glm::mat4& getHMDSensorMatrix() const { return _hmdSensorMatrix; } const glm::vec3& getHMDSensorPosition() const { return _hmdSensorPosition; } const glm::quat& getHMDSensorOrientation() const { return _hmdSensorOrientation; } - const glm::vec2& getHMDSensorFacingMovingAverage() const { return _hmdSensorFacingMovingAverage; } Q_INVOKABLE void setOrientationVar(const QVariant& newOrientationVar); Q_INVOKABLE QVariant getOrientationVar() const; @@ -470,6 +469,8 @@ public: controller::Pose getHeadControllerPoseInSensorFrame() const; controller::Pose getHeadControllerPoseInWorldFrame() const; controller::Pose getHeadControllerPoseInAvatarFrame() const; + const glm::vec2& getHeadControllerFacingMovingAverage() const { return _headControllerFacingMovingAverage; } + bool hasDriveInput() const; @@ -664,13 +665,13 @@ private: // working copies -- see AvatarData for thread-safe _sensorToWorldMatrixCache, used for outward facing access glm::mat4 _sensorToWorldMatrix { glm::mat4() }; - // cache of the current HMD sensor position and orientation - // in sensor space. + // cache of the current HMD sensor position and orientation in sensor space. glm::mat4 _hmdSensorMatrix; glm::quat _hmdSensorOrientation; glm::vec3 _hmdSensorPosition; - glm::vec2 _hmdSensorFacing; // facing vector in xz plane - glm::vec2 _hmdSensorFacingMovingAverage { 0, 0 }; // facing vector in xz plane + // cache head controller pose in sensor space + glm::vec2 _headControllerFacing; // facing vector in xz plane + glm::vec2 _headControllerFacingMovingAverage { 0, 0 }; // facing vector in xz plane // cache of the current body position and orientation of the avatar's body, // in sensor space. diff --git a/interface/src/avatar/MySkeletonModel.cpp b/interface/src/avatar/MySkeletonModel.cpp index 828a5f8a01..a98055ad35 100644 --- a/interface/src/avatar/MySkeletonModel.cpp +++ b/interface/src/avatar/MySkeletonModel.cpp @@ -59,7 +59,7 @@ void MySkeletonModel::updateRig(float deltaTime, glm::mat4 parentTransform) { } else { if (qApp->isHMDMode()) { // get HMD position from sensor space into world space, and back into rig space - glm::mat4 worldHMDMat = myAvatar->getSensorToWorldMatrix() * myAvatar->getHMDSensorMatrix(); + glm::mat4 worldHMDMat = myAvatar->getHeadControllerPoseInWorldFrame(); glm::mat4 rigToWorld = createMatFromQuatAndPos(getRotation(), getTranslation()); glm::mat4 worldToRig = glm::inverse(rigToWorld); glm::mat4 rigHMDMat = worldToRig * worldHMDMat; diff --git a/interface/src/scripting/HMDScriptingInterface.cpp b/interface/src/scripting/HMDScriptingInterface.cpp index 95bf5eb028..d0e8e74d85 100644 --- a/interface/src/scripting/HMDScriptingInterface.cpp +++ b/interface/src/scripting/HMDScriptingInterface.cpp @@ -118,7 +118,7 @@ bool HMDScriptingInterface::getHUDLookAtPosition3D(glm::vec3& result) const { glm::mat4 HMDScriptingInterface::getWorldHMDMatrix() const { auto myAvatar = DependencyManager::get()->getMyAvatar(); - return myAvatar->getSensorToWorldMatrix() * myAvatar->getHMDSensorMatrix(); + return myAvatar->getSensorToWorldMatrix() * (glm::mat4)myAvatar->getHeadControllerPoseInSensorFrame(); } glm::vec3 HMDScriptingInterface::getPosition() const { diff --git a/libraries/controllers/src/controllers/Pose.h b/libraries/controllers/src/controllers/Pose.h index a6d1360f9f..10cb65a421 100644 --- a/libraries/controllers/src/controllers/Pose.h +++ b/libraries/controllers/src/controllers/Pose.h @@ -43,6 +43,10 @@ namespace controller { Pose transform(const glm::mat4& mat) const; Pose postTransform(const glm::mat4& mat) const; + operator glm::mat4() const { return createMatFromQuatAndPos(rotation, translation); } + operator glm::quat() const { return rotation; } + operator glm::vec3() const { return translation; } + static QScriptValue toScriptValue(QScriptEngine* engine, const Pose& event); static void fromScriptValue(const QScriptValue& object, Pose& event); }; From 417d9ec80b93766962dd44431cae9f2655bc731c Mon Sep 17 00:00:00 2001 From: Liv Date: Thu, 25 May 2017 11:04:25 -0700 Subject: [PATCH 063/357] Surface cylinder option for primitive shape to html --- libraries/render-utils/src/GeometryCache.cpp | 5 +++-- libraries/render-utils/src/GeometryCache.h | 2 +- scripts/system/html/entityProperties.html | 1 + 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/libraries/render-utils/src/GeometryCache.cpp b/libraries/render-utils/src/GeometryCache.cpp index f0e132ab7a..41731a76df 100644 --- a/libraries/render-utils/src/GeometryCache.cpp +++ b/libraries/render-utils/src/GeometryCache.cpp @@ -372,14 +372,15 @@ void GeometryCache::buildShapes() { extrudePolygon<6>(_shapes[Hexagon], _shapeVertices, _shapeIndices); //Octagon, extrudePolygon<8>(_shapes[Octagon], _shapeVertices, _shapeIndices); + //Cylinder, + extrudePolygon<48>(_shapes[Cylinder], _shapeVertices, _shapeIndices); // Not implememented yet: //Quad, //Circle, //Torus, //Cone, - //Cylinder - extrudePolygon<48>(_shapes[Cylinder], _shapeVertices, _shapeIndices); + } gpu::Stream::FormatPointer& getSolidStreamFormat() { diff --git a/libraries/render-utils/src/GeometryCache.h b/libraries/render-utils/src/GeometryCache.h index e0a610a095..798c71317c 100644 --- a/libraries/render-utils/src/GeometryCache.h +++ b/libraries/render-utils/src/GeometryCache.h @@ -143,7 +143,7 @@ public: Icosahedron, Torus, // not yet implemented Cone, // not yet implemented - Cylinder, // not yet implemented + Cylinder, NUM_SHAPES, }; diff --git a/scripts/system/html/entityProperties.html b/scripts/system/html/entityProperties.html index 35accdd0df..f15f7eed30 100644 --- a/scripts/system/html/entityProperties.html +++ b/scripts/system/html/entityProperties.html @@ -51,6 +51,7 @@ +
    From 9d73d0c931d0db4397ca198e7cdcbccc99722259 Mon Sep 17 00:00:00 2001 From: howard-stearns Date: Thu, 25 May 2017 12:09:22 -0700 Subject: [PATCH 064/357] works with nested enclosing entities --- interface/src/avatar/MyAvatar.cpp | 60 ++++++++++++++++++++++++++----- 1 file changed, 52 insertions(+), 8 deletions(-) diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index bc8b4c33c3..2a70a3dab3 100755 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -2199,12 +2199,16 @@ bool MyAvatar::safeLanding(const glm::vec3& position) { auto halfHeight = _characterController.getCapsuleHalfHeight(); if (halfHeight == 0) { return direct("zero height avatar"); - } + } auto entityTree = DependencyManager::get()->getTree(); if (!entityTree) { return direct("no entity tree"); } // FIXME: capsule has an offset from position! + // We could repeat this whole test for each of the four corners of our bounding box, in case the surface is uneven. + // However: + // 1) This is only meant to cover the most important cases, and even the four corners won't handle random spikes. + // 2) My feeling is that this code is already at the limit of what can realistically be reviewed and maintained. QVector include{}; QVector ignore{}; @@ -2225,8 +2229,12 @@ bool MyAvatar::safeLanding(const glm::vec3& position) { element, distance, face, surfaceNormal, (void**)&intersectedEntity, lockType, accurateResult); if (!intersects || !intersectedEntity) { + // We currently believe that physics will reliably push us out if our feet are embedded, + // as long as our capsule center is out and there's room above us. Here we have those + // conditions, so no need to check our feet below. return direct("no above"); } + // FIXME: use _worldUpDirection and negative instead of UNIT_Y? If we use normalMumble.y, will need to also dot against _worldUpDirection. glm::vec3 upperIntersection = position + (Vectors::UNIT_Y * distance); auto upperId = intersectedEntity->getEntityItemID(); auto upperY = surfaceNormal.y; @@ -2236,19 +2244,55 @@ bool MyAvatar::safeLanding(const glm::vec3& position) { element, distance, face, surfaceNormal, (void**)&intersectedEntity, lockType, accurateResult); if (!intersects || !intersectedEntity) { + // Our head may be embedded, but our center is out and there's room below. See corresponding comment above. return direct("no below"); } glm::vec3 lowerIntersection = position + (Vectors::UNIT_NEG_Y * distance); auto lowerId = intersectedEntity->getEntityItemID(); auto lowerY = surfaceNormal.y; - auto delta = glm::distance(upperIntersection, lowerIntersection); - //qDebug() << "FIXME position:" << position << "upper:" << upperId << upperIntersection << "lower:" << lowerId << lowerIntersection << "distance:" << delta << "height:" << (2 * _characterController.getCapsuleHalfHeight()); - if ((upperId != lowerId) && (delta > (2 * halfHeight))) { - qDebug() << "FIXME upper:" << upperId << upperIntersection << " n:" << upperY << "lower:" << lowerId << lowerIntersection << " n:" << lowerY << "delta:" << delta << "halfHeight:" << halfHeight; - return direct("enough room"); + if ((upperY < 0) && (lowerY > 0)) { + // The surface above us is the bottom of something, and the surface below us it the top of something. + // I.e., we are in a clearing between two objects. + auto delta = glm::distance(upperIntersection, lowerIntersection); + //qDebug() << "FIXME position:" << position << "upper:" << upperId << upperIntersection << "lower:" << lowerId << lowerIntersection << "distance:" << delta << "height:" << (2 * _characterController.getCapsuleHalfHeight()); + if (delta > (2 * halfHeight)) { + // There is room for us to fit in that clearing. If there wasn't, physics would oscilate us between the objects above and below. + if (upperId != lowerId) { // An optimization over what follows: the simplest case of not being inside an entity. + // We're going to iterate upwards through successive roofIntersections, testing to see if we're contained within the top surface of some entity. + // There will be one of two outcomes: + // a) We're not contained, so we have enough room and our position is good. + // b) We are contained, so we'll bail out of this but try again at a position above the containing entity. + auto entityAbove = upperId; + auto roofIntersection = upperIntersection; + while (1) { + ignore.push_back(entityAbove); + intersects = entityTree->findRayIntersection(roofIntersection, Vectors::UNIT_Y, + include, ignore, visibleOnly, collidableOnly, precisionPicking, + element, distance, face, surfaceNormal, + (void**)&intersectedEntity, lockType, accurateResult); + if (!intersects || !intersectedEntity) { + // We're not inside an entity, and from the nested tests, we have room between what is above and below. So position is good! + qDebug() << "FIXME upper:" << upperId << upperIntersection << " n:" << upperY << " lower:" << lowerId << lowerIntersection << " n:" << lowerY << " delta:" << delta << " halfHeight:" << halfHeight; + return direct("enough room"); + } + roofIntersection = roofIntersection + (Vectors::UNIT_Y * distance); + if (surfaceNormal.y > 0) { + // This new intersection is the top surface of an entity that we have not yet seen, which means we're contained within it. + // We could break here and recurse from the top of the original ceiling, but since we've already done the work to find the top + // of the enclosing entity, let's put our feet at roofIntersection and start over. + safeLanding(roofIntersection + (Vectors::UNIT_Y * halfHeight)); + return true; + } + // We found a new bottom surface, which we're not interested in. + // But there could still be a top surface above us for an entity we haven't seen, so keep looking upward. + entityAbove = intersectedEntity->getEntityItemID(); + } + ignore.clear(); // We didn't find anything, but in what happens below, don't ignore the entities we've encountered. + } + } } - qDebug() << "FIXME need to compute safe landing for" << position; + qDebug() << "FIXME need to compute safe landing for" << position << " based on " << upperIntersection << "@" << upperId << " and " << lowerIntersection << "@" << lowerId; const float big = (float)TREE_SCALE; const auto skyHigh = Vectors::UNIT_Y * big; include.push_back(upperId); @@ -2263,7 +2307,7 @@ bool MyAvatar::safeLanding(const glm::vec3& position) { // Bottom of capsule is at intersection, so capsule center is above that, which also avoids looping on the same intersection. auto newFloor = fromAbove + (Vectors::UNIT_NEG_Y * distance); auto newTarget = newFloor + (Vectors::UNIT_Y * halfHeight); - qDebug() << "FIXME newFloor:" << newFloor << "newTarget:" << newTarget; + qDebug() << "FIXME newFloor:" << newFloor << " newTarget:" << newTarget; safeLanding(newTarget); return true; } From d3e900e42f6e53b5adf169a98f1c33d5f07cdaca Mon Sep 17 00:00:00 2001 From: Liv Date: Thu, 25 May 2017 12:54:49 -0700 Subject: [PATCH 065/357] Adding first pass on cone shape --- libraries/render-utils/src/GeometryCache.cpp | 82 +++++++++++++++++++- scripts/system/html/entityProperties.html | 1 + 2 files changed, 80 insertions(+), 3 deletions(-) diff --git a/libraries/render-utils/src/GeometryCache.cpp b/libraries/render-utils/src/GeometryCache.cpp index 41731a76df..58bae05ad4 100644 --- a/libraries/render-utils/src/GeometryCache.cpp +++ b/libraries/render-utils/src/GeometryCache.cpp @@ -324,6 +324,80 @@ void extrudePolygon(GeometryCache::ShapeData& shapeData, gpu::BufferPointer& ver shapeData.setupIndices(indexBuffer, solidIndices, wireIndices); } +template +void extrudeConical(GeometryCache::ShapeData& shapeData, gpu::BufferPointer& vertexBuffer, gpu::BufferPointer& indexBuffer) { + using namespace geometry; + Index baseVertex = (Index)(vertexBuffer->getSize() / SHAPE_VERTEX_STRIDE); + VertexVector vertices; + IndexVector solidIndices, wireIndices; + + std::vector base = polygon(); + + for (const vec3& v : base) { + vertices.push_back(vec3(0, 0.5f, 0)); + vertices.push_back(vec3(0, 1, 0)); + } + + for (const vec3& v : base) { + vertices.push_back(vec3(v.x, -0.5f, v.z)); + vertices.push_back(vec3(0, -1, 0)); + } + + + for (uint32_t i = 2; i < N; ++i) { + solidIndices.push_back(baseVertex + 0); + solidIndices.push_back(baseVertex + i); + solidIndices.push_back(baseVertex + i - 1); + solidIndices.push_back(baseVertex + N); + solidIndices.push_back(baseVertex + i + N - 1); + solidIndices.push_back(baseVertex + i + N); + } + for (uint32_t i = 1; i <= N; ++i) { + wireIndices.push_back(baseVertex + (i % N)); + wireIndices.push_back(baseVertex + i - 1); + wireIndices.push_back(baseVertex + (i % N) + N); + wireIndices.push_back(baseVertex + (i - 1) + N); + } + + // Now do the sides + baseVertex += 2 * N; + + for (uint32_t i = 0; i < N; ++i) { + vec3 left = base[i]; + vec3 right = base[(i + 1) % N]; + vec3 normal = glm::normalize(left + right); + vec3 topLeft = vec3(0.0, 0.5f, 0.0); + vec3 topRight = vec3(0.0, 0.5f, 0.0); + vec3 bottomLeft = vec3(left.x, -0.5f, left.z); + vec3 bottomRight = vec3(right.x, -0.5f, right.z); + + vertices.push_back(topLeft); + vertices.push_back(normal); + vertices.push_back(bottomLeft); + vertices.push_back(normal); + vertices.push_back(topRight); + vertices.push_back(normal); + vertices.push_back(bottomRight); + vertices.push_back(normal); + + solidIndices.push_back(baseVertex + 0); + solidIndices.push_back(baseVertex + 2); + solidIndices.push_back(baseVertex + 1); + solidIndices.push_back(baseVertex + 1); + solidIndices.push_back(baseVertex + 2); + solidIndices.push_back(baseVertex + 3); + wireIndices.push_back(baseVertex + 0); + wireIndices.push_back(baseVertex + 1); + wireIndices.push_back(baseVertex + 3); + wireIndices.push_back(baseVertex + 2); + baseVertex += 4; + } + + shapeData.setupVertices(vertexBuffer, vertices); + shapeData.setupIndices(indexBuffer, solidIndices, wireIndices); + +} + // FIXME solids need per-face vertices, but smooth shaded // components do not. Find a way to support using draw elements // or draw arrays as appropriate @@ -373,13 +447,15 @@ void GeometryCache::buildShapes() { //Octagon, extrudePolygon<8>(_shapes[Octagon], _shapeVertices, _shapeIndices); //Cylinder, - extrudePolygon<48>(_shapes[Cylinder], _shapeVertices, _shapeIndices); - + extrudePolygon<64>(_shapes[Cylinder], _shapeVertices, _shapeIndices); + //Cone, + extrudeConical<64>(_shapes[Cone], _shapeVertices, _shapeIndices); + // Not implememented yet: //Quad, //Circle, //Torus, - //Cone, + } diff --git a/scripts/system/html/entityProperties.html b/scripts/system/html/entityProperties.html index f15f7eed30..a740306c92 100644 --- a/scripts/system/html/entityProperties.html +++ b/scripts/system/html/entityProperties.html @@ -52,6 +52,7 @@ +
    From cba913c06828dea77cc153b6577e8f0e8ea1502a Mon Sep 17 00:00:00 2001 From: samcake Date: Thu, 25 May 2017 13:01:54 -0700 Subject: [PATCH 066/357] Fixing the case when the bound changes without the rest of the properties --- .../src/RenderableZoneEntityItem.cpp | 17 ++--------------- 1 file changed, 2 insertions(+), 15 deletions(-) diff --git a/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp b/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp index c4960f0cfa..3f7c0937e2 100644 --- a/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp @@ -145,10 +145,7 @@ void RenderableZoneEntityItem::somethingChangedNotification() { DependencyManager::get()->updateZone(_id); // If graphics elements are changed, we need to update the render items - if (_keyLightPropertiesChanged || _backgroundPropertiesChanged || _stagePropertiesChanged || _skyboxPropertiesChanged) { - - notifyChangedRenderItem(); - } + notifyChangedRenderItem(); // Poopagate back to parent ZoneEntityItem::somethingChangedNotification(); @@ -290,17 +287,7 @@ void RenderableZoneEntityItem::removeFromScene(EntityItemPointer self, const ren } void RenderableZoneEntityItem::notifyBoundChanged() { - if (!render::Item::isValidID(_myMetaItem)) { - return; - } - render::Transaction transaction; - render::ScenePointer scene = AbstractViewStateInterface::instance()->getMain3DScene(); - if (scene) { - transaction.updateItem(_myMetaItem, [](RenderableZoneEntityItemMeta& data) {}); - scene->enqueueTransaction(transaction); - } else { - qCWarning(entitiesrenderer) << "RenderableZoneEntityItem::notifyBoundChanged(), Unexpected null scene, possibly during application shutdown"; - } + notifyChangedRenderItem(); } void RenderableZoneEntityItem::updateKeySunFromEntity(RenderableZoneEntityItemMeta& keyZonePayload) { From ffbe39df0a36b9c1032f76c0b3fb435a6294f4cd Mon Sep 17 00:00:00 2001 From: Liv Date: Thu, 25 May 2017 13:06:24 -0700 Subject: [PATCH 067/357] Refactor to add optional conical parameter to existing extrude polygon function --- libraries/render-utils/src/GeometryCache.cpp | 98 ++++---------------- 1 file changed, 16 insertions(+), 82 deletions(-) diff --git a/libraries/render-utils/src/GeometryCache.cpp b/libraries/render-utils/src/GeometryCache.cpp index 58bae05ad4..11b330a9cf 100644 --- a/libraries/render-utils/src/GeometryCache.cpp +++ b/libraries/render-utils/src/GeometryCache.cpp @@ -255,17 +255,25 @@ void setupSmoothShape(GeometryCache::ShapeData& shapeData, const geometry::Solid } template -void extrudePolygon(GeometryCache::ShapeData& shapeData, gpu::BufferPointer& vertexBuffer, gpu::BufferPointer& indexBuffer) { +void extrudePolygon(GeometryCache::ShapeData& shapeData, gpu::BufferPointer& vertexBuffer, gpu::BufferPointer& indexBuffer, bool conical=false) { using namespace geometry; Index baseVertex = (Index)(vertexBuffer->getSize() / SHAPE_VERTEX_STRIDE); VertexVector vertices; IndexVector solidIndices, wireIndices; - // Top and bottom faces + // Top (if not conical) and bottom faces std::vector shape = polygon(); - for (const vec3& v : shape) { - vertices.push_back(vec3(v.x, 0.5f, v.z)); - vertices.push_back(vec3(0, 1, 0)); + if (conical) { + for (const vec3& v : shape) { + vertices.push_back(vec3(0, 0.5f, 0)); + vertices.push_back(vec3(0, 1, 0)); + } + } + else { + for (const vec3& v : shape) { + vertices.push_back(vec3(v.x, 0.5f, v.z)); + vertices.push_back(vec3(0, 1, 0)); + } } for (const vec3& v : shape) { vertices.push_back(vec3(v.x, -0.5f, v.z)); @@ -293,8 +301,8 @@ void extrudePolygon(GeometryCache::ShapeData& shapeData, gpu::BufferPointer& ver vec3 left = shape[i]; vec3 right = shape[(i + 1) % N]; vec3 normal = glm::normalize(left + right); - vec3 topLeft = vec3(left.x, 0.5f, left.z); - vec3 topRight = vec3(right.x, 0.5f, right.z); + vec3 topLeft = (conical ? vec3(0.0, 0.5f, 0.0) : vec3(left.x, 0.5f, left.z)); + vec3 topRight = (conical? vec3(0.0, 0.5f, 0.0) : vec3(right.x, 0.5f, right.z)); vec3 bottomLeft = vec3(left.x, -0.5f, left.z); vec3 bottomRight = vec3(right.x, -0.5f, right.z); @@ -324,80 +332,6 @@ void extrudePolygon(GeometryCache::ShapeData& shapeData, gpu::BufferPointer& ver shapeData.setupIndices(indexBuffer, solidIndices, wireIndices); } -template -void extrudeConical(GeometryCache::ShapeData& shapeData, gpu::BufferPointer& vertexBuffer, gpu::BufferPointer& indexBuffer) { - using namespace geometry; - Index baseVertex = (Index)(vertexBuffer->getSize() / SHAPE_VERTEX_STRIDE); - VertexVector vertices; - IndexVector solidIndices, wireIndices; - - std::vector base = polygon(); - - for (const vec3& v : base) { - vertices.push_back(vec3(0, 0.5f, 0)); - vertices.push_back(vec3(0, 1, 0)); - } - - for (const vec3& v : base) { - vertices.push_back(vec3(v.x, -0.5f, v.z)); - vertices.push_back(vec3(0, -1, 0)); - } - - - for (uint32_t i = 2; i < N; ++i) { - solidIndices.push_back(baseVertex + 0); - solidIndices.push_back(baseVertex + i); - solidIndices.push_back(baseVertex + i - 1); - solidIndices.push_back(baseVertex + N); - solidIndices.push_back(baseVertex + i + N - 1); - solidIndices.push_back(baseVertex + i + N); - } - for (uint32_t i = 1; i <= N; ++i) { - wireIndices.push_back(baseVertex + (i % N)); - wireIndices.push_back(baseVertex + i - 1); - wireIndices.push_back(baseVertex + (i % N) + N); - wireIndices.push_back(baseVertex + (i - 1) + N); - } - - // Now do the sides - baseVertex += 2 * N; - - for (uint32_t i = 0; i < N; ++i) { - vec3 left = base[i]; - vec3 right = base[(i + 1) % N]; - vec3 normal = glm::normalize(left + right); - vec3 topLeft = vec3(0.0, 0.5f, 0.0); - vec3 topRight = vec3(0.0, 0.5f, 0.0); - vec3 bottomLeft = vec3(left.x, -0.5f, left.z); - vec3 bottomRight = vec3(right.x, -0.5f, right.z); - - vertices.push_back(topLeft); - vertices.push_back(normal); - vertices.push_back(bottomLeft); - vertices.push_back(normal); - vertices.push_back(topRight); - vertices.push_back(normal); - vertices.push_back(bottomRight); - vertices.push_back(normal); - - solidIndices.push_back(baseVertex + 0); - solidIndices.push_back(baseVertex + 2); - solidIndices.push_back(baseVertex + 1); - solidIndices.push_back(baseVertex + 1); - solidIndices.push_back(baseVertex + 2); - solidIndices.push_back(baseVertex + 3); - wireIndices.push_back(baseVertex + 0); - wireIndices.push_back(baseVertex + 1); - wireIndices.push_back(baseVertex + 3); - wireIndices.push_back(baseVertex + 2); - baseVertex += 4; - } - - shapeData.setupVertices(vertexBuffer, vertices); - shapeData.setupIndices(indexBuffer, solidIndices, wireIndices); - -} - // FIXME solids need per-face vertices, but smooth shaded // components do not. Find a way to support using draw elements // or draw arrays as appropriate @@ -449,7 +383,7 @@ void GeometryCache::buildShapes() { //Cylinder, extrudePolygon<64>(_shapes[Cylinder], _shapeVertices, _shapeIndices); //Cone, - extrudeConical<64>(_shapes[Cone], _shapeVertices, _shapeIndices); + extrudePolygon<64>(_shapes[Cone], _shapeVertices, _shapeIndices, true); // Not implememented yet: //Quad, From fee26c3976888d6f4b8e6423529d475831cffbee Mon Sep 17 00:00:00 2001 From: Liv Date: Thu, 25 May 2017 13:12:08 -0700 Subject: [PATCH 068/357] Remove not yet implemented comment from Cone shape --- libraries/render-utils/src/GeometryCache.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/render-utils/src/GeometryCache.h b/libraries/render-utils/src/GeometryCache.h index 798c71317c..9853269280 100644 --- a/libraries/render-utils/src/GeometryCache.h +++ b/libraries/render-utils/src/GeometryCache.h @@ -142,7 +142,7 @@ public: Dodecahedron, Icosahedron, Torus, // not yet implemented - Cone, // not yet implemented + Cone, Cylinder, NUM_SHAPES, }; From f0c3a0ac2876c984900572d7123f89cdb985347e Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Thu, 25 May 2017 13:39:47 -0700 Subject: [PATCH 069/357] Fix SendQueue not updating lastReceiverResponse when recv handshake ack --- libraries/networking/src/udt/SendQueue.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/libraries/networking/src/udt/SendQueue.cpp b/libraries/networking/src/udt/SendQueue.cpp index c14ae0a39c..0c029751aa 100644 --- a/libraries/networking/src/udt/SendQueue.cpp +++ b/libraries/networking/src/udt/SendQueue.cpp @@ -241,6 +241,9 @@ void SendQueue::handshakeACK(SequenceNumber initialSequenceNumber) { std::lock_guard locker { _handshakeMutex }; _hasReceivedHandshakeACK = true; } + + _lastReceiverResponse = QDateTime::currentMSecsSinceEpoch(); + // Notify on the handshake ACK condition _handshakeACKCondition.notify_one(); } From 8538c700b5dfc16a0582aa5c0d33a5585887a722 Mon Sep 17 00:00:00 2001 From: Dante Ruiz Date: Thu, 25 May 2017 21:41:41 +0100 Subject: [PATCH 070/357] saving head work --- interface/resources/controllers/vive.json | 22 ++++---- plugins/openvr/src/ViveControllerManager.cpp | 53 ++++++++++++++++++-- plugins/openvr/src/ViveControllerManager.h | 26 +++++----- 3 files changed, 70 insertions(+), 31 deletions(-) diff --git a/interface/resources/controllers/vive.json b/interface/resources/controllers/vive.json index 591b6f515e..984f9c65fb 100644 --- a/interface/resources/controllers/vive.json +++ b/interface/resources/controllers/vive.json @@ -34,36 +34,32 @@ { "from": "Vive.RSCenter", "to": "Standard.RightPrimaryThumb" }, { "from": "Vive.RightApplicationMenu", "to": "Standard.RightSecondaryThumb" }, - { "from": "Vive.LeftHand", "to": "Standard.LeftHand", "when": [ "Application.InHMD" ] }, - { "from": "Vive.RightHand", "to": "Standard.RightHand", "when": [ "Application.InHMD" ] }, + { "from": "Vive.LeftHand", "to": "Standard.LeftHand" }, + { "from": "Vive.RightHand", "to": "Standard.RightHand" }, { "from": "Vive.LeftFoot", "to" : "Standard.LeftFoot", - "filters" : [{"type" : "lowVelocity", "rotation" : 1.0, "translation": 1.0}], - "when": [ "Application.InHMD"] + "filters" : [{"type" : "lowVelocity", "rotation" : 1.0, "translation": 1.0}] }, { "from": "Vive.RightFoot", "to" : "Standard.RightFoot", - "filters" : [{"type" : "lowVelocity", "rotation" : 1.0, "translation": 1.0}], - "when": [ "Application.InHMD"] + "filters" : [{"type" : "lowVelocity", "rotation" : 1.0, "translation": 1.0}] }, { "from": "Vive.Hips", "to" : "Standard.Hips", - "filters" : [{"type" : "lowVelocity", "rotation" : 0.01, "translation": 0.01}], - "when": [ "Application.InHMD"] + "filters" : [{"type" : "lowVelocity", "rotation" : 0.01, "translation": 0.01}] }, { "from": "Vive.Spine2", "to" : "Standard.Spine2", - "filters" : [{"type" : "lowVelocity", "rotation" : 0.01, "translation": 0.01}], - "when": [ "Application.InHMD"] + "filters" : [{"type" : "lowVelocity", "rotation" : 0.01, "translation": 0.01}] }, - { "from": "Vive.Head", "to" : "Standard.Head", "when" : [ "Application.InHMD"] }, + { "from": "Vive.Head", "to" : "Standard.Head"}, - { "from": "Vive.RightArm", "to" : "Standard.RightArm", "when" : [ "Application.InHMD"] }, - { "from": "Vive.LeftArm", "to" : "Standard.LeftArm", "when" : [ "Application.InHMD"] } + { "from": "Vive.RightArm", "to" : "Standard.RightArm"}, + { "from": "Vive.LeftArm", "to" : "Standard.LeftArm"} ] } diff --git a/plugins/openvr/src/ViveControllerManager.cpp b/plugins/openvr/src/ViveControllerManager.cpp index 016b2a1c55..a9bc066dc2 100644 --- a/plugins/openvr/src/ViveControllerManager.cpp +++ b/plugins/openvr/src/ViveControllerManager.cpp @@ -51,8 +51,7 @@ static const int MIN_PUCK_COUNT = 2; static const int MIN_FEET_AND_HIPS = 3; static const int MIN_FEET_HIPS_CHEST = 4; static const int MIN_FEET_HIPS_SHOULDERS = 5; -static const int MIN_FEET_HIPS_CHEST_AND_HANDS = 6; -static const int MIN_FEET_HIPS_SHOULDERS_AND_HANDS = 7; +static const int MIN_FEET_HIPS_CHEST_HEAD = 5; static const int FIRST_FOOT = 0; static const int SECOND_FOOT = 1; static const int HIP = 2; @@ -177,6 +176,7 @@ ViveControllerManager::InputDevice::InputDevice(vr::IVRSystem*& system) : contro _configStringMap[Config::FeetAndHips] = QString("FeetAndHips"); _configStringMap[Config::FeetHipsAndChest] = QString("FeetHipsAndChest"); _configStringMap[Config::FeetHipsAndShoulders] = QString("FeetHipsAndShoulders"); + _configStringMap[Config::FeetHipsChestAndHead] = QString("FeetHipsChestAndHead"); if (openVrSupported()) { createPreferences(); @@ -351,12 +351,18 @@ void ViveControllerManager::InputDevice::calibrate(const controller::InputCalibr calibrateFeet(defaultToReferenceMat, inputCalibration); calibrateHips(defaultToReferenceMat, inputCalibration); calibrateChest(defaultToReferenceMat, inputCalibration); - } else if (_config == Config::FeetHipsAndShoulders && puckCount >= MIN_FEET_HIPS_SHOULDERS){ + } else if (_config == Config::FeetHipsAndShoulders && puckCount >= MIN_FEET_HIPS_SHOULDERS) { calibrateFeet(defaultToReferenceMat, inputCalibration); calibrateHips(defaultToReferenceMat, inputCalibration); int firstShoulderIndex = 3; int secondShoulderIndex = 4; calibrateShoulders(defaultToReferenceMat, inputCalibration, firstShoulderIndex, secondShoulderIndex); + } else if (_config == Config::FeetHipsChestAndHead && puckCount == MIN_FEET_HIPS_CHEST_HEAD) { + glm::mat4 headPuckDefaultToReferenceMat = recalculateDefaultToReferenceForHeadPuck(inputCalibration); + calibrateFeet(headPuckDefaultToReferenceMat, inputCalibration); + calibrateHips(headPuckDefaultToReferenceMat, inputCalibration); + calibrateChest(headPuckDefaultToReferenceMat, inputCalibration); + calibrateHead(headPuckDefaultToReferenceMat, inputCalibration); } else { qDebug() << "Puck Calibration: " << configToString(_config) << " Config Failed: Could not meet the minimal # of pucks"; uncalibrate(); @@ -371,6 +377,7 @@ void ViveControllerManager::InputDevice::uncalibrate() { _pucksOffset.clear(); _jointToPuckMap.clear(); _calibrated = false; + _overrideHead = false; } void ViveControllerManager::InputDevice::updateCalibratedLimbs() { @@ -380,6 +387,10 @@ void ViveControllerManager::InputDevice::updateCalibratedLimbs() { _poseStateMap[controller::SPINE2] = addOffsetToPuckPose(controller::SPINE2); _poseStateMap[controller::RIGHT_ARM] = addOffsetToPuckPose(controller::RIGHT_ARM); _poseStateMap[controller::LEFT_ARM] = addOffsetToPuckPose(controller::LEFT_ARM); + + if (_overrideHead) { + _poseStateMap[controller::HEAD] = addOffsetToPuckPose(controller::HEAD); + } } controller::Pose ViveControllerManager::InputDevice::addOffsetToPuckPose(int joint) const { @@ -445,6 +456,27 @@ void ViveControllerManager::InputDevice::handleHandController(float deltaTime, u } } +glm::mat4 ViveControllerManager::InputDevice::recalculateDefaultToReferenceForHeadPuck(const controller::InputCalibrationData& inputCalibration) { + size_t headPuckIndex = _validTrackedObjects.size() - 1; + controller::Pose headPuckPose = _validTrackedObjects[headPuckIndex].second; + + // make the head puck rotation to match the default head rotation + glm::quat headPuckRotation = cancelOutRollAndPitch(headPuckPose.getRotation()); + glm::quat defaultHeadRotation = glmExtractRotation(inputCalibration.defaultHeadMat); + glm::quat defaultRotationOffset = glm::inverse(headPuckRotation) * defaultHeadRotation; + glm::quat finalHeadPuckRotation = defaultRotationOffset * headPuckRotation; + glm::vec3 headPuckTranslation = headPuckPose.getTranslation(); + glm::mat4 headPuckMat = createMatFromQuatAndPos(finalHeadPuckRotation, headPuckTranslation); + + // calculate the offset from the centerOfEye to defaultHeadMat + glm::mat4 defaultHeadOffset = glm::inverse(inputCalibration.defaultCenterEyeMat) * inputCalibration.defaultHeadMat; + + glm::mat4 currentHead = headPuckMat * defaultHeadOffset; + + // calculate the defaultToRefrenceXform + return currentHead * glm::inverse(inputCalibration.defaultHeadMat); +} + void ViveControllerManager::InputDevice::partitionTouchpad(int sButton, int xAxis, int yAxis, int centerPseudoButton, int xPseudoButton, int yPseudoButton) { // Populate the L/RS_CENTER/OUTER pseudo buttons, corresponding to a partition of the L/RS space based on the X/Y values. const float CENTER_DEADBAND = 0.6f; @@ -664,7 +696,16 @@ void ViveControllerManager::InputDevice::calibrateShoulders(glm::mat4& defaultTo } void ViveControllerManager::InputDevice::calibrateHead(glm::mat4& defaultToReferenceMat, const controller::InputCalibrationData& inputCalibration) { - int headIndex = _validTrackedObjects.size() - 1; + size_t headIndex = _validTrackedObjects.size() - 1; + const PuckPosePair& head = _validTrackedObjects[headIndex]; + + // assume the person is wearing the head puck on his/her forehead + glm::mat4 defaultHeadOffset = glm::inverse(inputCalibration.defaultCenterEyeMat) * inputCalibration.defaultHeadMat; + controller::Pose newHead = head.second.postTransform(defaultHeadOffset); + + _jointToPuckMap[controller::HEAD] = head.first; + _pucksOffset[head.first] = computeOffset(defaultToReferenceMat, inputCalibration.defaultHeadMat, newHead); + _overrideHead = true; } @@ -701,6 +742,8 @@ void ViveControllerManager::InputDevice::setConfigFromString(const QString& valu _preferedConfig = Config::FeetHipsAndChest; } else if (value == "FeetHipsAndShoulders") { _preferedConfig = Config::FeetHipsAndShoulders; + } else if (value == "FeetHipsChestAndHead") { + _preferedConfig = Config::FeetHipsChestAndHead; } } @@ -713,7 +756,7 @@ void ViveControllerManager::InputDevice::createPreferences() { auto getter = [this]()->QString { return _configStringMap[_preferedConfig]; }; auto setter = [this](const QString& value) { setConfigFromString(value); saveSettings(); }; auto preference = new ComboBoxPreference(VIVE_PUCKS_CONFIG, "Configuration", getter, setter); - QStringList list = (QStringList() << "Auto" << "Feet" << "FeetAndHips" << "FeetHipsAndChest" << "FeetHipsAndShoulders"); + QStringList list = (QStringList() << "Feet" << "FeetAndHips" << "FeetHipsAndChest" << "FeetHipsAndShoulders" << "FeetHipsChestAndHead"); preference->setItems(list); preferences->addPreference(preference); diff --git a/plugins/openvr/src/ViveControllerManager.h b/plugins/openvr/src/ViveControllerManager.h index bc9558beaa..f3b87ea3a0 100644 --- a/plugins/openvr/src/ViveControllerManager.h +++ b/plugins/openvr/src/ViveControllerManager.h @@ -67,6 +67,7 @@ private: void calibrate(const controller::InputCalibrationData& inputCalibration); void uncalibrate(); controller::Pose addOffsetToPuckPose(int joint) const; + glm::mat4 recalculateDefaultToReferenceForHeadPuck(const controller::InputCalibrationData& inputCalibration); void updateCalibratedLimbs(); bool checkForCalibrationEvent(); void handleHandController(float deltaTime, uint32_t deviceIndex, const controller::InputCalibrationData& inputCalibrationData, bool isLeftHand); @@ -80,6 +81,17 @@ private: const vec3& angularVelocity); void partitionTouchpad(int sButton, int xAxis, int yAxis, int centerPsuedoButton, int xPseudoButton, int yPseudoButton); void printDeviceTrackingResultChange(uint32_t deviceIndex); + void setConfigFromString(const QString& value); + void loadSettings(); + void saveSettings() const; + void calibrateFeet(glm::mat4& defaultToReferenceMat, const controller::InputCalibrationData& inputCalibration); + void calibrateHips(glm::mat4& defaultToReferenceMat, const controller::InputCalibrationData& inputCalibration); + void calibrateChest(glm::mat4& defaultToReferenceMat, const controller::InputCalibrationData& inputCalibration); + + void calibrateShoulders(glm::mat4& defaultToReferenceMat, const controller::InputCalibrationData& inputCalibration, + int firstShoulderIndex, int secondShoulderIndex); + + void calibrateHead(glm::mat4& defaultToReferenceMat, const controller::InputCalibrationData& inputCalibration); class FilteredStick { public: @@ -106,9 +118,7 @@ private: }; enum class Config { Auto, - Head, Feet, - Shoulders, FeetAndHips, FeetHipsAndChest, FeetHipsAndShoulders, @@ -139,21 +149,11 @@ private: bool _triggersPressedHandled { false }; bool _calibrated { false }; bool _timeTilCalibrationSet { false }; - bool overrideHands { false }; + bool _overrideHead { false }; mutable std::recursive_mutex _lock; QString configToString(Config config); - void setConfigFromString(const QString& value); - void loadSettings(); - void saveSettings() const; - void calibrateFeet(glm::mat4& defaultToReferenceMat, const controller::InputCalibrationData& inputCalibration); - void calibrateHips(glm::mat4& defaultToReferenceMat, const controller::InputCalibrationData& inputCalibration); - void calibrateChest(glm::mat4& defaultToReferenceMat, const controller::InputCalibrationData& inputCalibration); - void calibrateShoulders(glm::mat4& defaultToReferenceMat, const controller::InputCalibrationData& inputCalibration, - int firstShoulderIndex, int secondShoulderIndex); - - void calibrateHead(glm::mat4& defaultToReferenceMat, const controller::InputCalibrationData& inputCalibration); friend class ViveControllerManager; }; From 5378cbead6dca1394abcb54784802587a3a86428 Mon Sep 17 00:00:00 2001 From: Andrew Meadows Date: Thu, 25 May 2017 13:47:03 -0700 Subject: [PATCH 071/357] make ObjectMotionState dtor virtual --- libraries/physics/src/ObjectMotionState.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/physics/src/ObjectMotionState.h b/libraries/physics/src/ObjectMotionState.h index 1e582ea854..ccdc0e0041 100644 --- a/libraries/physics/src/ObjectMotionState.h +++ b/libraries/physics/src/ObjectMotionState.h @@ -79,7 +79,7 @@ public: static ShapeManager* getShapeManager(); ObjectMotionState(const btCollisionShape* shape); - ~ObjectMotionState(); + virtual ~ObjectMotionState(); virtual void handleEasyChanges(uint32_t& flags); virtual bool handleHardAndEasyChanges(uint32_t& flags, PhysicsEngine* engine); From 3bd0c111d724fceba4bc6d205b5fbf77875eb3c7 Mon Sep 17 00:00:00 2001 From: Andrew Meadows Date: Thu, 25 May 2017 13:47:40 -0700 Subject: [PATCH 072/357] verify empty ShapeManager in Application dtor --- interface/src/Application.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 5e3e09e778..2fe8677e1e 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -1682,6 +1682,10 @@ Application::~Application() { _physicsEngine->setCharacterController(nullptr); + // the _shapeManager should have zero references + _shapeManager.collectGarbage(); + assert(_shapeManager.getNumShapes() == 0); + // shutdown render engine _main3DScene = nullptr; _renderEngine = nullptr; From c22e4ef883eb3120de2bb29db8ccf152cdbd0595 Mon Sep 17 00:00:00 2001 From: Andrew Meadows Date: Thu, 25 May 2017 13:48:19 -0700 Subject: [PATCH 073/357] rename method to clarify where it is called --- libraries/physics/src/PhysicalEntitySimulation.cpp | 2 +- libraries/physics/src/PhysicsEngine.cpp | 2 +- libraries/physics/src/PhysicsEngine.h | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/libraries/physics/src/PhysicalEntitySimulation.cpp b/libraries/physics/src/PhysicalEntitySimulation.cpp index 2e69ff987c..fe507ed1ee 100644 --- a/libraries/physics/src/PhysicalEntitySimulation.cpp +++ b/libraries/physics/src/PhysicalEntitySimulation.cpp @@ -130,7 +130,7 @@ void PhysicalEntitySimulation::clearEntitiesInternal() { } // then remove the objects (aka MotionStates) from physics - _physicsEngine->removeObjects(_physicalObjects); + _physicsEngine->removeSetOfObjects(_physicalObjects); // delete the MotionStates // TODO: after we invert the entities/physics lib dependencies we will let EntityItem delete diff --git a/libraries/physics/src/PhysicsEngine.cpp b/libraries/physics/src/PhysicsEngine.cpp index 3a02e95e7c..1d61e53fbb 100644 --- a/libraries/physics/src/PhysicsEngine.cpp +++ b/libraries/physics/src/PhysicsEngine.cpp @@ -207,7 +207,7 @@ void PhysicsEngine::removeObjects(const VectorOfMotionStates& objects) { } // Same as above, but takes a Set instead of a Vector. Should only be called during teardown. -void PhysicsEngine::removeObjects(const SetOfMotionStates& objects) { +void PhysicsEngine::removeSetOfObjects(const SetOfMotionStates& objects) { _contactMap.clear(); for (auto object : objects) { btRigidBody* body = object->getRigidBody(); diff --git a/libraries/physics/src/PhysicsEngine.h b/libraries/physics/src/PhysicsEngine.h index e9b29a43a4..c029d14a42 100644 --- a/libraries/physics/src/PhysicsEngine.h +++ b/libraries/physics/src/PhysicsEngine.h @@ -53,7 +53,7 @@ public: uint32_t getNumSubsteps(); void removeObjects(const VectorOfMotionStates& objects); - void removeObjects(const SetOfMotionStates& objects); // only called during teardown + void removeSetOfObjects(const SetOfMotionStates& objects); // only called during teardown void addObjects(const VectorOfMotionStates& objects); VectorOfMotionStates changeObjects(const VectorOfMotionStates& objects); From 971855e6bf91ca863c38e057bb01bb0102018753 Mon Sep 17 00:00:00 2001 From: Andrew Meadows Date: Thu, 25 May 2017 14:29:14 -0700 Subject: [PATCH 074/357] add asserts to catch dangling pointers sooner --- libraries/physics/src/EntityMotionState.cpp | 2 ++ libraries/physics/src/ObjectMotionState.cpp | 2 ++ 2 files changed, 4 insertions(+) diff --git a/libraries/physics/src/EntityMotionState.cpp b/libraries/physics/src/EntityMotionState.cpp index fdd290bfca..adb7bbddde 100644 --- a/libraries/physics/src/EntityMotionState.cpp +++ b/libraries/physics/src/EntityMotionState.cpp @@ -114,6 +114,7 @@ void EntityMotionState::handleDeactivation() { // virtual void EntityMotionState::handleEasyChanges(uint32_t& flags) { + assert(_entity); assert(entityTreeIsLocked()); updateServerPhysicsVariables(); ObjectMotionState::handleEasyChanges(flags); @@ -170,6 +171,7 @@ void EntityMotionState::handleEasyChanges(uint32_t& flags) { // virtual bool EntityMotionState::handleHardAndEasyChanges(uint32_t& flags, PhysicsEngine* engine) { + assert(_entity); updateServerPhysicsVariables(); return ObjectMotionState::handleHardAndEasyChanges(flags, engine); } diff --git a/libraries/physics/src/ObjectMotionState.cpp b/libraries/physics/src/ObjectMotionState.cpp index a877887840..b11e21366e 100644 --- a/libraries/physics/src/ObjectMotionState.cpp +++ b/libraries/physics/src/ObjectMotionState.cpp @@ -202,6 +202,7 @@ void ObjectMotionState::setShape(const btCollisionShape* shape) { } void ObjectMotionState::handleEasyChanges(uint32_t& flags) { + assert(_body && _shape); if (flags & Simulation::DIRTY_POSITION) { btTransform worldTrans = _body->getWorldTransform(); btVector3 newPosition = glmToBullet(getObjectPosition()); @@ -282,6 +283,7 @@ void ObjectMotionState::handleEasyChanges(uint32_t& flags) { } bool ObjectMotionState::handleHardAndEasyChanges(uint32_t& flags, PhysicsEngine* engine) { + assert(_body && _shape); if (flags & Simulation::DIRTY_SHAPE) { // make sure the new shape is valid if (!isReadyToComputeShape()) { From ac8cb6341928c1d5e728889b46ddb8af35f7ef97 Mon Sep 17 00:00:00 2001 From: howard-stearns Date: Thu, 25 May 2017 14:34:24 -0700 Subject: [PATCH 075/357] clean and DRY --- interface/src/avatar/MyAvatar.cpp | 152 ++++++++++++++---------------- 1 file changed, 70 insertions(+), 82 deletions(-) diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index 2a70a3dab3..808d2730a9 100755 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -2181,19 +2181,24 @@ void MyAvatar::goToLocation(const glm::vec3& newPosition, } bool MyAvatar::safeLanding(const glm::vec3& position) { - // Considers all collision hull or non-collisionless primitive intersections on a vertical line through the point, regardless of "face direction". - // There to be a need for a "landing" if the closest above and the closest below are either: - // a) less than the avatar capsule height apart, or - // b) on the same entity (thus enclosing the point). + // Considers all collision hull or non-collisionless primitive intersections on a vertical line through the point. + // There needs to be a "landing" if: + // a) the closest above and the closest below are less than the avatar capsule height apart, or + // b) the above point is the top surface of an entity, indicating that we are inside it. // If no landing is required, we go to that point directly and return false; - // When a landing is required, we the entity that has the nearest "above" intersection, and find the highest intersection on the same entity + // When a landing is required by a, we find the highest intersection on that closest-above entity // (which may be that same "nearest above intersection"). That highest intersection is the candidate landing point. - // We then recurse with that, and when it bottoms out, the last candidate point is where we place the avatar's feet, and return true; - // FIXME test: MyAvatar.safeLanding({x: 100, y: 100, z: 100}) - //qDebug() << "FIXME avatar position:" << getPosition() << "halfHeight:" << _characterController.getCapsuleHalfHeight() << "height:" << _skeletonModel->getBoundingCapsuleHeight() << "offset:" << _characterController.getCapsuleLocalOffset(); - auto direct = [&](QString label) { - qDebug() << "Already safe" << label << position; - goToLocation(position); + // For b, use that top surface point. + // We then place our feet there, recurse with new capsule center point, and return true; + + const auto offset = _characterController.getCapsuleLocalOffset(); + const auto capsuleCenter = position + offset; + // We could repeat this whole test for each of the four corners of our bounding box, in case the surface is uneven. However: + // 1) This is only meant to cover the most important cases, and even the four corners won't handle random spikes in the surfaces or avatar. + // 2) My feeling is that this code is already at the limit of what can realistically be reviewed and maintained. + auto direct = [&](const char* label) { // position is good to go, or at least, we cannot do better + //qDebug() << "Already safe" << label << position; + goToLocation(position); // I.e., capsuleCenter - offset return false; }; auto halfHeight = _characterController.getCapsuleHalfHeight(); @@ -2204,58 +2209,58 @@ bool MyAvatar::safeLanding(const glm::vec3& position) { if (!entityTree) { return direct("no entity tree"); } - // FIXME: capsule has an offset from position! - // We could repeat this whole test for each of the four corners of our bounding box, in case the surface is uneven. - // However: - // 1) This is only meant to cover the most important cases, and even the four corners won't handle random spikes. - // 2) My feeling is that this code is already at the limit of what can realistically be reviewed and maintained. + glm::vec3 upperIntersection, upperNormal, lowerIntersection, lowerNormal; + EntityItemID upperId, lowerId; + const auto up = _worldUpDirection, down = -up; QVector include{}; QVector ignore{}; - OctreeElementPointer element; - EntityItemPointer intersectedEntity = NULL; - bool intersects; - float distance; - BoxFace face; - glm::vec3 surfaceNormal; - const bool visibleOnly = false; - const bool collidableOnly = true; - const bool precisionPicking = true; - const auto lockType = Octree::Lock; // Should we refactor to take a lock just once? - bool* accurateResult = NULL; - // FIXME DRY this, and get rid of the extra vector arithmetic. - intersects = entityTree->findRayIntersection(position, Vectors::UNIT_Y, - include, ignore, visibleOnly, collidableOnly, precisionPicking, - element, distance, face, surfaceNormal, - (void**)&intersectedEntity, lockType, accurateResult); - if (!intersects || !intersectedEntity) { + auto recurse = [&] { // Place bottom of capsule at the upperIntersection, and check again based on the capsule center. + safeLanding(upperIntersection + (up * halfHeight) - offset); + return true; + }; + auto isUp = [&](const glm::vec3& normal) { return glm::dot(normal, up) > 0.0f; }; // true iff normal points up + auto isDown = [&](const glm::vec3& normal) { return glm::dot(normal, up) < 0.0f; }; + auto findIntersection = [&](const glm::vec3& startPointIn, const glm::vec3& directionIn, glm::vec3& intersectionOut, EntityItemID& entityIdOut, glm::vec3& normalOut) { + OctreeElementPointer element; + EntityItemPointer intersectedEntity = NULL; + float distance; + BoxFace face; + const bool visibleOnly = false; + const bool collidableOnly = true; + const bool precisionPicking = true; + const auto lockType = Octree::Lock; // Should we refactor to take a lock just once? + bool* accurateResult = NULL; + + bool intersects = entityTree->findRayIntersection(startPointIn, directionIn, include, ignore, visibleOnly, collidableOnly, precisionPicking, + element, distance, face, normalOut, (void**)&intersectedEntity, lockType, accurateResult); + if (!intersects || !intersectedEntity) { + return false; + } + intersectionOut = startPointIn + (directionIn * distance); + entityIdOut = intersectedEntity->getEntityItemID(); + return true; + }; + + // The Algorithm, in four parts: + + if (!findIntersection(capsuleCenter, up, upperIntersection, upperId, upperNormal)) { // We currently believe that physics will reliably push us out if our feet are embedded, // as long as our capsule center is out and there's room above us. Here we have those // conditions, so no need to check our feet below. - return direct("no above"); + return direct("nothing above"); } - // FIXME: use _worldUpDirection and negative instead of UNIT_Y? If we use normalMumble.y, will need to also dot against _worldUpDirection. - glm::vec3 upperIntersection = position + (Vectors::UNIT_Y * distance); - auto upperId = intersectedEntity->getEntityItemID(); - auto upperY = surfaceNormal.y; - intersects = entityTree->findRayIntersection(position, Vectors::UNIT_NEG_Y, - include, ignore, visibleOnly, collidableOnly, precisionPicking, - element, distance, face, surfaceNormal, - (void**)&intersectedEntity, lockType, accurateResult); - if (!intersects || !intersectedEntity) { + if (!findIntersection(capsuleCenter, down, lowerIntersection, lowerId, lowerNormal)) { // Our head may be embedded, but our center is out and there's room below. See corresponding comment above. - return direct("no below"); + return direct("nothing below"); } - glm::vec3 lowerIntersection = position + (Vectors::UNIT_NEG_Y * distance); - auto lowerId = intersectedEntity->getEntityItemID(); - auto lowerY = surfaceNormal.y; - if ((upperY < 0) && (lowerY > 0)) { + // See if we have room between entities above and below, but that we are not contained. + if (isDown(upperNormal) && isUp(lowerNormal)) { // The surface above us is the bottom of something, and the surface below us it the top of something. // I.e., we are in a clearing between two objects. auto delta = glm::distance(upperIntersection, lowerIntersection); - //qDebug() << "FIXME position:" << position << "upper:" << upperId << upperIntersection << "lower:" << lowerId << lowerIntersection << "distance:" << delta << "height:" << (2 * _characterController.getCapsuleHalfHeight()); if (delta > (2 * halfHeight)) { // There is room for us to fit in that clearing. If there wasn't, physics would oscilate us between the objects above and below. if (upperId != lowerId) { // An optimization over what follows: the simplest case of not being inside an entity. @@ -2263,53 +2268,36 @@ bool MyAvatar::safeLanding(const glm::vec3& position) { // There will be one of two outcomes: // a) We're not contained, so we have enough room and our position is good. // b) We are contained, so we'll bail out of this but try again at a position above the containing entity. - auto entityAbove = upperId; - auto roofIntersection = upperIntersection; - while (1) { - ignore.push_back(entityAbove); - intersects = entityTree->findRayIntersection(roofIntersection, Vectors::UNIT_Y, - include, ignore, visibleOnly, collidableOnly, precisionPicking, - element, distance, face, surfaceNormal, - (void**)&intersectedEntity, lockType, accurateResult); - if (!intersects || !intersectedEntity) { + for (;;) { + ignore.push_back(upperId); + if (!findIntersection(upperIntersection, up, upperIntersection, upperId, upperNormal)) { // We're not inside an entity, and from the nested tests, we have room between what is above and below. So position is good! - qDebug() << "FIXME upper:" << upperId << upperIntersection << " n:" << upperY << " lower:" << lowerId << lowerIntersection << " n:" << lowerY << " delta:" << delta << " halfHeight:" << halfHeight; + //qDebug() << "FIXME upper:" << upperId << upperIntersection << " n:" << upperNormal.y << " lower:" << lowerId << lowerIntersection << " n:" << lowerNormal.y << " delta:" << delta << " halfHeight:" << halfHeight; return direct("enough room"); } - roofIntersection = roofIntersection + (Vectors::UNIT_Y * distance); - if (surfaceNormal.y > 0) { + if (isUp(upperNormal)) { // This new intersection is the top surface of an entity that we have not yet seen, which means we're contained within it. // We could break here and recurse from the top of the original ceiling, but since we've already done the work to find the top - // of the enclosing entity, let's put our feet at roofIntersection and start over. - safeLanding(roofIntersection + (Vectors::UNIT_Y * halfHeight)); - return true; + // of the enclosing entity, let's put our feet at upperIntersection and start over. + return recurse(); } // We found a new bottom surface, which we're not interested in. // But there could still be a top surface above us for an entity we haven't seen, so keep looking upward. - entityAbove = intersectedEntity->getEntityItemID(); } - ignore.clear(); // We didn't find anything, but in what happens below, don't ignore the entities we've encountered. } } } - qDebug() << "FIXME need to compute safe landing for" << position << " based on " << upperIntersection << "@" << upperId << " and " << lowerIntersection << "@" << lowerId; + + //qDebug() << "FIXME need to compute safe landing for" << capsuleCenter << " based on " << upperIntersection << "@" << upperId << " and " << lowerIntersection << "@" << lowerId; const float big = (float)TREE_SCALE; - const auto skyHigh = Vectors::UNIT_Y * big; - include.push_back(upperId); - auto fromAbove = position + skyHigh; - intersects = entityTree->findRayIntersection(fromAbove, Vectors::UNIT_NEG_Y, - include, ignore, visibleOnly, collidableOnly, precisionPicking, - element, distance, face, surfaceNormal, - (void**)&intersectedEntity, lockType, accurateResult); - if (!intersects || !intersectedEntity) { - return direct("no landing"); + const auto skyHigh = up * big; + auto fromAbove = capsuleCenter + skyHigh; + include.push_back(upperId); // We're looking for the intersection from above onto this entity. + if (!findIntersection(fromAbove, down, upperIntersection, upperId, upperNormal)) { + return direct("Unable to find a landing"); } - // Bottom of capsule is at intersection, so capsule center is above that, which also avoids looping on the same intersection. - auto newFloor = fromAbove + (Vectors::UNIT_NEG_Y * distance); - auto newTarget = newFloor + (Vectors::UNIT_Y * halfHeight); - qDebug() << "FIXME newFloor:" << newFloor << " newTarget:" << newTarget; - safeLanding(newTarget); - return true; + // Our arbitrary rule is to always go up. There's no need to look down or sideways for a "closer" safe candidate. + return recurse(); } void MyAvatar::updateMotionBehaviorFromMenu() { From af5ba3a90af049f116bd0f2a07a6a94b610a69e2 Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Thu, 25 May 2017 15:14:10 -0700 Subject: [PATCH 076/357] ask display-plugins if they are head-controllers --- .../resources/controllers/oculus_touch.json | 2 ++ interface/src/Application.cpp | 15 +++++++++++++++ interface/src/Application.h | 1 + interface/src/avatar/MyAvatar.cpp | 18 ++++++++++-------- .../src/scripting/HMDScriptingInterface.cpp | 4 ++++ .../src/scripting/HMDScriptingInterface.h | 1 + .../impl/filters/LowVelocityFilter.h | 2 +- .../Basic2DWindowOpenGLDisplayPlugin.h | 2 ++ .../hmd/DebugHmdDisplayPlugin.h | 1 + .../src/display-plugins/hmd/HmdDisplayPlugin.h | 1 + .../stereo/InterleavedStereoDisplayPlugin.h | 2 ++ .../stereo/SideBySideStereoDisplayPlugin.h | 2 ++ .../src/input-plugins/KeyboardMouseDevice.h | 1 + .../src/input-plugins/TouchscreenDevice.h | 1 + libraries/plugins/src/plugins/DisplayPlugin.h | 1 + libraries/plugins/src/plugins/InputPlugin.h | 1 + libraries/plugins/src/plugins/PluginUtils.cpp | 14 ++++++++++++++ libraries/plugins/src/plugins/PluginUtils.h | 1 + plugins/hifiKinect/src/KinectPlugin.cpp | 16 ++++++++++++++-- plugins/hifiKinect/src/KinectPlugin.h | 1 + plugins/hifiNeuron/src/NeuronPlugin.h | 1 + plugins/hifiSdl2/src/SDL2Manager.h | 1 + plugins/hifiSixense/src/SixenseManager.h | 1 + plugins/oculus/src/OculusControllerManager.h | 1 + plugins/oculus/src/OculusDisplayPlugin.h | 2 ++ plugins/openvr/src/OpenVrDisplayPlugin.h | 4 +++- plugins/openvr/src/ViveControllerManager.h | 1 + 27 files changed, 86 insertions(+), 12 deletions(-) diff --git a/interface/resources/controllers/oculus_touch.json b/interface/resources/controllers/oculus_touch.json index aa574e36dd..544c8bd5b8 100644 --- a/interface/resources/controllers/oculus_touch.json +++ b/interface/resources/controllers/oculus_touch.json @@ -58,5 +58,7 @@ { "from": "OculusTouch.RightThumbUp", "to": "Standard.RightThumbUp" }, { "from": "OculusTouch.LeftIndexPoint", "to": "Standard.LeftIndexPoint" }, { "from": "OculusTouch.RightIndexPoint", "to": "Standard.RightIndexPoint" } + + { "from": "OculusTouch.Head", "to" : "Standard.Head", "when" : [ "Application.InHMD"] } ] } diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 8761268147..6eb3aedef6 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -4851,6 +4851,21 @@ bool Application::isHMDMode() const { return getActiveDisplayPlugin()->isHmd(); } +bool Application::isHeadControllerEnabled() const { + const InputPluginList& inputPlugins = PluginManager::getInstance()->getInputPlugins(); + for (auto& ip : inputPlugins) { + if (ip->isActive() && ip->isHeadController()) { + return true; + } + } + foreach(DisplayPluginPointer displayPlugin, PluginManager::getInstance()->getDisplayPlugins()) { + if (displayPlugin->isActive() && displayPlugin->isHeadController()) { + return true; + } + } + return false; +} + float Application::getTargetFrameRate() const { return getActiveDisplayPlugin()->getTargetFrameRate(); } QRect Application::getDesirableApplicationGeometry() const { diff --git a/interface/src/Application.h b/interface/src/Application.h index e8507c39e8..aaf56ef0c2 100644 --- a/interface/src/Application.h +++ b/interface/src/Application.h @@ -248,6 +248,7 @@ public: // rendering of several elements depend on that // TODO: carry that information on the Camera as a setting virtual bool isHMDMode() const override; + bool isHeadControllerEnabled() const; glm::mat4 getHMDSensorPose() const; glm::mat4 getEyeOffset(int eye) const; glm::mat4 getEyeProjection(int eye) const; diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index 6cf6ef2fee..2f97cee0be 100755 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -1845,14 +1845,16 @@ void MyAvatar::updateOrientation(float deltaTime) { getHead()->setBasePitch(getHead()->getBasePitch() + getDriveKey(PITCH) * _pitchSpeed * deltaTime); - glm::quat localOrientation = getHeadControllerPoseInAvatarFrame(); - // these angles will be in radians - // ... so they need to be converted to degrees before we do math... - glm::vec3 euler = glm::eulerAngles(localOrientation) * DEGREES_PER_RADIAN; - Head* head = getHead(); - head->setBaseYaw(YAW(euler)); - head->setBasePitch(PITCH(euler)); - head->setBaseRoll(ROLL(euler)); + if (qApp->isHeadControllerEnabled()) { + glm::quat localOrientation = getHeadControllerPoseInAvatarFrame(); + // these angles will be in radians + // ... so they need to be converted to degrees before we do math... + glm::vec3 euler = glm::eulerAngles(localOrientation) * DEGREES_PER_RADIAN; + Head* head = getHead(); + head->setBaseYaw(YAW(euler)); + head->setBasePitch(PITCH(euler)); + head->setBaseRoll(ROLL(euler)); + } } void MyAvatar::updateActionMotor(float deltaTime) { diff --git a/interface/src/scripting/HMDScriptingInterface.cpp b/interface/src/scripting/HMDScriptingInterface.cpp index d0e8e74d85..d347b72d7b 100644 --- a/interface/src/scripting/HMDScriptingInterface.cpp +++ b/interface/src/scripting/HMDScriptingInterface.cpp @@ -54,6 +54,10 @@ bool HMDScriptingInterface::isHMDAvailable(const QString& name) { return PluginUtils::isHMDAvailable(name); } +bool HMDScriptingInterface::isHeadControllerAvailable(const QString& name) { + return PluginUtils::isHeadControllerAvailable(name); +} + bool HMDScriptingInterface::isHandControllerAvailable(const QString& name) { return PluginUtils::isHandControllerAvailable(name); } diff --git a/interface/src/scripting/HMDScriptingInterface.h b/interface/src/scripting/HMDScriptingInterface.h index 7ecafdcbcb..4657e61d05 100644 --- a/interface/src/scripting/HMDScriptingInterface.h +++ b/interface/src/scripting/HMDScriptingInterface.h @@ -43,6 +43,7 @@ public: Q_INVOKABLE QString preferredAudioOutput() const; Q_INVOKABLE bool isHMDAvailable(const QString& name = ""); + Q_INVOKABLE bool isHeadControllerAvailable(const QString& name = ""); Q_INVOKABLE bool isHandControllerAvailable(const QString& name = ""); Q_INVOKABLE bool isSubdeviceContainingNameAvailable(const QString& name); diff --git a/libraries/controllers/src/controllers/impl/filters/LowVelocityFilter.h b/libraries/controllers/src/controllers/impl/filters/LowVelocityFilter.h index d870a5c551..feaf7685fd 100644 --- a/libraries/controllers/src/controllers/impl/filters/LowVelocityFilter.h +++ b/libraries/controllers/src/controllers/impl/filters/LowVelocityFilter.h @@ -22,7 +22,7 @@ namespace controller { _translationConstant(translationConstant), _rotationConstant(rotationConstant) {} virtual float apply(float value) const override { return value; } - virtual Pose apply(Pose newPose) const; + virtual Pose apply(Pose newPose) const override; virtual bool parseParameters(const QJsonValue& parameters) override; private: diff --git a/libraries/display-plugins/src/display-plugins/Basic2DWindowOpenGLDisplayPlugin.h b/libraries/display-plugins/src/display-plugins/Basic2DWindowOpenGLDisplayPlugin.h index f3dd50602c..8dc1d83c1b 100644 --- a/libraries/display-plugins/src/display-plugins/Basic2DWindowOpenGLDisplayPlugin.h +++ b/libraries/display-plugins/src/display-plugins/Basic2DWindowOpenGLDisplayPlugin.h @@ -26,6 +26,8 @@ public: virtual bool isThrottled() const override; + virtual bool isHeadController() const override { return false; } + protected: mutable bool _isThrottled = false; diff --git a/libraries/display-plugins/src/display-plugins/hmd/DebugHmdDisplayPlugin.h b/libraries/display-plugins/src/display-plugins/hmd/DebugHmdDisplayPlugin.h index 9bb82b1836..a971c25bf6 100644 --- a/libraries/display-plugins/src/display-plugins/hmd/DebugHmdDisplayPlugin.h +++ b/libraries/display-plugins/src/display-plugins/hmd/DebugHmdDisplayPlugin.h @@ -21,6 +21,7 @@ public: bool beginFrameRender(uint32_t frameIndex) override; float getTargetFrameRate() const override { return 90; } + virtual bool isHeadController() const override { return false; } protected: void updatePresentPose() override; diff --git a/libraries/display-plugins/src/display-plugins/hmd/HmdDisplayPlugin.h b/libraries/display-plugins/src/display-plugins/hmd/HmdDisplayPlugin.h index aaa6e347e0..7dfd0fed1e 100644 --- a/libraries/display-plugins/src/display-plugins/hmd/HmdDisplayPlugin.h +++ b/libraries/display-plugins/src/display-plugins/hmd/HmdDisplayPlugin.h @@ -25,6 +25,7 @@ class HmdDisplayPlugin : public OpenGLDisplayPlugin { public: ~HmdDisplayPlugin(); bool isHmd() const override final { return true; } + bool isHeadController() const override = 0; float getIPD() const override final { return _ipd; } glm::mat4 getEyeToHeadTransform(Eye eye) const override final { return _eyeOffsets[eye]; } glm::mat4 getEyeProjection(Eye eye, const glm::mat4& baseProjection) const override final { return _eyeProjections[eye]; } diff --git a/libraries/display-plugins/src/display-plugins/stereo/InterleavedStereoDisplayPlugin.h b/libraries/display-plugins/src/display-plugins/stereo/InterleavedStereoDisplayPlugin.h index debd340f24..4834e6c542 100644 --- a/libraries/display-plugins/src/display-plugins/stereo/InterleavedStereoDisplayPlugin.h +++ b/libraries/display-plugins/src/display-plugins/stereo/InterleavedStereoDisplayPlugin.h @@ -17,6 +17,8 @@ public: grouping getGrouping() const override { return ADVANCED; } glm::uvec2 getRecommendedRenderSize() const override; + virtual bool isHeadController() const override { return false; } + protected: // initialize OpenGL context settings needed by the plugin void customizeContext() override; diff --git a/libraries/display-plugins/src/display-plugins/stereo/SideBySideStereoDisplayPlugin.h b/libraries/display-plugins/src/display-plugins/stereo/SideBySideStereoDisplayPlugin.h index 79bf2a9ecb..aa65fc37e3 100644 --- a/libraries/display-plugins/src/display-plugins/stereo/SideBySideStereoDisplayPlugin.h +++ b/libraries/display-plugins/src/display-plugins/stereo/SideBySideStereoDisplayPlugin.h @@ -19,6 +19,8 @@ public: virtual grouping getGrouping() const override { return ADVANCED; } virtual glm::uvec2 getRecommendedRenderSize() const override; + virtual bool isHeadController() const override { return false; } + private: static const QString NAME; }; diff --git a/libraries/input-plugins/src/input-plugins/KeyboardMouseDevice.h b/libraries/input-plugins/src/input-plugins/KeyboardMouseDevice.h index 3570ec7193..a0e216c904 100644 --- a/libraries/input-plugins/src/input-plugins/KeyboardMouseDevice.h +++ b/libraries/input-plugins/src/input-plugins/KeyboardMouseDevice.h @@ -71,6 +71,7 @@ public: const QString getName() const override { return NAME; } bool isHandController() const override { return false; } + bool isHeadController() const override { return false; } void pluginFocusOutEvent() override { _inputDevice->focusOutEvent(); } void pluginUpdate(float deltaTime, const controller::InputCalibrationData& inputCalibrationData) override; diff --git a/libraries/input-plugins/src/input-plugins/TouchscreenDevice.h b/libraries/input-plugins/src/input-plugins/TouchscreenDevice.h index 65e771e8f0..926f9dbdca 100644 --- a/libraries/input-plugins/src/input-plugins/TouchscreenDevice.h +++ b/libraries/input-plugins/src/input-plugins/TouchscreenDevice.h @@ -40,6 +40,7 @@ public: virtual const QString getName() const override { return NAME; } bool isHandController() const override { return false; } + bool isHeadController() const override { return false; } virtual void pluginFocusOutEvent() override { _inputDevice->focusOutEvent(); } virtual void pluginUpdate(float deltaTime, const controller::InputCalibrationData& inputCalibrationData) override; diff --git a/libraries/plugins/src/plugins/DisplayPlugin.h b/libraries/plugins/src/plugins/DisplayPlugin.h index 754c919fd4..549387b6a4 100644 --- a/libraries/plugins/src/plugins/DisplayPlugin.h +++ b/libraries/plugins/src/plugins/DisplayPlugin.h @@ -135,6 +135,7 @@ public: virtual int getRequiredThreadCount() const { return 0; } virtual bool isHmd() const { return false; } + virtual bool isHeadController() const = 0; virtual int getHmdScreen() const { return -1; } /// By default, all HMDs are stereo virtual bool isStereo() const { return isHmd(); } diff --git a/libraries/plugins/src/plugins/InputPlugin.h b/libraries/plugins/src/plugins/InputPlugin.h index 0db0b24420..0519ed776d 100644 --- a/libraries/plugins/src/plugins/InputPlugin.h +++ b/libraries/plugins/src/plugins/InputPlugin.h @@ -25,5 +25,6 @@ public: // If an input plugin is only a single device, it will only return it's primary name. virtual QStringList getSubdeviceNames() { return { getName() }; }; virtual bool isHandController() const = 0; + virtual bool isHeadController() const = 0; }; diff --git a/libraries/plugins/src/plugins/PluginUtils.cpp b/libraries/plugins/src/plugins/PluginUtils.cpp index 20dc011f25..4af77156e7 100644 --- a/libraries/plugins/src/plugins/PluginUtils.cpp +++ b/libraries/plugins/src/plugins/PluginUtils.cpp @@ -24,6 +24,20 @@ bool PluginUtils::isHMDAvailable(const QString& pluginName) { return false; } +bool PluginUtils::isHeadControllerAvailable(const QString& pluginName) { + for (auto& inputPlugin : PluginManager::getInstance()->getInputPlugins()) { + if (inputPlugin->isHeadController() && (pluginName.isEmpty() || inputPlugin->getName() == pluginName)) { + return true; + } + } + for (auto& displayPlugin : PluginManager::getInstance()->getDisplayPlugins()) { + if (displayPlugin->isHeadController() && (pluginName.isEmpty() || displayPlugin->getName() == pluginName)) { + return true; + } + } + return false; +}; + bool PluginUtils::isHandControllerAvailable(const QString& pluginName) { for (auto& inputPlugin : PluginManager::getInstance()->getInputPlugins()) { if (inputPlugin->isHandController() && (pluginName.isEmpty() || inputPlugin->getName() == pluginName)) { diff --git a/libraries/plugins/src/plugins/PluginUtils.h b/libraries/plugins/src/plugins/PluginUtils.h index 351c9e7e58..2b6206fe63 100644 --- a/libraries/plugins/src/plugins/PluginUtils.h +++ b/libraries/plugins/src/plugins/PluginUtils.h @@ -16,6 +16,7 @@ class PluginUtils { public: static bool isHMDAvailable(const QString& pluginName = ""); static bool isHandControllerAvailable(const QString& pluginName = ""); + static bool isHeadControllerAvailable(const QString& pluginName = ""); static bool isSubdeviceContainingNameAvailable(QString name); static bool isViveControllerAvailable(); static bool isOculusTouchControllerAvailable(); diff --git a/plugins/hifiKinect/src/KinectPlugin.cpp b/plugins/hifiKinect/src/KinectPlugin.cpp index 3a36be0982..834ee1ea2e 100644 --- a/plugins/hifiKinect/src/KinectPlugin.cpp +++ b/plugins/hifiKinect/src/KinectPlugin.cpp @@ -273,7 +273,19 @@ bool KinectPlugin::activate() { return false; } -bool KinectPlugin::isHandController() const { +bool KinectPlugin::isHandController() const { + bool sensorAvailable = false; +#ifdef HAVE_KINECT + if (_kinectSensor) { + BOOLEAN sensorIsAvailable = FALSE; + HRESULT hr = _kinectSensor->get_IsAvailable(&sensorIsAvailable); + sensorAvailable = SUCCEEDED(hr) && (sensorIsAvailable == TRUE); + } +#endif + return _enabled && _initialized && sensorAvailable; +} + +bool KinectPlugin::isHeadController() const { bool sensorAvailable = false; #ifdef HAVE_KINECT if (_kinectSensor) { @@ -654,4 +666,4 @@ void KinectPlugin::InputDevice::clearState() { int poseIndex = KinectJointIndexToPoseIndex((KinectJointIndex)i); _poseStateMap[poseIndex] = controller::Pose(); } -} \ No newline at end of file +} diff --git a/plugins/hifiKinect/src/KinectPlugin.h b/plugins/hifiKinect/src/KinectPlugin.h index 158e66ee62..e8f0745200 100644 --- a/plugins/hifiKinect/src/KinectPlugin.h +++ b/plugins/hifiKinect/src/KinectPlugin.h @@ -43,6 +43,7 @@ class KinectPlugin : public InputPlugin { Q_OBJECT public: bool isHandController() const override; + bool isHeadController() const override; // Plugin functions virtual void init() override; diff --git a/plugins/hifiNeuron/src/NeuronPlugin.h b/plugins/hifiNeuron/src/NeuronPlugin.h index 43b27d14dd..41c2322465 100644 --- a/plugins/hifiNeuron/src/NeuronPlugin.h +++ b/plugins/hifiNeuron/src/NeuronPlugin.h @@ -26,6 +26,7 @@ public: friend void FrameDataReceivedCallback(void* context, void* sender, _BvhDataHeaderEx* header, float* data); bool isHandController() const override { return false; } + bool isHeadController() const override { return false; } // Plugin functions virtual void init() override; diff --git a/plugins/hifiSdl2/src/SDL2Manager.h b/plugins/hifiSdl2/src/SDL2Manager.h index 4501d0792b..d2bbe8265e 100644 --- a/plugins/hifiSdl2/src/SDL2Manager.h +++ b/plugins/hifiSdl2/src/SDL2Manager.h @@ -28,6 +28,7 @@ public: QStringList getSubdeviceNames() override; bool isHandController() const override { return false; } + bool isHeadController() const override { return false; } void init() override; void deinit() override; diff --git a/plugins/hifiSixense/src/SixenseManager.h b/plugins/hifiSixense/src/SixenseManager.h index 5237dba791..889f6c3bad 100644 --- a/plugins/hifiSixense/src/SixenseManager.h +++ b/plugins/hifiSixense/src/SixenseManager.h @@ -34,6 +34,7 @@ public: // Sixense always seems to initialize even if the hydras are not present. Is there // a way we can properly detect whether the hydras are present? bool isHandController() const override { return false; } + bool isHeadController() const override { return false; } virtual bool activate() override; virtual void deactivate() override; diff --git a/plugins/oculus/src/OculusControllerManager.h b/plugins/oculus/src/OculusControllerManager.h index 11d699ca8e..77b40d3764 100644 --- a/plugins/oculus/src/OculusControllerManager.h +++ b/plugins/oculus/src/OculusControllerManager.h @@ -28,6 +28,7 @@ public: const QString getName() const override { return NAME; } bool isHandController() const override { return _touch != nullptr; } + bool isHeadController() const override { return true; } QStringList getSubdeviceNames() override; bool activate() override; diff --git a/plugins/oculus/src/OculusDisplayPlugin.h b/plugins/oculus/src/OculusDisplayPlugin.h index 9209fd373e..a4978a984e 100644 --- a/plugins/oculus/src/OculusDisplayPlugin.h +++ b/plugins/oculus/src/OculusDisplayPlugin.h @@ -24,6 +24,8 @@ public: virtual QJsonObject getHardwareStats() const; + bool isHeadController() const override { return true; } + protected: QThread::Priority getPresentPriority() override { return QThread::TimeCriticalPriority; } diff --git a/plugins/openvr/src/OpenVrDisplayPlugin.h b/plugins/openvr/src/OpenVrDisplayPlugin.h index a60c21a606..9856c27c50 100644 --- a/plugins/openvr/src/OpenVrDisplayPlugin.h +++ b/plugins/openvr/src/OpenVrDisplayPlugin.h @@ -56,7 +56,9 @@ public: bool isKeyboardVisible() override; // Possibly needs an additional thread for VR submission - int getRequiredThreadCount() const override; + int getRequiredThreadCount() const override; + + bool isHeadController() const override { return true; } protected: bool internalActivate() override; diff --git a/plugins/openvr/src/ViveControllerManager.h b/plugins/openvr/src/ViveControllerManager.h index fa2566da45..d147573d7c 100644 --- a/plugins/openvr/src/ViveControllerManager.h +++ b/plugins/openvr/src/ViveControllerManager.h @@ -39,6 +39,7 @@ public: const QString getName() const override { return NAME; } bool isHandController() const override { return true; } + bool isHeadController() const override { return true; } bool activate() override; void deactivate() override; From 10408a0fe4a62b9d91bb78f2c81a6e1f3359e279 Mon Sep 17 00:00:00 2001 From: Liv Date: Thu, 25 May 2017 15:32:49 -0700 Subject: [PATCH 077/357] basic circle function to be used as base for torus --- libraries/render-utils/src/GeometryCache.cpp | 40 ++++++++++++++++++-- 1 file changed, 36 insertions(+), 4 deletions(-) diff --git a/libraries/render-utils/src/GeometryCache.cpp b/libraries/render-utils/src/GeometryCache.cpp index 11b330a9cf..4f86f64c96 100644 --- a/libraries/render-utils/src/GeometryCache.cpp +++ b/libraries/render-utils/src/GeometryCache.cpp @@ -332,6 +332,39 @@ void extrudePolygon(GeometryCache::ShapeData& shapeData, gpu::BufferPointer& ver shapeData.setupIndices(indexBuffer, solidIndices, wireIndices); } +void drawCircle(GeometryCache::ShapeData& shapeData, gpu::BufferPointer& vertexBuffer, gpu::BufferPointer& indexBuffer) { + // Draw a circle with radius 1/4th the size of the bounding box + using namespace geometry; + + Index baseVertex = (Index)(vertexBuffer->getSize() / SHAPE_VERTEX_STRIDE); + VertexVector vertices; + IndexVector solidIndices, wireIndices; + + std::vector shape = polygon<64>(); + for (const vec3& v : shape) { + vertices.push_back(vec3(v.x, 0, v.z)); + vertices.push_back(vec3(0, 0, 0)); + } + + for (uint32_t i = 2; i < 64; ++i) { + solidIndices.push_back(baseVertex + 0); + solidIndices.push_back(baseVertex + i); + solidIndices.push_back(baseVertex + i - 1); + solidIndices.push_back(baseVertex + 64); + solidIndices.push_back(baseVertex + i + 64 - 1); + solidIndices.push_back(baseVertex + i + 64); + } + for (uint32_t i = 1; i <= 64; ++i) { + wireIndices.push_back(baseVertex + (i % 64)); + wireIndices.push_back(baseVertex + i - 1); + wireIndices.push_back(baseVertex + (i % 64) + 64); + wireIndices.push_back(baseVertex + (i - 1) + 64); + } + + shapeData.setupVertices(vertexBuffer, vertices); + shapeData.setupIndices(indexBuffer, solidIndices, wireIndices); +} + // FIXME solids need per-face vertices, but smooth shaded // components do not. Find a way to support using draw elements // or draw arrays as appropriate @@ -384,13 +417,12 @@ void GeometryCache::buildShapes() { extrudePolygon<64>(_shapes[Cylinder], _shapeVertices, _shapeIndices); //Cone, extrudePolygon<64>(_shapes[Cone], _shapeVertices, _shapeIndices, true); - + //Circle + drawCircle(_shapes[Circle], _shapeVertices, _shapeIndices); // Not implememented yet: //Quad, //Circle, - //Torus, - - + //Torus, } gpu::Stream::FormatPointer& getSolidStreamFormat() { From 32b5ac50204239e6c693107f6fcaf7f464b3a936 Mon Sep 17 00:00:00 2001 From: seefo Date: Thu, 25 May 2017 16:10:53 -0700 Subject: [PATCH 078/357] Moved audio asset processing to a separate thread --- libraries/audio/src/Sound.cpp | 37 ++++++++++++++++++++++++----------- libraries/audio/src/Sound.h | 29 +++++++++++++++++++++++---- 2 files changed, 51 insertions(+), 15 deletions(-) diff --git a/libraries/audio/src/Sound.cpp b/libraries/audio/src/Sound.cpp index d6607424db..b48ea1fed7 100644 --- a/libraries/audio/src/Sound.cpp +++ b/libraries/audio/src/Sound.cpp @@ -13,6 +13,8 @@ #include +#include +#include #include #include #include @@ -53,9 +55,25 @@ Sound::Sound(const QUrl& url, bool isStereo, bool isAmbisonic) : } void Sound::downloadFinished(const QByteArray& data) { + SoundProcessor* soundProcessor = new SoundProcessor(_url, data, this); + QThreadPool::globalInstance()->start(soundProcessor); +} + +void Sound::setReady(bool isReady) { + if (isReady) { + finishedLoading(true); + _isReady = true; + emit ready(); + qCDebug(audio) << "Setting ready state for audio asset" << _url; + } +} + +void SoundProcessor::run() { // replace our byte array with the downloaded data - QByteArray rawAudioByteArray = QByteArray(data); - QString fileName = getURL().fileName().toLower(); + QByteArray rawAudioByteArray = QByteArray(_data); + QString fileName = _url.fileName().toLower(); + + //Sound* sound = dynamic_cast(_sound); static const QString WAV_EXTENSION = ".wav"; static const QString RAW_EXTENSION = ".raw"; @@ -63,28 +81,25 @@ void Sound::downloadFinished(const QByteArray& data) { QByteArray outputAudioByteArray; - int sampleRate = interpretAsWav(rawAudioByteArray, outputAudioByteArray); + int sampleRate = _sound->interpretAsWav(rawAudioByteArray, outputAudioByteArray); if (sampleRate != 0) { - downSample(outputAudioByteArray, sampleRate); + _sound->downSample(outputAudioByteArray, sampleRate); } } else if (fileName.endsWith(RAW_EXTENSION)) { // check if this was a stereo raw file // since it's raw the only way for us to know that is if the file was called .stereo.raw if (fileName.toLower().endsWith("stereo.raw")) { - _isStereo = true; - qCDebug(audio) << "Processing sound of" << rawAudioByteArray.size() << "bytes from" << getURL() << "as stereo audio file."; + _sound->setStereo(true); + qCDebug(audio) << "Processing sound of" << rawAudioByteArray.size() << "bytes from" << _url << "as stereo audio file."; } // Process as 48khz RAW file - downSample(rawAudioByteArray, 48000); + _sound->downSample(rawAudioByteArray, 48000); } else { qCDebug(audio) << "Unknown sound file type"; } - finishedLoading(true); - - _isReady = true; - emit ready(); + _sound->setReady(true); } void Sound::downSample(const QByteArray& rawAudioByteArray, int sampleRate) { diff --git a/libraries/audio/src/Sound.h b/libraries/audio/src/Sound.h index 37d5b40e95..6ec099b071 100644 --- a/libraries/audio/src/Sound.h +++ b/libraries/audio/src/Sound.h @@ -12,6 +12,7 @@ #ifndef hifi_Sound_h #define hifi_Sound_h +#include #include #include #include @@ -28,10 +29,15 @@ public: bool isAmbisonic() const { return _isAmbisonic; } bool isReady() const { return _isReady; } float getDuration() const { return _duration; } - const QByteArray& getByteArray() const { return _byteArray; } + void setStereo(bool stereo) { _isStereo = stereo; } + void setReady(bool ready); + + void downSample(const QByteArray& rawAudioByteArray, int sampleRate); + int interpretAsWav(const QByteArray& inputAudioByteArray, QByteArray& outputAudioByteArray); + signals: void ready(); @@ -42,12 +48,27 @@ private: bool _isReady; float _duration; // In seconds - void downSample(const QByteArray& rawAudioByteArray, int sampleRate); - int interpretAsWav(const QByteArray& inputAudioByteArray, QByteArray& outputAudioByteArray); - virtual void downloadFinished(const QByteArray& data) override; }; +class SoundProcessor : public QObject, public QRunnable { + Q_OBJECT + +public: + SoundProcessor(const QUrl& url, const QByteArray& data, Sound* sound) + : _url(url), _data(data), _sound(sound) + { + } + + virtual void run() override; + +private: + QUrl _url; + QByteArray _data; + Sound* _sound; + +}; + typedef QSharedPointer SharedSoundPointer; class SoundScriptingInterface : public QObject { From 905b5261d1a57bc1051b76d93735db487cabf58e Mon Sep 17 00:00:00 2001 From: howard-stearns Date: Thu, 25 May 2017 16:32:44 -0700 Subject: [PATCH 079/357] If collisions are enabled, turn them off in safeLanding, and restore. --- interface/src/avatar/MyAvatar.cpp | 13 ++++++++++++- interface/src/avatar/MyAvatar.h | 1 + 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index 808d2730a9..d72b96828a 100755 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -2180,6 +2180,10 @@ void MyAvatar::goToLocation(const glm::vec3& newPosition, emit transformChanged(); } +void MyAvatar::goToLocationAndEnableCollisions(const glm::vec3& position) { // See use case in safeLanding. + goToLocation(position); + QMetaObject::invokeMethod(this, "setCollisionsEnabled", Qt::QueuedConnection, Q_ARG(bool, true)); +} bool MyAvatar::safeLanding(const glm::vec3& position) { // Considers all collision hull or non-collisionless primitive intersections on a vertical line through the point. // There needs to be a "landing" if: @@ -2198,7 +2202,14 @@ bool MyAvatar::safeLanding(const glm::vec3& position) { // 2) My feeling is that this code is already at the limit of what can realistically be reviewed and maintained. auto direct = [&](const char* label) { // position is good to go, or at least, we cannot do better //qDebug() << "Already safe" << label << position; - goToLocation(position); // I.e., capsuleCenter - offset + if (!getCollisionsEnabled()) { + goToLocation(position); + } else { // If you try to go while stuck, physics will keep you stuck. + setCollisionsEnabled(false); + // Don't goToLocation just yet. Yield so that physics can act on the above. + QMetaObject::invokeMethod(this, "goToLocationAndEnableCollisions", Qt::QueuedConnection, // The equivalent of javascript nextTick + Q_ARG(glm::vec3, position)); // I.e., capsuleCenter - offset + } return false; }; auto halfHeight = _characterController.getCapsuleHalfHeight(); diff --git a/interface/src/avatar/MyAvatar.h b/interface/src/avatar/MyAvatar.h index b41483d761..00f2cdf6bd 100644 --- a/interface/src/avatar/MyAvatar.h +++ b/interface/src/avatar/MyAvatar.h @@ -506,6 +506,7 @@ public slots: bool hasOrientation = false, const glm::quat& newOrientation = glm::quat(), bool shouldFaceLocation = false); void goToLocation(const QVariant& properties); + void goToLocationAndEnableCollisions(const glm::vec3& newPosition); bool safeLanding(const glm::vec3& position); void restrictScaleFromDomainSettings(const QJsonObject& domainSettingsObject); From f25a9dcede2c455f8b4a65ecdf9c8b54bc1cb919 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Fri, 26 May 2017 13:01:19 +1200 Subject: [PATCH 080/357] Add entities to capture stopwatch button clicks --- .../marketplace/stopwatch/spawnStopwatch.js | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/unpublishedScripts/marketplace/stopwatch/spawnStopwatch.js b/unpublishedScripts/marketplace/stopwatch/spawnStopwatch.js index e72f949163..c4496865d9 100644 --- a/unpublishedScripts/marketplace/stopwatch/spawnStopwatch.js +++ b/unpublishedScripts/marketplace/stopwatch/spawnStopwatch.js @@ -43,6 +43,26 @@ var minuteHandID = Entities.addEntity({ modelURL: Script.resolvePath("models/Stopwatch-min-hand.fbx"), }); +var startStopButtonID = Entities.addEntity({ + type: "Shape", + shape: "Octagon", + name: "stopwatch/startStop", + parentID: stopwatchID, + dimensions: Vec3.multiply(scale, { x: 0.8, y: 1.0, z: 0.8 }), + localPosition: Vec3.multiply(scale, { x: 0, y: -0.1, z: -2.06 }), + localRotation: Quat.fromVec3Degrees({ x: 90, y: 0, z: 0 }), +}); + +var resetButtonID = Entities.addEntity({ + type: "Shape", + shape: "Octagon", + name: "stopwatch/startStop", + parentID: stopwatchID, + dimensions: Vec3.multiply(scale, { x: 0.6, y: 0.8, z: 0.6 }), + localPosition: Vec3.multiply(scale, { x: -1.5, y: -0.1, z: -1.2 }), + localRotation: Quat.fromVec3Degrees({ x: 90, y: 36, z: 0 }), +}); + Entities.editEntity(stopwatchID, { userData: JSON.stringify({ secondHandID: secondHandID, From b1280ff8101db033a996799124bc2ef13a1acbf7 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Fri, 26 May 2017 13:02:05 +1200 Subject: [PATCH 081/357] Implement start/stop and reset button actions --- .../marketplace/stopwatch/spawnStopwatch.js | 19 ++++++- .../marketplace/stopwatch/stopwatchReset.js | 22 ++++++++ .../marketplace/stopwatch/stopwatchServer.js | 50 ++++++++++++------- .../stopwatch/stopwatchStartStop.js | 23 +++++++++ 4 files changed, 93 insertions(+), 21 deletions(-) create mode 100644 unpublishedScripts/marketplace/stopwatch/stopwatchReset.js create mode 100644 unpublishedScripts/marketplace/stopwatch/stopwatchStartStop.js diff --git a/unpublishedScripts/marketplace/stopwatch/spawnStopwatch.js b/unpublishedScripts/marketplace/stopwatch/spawnStopwatch.js index c4496865d9..06f437478d 100644 --- a/unpublishedScripts/marketplace/stopwatch/spawnStopwatch.js +++ b/unpublishedScripts/marketplace/stopwatch/spawnStopwatch.js @@ -51,6 +51,7 @@ var startStopButtonID = Entities.addEntity({ dimensions: Vec3.multiply(scale, { x: 0.8, y: 1.0, z: 0.8 }), localPosition: Vec3.multiply(scale, { x: 0, y: -0.1, z: -2.06 }), localRotation: Quat.fromVec3Degrees({ x: 90, y: 0, z: 0 }), + visible: false }); var resetButtonID = Entities.addEntity({ @@ -61,15 +62,29 @@ var resetButtonID = Entities.addEntity({ dimensions: Vec3.multiply(scale, { x: 0.6, y: 0.8, z: 0.6 }), localPosition: Vec3.multiply(scale, { x: -1.5, y: -0.1, z: -1.2 }), localRotation: Quat.fromVec3Degrees({ x: 90, y: 36, z: 0 }), + visible: false }); Entities.editEntity(stopwatchID, { userData: JSON.stringify({ secondHandID: secondHandID, - minuteHandID: minuteHandID, + minuteHandID: minuteHandID }), - script: Script.resolvePath("stopwatchClient.js"), serverScripts: Script.resolvePath("stopwatchServer.js") }); +Entities.editEntity(startStopButtonID, { + userData: JSON.stringify({ + stopwatchID: stopwatchID + }), + script: Script.resolvePath("stopwatchStartStop.js") +}); + +Entities.editEntity(resetButtonID, { + userData: JSON.stringify({ + stopwatchID: stopwatchID + }), + script: Script.resolvePath("stopwatchReset.js") +}); + Script.stop() diff --git a/unpublishedScripts/marketplace/stopwatch/stopwatchReset.js b/unpublishedScripts/marketplace/stopwatch/stopwatchReset.js new file mode 100644 index 0000000000..b65c1e7340 --- /dev/null +++ b/unpublishedScripts/marketplace/stopwatch/stopwatchReset.js @@ -0,0 +1,22 @@ +// +// stopwatchReset.js +// +// Created by David Rowe on 26 May 2017. +// Copyright 2017 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +(function () { + this.preload = function (entityID) { + var properties = Entities.getEntityProperties(entityID, "userData"); + this.messageChannel = "STOPWATCH-" + JSON.parse(properties.userData).stopwatchID; + }; + function click() { + Messages.sendMessage(this.messageChannel, "reset"); + } + this.startNearTrigger = click; + this.startFarTrigger = click; + this.clickDownOnEntity = click; +}); diff --git a/unpublishedScripts/marketplace/stopwatch/stopwatchServer.js b/unpublishedScripts/marketplace/stopwatch/stopwatchServer.js index 925db565c3..6ae1b69087 100644 --- a/unpublishedScripts/marketplace/stopwatch/stopwatchServer.js +++ b/unpublishedScripts/marketplace/stopwatch/stopwatchServer.js @@ -13,6 +13,7 @@ self.equipped = false; self.isActive = false; + self.seconds = 0; self.secondHandID = null; self.minuteHandID = null; @@ -46,11 +47,19 @@ }; self.messageReceived = function(channel, message, sender) { print("Message received", channel, sender, message); - if (channel === self.messageChannel && message === 'click') { - if (self.isActive) { - self.resetTimer(); - } else { - self.startTimer(); + if (channel === self.messageChannel) { + switch (message) { + case "startStop": + if (self.isActive) { + self.stopTimer(); + } else { + self.startTimer(); + } + break; + case "reset": + self.stopTimer(); + self.resetTimer(); + break; } } }; @@ -58,14 +67,7 @@ return Entities.getEntityProperties(self.entityID, "position").position; }; self.resetTimer = function() { - print("Stopping stopwatch"); - if (self.tickInjector) { - self.tickInjector.stop(); - } - if (self.tickIntervalID !== null) { - Script.clearInterval(self.tickIntervalID); - self.tickIntervalID = null; - } + print("Resetting stopwatch"); Entities.editEntity(self.secondHandID, { localRotation: Quat.fromPitchYawRollDegrees(0, 0, 0), angularVelocity: { x: 0, y: 0, z: 0 }, @@ -74,7 +76,7 @@ localRotation: Quat.fromPitchYawRollDegrees(0, 0, 0), angularVelocity: { x: 0, y: 0, z: 0 }, }); - self.isActive = false; + self.seconds = 0; }; self.startTimer = function() { print("Starting stopwatch"); @@ -88,7 +90,6 @@ self.tickInjector.restart(); } - var seconds = 0; self.tickIntervalID = Script.setInterval(function() { if (self.tickInjector) { self.tickInjector.setOptions({ @@ -97,15 +98,15 @@ loop: true }); } - seconds++; + self.seconds++; const degreesPerTick = -360 / 60; Entities.editEntity(self.secondHandID, { - localRotation: Quat.fromPitchYawRollDegrees(0, seconds * degreesPerTick, 0), + localRotation: Quat.fromPitchYawRollDegrees(0, self.seconds * degreesPerTick, 0), }); - if (seconds % 60 == 0) { + if (self.seconds % 60 == 0) { Entities.editEntity(self.minuteHandID, { - localRotation: Quat.fromPitchYawRollDegrees(0, (seconds / 60) * degreesPerTick, 0), + localRotation: Quat.fromPitchYawRollDegrees(0, (self.seconds / 60) * degreesPerTick, 0), }); Audio.playSound(self.chimeSound, { position: self.getStopwatchPosition(), @@ -117,4 +118,15 @@ self.isActive = true; }; + self.stopTimer = function () { + print("Stopping stopwatch"); + if (self.tickInjector) { + self.tickInjector.stop(); + } + if (self.tickIntervalID !== null) { + Script.clearInterval(self.tickIntervalID); + self.tickIntervalID = null; + } + self.isActive = false; + }; }); diff --git a/unpublishedScripts/marketplace/stopwatch/stopwatchStartStop.js b/unpublishedScripts/marketplace/stopwatch/stopwatchStartStop.js new file mode 100644 index 0000000000..88c037ee36 --- /dev/null +++ b/unpublishedScripts/marketplace/stopwatch/stopwatchStartStop.js @@ -0,0 +1,23 @@ +// +// stopwatchStartStop.js +// +// Created by David Rowe on 26 May 2017. +// Copyright 2017 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +(function () { + var messageChannel; + this.preload = function (entityID) { + var properties = Entities.getEntityProperties(entityID, "userData"); + this.messageChannel = "STOPWATCH-" + JSON.parse(properties.userData).stopwatchID; + }; + function click() { + Messages.sendMessage(this.messageChannel, "startStop"); + } + this.startNearTrigger = click; + this.startFarTrigger = click; + this.clickDownOnEntity = click; +}); From 8a659955ccc314778afd064bd01fa1d4baf136fe Mon Sep 17 00:00:00 2001 From: David Rowe Date: Fri, 26 May 2017 13:02:26 +1200 Subject: [PATCH 082/357] Delete old script --- .../marketplace/stopwatch/stopwatchClient.js | 22 ------------------- 1 file changed, 22 deletions(-) delete mode 100644 unpublishedScripts/marketplace/stopwatch/stopwatchClient.js diff --git a/unpublishedScripts/marketplace/stopwatch/stopwatchClient.js b/unpublishedScripts/marketplace/stopwatch/stopwatchClient.js deleted file mode 100644 index 6284b86102..0000000000 --- a/unpublishedScripts/marketplace/stopwatch/stopwatchClient.js +++ /dev/null @@ -1,22 +0,0 @@ -// -// stopwatchServer.js -// -// Created by Ryan Huffman on 1/20/17. -// Copyright 2017 High Fidelity, Inc. -// -// Distributed under the Apache License, Version 2.0. -// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html -// - -(function() { - var messageChannel; - this.preload = function(entityID) { - this.messageChannel = "STOPWATCH-" + entityID; - }; - function click() { - Messages.sendMessage(this.messageChannel, 'click'); - } - this.startNearTrigger = click; - this.startFarTrigger = click; - this.clickDownOnEntity = click; -}); From 8d9cfbdf31a97aab13c46966be0657ae85be1aa3 Mon Sep 17 00:00:00 2001 From: volansystech Date: Fri, 26 May 2017 11:14:50 +0530 Subject: [PATCH 083/357] Resolve comments of @sethalves . Remove whitespaces. --- interface/src/ui/overlays/Web3DOverlay.cpp | 56 +++++++++++----------- 1 file changed, 27 insertions(+), 29 deletions(-) diff --git a/interface/src/ui/overlays/Web3DOverlay.cpp b/interface/src/ui/overlays/Web3DOverlay.cpp index bfb5291170..75c793bf77 100644 --- a/interface/src/ui/overlays/Web3DOverlay.cpp +++ b/interface/src/ui/overlays/Web3DOverlay.cpp @@ -385,17 +385,17 @@ void Web3DOverlay::handlePointerEventAsTouch(const PointerEvent& event) { case PointerEvent::Press: touchType = QEvent::TouchBegin; touchPointState = Qt::TouchPointPressed; - mouseType = QEvent::MouseButtonPress; + mouseType = QEvent::MouseButtonPress; break; case PointerEvent::Release: touchType = QEvent::TouchEnd; touchPointState = Qt::TouchPointReleased; - mouseType = QEvent::MouseButtonRelease; + mouseType = QEvent::MouseButtonRelease; break; case PointerEvent::Move: touchType = QEvent::TouchUpdate; touchPointState = Qt::TouchPointMoved; - mouseType = QEvent::MouseMove; + mouseType = QEvent::MouseMove; if (((event.getButtons() & PointerEvent::PrimaryButton) > 0) != this->_pressed) { // Mouse was pressed/released while off the overlay; convert touch and mouse events to press/release to reflect @@ -404,12 +404,12 @@ void Web3DOverlay::handlePointerEventAsTouch(const PointerEvent& event) { if (this->_pressed) { touchType = QEvent::TouchBegin; touchPointState = Qt::TouchPointPressed; - mouseType = QEvent::MouseButtonPress; + mouseType = QEvent::MouseButtonPress; } else { touchType = QEvent::TouchEnd; touchPointState = Qt::TouchPointReleased; - mouseType = QEvent::MouseButtonRelease; + mouseType = QEvent::MouseButtonRelease; } button = Qt::LeftButton; @@ -427,34 +427,32 @@ void Web3DOverlay::handlePointerEventAsTouch(const PointerEvent& event) { event.getButtons() == PointerEvent::SecondaryButton) { return; } - - QTouchEvent::TouchPoint point; - point.setId(event.getID()); - point.setState(touchPointState); - point.setPos(windowPoint); - point.setScreenPos(windowPoint); - QList touchPoints; - touchPoints.push_back(point); - QTouchEvent* touchEvent = new QTouchEvent(touchType, &_touchDevice, event.getKeyboardModifiers()); - touchEvent->setWindow(_webSurface->getWindow()); - touchEvent->setTarget(_webSurface->getRootItem()); - touchEvent->setTouchPoints(touchPoints); - touchEvent->setTouchPointStates(touchPointState); + QTouchEvent::TouchPoint point; + point.setId(event.getID()); + point.setState(touchPointState); + point.setPos(windowPoint); + point.setScreenPos(windowPoint); + QList touchPoints; + touchPoints.push_back(point); - QCoreApplication::postEvent(_webSurface->getWindow(), touchEvent); - - if (this->_pressed && event.getType() == PointerEvent::Move) { - return; - } + QTouchEvent* touchEvent = new QTouchEvent(touchType, &_touchDevice, event.getKeyboardModifiers()); + touchEvent->setWindow(_webSurface->getWindow()); + touchEvent->setTarget(_webSurface->getRootItem()); + touchEvent->setTouchPoints(touchPoints); + touchEvent->setTouchPointStates(touchPointState); - // Send mouse events to the Web surface so that HTML dialog elements work with mouse press and hover. - // FIXME: Scroll bar dragging is a bit unstable in the tablet (content can jump up and down at times). - // This may be improved in Qt 5.8. Release notes: "Cleaned up touch and mouse event delivery". + QCoreApplication::postEvent(_webSurface->getWindow(), touchEvent); - QMouseEvent* mouseEvent = new QMouseEvent(mouseType, windowPoint, windowPoint, windowPoint, button, buttons, Qt::NoModifier); - QCoreApplication::postEvent(_webSurface->getWindow(), mouseEvent); - + if (this->_pressed && event.getType() == PointerEvent::Move) { + return; + } + // Send mouse events to the Web surface so that HTML dialog elements work with mouse press and hover. + // FIXME: Scroll bar dragging is a bit unstable in the tablet (content can jump up and down at times). + // This may be improved in Qt 5.8. Release notes: "Cleaned up touch and mouse event delivery". + + QMouseEvent* mouseEvent = new QMouseEvent(mouseType, windowPoint, windowPoint, windowPoint, button, buttons, Qt::NoModifier); + QCoreApplication::postEvent(_webSurface->getWindow(), mouseEvent); } void Web3DOverlay::handlePointerEventAsMouse(const PointerEvent& event) { From 90d5b2a6d45671b64dd3fdcfd887880573aff3b0 Mon Sep 17 00:00:00 2001 From: seefo Date: Fri, 26 May 2017 10:26:32 -0700 Subject: [PATCH 084/357] Removed SoundProcessor's dependence on Sound objects --- libraries/audio/src/Sound.cpp | 62 +++++++++++++++++++++-------------- libraries/audio/src/Sound.h | 26 +++++++++------ 2 files changed, 54 insertions(+), 34 deletions(-) diff --git a/libraries/audio/src/Sound.cpp b/libraries/audio/src/Sound.cpp index b48ea1fed7..5ac9f8f53d 100644 --- a/libraries/audio/src/Sound.cpp +++ b/libraries/audio/src/Sound.cpp @@ -51,67 +51,81 @@ Sound::Sound(const QUrl& url, bool isStereo, bool isAmbisonic) : _isAmbisonic(isAmbisonic), _isReady(false) { - } void Sound::downloadFinished(const QByteArray& data) { - SoundProcessor* soundProcessor = new SoundProcessor(_url, data, this); + // this is a QRunnable, will delete itself after it has finished running + SoundProcessor* soundProcessor = new SoundProcessor(_url, data, _isStereo, _isAmbisonic); + connect(soundProcessor, SIGNAL(onSuccess(QByteArray, bool, bool, float)), SLOT(soundProcessSuccess(QByteArray, bool, bool, float))); + connect(soundProcessor, SIGNAL(onError(int, QString)), SLOT(soundProcessError(int, QString))); QThreadPool::globalInstance()->start(soundProcessor); } -void Sound::setReady(bool isReady) { - if (isReady) { - finishedLoading(true); - _isReady = true; - emit ready(); - qCDebug(audio) << "Setting ready state for audio asset" << _url; - } +void Sound::soundProcessSuccess(QByteArray data, bool stereo, bool ambisonic, float duration) { + + qCDebug(audio) << "Setting ready state for sound file" << _url.toDisplayString(); + + _byteArray = data; + _isStereo = stereo; + _isAmbisonic = ambisonic; + _duration = duration; + _isReady = true; + finishedLoading(true); + + emit ready(); +} + +void Sound::soundProcessError(int error, QString str) { + qCCritical(audio) << "Failed to process sound file" << _url.toDisplayString() << "code =" << error << str; + emit failed(QNetworkReply::UnknownContentError); + finishedLoading(false); } void SoundProcessor::run() { + + qCDebug(audio) << "Processing sound file" << _url.toDisplayString(); + // replace our byte array with the downloaded data QByteArray rawAudioByteArray = QByteArray(_data); QString fileName = _url.fileName().toLower(); - //Sound* sound = dynamic_cast(_sound); - static const QString WAV_EXTENSION = ".wav"; static const QString RAW_EXTENSION = ".raw"; if (fileName.endsWith(WAV_EXTENSION)) { QByteArray outputAudioByteArray; - int sampleRate = _sound->interpretAsWav(rawAudioByteArray, outputAudioByteArray); + int sampleRate = interpretAsWav(rawAudioByteArray, outputAudioByteArray); if (sampleRate != 0) { - _sound->downSample(outputAudioByteArray, sampleRate); + downSample(outputAudioByteArray, sampleRate); } } else if (fileName.endsWith(RAW_EXTENSION)) { // check if this was a stereo raw file // since it's raw the only way for us to know that is if the file was called .stereo.raw if (fileName.toLower().endsWith("stereo.raw")) { - _sound->setStereo(true); + _isStereo = true; qCDebug(audio) << "Processing sound of" << rawAudioByteArray.size() << "bytes from" << _url << "as stereo audio file."; } // Process as 48khz RAW file - _sound->downSample(rawAudioByteArray, 48000); + downSample(rawAudioByteArray, 48000); } else { qCDebug(audio) << "Unknown sound file type"; + emit onError(300, "Failed to load sound file, reason: unknown sound file type"); + return; } - _sound->setReady(true); + emit onSuccess(_data, _isStereo, _isAmbisonic, _duration); } -void Sound::downSample(const QByteArray& rawAudioByteArray, int sampleRate) { +void SoundProcessor::downSample(const QByteArray& rawAudioByteArray, int sampleRate) { // we want to convert it to the format that the audio-mixer wants // which is signed, 16-bit, 24Khz if (sampleRate == AudioConstants::SAMPLE_RATE) { - // no resampling needed - _byteArray = rawAudioByteArray; - + _data = rawAudioByteArray; } else { int numChannels = _isAmbisonic ? AudioConstants::AMBISONIC : (_isStereo ? AudioConstants::STEREO : AudioConstants::MONO); @@ -121,15 +135,15 @@ void Sound::downSample(const QByteArray& rawAudioByteArray, int sampleRate) { int numSourceFrames = rawAudioByteArray.size() / (numChannels * sizeof(AudioConstants::AudioSample)); int maxDestinationFrames = resampler.getMaxOutput(numSourceFrames); int maxDestinationBytes = maxDestinationFrames * numChannels * sizeof(AudioConstants::AudioSample); - _byteArray.resize(maxDestinationBytes); + _data.resize(maxDestinationBytes); int numDestinationFrames = resampler.render((int16_t*)rawAudioByteArray.data(), - (int16_t*)_byteArray.data(), + (int16_t*)_data.data(), numSourceFrames); // truncate to actual output int numDestinationBytes = numDestinationFrames * numChannels * sizeof(AudioConstants::AudioSample); - _byteArray.resize(numDestinationBytes); + _data.resize(numDestinationBytes); } } @@ -178,7 +192,7 @@ struct WAVEFormat { }; // returns wavfile sample rate, used for resampling -int Sound::interpretAsWav(const QByteArray& inputAudioByteArray, QByteArray& outputAudioByteArray) { +int SoundProcessor::interpretAsWav(const QByteArray& inputAudioByteArray, QByteArray& outputAudioByteArray) { // Create a data stream to analyze the data QDataStream waveStream(const_cast(&inputAudioByteArray), QIODevice::ReadOnly); diff --git a/libraries/audio/src/Sound.h b/libraries/audio/src/Sound.h index 6ec099b071..43a4eb7685 100644 --- a/libraries/audio/src/Sound.h +++ b/libraries/audio/src/Sound.h @@ -32,14 +32,12 @@ public: const QByteArray& getByteArray() const { return _byteArray; } - void setStereo(bool stereo) { _isStereo = stereo; } - void setReady(bool ready); - - void downSample(const QByteArray& rawAudioByteArray, int sampleRate); - int interpretAsWav(const QByteArray& inputAudioByteArray, QByteArray& outputAudioByteArray); - signals: void ready(); + +protected slots: + void soundProcessSuccess(QByteArray data, bool stereo, bool ambisonic, float duration); + void soundProcessError(int error, QString str); private: QByteArray _byteArray; @@ -55,18 +53,26 @@ class SoundProcessor : public QObject, public QRunnable { Q_OBJECT public: - SoundProcessor(const QUrl& url, const QByteArray& data, Sound* sound) - : _url(url), _data(data), _sound(sound) + SoundProcessor(const QUrl& url, const QByteArray& data, const bool stereo, const bool ambisonic) + : _url(url), _data(data), _isStereo(stereo), _isAmbisonic(ambisonic) { } virtual void run() override; + void downSample(const QByteArray& rawAudioByteArray, int sampleRate); + int interpretAsWav(const QByteArray& inputAudioByteArray, QByteArray& outputAudioByteArray); + +signals: + void onSuccess(QByteArray data, bool stereo, bool ambisonic, float duration); + void onError(int error, QString str); + private: QUrl _url; QByteArray _data; - Sound* _sound; - + bool _isStereo; + bool _isAmbisonic; + float _duration; }; typedef QSharedPointer SharedSoundPointer; From 2808ab4865611a1d01ca966f105c0939c5eb999b Mon Sep 17 00:00:00 2001 From: Liv Date: Fri, 26 May 2017 10:45:29 -0700 Subject: [PATCH 085/357] Sort of making progress on torus vertex buffer --- libraries/render-utils/src/GeometryCache.cpp | 49 +++++++++++++++++++- 1 file changed, 48 insertions(+), 1 deletion(-) diff --git a/libraries/render-utils/src/GeometryCache.cpp b/libraries/render-utils/src/GeometryCache.cpp index 4f86f64c96..e59046c14a 100644 --- a/libraries/render-utils/src/GeometryCache.cpp +++ b/libraries/render-utils/src/GeometryCache.cpp @@ -365,6 +365,52 @@ void drawCircle(GeometryCache::ShapeData& shapeData, gpu::BufferPointer& vertexB shapeData.setupIndices(indexBuffer, solidIndices, wireIndices); } +template +void drawTorus(GeometryCache::ShapeData& shapeData, gpu::BufferPointer& vertexBuffer, gpu::BufferPointer& indexBuffer) { + using namespace geometry; + Index baseVertex = (Index)(vertexBuffer->getSize() / SHAPE_VERTEX_STRIDE); + VertexVector vertices; + IndexVector solidIndices, wireIndices; + + float MAJOR_RADIUS = 0.75f; + float MINOR_RADIUS = 0.25f; + + // Minor segments + for (uint32_t j = 0; j < sMinor; j++) { + // Major segments + for (uint32_t i = 0; i < sMajor; i++) { + float_t u = float_t(i) / float_t(sMajor) * M_PI * 2; + float_t v = float_t(j + u) / float_t(sMinor) * M_PI * 2; + + vec3 vertex((MAJOR_RADIUS + MINOR_RADIUS * glm::cos(v)) * glm::cos(u), + (MAJOR_RADIUS + MINOR_RADIUS * glm::cos(v)) * glm::sin(u), + MINOR_RADIUS * glm::sin(v)); + + vertices.push_back(vertex); + } + } + + for (uint32_t x = 1; x <= sMinor; x++) { + for (uint32_t y = 1; y <= sMajor; y++) { + uint32_t a = (sMajor) * x + y - 1; + uint32_t b = (sMajor) * (x - 1) + y - 1; + uint32_t c = (sMajor) * (x - 1) + y; + uint32_t d = (sMajor) * x + y; + + solidIndices.push_back(a); + solidIndices.push_back(b); + solidIndices.push_back(d); + solidIndices.push_back(b); + solidIndices.push_back(c); + solidIndices.push_back(d); + + } + } + + shapeData.setupVertices(vertexBuffer, vertices); + shapeData.setupIndices(indexBuffer, solidIndices, wireIndices); +} + // FIXME solids need per-face vertices, but smooth shaded // components do not. Find a way to support using draw elements // or draw arrays as appropriate @@ -422,7 +468,8 @@ void GeometryCache::buildShapes() { // Not implememented yet: //Quad, //Circle, - //Torus, + //Torus, + drawTorus<6, 4>(_shapes[Torus], _shapeVertices, _shapeIndices); } gpu::Stream::FormatPointer& getSolidStreamFormat() { From cc57d28cccf1080b723317ee4bcbd81b46308ef4 Mon Sep 17 00:00:00 2001 From: seefo Date: Fri, 26 May 2017 11:39:47 -0700 Subject: [PATCH 086/357] Made requested changes to PR10554 --- libraries/audio/src/Sound.cpp | 4 ++-- libraries/audio/src/Sound.h | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/libraries/audio/src/Sound.cpp b/libraries/audio/src/Sound.cpp index 5ac9f8f53d..476a8d4d88 100644 --- a/libraries/audio/src/Sound.cpp +++ b/libraries/audio/src/Sound.cpp @@ -56,8 +56,8 @@ Sound::Sound(const QUrl& url, bool isStereo, bool isAmbisonic) : void Sound::downloadFinished(const QByteArray& data) { // this is a QRunnable, will delete itself after it has finished running SoundProcessor* soundProcessor = new SoundProcessor(_url, data, _isStereo, _isAmbisonic); - connect(soundProcessor, SIGNAL(onSuccess(QByteArray, bool, bool, float)), SLOT(soundProcessSuccess(QByteArray, bool, bool, float))); - connect(soundProcessor, SIGNAL(onError(int, QString)), SLOT(soundProcessError(int, QString))); + connect(soundProcessor, &SoundProcessor::onSuccess, this, &Sound::soundProcessSuccess); + connect(soundProcessor, &SoundProcessor::onError, this, &Sound::soundProcessError); QThreadPool::globalInstance()->start(soundProcessor); } diff --git a/libraries/audio/src/Sound.h b/libraries/audio/src/Sound.h index 43a4eb7685..69dbf5a913 100644 --- a/libraries/audio/src/Sound.h +++ b/libraries/audio/src/Sound.h @@ -53,7 +53,7 @@ class SoundProcessor : public QObject, public QRunnable { Q_OBJECT public: - SoundProcessor(const QUrl& url, const QByteArray& data, const bool stereo, const bool ambisonic) + SoundProcessor(const QUrl& url, const QByteArray& data, bool stereo, bool ambisonic) : _url(url), _data(data), _isStereo(stereo), _isAmbisonic(ambisonic) { } From fa003b0c14bddfef711f175dcd629525ce3b2f29 Mon Sep 17 00:00:00 2001 From: Andrew Meadows Date: Fri, 26 May 2017 12:29:37 -0700 Subject: [PATCH 087/357] swap order of changes and deactvations --- interface/src/Application.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 2fe8677e1e..71efbd52f3 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -4485,12 +4485,13 @@ void Application::update(float deltaTime) { getEntities()->getTree()->withWriteLock([&] { PerformanceTimer perfTimer("handleOutgoingChanges"); - const VectorOfMotionStates& deactivations = _physicsEngine->getDeactivatedMotionStates(); - _entitySimulation->handleDeactivatedMotionStates(deactivations); const VectorOfMotionStates& outgoingChanges = _physicsEngine->getChangedMotionStates(); _entitySimulation->handleChangedMotionStates(outgoingChanges); avatarManager->handleChangedMotionStates(outgoingChanges); + + const VectorOfMotionStates& deactivations = _physicsEngine->getDeactivatedMotionStates(); + _entitySimulation->handleDeactivatedMotionStates(deactivations); }); if (!_aboutToQuit) { From 64191ee20ac4eac47943232c961ff50fb8eabe64 Mon Sep 17 00:00:00 2001 From: Zach Fox Date: Tue, 23 May 2017 10:11:16 -0700 Subject: [PATCH 088/357] Make the changes - big thanks to Andrew! --- libraries/entities-renderer/src/EntityTreeRenderer.cpp | 9 ++++++--- libraries/entities/src/EntityItemProperties.cpp | 7 ++++++- libraries/entities/src/EntityItemProperties.h | 1 + libraries/entities/src/EntityScriptingInterface.cpp | 10 ++++++---- 4 files changed, 19 insertions(+), 8 deletions(-) diff --git a/libraries/entities-renderer/src/EntityTreeRenderer.cpp b/libraries/entities-renderer/src/EntityTreeRenderer.cpp index 09308baabb..d62181c651 100644 --- a/libraries/entities-renderer/src/EntityTreeRenderer.cpp +++ b/libraries/entities-renderer/src/EntityTreeRenderer.cpp @@ -1091,15 +1091,18 @@ void EntityTreeRenderer::entityCollisionWithEntity(const EntityItemID& idA, cons // trigger scripted collision sounds and events for locally owned objects EntityItemPointer entityA = entityTree->findEntityByEntityItemID(idA); - if ((bool)entityA && myNodeID == entityA->getSimulatorID()) { + EntityItemPointer entityB = entityTree->findEntityByEntityItemID(idB); + QUuid entityASimulatorID = entityA->getSimulatorID(); + QUuid entityBSimulatorID = entityB->getSimulatorID(); + if ((bool)entityA && (myNodeID == entityASimulatorID || ((bool)entityB && myNodeID == entityBSimulatorID && entityASimulatorID.isNull()))) { playEntityCollisionSound(entityA, collision); emit collisionWithEntity(idA, idB, collision); if (_entitiesScriptEngine) { _entitiesScriptEngine->callEntityScriptMethod(idA, "collisionWithEntity", idB, collision); } } - EntityItemPointer entityB = entityTree->findEntityByEntityItemID(idB); - if ((bool)entityB && myNodeID == entityB->getSimulatorID()) { + + if ((bool)entityB && (myNodeID == entityBSimulatorID || ((bool)entityA && myNodeID == entityASimulatorID && entityBSimulatorID.isNull()))) { playEntityCollisionSound(entityB, collision); // since we're swapping A and B we need to send the inverted collision Collision invertedCollision(collision); diff --git a/libraries/entities/src/EntityItemProperties.cpp b/libraries/entities/src/EntityItemProperties.cpp index 1ed020e592..4595ebf70d 100644 --- a/libraries/entities/src/EntityItemProperties.cpp +++ b/libraries/entities/src/EntityItemProperties.cpp @@ -1824,10 +1824,15 @@ bool EntityItemProperties::hasTerseUpdateChanges() const { return _positionChanged || _velocityChanged || _rotationChanged || _angularVelocityChanged || _accelerationChanged; } +bool EntityItemProperties::hasDynamicPhysicsChanges() const { + return _dynamicChanged || _velocityChanged || _angularVelocityChanged || _accelerationChanged; +} + bool EntityItemProperties::hasMiscPhysicsChanges() const { return _gravityChanged || _dimensionsChanged || _densityChanged || _frictionChanged || _restitutionChanged || _dampingChanged || _angularDampingChanged || _registrationPointChanged || - _compoundShapeURLChanged || _dynamicChanged || _collisionlessChanged || _collisionMaskChanged; + _compoundShapeURLChanged || _collisionlessChanged || _collisionMaskChanged || + _rotationChanged || _positionChanged; } void EntityItemProperties::clearSimulationOwner() { diff --git a/libraries/entities/src/EntityItemProperties.h b/libraries/entities/src/EntityItemProperties.h index 590298e102..697c634c67 100644 --- a/libraries/entities/src/EntityItemProperties.h +++ b/libraries/entities/src/EntityItemProperties.h @@ -274,6 +274,7 @@ public: void setCreated(QDateTime& v); bool hasTerseUpdateChanges() const; + bool hasDynamicPhysicsChanges() const; bool hasMiscPhysicsChanges() const; void clearSimulationOwner(); diff --git a/libraries/entities/src/EntityScriptingInterface.cpp b/libraries/entities/src/EntityScriptingInterface.cpp index b184d648da..367343cb60 100644 --- a/libraries/entities/src/EntityScriptingInterface.cpp +++ b/libraries/entities/src/EntityScriptingInterface.cpp @@ -414,15 +414,17 @@ QUuid EntityScriptingInterface::editEntity(QUuid id, const EntityItemProperties& entityFound = true; // make sure the properties has a type, so that the encode can know which properties to include properties.setType(entity->getType()); - bool hasTerseUpdateChanges = properties.hasTerseUpdateChanges(); - bool hasPhysicsChanges = properties.hasMiscPhysicsChanges() || hasTerseUpdateChanges; - if (_bidOnSimulationOwnership && hasPhysicsChanges) { + bool hasMiscPhysicsChanges = properties.hasMiscPhysicsChanges(); + bool hasDynamicsChanges = properties.hasDynamicPhysicsChanges(); + // _bidOnSimulationOwnership is set per-instance of the scripting interface. + // It essentially corresponds to "Am I an AC or an Interface client?" - ACs will never bid. + if ((_bidOnSimulationOwnership && ((hasMiscPhysicsChanges && entity->isMoving()) || hasDynamicsChanges))) { auto nodeList = DependencyManager::get(); const QUuid myNodeID = nodeList->getSessionUUID(); if (entity->getSimulatorID() == myNodeID) { // we think we already own the simulation, so make sure to send ALL TerseUpdate properties - if (hasTerseUpdateChanges) { + if (properties.hasTerseUpdateChanges()) { entity->getAllTerseUpdateProperties(properties); } // TODO: if we knew that ONLY TerseUpdate properties have changed in properties AND the object From 827daade1b140c7dbfc142c6116a2fc2d931359e Mon Sep 17 00:00:00 2001 From: Zach Fox Date: Tue, 23 May 2017 12:50:43 -0700 Subject: [PATCH 089/357] Make this PR a protocol change --- libraries/networking/src/udt/PacketHeaders.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libraries/networking/src/udt/PacketHeaders.h b/libraries/networking/src/udt/PacketHeaders.h index f88015a4e4..0dbbcd771f 100644 --- a/libraries/networking/src/udt/PacketHeaders.h +++ b/libraries/networking/src/udt/PacketHeaders.h @@ -114,7 +114,8 @@ public: EntityServerScriptLog, AdjustAvatarSorting, OctreeFileReplacement, - LAST_PACKET_TYPE = OctreeFileReplacement + SimulationBiddingChanges, + LAST_PACKET_TYPE = SimulationBiddingChanges }; }; From 8dec066c2bba98b8d02b88afa057c0c22a97ccfa Mon Sep 17 00:00:00 2001 From: Zach Fox Date: Tue, 23 May 2017 14:41:02 -0700 Subject: [PATCH 090/357] Revert 'dynamicChanged' to be a 'misc' physics property --- libraries/entities/src/EntityItemProperties.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libraries/entities/src/EntityItemProperties.cpp b/libraries/entities/src/EntityItemProperties.cpp index 4595ebf70d..fa4df72387 100644 --- a/libraries/entities/src/EntityItemProperties.cpp +++ b/libraries/entities/src/EntityItemProperties.cpp @@ -1825,13 +1825,13 @@ bool EntityItemProperties::hasTerseUpdateChanges() const { } bool EntityItemProperties::hasDynamicPhysicsChanges() const { - return _dynamicChanged || _velocityChanged || _angularVelocityChanged || _accelerationChanged; + return _velocityChanged || _angularVelocityChanged || _accelerationChanged; } bool EntityItemProperties::hasMiscPhysicsChanges() const { return _gravityChanged || _dimensionsChanged || _densityChanged || _frictionChanged || _restitutionChanged || _dampingChanged || _angularDampingChanged || _registrationPointChanged || - _compoundShapeURLChanged || _collisionlessChanged || _collisionMaskChanged || + _compoundShapeURLChanged || _dynamicChanged || _collisionlessChanged || _collisionMaskChanged || _rotationChanged || _positionChanged; } From ebe6ce9c8d3640e7e357755fa11bde766a6b95cb Mon Sep 17 00:00:00 2001 From: Zach Fox Date: Wed, 24 May 2017 10:16:51 -0700 Subject: [PATCH 091/357] Committing checkpoint changes, then testing --- .../src/EntityTreeRenderer.cpp | 39 +++++++++++-------- 1 file changed, 22 insertions(+), 17 deletions(-) diff --git a/libraries/entities-renderer/src/EntityTreeRenderer.cpp b/libraries/entities-renderer/src/EntityTreeRenderer.cpp index d62181c651..7b2333ade9 100644 --- a/libraries/entities-renderer/src/EntityTreeRenderer.cpp +++ b/libraries/entities-renderer/src/EntityTreeRenderer.cpp @@ -1092,24 +1092,29 @@ void EntityTreeRenderer::entityCollisionWithEntity(const EntityItemID& idA, cons // trigger scripted collision sounds and events for locally owned objects EntityItemPointer entityA = entityTree->findEntityByEntityItemID(idA); EntityItemPointer entityB = entityTree->findEntityByEntityItemID(idB); - QUuid entityASimulatorID = entityA->getSimulatorID(); - QUuid entityBSimulatorID = entityB->getSimulatorID(); - if ((bool)entityA && (myNodeID == entityASimulatorID || ((bool)entityB && myNodeID == entityBSimulatorID && entityASimulatorID.isNull()))) { - playEntityCollisionSound(entityA, collision); - emit collisionWithEntity(idA, idB, collision); - if (_entitiesScriptEngine) { - _entitiesScriptEngine->callEntityScriptMethod(idA, "collisionWithEntity", idB, collision); - } - } + if ((bool)entityA && (bool)entityB) { + QUuid entityASimulatorID = entityA->getSimulatorID(); + QUuid entityBSimulatorID = entityB->getSimulatorID(); + bool entityAIsStatic = !entityA->getDynamic() && !entityA->isMoving(); + bool entityBIsStatic = !entityB->getDynamic() && !entityB->isMoving(); - if ((bool)entityB && (myNodeID == entityBSimulatorID || ((bool)entityA && myNodeID == entityASimulatorID && entityBSimulatorID.isNull()))) { - playEntityCollisionSound(entityB, collision); - // since we're swapping A and B we need to send the inverted collision - Collision invertedCollision(collision); - invertedCollision.invert(); - emit collisionWithEntity(idB, idA, invertedCollision); - if (_entitiesScriptEngine) { - _entitiesScriptEngine->callEntityScriptMethod(idB, "collisionWithEntity", idA, invertedCollision); + if (myNodeID == entityASimulatorID || (myNodeID == entityBSimulatorID && entityAIsStatic)) { + playEntityCollisionSound(entityA, collision); + emit collisionWithEntity(idA, idB, collision); + if (_entitiesScriptEngine) { + _entitiesScriptEngine->callEntityScriptMethod(idA, "collisionWithEntity", idB, collision); + } + } + + if (myNodeID == entityBSimulatorID || (myNodeID == entityASimulatorID && entityBIsStatic)) { + playEntityCollisionSound(entityB, collision); + // since we're swapping A and B we need to send the inverted collision + Collision invertedCollision(collision); + invertedCollision.invert(); + emit collisionWithEntity(idB, idA, invertedCollision); + if (_entitiesScriptEngine) { + _entitiesScriptEngine->callEntityScriptMethod(idB, "collisionWithEntity", idA, invertedCollision); + } } } } From 3ec73cc5e1ffe2b7a5cd8c2cbcb81d5159322cf3 Mon Sep 17 00:00:00 2001 From: Zach Fox Date: Wed, 24 May 2017 11:17:03 -0700 Subject: [PATCH 092/357] Changes after discussion with Brad --- .../src/EntityTreeRenderer.cpp | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/libraries/entities-renderer/src/EntityTreeRenderer.cpp b/libraries/entities-renderer/src/EntityTreeRenderer.cpp index 7b2333ade9..fccc6f512f 100644 --- a/libraries/entities-renderer/src/EntityTreeRenderer.cpp +++ b/libraries/entities-renderer/src/EntityTreeRenderer.cpp @@ -1095,10 +1095,20 @@ void EntityTreeRenderer::entityCollisionWithEntity(const EntityItemID& idA, cons if ((bool)entityA && (bool)entityB) { QUuid entityASimulatorID = entityA->getSimulatorID(); QUuid entityBSimulatorID = entityB->getSimulatorID(); - bool entityAIsStatic = !entityA->getDynamic() && !entityA->isMoving(); - bool entityBIsStatic = !entityB->getDynamic() && !entityB->isMoving(); + bool entityAIsDynamic = entityA->getDynamic(); + bool entityBIsDynamic = entityB->getDynamic(); - if (myNodeID == entityASimulatorID || (myNodeID == entityBSimulatorID && entityAIsStatic)) { +#ifdef WANT_DEBUG + bool bothEntitiesStatic = !entityAIsDynamic && !entityBIsDynamic; + if (bothEntitiesStatic) { + qCDebug(entities) << "A collision has occurred between two static entities!"; + qCDebug(entities) << "Entity A ID:" << entityA->getID(); + qCDebug(entities) << "Entity B ID:" << entityB->getID(); + } + assert(!bothEntitiesStatic); +#endif + + if ((myNodeID == entityASimulatorID && entityAIsDynamic) || (myNodeID == entityBSimulatorID && !entityAIsDynamic)) { playEntityCollisionSound(entityA, collision); emit collisionWithEntity(idA, idB, collision); if (_entitiesScriptEngine) { @@ -1106,7 +1116,7 @@ void EntityTreeRenderer::entityCollisionWithEntity(const EntityItemID& idA, cons } } - if (myNodeID == entityBSimulatorID || (myNodeID == entityASimulatorID && entityBIsStatic)) { + if ((myNodeID == entityBSimulatorID && entityBIsDynamic) || (myNodeID == entityASimulatorID && !entityBIsDynamic)) { playEntityCollisionSound(entityB, collision); // since we're swapping A and B we need to send the inverted collision Collision invertedCollision(collision); From 21d396bbb507b152c6a89152328b1f68da188f29 Mon Sep 17 00:00:00 2001 From: Zach Fox Date: Wed, 24 May 2017 14:15:59 -0700 Subject: [PATCH 093/357] Pull out ownership bidding changes --- libraries/entities/src/EntityItemProperties.cpp | 7 +------ libraries/entities/src/EntityItemProperties.h | 1 - libraries/entities/src/EntityScriptingInterface.cpp | 10 ++++------ libraries/networking/src/udt/PacketHeaders.h | 4 ++-- 4 files changed, 7 insertions(+), 15 deletions(-) diff --git a/libraries/entities/src/EntityItemProperties.cpp b/libraries/entities/src/EntityItemProperties.cpp index fa4df72387..1ed020e592 100644 --- a/libraries/entities/src/EntityItemProperties.cpp +++ b/libraries/entities/src/EntityItemProperties.cpp @@ -1824,15 +1824,10 @@ bool EntityItemProperties::hasTerseUpdateChanges() const { return _positionChanged || _velocityChanged || _rotationChanged || _angularVelocityChanged || _accelerationChanged; } -bool EntityItemProperties::hasDynamicPhysicsChanges() const { - return _velocityChanged || _angularVelocityChanged || _accelerationChanged; -} - bool EntityItemProperties::hasMiscPhysicsChanges() const { return _gravityChanged || _dimensionsChanged || _densityChanged || _frictionChanged || _restitutionChanged || _dampingChanged || _angularDampingChanged || _registrationPointChanged || - _compoundShapeURLChanged || _dynamicChanged || _collisionlessChanged || _collisionMaskChanged || - _rotationChanged || _positionChanged; + _compoundShapeURLChanged || _dynamicChanged || _collisionlessChanged || _collisionMaskChanged; } void EntityItemProperties::clearSimulationOwner() { diff --git a/libraries/entities/src/EntityItemProperties.h b/libraries/entities/src/EntityItemProperties.h index 697c634c67..590298e102 100644 --- a/libraries/entities/src/EntityItemProperties.h +++ b/libraries/entities/src/EntityItemProperties.h @@ -274,7 +274,6 @@ public: void setCreated(QDateTime& v); bool hasTerseUpdateChanges() const; - bool hasDynamicPhysicsChanges() const; bool hasMiscPhysicsChanges() const; void clearSimulationOwner(); diff --git a/libraries/entities/src/EntityScriptingInterface.cpp b/libraries/entities/src/EntityScriptingInterface.cpp index 367343cb60..b184d648da 100644 --- a/libraries/entities/src/EntityScriptingInterface.cpp +++ b/libraries/entities/src/EntityScriptingInterface.cpp @@ -414,17 +414,15 @@ QUuid EntityScriptingInterface::editEntity(QUuid id, const EntityItemProperties& entityFound = true; // make sure the properties has a type, so that the encode can know which properties to include properties.setType(entity->getType()); - bool hasMiscPhysicsChanges = properties.hasMiscPhysicsChanges(); - bool hasDynamicsChanges = properties.hasDynamicPhysicsChanges(); - // _bidOnSimulationOwnership is set per-instance of the scripting interface. - // It essentially corresponds to "Am I an AC or an Interface client?" - ACs will never bid. - if ((_bidOnSimulationOwnership && ((hasMiscPhysicsChanges && entity->isMoving()) || hasDynamicsChanges))) { + bool hasTerseUpdateChanges = properties.hasTerseUpdateChanges(); + bool hasPhysicsChanges = properties.hasMiscPhysicsChanges() || hasTerseUpdateChanges; + if (_bidOnSimulationOwnership && hasPhysicsChanges) { auto nodeList = DependencyManager::get(); const QUuid myNodeID = nodeList->getSessionUUID(); if (entity->getSimulatorID() == myNodeID) { // we think we already own the simulation, so make sure to send ALL TerseUpdate properties - if (properties.hasTerseUpdateChanges()) { + if (hasTerseUpdateChanges) { entity->getAllTerseUpdateProperties(properties); } // TODO: if we knew that ONLY TerseUpdate properties have changed in properties AND the object diff --git a/libraries/networking/src/udt/PacketHeaders.h b/libraries/networking/src/udt/PacketHeaders.h index 0dbbcd771f..2cc3a2c42e 100644 --- a/libraries/networking/src/udt/PacketHeaders.h +++ b/libraries/networking/src/udt/PacketHeaders.h @@ -114,8 +114,8 @@ public: EntityServerScriptLog, AdjustAvatarSorting, OctreeFileReplacement, - SimulationBiddingChanges, - LAST_PACKET_TYPE = SimulationBiddingChanges + CollisionEventChanges, + LAST_PACKET_TYPE = CollisionEventChanges }; }; From 252298938b89a98235efe0d58306435d67c5b50d Mon Sep 17 00:00:00 2001 From: Zach Fox Date: Thu, 25 May 2017 09:28:11 -0700 Subject: [PATCH 094/357] Update conditional to handle 'other unowned' case --- libraries/entities-renderer/src/EntityTreeRenderer.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libraries/entities-renderer/src/EntityTreeRenderer.cpp b/libraries/entities-renderer/src/EntityTreeRenderer.cpp index fccc6f512f..e029ca6ada 100644 --- a/libraries/entities-renderer/src/EntityTreeRenderer.cpp +++ b/libraries/entities-renderer/src/EntityTreeRenderer.cpp @@ -1108,7 +1108,7 @@ void EntityTreeRenderer::entityCollisionWithEntity(const EntityItemID& idA, cons assert(!bothEntitiesStatic); #endif - if ((myNodeID == entityASimulatorID && entityAIsDynamic) || (myNodeID == entityBSimulatorID && !entityAIsDynamic)) { + if ((myNodeID == entityASimulatorID && entityAIsDynamic) || (myNodeID == entityBSimulatorID && (!entityAIsDynamic || entityASimulatorID.isNull()))) { playEntityCollisionSound(entityA, collision); emit collisionWithEntity(idA, idB, collision); if (_entitiesScriptEngine) { @@ -1116,7 +1116,7 @@ void EntityTreeRenderer::entityCollisionWithEntity(const EntityItemID& idA, cons } } - if ((myNodeID == entityBSimulatorID && entityBIsDynamic) || (myNodeID == entityASimulatorID && !entityBIsDynamic)) { + if ((myNodeID == entityBSimulatorID && entityBIsDynamic) || (myNodeID == entityASimulatorID && (!entityBIsDynamic || entityBSimulatorID.isNull()))) { playEntityCollisionSound(entityB, collision); // since we're swapping A and B we need to send the inverted collision Collision invertedCollision(collision); From 0a7a42bdc3855b1b08e92930f182815276130f86 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Fri, 26 May 2017 12:04:35 -0700 Subject: [PATCH 095/357] fix force of BC3 instead of BC1a compression --- libraries/image/src/image/Image.cpp | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/libraries/image/src/image/Image.cpp b/libraries/image/src/image/Image.cpp index dcc65e8995..f274dc54f8 100644 --- a/libraries/image/src/image/Image.cpp +++ b/libraries/image/src/image/Image.cpp @@ -493,10 +493,6 @@ gpu::TexturePointer TextureUsage::process2DTextureColorFromImage(const QImage& s if (validAlpha) { processTextureAlpha(image, validAlpha, alphaAsMask); - - // NOTE: This disables BC1a compression because it was producing odd artifacts on text textures - // for the tutorial. Instead we use BC3 (which is larger) but doesn't produce the same artifacts). - alphaAsMask = false; } gpu::TexturePointer theTexture = nullptr; @@ -506,7 +502,9 @@ gpu::TexturePointer TextureUsage::process2DTextureColorFromImage(const QImage& s gpu::Element formatGPU; if (isColorTexturesCompressionEnabled()) { if (validAlpha) { - formatGPU = alphaAsMask ? gpu::Element::COLOR_COMPRESSED_SRGBA_MASK : gpu::Element::COLOR_COMPRESSED_SRGBA; + // NOTE: This disables BC1a compression because it was producing odd artifacts on text textures + // for the tutorial. Instead we use BC3 (which is larger) but doesn't produce the same artifacts). + formatGPU = gpu::Element::COLOR_COMPRESSED_SRGBA; } else { formatGPU = gpu::Element::COLOR_COMPRESSED_SRGB; } From ccc7cb638de6fac18a945894434bfe1ba907eba7 Mon Sep 17 00:00:00 2001 From: Atlante45 Date: Fri, 26 May 2017 14:18:29 -0700 Subject: [PATCH 096/357] Fix "retain avatar info" --- interface/src/Application.cpp | 8 ++++---- interface/src/CrashHandler.cpp | 9 ++++++--- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index f7628ee240..8430b0443a 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -436,6 +436,10 @@ bool setupEssentials(int& argc, char** argv, bool runningMarkerExisted) { const char* portStr = getCmdOption(argc, constArgv, "--listenPort"); const int listenPort = portStr ? atoi(portStr) : INVALID_PORT; + static const auto SUPPRESS_SETTINGS_RESET = "--suppress-settings-reset"; + bool suppressPrompt = cmdOptionExists(argc, const_cast(argv), SUPPRESS_SETTINGS_RESET); + bool previousSessionCrashed = CrashHandler::checkForResetSettings(runningMarkerExisted, suppressPrompt); + Setting::init(); if (auto steamClient = PluginManager::getInstance()->getSteamClientPlugin()) { @@ -456,10 +460,6 @@ bool setupEssentials(int& argc, char** argv, bool runningMarkerExisted) { QCoreApplication::addLibraryPath(audioDLLPath); #endif - static const auto SUPPRESS_SETTINGS_RESET = "--suppress-settings-reset"; - bool suppressPrompt = cmdOptionExists(argc, const_cast(argv), SUPPRESS_SETTINGS_RESET); - bool previousSessionCrashed = CrashHandler::checkForResetSettings(runningMarkerExisted, suppressPrompt); - DependencyManager::registerInheritance(); DependencyManager::registerInheritance(); DependencyManager::registerInheritance(); diff --git a/interface/src/CrashHandler.cpp b/interface/src/CrashHandler.cpp index 8081dd3ffc..19e887eb6e 100644 --- a/interface/src/CrashHandler.cpp +++ b/interface/src/CrashHandler.cpp @@ -24,12 +24,15 @@ #include "Application.h" #include "Menu.h" -#include #include +#include +#include + bool CrashHandler::checkForResetSettings(bool wasLikelyCrash, bool suppressPrompt) { - Settings settings; + QSettings::setDefaultFormat(JSON_FORMAT); + QSettings settings; settings.beginGroup("Developer"); QVariant displayCrashOptions = settings.value(MenuOption::DisplayCrashOptions); QVariant askToResetSettingsOption = settings.value(MenuOption::AskToResetSettings); @@ -106,7 +109,7 @@ void CrashHandler::handleCrash(CrashHandler::Action action) { return; } - Settings settings; + QSettings settings; const QString ADDRESS_MANAGER_GROUP = "AddressManager"; const QString ADDRESS_KEY = "address"; const QString AVATAR_GROUP = "Avatar"; From 6c2758e4eaa0d063b45fc96eb865394c9d65d4ac Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Fri, 26 May 2017 14:37:24 -0700 Subject: [PATCH 097/357] fix reference to pending transfer count for progress/stats --- scripts/developer/utilities/render/stats.qml | 13 ++++++------- scripts/system/progress.js | 4 ++-- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/scripts/developer/utilities/render/stats.qml b/scripts/developer/utilities/render/stats.qml index 7acf678570..54e0dc4ce8 100644 --- a/scripts/developer/utilities/render/stats.qml +++ b/scripts/developer/utilities/render/stats.qml @@ -20,9 +20,9 @@ Item { id: stats spacing: 8 anchors.fill:parent - + property var config: Render.getConfig("Stats") - + function evalEvenHeight() { // Why do we have to do that manually ? cannot seem to find a qml / anchor / layout mode that does that ? return (height - spacing * (children.length - 1)) / children.length @@ -81,7 +81,7 @@ Item { color: "#1AC567" }, { - prop: "textureGPUTransferCount", + prop: "texturePendingGPUTransferCount", label: "Transfer", color: "#9495FF" } @@ -158,7 +158,7 @@ Item { } ] } - + PlotPerf { title: "State Changes" height: parent.evalEvenHeight() @@ -180,7 +180,7 @@ Item { color: "#1AC567" } ] - } + } property var drawOpaqueConfig: Render.getConfig("DrawOpaqueDeferred") property var drawTransparentConfig: Render.getConfig("DrawTransparentDeferred") @@ -211,7 +211,7 @@ Item { color: "#FED959" } ] - } + } PlotPerf { title: "Timing" @@ -250,4 +250,3 @@ Item { } } - diff --git a/scripts/system/progress.js b/scripts/system/progress.js index 81da38c8c2..f4741c5b6a 100644 --- a/scripts/system/progress.js +++ b/scripts/system/progress.js @@ -261,7 +261,7 @@ } } - gpuTextures = Render.getConfig("Stats").textureGPUTransferCount; + gpuTextures = Render.getConfig("Stats").texturePendingGPUTransferCount; // Update state if (!visible) { // Not visible because no recent downloads @@ -290,7 +290,7 @@ }, FADE_OUT_WAIT); } } else { - if (displayProgress < 100 || gpuTextures > 0) { // Was finished and waiting to fade out but have resumed so + if (displayProgress < 100 || gpuTextures > 0) { // Was finished and waiting to fade out but have resumed so // don't fade out Script.clearInterval(fadeWaitTimer); fadeWaitTimer = null; From 4be31f1b1830c0de0acc521c8b1016f098a0d8e6 Mon Sep 17 00:00:00 2001 From: howard-stearns Date: Fri, 26 May 2017 15:31:59 -0700 Subject: [PATCH 098/357] thread safety --- interface/src/avatar/MyAvatar.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index 43fffe7e0b..ee83975142 100755 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -2233,6 +2233,11 @@ bool MyAvatar::safeLanding(const glm::vec3& position) { // (which may be that same "nearest above intersection"). That highest intersection is the candidate landing point. // For b, use that top surface point. // We then place our feet there, recurse with new capsule center point, and return true; + if (QThread::currentThread() != thread()) { + bool result; + QMetaObject::invokeMethod(this, "safeLanding", Qt::BlockingQueuedConnection, Q_RETURN_ARG(bool, result), Q_ARG(const glm::vec3&, position)); + return result; + } const auto offset = _characterController.getCapsuleLocalOffset(); const auto capsuleCenter = position + offset; From bf057219acdeb201a1f78be085aa017eae187bd9 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Fri, 26 May 2017 14:37:24 -0700 Subject: [PATCH 099/357] fix reference to pending transfer count for progress/stats --- scripts/developer/utilities/render/stats.qml | 13 ++++++------- scripts/system/progress.js | 4 ++-- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/scripts/developer/utilities/render/stats.qml b/scripts/developer/utilities/render/stats.qml index 7acf678570..54e0dc4ce8 100644 --- a/scripts/developer/utilities/render/stats.qml +++ b/scripts/developer/utilities/render/stats.qml @@ -20,9 +20,9 @@ Item { id: stats spacing: 8 anchors.fill:parent - + property var config: Render.getConfig("Stats") - + function evalEvenHeight() { // Why do we have to do that manually ? cannot seem to find a qml / anchor / layout mode that does that ? return (height - spacing * (children.length - 1)) / children.length @@ -81,7 +81,7 @@ Item { color: "#1AC567" }, { - prop: "textureGPUTransferCount", + prop: "texturePendingGPUTransferCount", label: "Transfer", color: "#9495FF" } @@ -158,7 +158,7 @@ Item { } ] } - + PlotPerf { title: "State Changes" height: parent.evalEvenHeight() @@ -180,7 +180,7 @@ Item { color: "#1AC567" } ] - } + } property var drawOpaqueConfig: Render.getConfig("DrawOpaqueDeferred") property var drawTransparentConfig: Render.getConfig("DrawTransparentDeferred") @@ -211,7 +211,7 @@ Item { color: "#FED959" } ] - } + } PlotPerf { title: "Timing" @@ -250,4 +250,3 @@ Item { } } - diff --git a/scripts/system/progress.js b/scripts/system/progress.js index 81da38c8c2..f4741c5b6a 100644 --- a/scripts/system/progress.js +++ b/scripts/system/progress.js @@ -261,7 +261,7 @@ } } - gpuTextures = Render.getConfig("Stats").textureGPUTransferCount; + gpuTextures = Render.getConfig("Stats").texturePendingGPUTransferCount; // Update state if (!visible) { // Not visible because no recent downloads @@ -290,7 +290,7 @@ }, FADE_OUT_WAIT); } } else { - if (displayProgress < 100 || gpuTextures > 0) { // Was finished and waiting to fade out but have resumed so + if (displayProgress < 100 || gpuTextures > 0) { // Was finished and waiting to fade out but have resumed so // don't fade out Script.clearInterval(fadeWaitTimer); fadeWaitTimer = null; From f694691efbc30a146fedf654cc7f266578dc53e0 Mon Sep 17 00:00:00 2001 From: howard-stearns Date: Fri, 26 May 2017 16:15:18 -0700 Subject: [PATCH 100/357] add fixme comments and make isUp/isDown ordinary methods. --- interface/src/avatar/MyAvatar.cpp | 11 +++++++---- interface/src/avatar/MyAvatar.h | 4 ++++ 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index ee83975142..422053dfa5 100755 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -2220,6 +2220,7 @@ void MyAvatar::goToLocation(const glm::vec3& newPosition, } void MyAvatar::goToLocationAndEnableCollisions(const glm::vec3& position) { // See use case in safeLanding. + // FIXME: Doesn't work 100% of time. Need to figure out what isn't happening fast enough. E.g., don't goToLocation until confirmed removed from physics? goToLocation(position); QMetaObject::invokeMethod(this, "setCollisionsEnabled", Qt::QueuedConnection, Q_ARG(bool, true)); } @@ -2232,14 +2233,17 @@ bool MyAvatar::safeLanding(const glm::vec3& position) { // When a landing is required by a, we find the highest intersection on that closest-above entity // (which may be that same "nearest above intersection"). That highest intersection is the candidate landing point. // For b, use that top surface point. - // We then place our feet there, recurse with new capsule center point, and return true; + // We then place our feet there, recurse with new capsule center point, and return true. + + // I'm not sure the true/false return is useful, and it does make things more complicated. Might get rid of it. + // E.g., Q_RETURN_ARG, and direct() could be a normal method. if (QThread::currentThread() != thread()) { bool result; QMetaObject::invokeMethod(this, "safeLanding", Qt::BlockingQueuedConnection, Q_RETURN_ARG(bool, result), Q_ARG(const glm::vec3&, position)); return result; } - const auto offset = _characterController.getCapsuleLocalOffset(); + const auto offset = _characterController.getCapsuleLocalOffset(); // FIXME: correct space. const auto capsuleCenter = position + offset; // We could repeat this whole test for each of the four corners of our bounding box, in case the surface is uneven. However: // 1) This is only meant to cover the most important cases, and even the four corners won't handle random spikes in the surfaces or avatar. @@ -2274,14 +2278,13 @@ bool MyAvatar::safeLanding(const glm::vec3& position) { safeLanding(upperIntersection + (up * halfHeight) - offset); return true; }; - auto isUp = [&](const glm::vec3& normal) { return glm::dot(normal, up) > 0.0f; }; // true iff normal points up - auto isDown = [&](const glm::vec3& normal) { return glm::dot(normal, up) < 0.0f; }; auto findIntersection = [&](const glm::vec3& startPointIn, const glm::vec3& directionIn, glm::vec3& intersectionOut, EntityItemID& entityIdOut, glm::vec3& normalOut) { OctreeElementPointer element; EntityItemPointer intersectedEntity = NULL; float distance; BoxFace face; const bool visibleOnly = false; + // FIXME: this doesn't do what we want here. findRayIntersection always works on mesh, skipping entirely based on collidable. What we really want is to use the collision hull! See CharacterGhostObject::rayTest? const bool collidableOnly = true; const bool precisionPicking = true; const auto lockType = Octree::Lock; // Should we refactor to take a lock just once? diff --git a/interface/src/avatar/MyAvatar.h b/interface/src/avatar/MyAvatar.h index a458e36f0d..08c3d9c67c 100644 --- a/interface/src/avatar/MyAvatar.h +++ b/interface/src/avatar/MyAvatar.h @@ -509,6 +509,10 @@ public: // results are in HMD frame glm::mat4 deriveBodyFromHMDSensor() const; + Q_INVOKABLE bool isUp(const glm::vec3& direction) { return glm::dot(direction, _worldUpDirection) > 0.0f; }; // true iff direction points up wrt avatar's definition of up. + Q_INVOKABLE bool isDown(const glm::vec3& direction) { return glm::dot(direction, _worldUpDirection) < 0.0f; }; + + public slots: void increaseSize(); void decreaseSize(); From 019e92b2a348e61d9286e355cf3863dbfa067b85 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Sat, 27 May 2017 11:27:18 +1200 Subject: [PATCH 101/357] Fix buttons not working with controllers --- .../stopwatch/models/transparent-box.fbx | Bin 0 -> 39648 bytes .../marketplace/stopwatch/spawnStopwatch.js | 23 +++++++++--------- 2 files changed, 11 insertions(+), 12 deletions(-) create mode 100644 unpublishedScripts/marketplace/stopwatch/models/transparent-box.fbx diff --git a/unpublishedScripts/marketplace/stopwatch/models/transparent-box.fbx b/unpublishedScripts/marketplace/stopwatch/models/transparent-box.fbx new file mode 100644 index 0000000000000000000000000000000000000000..b1df7d962c821477f442f7914b3e24779aab7f89 GIT binary patch literal 39648 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 v%KLcvMeWz`Je| Date: Fri, 26 May 2017 16:34:08 -0700 Subject: [PATCH 102/357] rotation of local capsule offset --- interface/src/avatar/MyAvatar.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index 422053dfa5..1d9009e129 100755 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -294,6 +294,7 @@ void MyAvatar::simulateAttachments(float deltaTime) { QByteArray MyAvatar::toByteArrayStateful(AvatarDataDetail dataDetail) { CameraMode mode = qApp->getCamera().getMode(); _globalPosition = getPosition(); + // This might not be right! Isn't the capsule local offset in avatar space? -HR 5/26/17 _globalBoundingBoxDimensions.x = _characterController.getCapsuleRadius(); _globalBoundingBoxDimensions.y = _characterController.getCapsuleHalfHeight(); _globalBoundingBoxDimensions.z = _characterController.getCapsuleRadius(); @@ -448,6 +449,7 @@ void MyAvatar::update(float deltaTime) { setAudioAverageLoudness(audio->getAudioAverageInputLoudness()); glm::vec3 halfBoundingBoxDimensions(_characterController.getCapsuleRadius(), _characterController.getCapsuleHalfHeight(), _characterController.getCapsuleRadius()); + // This might not be right! Isn't the capsule local offset in avatar space? -HR 5/26/17 halfBoundingBoxDimensions += _characterController.getCapsuleLocalOffset(); QMetaObject::invokeMethod(audio.data(), "setAvatarBoundingBoxParameters", Q_ARG(glm::vec3, (getPosition() - halfBoundingBoxDimensions)), @@ -2230,7 +2232,7 @@ bool MyAvatar::safeLanding(const glm::vec3& position) { // a) the closest above and the closest below are less than the avatar capsule height apart, or // b) the above point is the top surface of an entity, indicating that we are inside it. // If no landing is required, we go to that point directly and return false; - // When a landing is required by a, we find the highest intersection on that closest-above entity + // When a landing is required by a, we find the highest intersection on that closest-agbove entity // (which may be that same "nearest above intersection"). That highest intersection is the candidate landing point. // For b, use that top surface point. // We then place our feet there, recurse with new capsule center point, and return true. @@ -2243,7 +2245,7 @@ bool MyAvatar::safeLanding(const glm::vec3& position) { return result; } - const auto offset = _characterController.getCapsuleLocalOffset(); // FIXME: correct space. + const auto offset = getOrientation() *_characterController.getCapsuleLocalOffset(); const auto capsuleCenter = position + offset; // We could repeat this whole test for each of the four corners of our bounding box, in case the surface is uneven. However: // 1) This is only meant to cover the most important cases, and even the four corners won't handle random spikes in the surfaces or avatar. From 9201af96bdab539b8c4b85b3ffc169b389786e03 Mon Sep 17 00:00:00 2001 From: Menithal Date: Sat, 27 May 2017 11:02:01 +0300 Subject: [PATCH 103/357] Added Changes from Alan's Feedback --- .../particle_explorer/hifi-entity-ui.js | 106 +++++------ .../particle_explorer/particle-style.css | 18 +- .../particle_explorer/particleExplorer.js | 169 ++++++++++++------ 3 files changed, 170 insertions(+), 123 deletions(-) diff --git a/scripts/system/particle_explorer/hifi-entity-ui.js b/scripts/system/particle_explorer/hifi-entity-ui.js index fb728bbd92..9eff03d696 100644 --- a/scripts/system/particle_explorer/hifi-entity-ui.js +++ b/scripts/system/particle_explorer/hifi-entity-ui.js @@ -77,8 +77,6 @@ HifiEntityUI.prototype = { fields[i].value = ""; } } - - var textareas = document.getElementsByTagName("textarea"); for (var x = 0; x < textareas.length; x++) { textareas[x].remove(); @@ -299,10 +297,10 @@ HifiEntityUI.prototype = { } return label; }, - addVector: function(parent, group, labels) { + addVector: function(parent, group, labels, domArray) { var self = this; var inputs = labels ? labels : ["x", "y", "z"]; - var domArray = []; + domArray = domArray ? domArray: []; parent.id = group.id; for (var index in inputs) { var element = document.createElement("input"); @@ -310,13 +308,29 @@ HifiEntityUI.prototype = { element.setAttribute("type", "number"); element.className = inputs[index]; element.id = group.id + "-" + inputs[index]; - element.oninput = function(event) { - self.webBridgeSync(group.id, { - x: domArray[0].value, - y: domArray[1].value, - z: domArray[2].value - }); - }; + + if (group.defaultRange) { + if (group.defaultRange.min) { + element.setAttribute("min", group.defaultRange.min); + } + if (group.defaultRange.max) { + element.setAttribute("max", group.defaultRange.max); + } + if (group.defaultRange.step) { + element.setAttribute("step", group.defaultRange.step); + } + } + if (group.oninput) { + element.oninput = group.oninput; + } else { + element.oninput = function(event) { + self.webBridgeSync(group.id, { + x: domArray[0].value, + y: domArray[1].value, + z: domArray[2].value + }); + }; + } element.onchange = element.oninput; domArray.push(element); } @@ -361,33 +375,23 @@ HifiEntityUI.prototype = { var inputs = ["red", "green", "blue"]; var domArray = []; + group.oninput = function(event) { + $colPickContainer.colpickSetColor( + { + r: domArray[0].value, + g: domArray[1].value, + b: domArray[2].value + }, + true); + }; + group.defaultRange = { + min: 0, + max: 255, + step: 1 + }; - for (var index in inputs) { - var element = document.createElement("input"); - if (group.defaultColor) { - element.value = group.defaultColor[inputs[index]]; - } else if (inputs[index] === "red") { - element.value = 255; - } else { - element.value = 0; - } - element.setAttribute("type", "number"); - element.className = inputs[index]; - element.setAttribute("min", 0); - element.setAttribute("max", 255); - element.id = group.id + "-" + inputs[index]; - element.oninput = function(event) { - $colPickContainer.colpickSetColor( - { - r: domArray[0].value, - g: domArray[1].value, - b: domArray[2].value - }, - true); - }; - element.onchange = element.oninput; - domArray.push(element); - } + parent.appendChild($colPickContainer[0]); + self.addVector(parent, group, inputs, domArray); updateColors(domArray[0].value, domArray[1].value, domArray[2].value); @@ -396,7 +400,6 @@ HifiEntityUI.prototype = { /* Color Picker Logic Here */ - parent.appendChild($colPickContainer[0]); $colPickContainer.colpick({ colorScheme: 'dark', @@ -431,29 +434,6 @@ HifiEntityUI.prototype = { }); } }); - var li = document.createElement("li"); - li.className = "cr object color"; - - - this.addLabel(parent, group); - parent.className += " property vector-section rgb"; - - // Add Tuple and the rest - var tupleContainer = document.createElement("div"); - tupleContainer.className = "tuple"; - for (var domIndex in domArray) { - var container = domArray[domIndex]; - var div = document.createElement("div"); - var label = document.createElement("label"); - label.innerHTML = inputs[domIndex] + ":"; - label.setAttribute("for", container.id); - div.appendChild(container); - div.appendChild(label); - tupleContainer.appendChild(div); - } - parent.appendChild(tupleContainer); - - }, addTextureField: function(parent, group) { var self = this; @@ -602,6 +582,10 @@ HifiEntityUI.prototype = { case "Button": var button = document.createElement("input"); button.setAttribute("type", "button"); + button.id = group.id; + if (group.disabled) { + button.disabled = group.disabled; + } button.className = group.class; button.value = group.name; diff --git a/scripts/system/particle_explorer/particle-style.css b/scripts/system/particle_explorer/particle-style.css index c4e252117e..6440d9171d 100644 --- a/scripts/system/particle_explorer/particle-style.css +++ b/scripts/system/particle_explorer/particle-style.css @@ -8,10 +8,6 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html */ -input[type="button"] { - margin: 0.4rem; - -} .property-group { max-height: 0; @@ -35,9 +31,16 @@ input[type="button"] { .property.range label{ display: block; } + +input[type="button"] { + margin: 0.2rem; +} +input[type="text"] { + margin: 0; +} .property.range input[type=number]{ margin-left: 0.8rem; - width: 4.2rem; + width: 5.4rem; height: 1.8rem; } input[type=range] { @@ -55,6 +58,9 @@ input[type=range]::-webkit-slider-thumb { background-color: #696969; border-radius: 1rem; } +input[type=range]::-webkit-slider-thumb:hover { + background-color: white; +} input[type=range]:focus { /*#252525*/ outline: none; } @@ -80,9 +86,7 @@ hr.splitter:last-of-type{ width: 1rem; } .property { - width: 14rem; min-height: 2rem; - float:left; } .property.vector-section{ diff --git a/scripts/system/particle_explorer/particleExplorer.js b/scripts/system/particle_explorer/particleExplorer.js index eef80b35af..3b3da4b0b3 100644 --- a/scripts/system/particle_explorer/particleExplorer.js +++ b/scripts/system/particle_explorer/particleExplorer.js @@ -13,7 +13,7 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // /* global HifiEntityUI, openEventBridge, console, EventBridge, document, window */ -/* eslint no-console: 0 */ +/* eslint no-console: 0, no-global-assign: 0 */ (function(){ @@ -22,45 +22,69 @@ window.onload = function(){ var ui = new HifiEntityUI(root); var textarea = document.createElement("textarea"); - + var properties = ""; var menuStructure = { General: [ { type: "Row", id: "export-import-field" }, { - id: "importSettings", - name: "Import Settings", + id: "show-properties-button", + name: "Show Properties", type: "Button", class: "blue", callback: function(event){ - var insertZone = document.getElementById("export-import-field"); - var json = ui.getSettings(); - textarea.value = JSON.stringify(json); + properties = JSON.stringify(json); + textarea.value = properties; if (!insertZone.contains(textarea)) { insertZone.appendChild(textarea); insertZone.parentNode.parentNode.style.maxHeight = insertZone.parentNode.clientHeight + "px"; - + document.getElementById("export-properties-button").removeAttribute("disabled"); + textarea.onchange = function(e) { + if (e.target.value !== properties){ + document.getElementById("import-properties-button").removeAttribute("disabled"); + } + }; + textarea.oninput = textarea.onchange; + } else { + textarea.onchange = function(){}; + textarea.oninput = textarea.onchange; + textarea.value = ""; + textarea.remove(); + insertZone.parentNode.parentNode.style.maxHeight = + insertZone.parentNode.clientHeight + "px"; + document.getElementById("export-properties-button").setAttribute("disabled",true); + document.getElementById("import-properties-button").setAttribute("disabled",true); } - textarea.onchange = function () { - ui.fillFields(JSON.parse(textarea.value)); - ui.submitChanges(JSON.parse(textarea.value)); - }; } }, { - id: "exportSettings", - name: "Export Settings", + id: "import-properties-button", + name: "Import", + type: "Button", + class: "blue", + disabled: true, + callback: function(event){ + ui.fillFields(JSON.parse(textarea.value)); + ui.submitChanges(JSON.parse(textarea.value)); + } + }, + { + id: "export-properties-button", + name: "Export", type: "Button", class: "red", + disabled: true, callback: function(event){ - var json = ui.getSettings(); - textarea.onchange = function(){}; - var insertZone = document.getElementById("export-import-field"); - textarea.value = JSON.stringify(json); - if (!insertZone.parentNode.contains(textarea)) { - insertZone.appendChild(textarea); + textarea.select(); + try { + var success = document.execCommand('copy'); + if (!success ){ + throw "Not success :("; + } + } catch (e) { + print("couldnt copy field"); } } }, @@ -99,7 +123,8 @@ id: "emitRate", name: "Emit Rate", type: "SliderInteger", - max: 1000 + max: 1000, + min: 1 }, { type: "Row" }, { @@ -108,7 +133,16 @@ type: "SliderFloat", max: 5 }, - + { type: "Row" }, + { + id: "emitDimensions", + name: "Emit Dimension", + type: "Vector", + defaultRange: { + min: 0, + step: 0.01 + } + }, { type: "Row" }, { id: "emitOrientation", @@ -124,6 +158,36 @@ }, { type: "Row" } ], + Radius: [ + { + id: "particleRadius", + name: "Particle Radius", + type: "SliderFloat", + max: 4.0 + }, + { type: "Row" }, + { + id: "radiusSpread", + name: "Radius Spread", + type: "SliderFloat", + max: 4.0 + }, + { type: "Row" }, + { + id: "radiusStart", + name: "Radius Start", + type: "SliderFloat", + max: 4.0 + }, + { type: "Row" }, + { + id: "radiusFinish", + name: "Radius Finish", + type: "SliderFloat", + max: 4.0 + }, + { type: "Row" } + ], Color: [ { id: "color", @@ -174,13 +238,19 @@ { id: "emitAcceleration", name: "Emit Acceleration", - type: "Vector" + type: "Vector", + defaultRange: { + step: 0.01 + } }, { type: "Row" }, { id: "accelerationSpread", name: "Acceleration Spread", - type: "Vector" + type: "Vector", + defaultRange: { + step: 0.01 + } }, { type: "Row" } ], @@ -243,42 +313,31 @@ type: "SliderRadian" }, { type: "Row" } - ], - Radius: [ - { - id: "particleRadius", - name: "Particle Radius", - type: "SliderFloat", - max: 4.0 - }, - { type: "Row" }, - { - id: "radiusSpread", - name: "Radius Spread", - type: "SliderFloat", - max: 4.0 - }, - { type: "Row" }, - { - id: "radiusStart", - name: "Radius Start", - type: "SliderFloat", - max: 4.0 - }, - { type: "Row" }, - { - id: "radiusFinish", - name: "Radius Finish", - type: "SliderFloat", - max: 4.0 - }, - { type: "Row" } ] }; ui.setUI(menuStructure); + ui.build(); + var overrideLoad = false; + if (openEventBridge === undefined) { + overrideLoad = true, + openEventBridge = function(callback) { + callback( + { + emitWebEvent: function(){}, + submitChanges: function(){}, + scriptEventReceived: { + connect: function() { + + } + } + }); + }; + } openEventBridge( function(EventBridge) { - ui.build(); ui.connect(EventBridge); }); + if (overrideLoad) { + openEventBridge(); + } }; })(); From 26389be8269e31574a83bf59c1da0211e35921cf Mon Sep 17 00:00:00 2001 From: Menithal Date: Sat, 27 May 2017 11:18:29 +0300 Subject: [PATCH 104/357] Minor tweaks to unselect behavior --- .../particle_explorer/hifi-entity-ui.js | 22 ++++++++++++++++--- .../particle_explorer/particle-style.css | 3 ++- .../particle_explorer/particleExplorer.js | 6 +++++ 3 files changed, 27 insertions(+), 4 deletions(-) diff --git a/scripts/system/particle_explorer/hifi-entity-ui.js b/scripts/system/particle_explorer/hifi-entity-ui.js index 9eff03d696..0c0dd3aae9 100644 --- a/scripts/system/particle_explorer/hifi-entity-ui.js +++ b/scripts/system/particle_explorer/hifi-entity-ui.js @@ -59,6 +59,9 @@ function HifiEntityUI(parent) { } HifiEntityUI.prototype = { + setOnSelect: function (callback){ + this.onSelect = callback; + }, submitChanges: function (structure) { var message = { messageType: "settings_update", @@ -72,11 +75,22 @@ HifiEntityUI.prototype = { disableFields: function() { var fields = document.getElementsByTagName("input"); for (var i = 0; i < fields.length; i++) { - fields[i].setAttribute("disabled", true); if (fields[i].getAttribute("type") !== "button") { fields[i].value = ""; } + + fields[i].setAttribute("disabled", true); } + var textures = document.getElementsByTagName("img"); + for (i = 0; i < textures.length; i++) { + textures[i].src = ""; + } + + textures = document.getElementsByClassName("with-texture"); + for (i = 0; i < textures.length; i++) { + textures[i].className = textures[i].className.replace("with-texture", "no-texture"); + } + var textareas = document.getElementsByTagName("textarea"); for (var x = 0; x < textareas.length; x++) { textareas[x].remove(); @@ -131,7 +145,9 @@ HifiEntityUI.prototype = { for (var i = 0; i < fields.length; i++) { fields[i].removeAttribute("disabled"); } - + if (self.onSelect) { + self.onSelect(); + } var keys = Object.keys(currentProperties); for (var e in keys) { var value = keys[e]; @@ -447,7 +463,7 @@ HifiEntityUI.prototype = { var image = document.createElement("img"); var imageLoad = _.debounce(function(url) { if (url.length > 0) { - textureImage.className = textureImage.className.replace(' no-texture', ''); + textureImage.className = textureImage.className.replace(' no-texture', ' with-texture'); image.src = url; image.style.display = "block"; } else { diff --git a/scripts/system/particle_explorer/particle-style.css b/scripts/system/particle_explorer/particle-style.css index 6440d9171d..e8b71fdba0 100644 --- a/scripts/system/particle_explorer/particle-style.css +++ b/scripts/system/particle_explorer/particle-style.css @@ -33,7 +33,8 @@ } input[type="button"] { - margin: 0.2rem; + margin: 0.4rem; + min-width: 6rem; } input[type="text"] { margin: 0; diff --git a/scripts/system/particle_explorer/particleExplorer.js b/scripts/system/particle_explorer/particleExplorer.js index 3b3da4b0b3..c16ac79b82 100644 --- a/scripts/system/particle_explorer/particleExplorer.js +++ b/scripts/system/particle_explorer/particleExplorer.js @@ -31,6 +31,7 @@ name: "Show Properties", type: "Button", class: "blue", + disabled: true, callback: function(event){ var insertZone = document.getElementById("export-import-field"); var json = ui.getSettings(); @@ -316,6 +317,11 @@ ] }; ui.setUI(menuStructure); + ui.setOnSelect(function(){ + document.getElementById("show-properties-button").removeAttribute("disabled"); + document.getElementById("export-properties-button").setAttribute("disabled",true); + document.getElementById("import-properties-button").setAttribute("disabled",true); + }); ui.build(); var overrideLoad = false; if (openEventBridge === undefined) { From 4e97f8ad9cf400c3b01ab5881e26f0c7519bc6cc Mon Sep 17 00:00:00 2001 From: Menithal Date: Sat, 27 May 2017 16:20:47 +0300 Subject: [PATCH 105/357] Removed stray print --- scripts/system/edit.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/scripts/system/edit.js b/scripts/system/edit.js index 488f40b00b..1c4e41da60 100644 --- a/scripts/system/edit.js +++ b/scripts/system/edit.js @@ -2078,7 +2078,6 @@ var selectedParticleEntityID = null; function selectParticleEntity(entityID) { var properties = Entities.getEntityProperties(entityID); - print("selected particle Entity"); var particleData = { messageType: "particle_settings", currentProperties: properties @@ -2110,7 +2109,6 @@ entityListTool.webView.webEventReceived.connect(function (data) { return; } // Destroy the old particles web view first - print("select particles"); selectParticleEntity(ids[0]); } else { selectedParticleEntity = 0; From 367b3ec603c889021c23601db78e0fe11bfd4047 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Sun, 28 May 2017 09:59:32 +1200 Subject: [PATCH 106/357] Handle nonvertical avatar orientation --- scripts/system/libraries/WebTablet.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/system/libraries/WebTablet.js b/scripts/system/libraries/WebTablet.js index c9918589f6..9a000d551e 100644 --- a/scripts/system/libraries/WebTablet.js +++ b/scripts/system/libraries/WebTablet.js @@ -71,8 +71,8 @@ function calcSpawnInfo(hand, tabletHeight) { rotation = Quat.multiply(rotation, Quat.fromPitchYawRollDegrees(0, -90, 0)); } var normal = Vec3.multiplyQbyV(rotation, Vec3.UNIT_NEG_Y); - var lookAt = Quat.lookAt({x: 0, y: 0, z: 0}, normal, Vec3.UNIT_Y); - rotation = Quat.multiply(lookAt, Quat.fromPitchYawRollDegrees(30, 0, 0)); + var lookAt = Quat.lookAt({x: 0, y: 0, z: 0}, normal, Vec3.multiplyQbyV(MyAvatar.orientation, Vec3.UNIT_Y)); + rotation = Quat.multiply(Quat.angleAxis(30, Vec3.multiplyQbyV(lookAt, Vec3.UNIT_X)), lookAt); position = Vec3.sum(position, Vec3.multiplyQbyV(rotation, { x: 0, y: tabletHeight * 0.4, z: tabletHeight * 0.05 })); From 0e46c11a9462e2ef1e9146c6b333f3fdad5a091e Mon Sep 17 00:00:00 2001 From: Menithal Date: Sun, 28 May 2017 11:59:30 +0300 Subject: [PATCH 107/357] Fixed not being able to override slider sizes --- scripts/system/particle_explorer/hifi-entity-ui.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/scripts/system/particle_explorer/hifi-entity-ui.js b/scripts/system/particle_explorer/hifi-entity-ui.js index 0c0dd3aae9..5de1f12393 100644 --- a/scripts/system/particle_explorer/hifi-entity-ui.js +++ b/scripts/system/particle_explorer/hifi-entity-ui.js @@ -509,7 +509,12 @@ HifiEntityUI.prototype = { slider.setAttribute("step", 1); inputField.oninput = function(event) { + + if (parseInt(event.target.value) > parseInt(slider.getAttribute("max")) && group.max !== 1) { + slider.setAttribute("max", event.target.value); + } slider.value = event.target.value; + self.webBridgeSync(group.id, slider.value); }; inputField.onchange = inputField.oninput; @@ -560,6 +565,10 @@ HifiEntityUI.prototype = { slider.setAttribute("step", 0.01); inputField.oninput = function(event) { + if (parseFloat(event.target.value) > parseFloat(slider.getAttribute("max")) && group.max !== 1) { + slider.setAttribute("max", event.target.value); + } + slider.value = event.target.value; self.webBridgeSync(group.id, slider.value); // bind web sock update here. From bcee25acc7317575a668df88046f169df0462492 Mon Sep 17 00:00:00 2001 From: Vladyslav Stelmakhovskyi Date: Sun, 28 May 2017 19:54:41 +0200 Subject: [PATCH 108/357] Make sure that there is only one connection created for web events, so downloads from CLARA IO not duplicated --- .../resources/qml/hifi/tablet/TabletRoot.qml | 20 +++++++++++-------- .../resources/qml/hifi/tablet/WindowRoot.qml | 19 +++++++++++------- scripts/system/edit.js | 8 +++++++- scripts/system/libraries/entityList.js | 8 +++++++- scripts/system/libraries/gridTool.js | 8 +++++++- 5 files changed, 45 insertions(+), 18 deletions(-) diff --git a/interface/resources/qml/hifi/tablet/TabletRoot.qml b/interface/resources/qml/hifi/tablet/TabletRoot.qml index 33af7da1ae..97c8854c86 100644 --- a/interface/resources/qml/hifi/tablet/TabletRoot.qml +++ b/interface/resources/qml/hifi/tablet/TabletRoot.qml @@ -170,20 +170,24 @@ Item { objectName: "loader" asynchronous: false - width: parent.width height: parent.height + // Hook up callback for clara.io download from the marketplace. + Connections { + id: eventBridgeConnection + target: null + onWebEventReceived: { + if (message.slice(0, 17) === "CLARA.IO DOWNLOAD") { + ApplicationInterface.addAssetToWorldFromURL(message.slice(18)); + } + } + } + onLoaded: { if (loader.item.hasOwnProperty("eventBridge")) { loader.item.eventBridge = eventBridge; - - // Hook up callback for clara.io download from the marketplace. - eventBridge.webEventReceived.connect(function (event) { - if (event.slice(0, 17) === "CLARA.IO DOWNLOAD") { - ApplicationInterface.addAssetToWorldFromURL(event.slice(18)); - } - }); + eventBridgeConnection.target = eventBridge } if (loader.item.hasOwnProperty("sendToScript")) { loader.item.sendToScript.connect(tabletRoot.sendToScript); diff --git a/interface/resources/qml/hifi/tablet/WindowRoot.qml b/interface/resources/qml/hifi/tablet/WindowRoot.qml index 470fd4a830..ee8dbbff59 100644 --- a/interface/resources/qml/hifi/tablet/WindowRoot.qml +++ b/interface/resources/qml/hifi/tablet/WindowRoot.qml @@ -90,16 +90,21 @@ Windows.ScrollingWindow { anchors.left: parent.left anchors.top: parent.top + // Hook up callback for clara.io download from the marketplace. + Connections { + id: eventBridgeConnection + target: null + onWebEventReceived: { + if (message.slice(0, 17) === "CLARA.IO DOWNLOAD") { + ApplicationInterface.addAssetToWorldFromURL(message.slice(18)); + } + } + } + onLoaded: { if (loader.item.hasOwnProperty("eventBridge")) { loader.item.eventBridge = eventBridge; - - // Hook up callback for clara.io download from the marketplace. - eventBridge.webEventReceived.connect(function (event) { - if (event.slice(0, 17) === "CLARA.IO DOWNLOAD") { - ApplicationInterface.addAssetToWorldFromURL(event.slice(18)); - } - }); + eventBridgeConnection.target = eventBridge } if (loader.item.hasOwnProperty("sendToScript")) { loader.item.sendToScript.connect(tabletRoot.sendToScript); diff --git a/scripts/system/edit.js b/scripts/system/edit.js index f39165f3df..6a1ede88c6 100644 --- a/scripts/system/edit.js +++ b/scripts/system/edit.js @@ -2100,7 +2100,13 @@ function selectParticleEntity(entityID) { } entityListTool.webView.webEventReceived.connect(function (data) { - data = JSON.parse(data); + try { + data = JSON.parse(data); + } catch(e) { + print("edit.js: Error parsing JSON: " + e.name + " data " + data) + return; + } + if (data.type === 'parent') { parentSelectedEntities(); } else if(data.type === 'unparent') { diff --git a/scripts/system/libraries/entityList.js b/scripts/system/libraries/entityList.js index 3b6d32ec1c..64a05fcebf 100644 --- a/scripts/system/libraries/entityList.js +++ b/scripts/system/libraries/entityList.js @@ -109,7 +109,13 @@ EntityListTool = function(opts) { }; webView.webEventReceived.connect(function(data) { - data = JSON.parse(data); + try { + data = JSON.parse(data); + } catch(e) { + print("entityList.js: Error parsing JSON: " + e.name + " data " + data) + return; + } + if (data.type == "selectionUpdate") { var ids = data.entityIds; var entityIDs = []; diff --git a/scripts/system/libraries/gridTool.js b/scripts/system/libraries/gridTool.js index 0290674a0f..de9596e9be 100644 --- a/scripts/system/libraries/gridTool.js +++ b/scripts/system/libraries/gridTool.js @@ -238,7 +238,13 @@ GridTool = function(opts) { }); webView.webEventReceived.connect(function(data) { - data = JSON.parse(data); + try { + data = JSON.parse(data); + } catch(e) { + print("gridTool.js: Error parsing JSON: " + e.name + " data " + data) + return; + } + if (data.type == "init") { horizontalGrid.emitUpdate(); } else if (data.type == "update") { From 508dee458049886cfe31187d864e7e43cbefcb74 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Mon, 29 May 2017 13:35:18 +1200 Subject: [PATCH 109/357] Increase entity creation distance to 2m --- scripts/system/edit.js | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/scripts/system/edit.js b/scripts/system/edit.js index f39165f3df..a270c6dd15 100644 --- a/scripts/system/edit.js +++ b/scripts/system/edit.js @@ -1409,14 +1409,15 @@ function handeMenuEvent(menuItem) { } function getPositionToCreateEntity() { var HALF_TREE_SCALE = 16384; - var direction = Quat.getForward(MyAvatar.orientation); - var distance = 1; - var position = Vec3.sum(MyAvatar.position, Vec3.multiply(direction, distance)); - + var CREATE_DISTANCE = 2; + var position; if (Camera.mode === "entity" || Camera.mode === "independent") { - position = Vec3.sum(Camera.position, Vec3.multiply(Quat.getForward(Camera.orientation), distance)); + position = Vec3.sum(Camera.position, Vec3.multiply(Quat.getForward(Camera.orientation), CREATE_DISTANCE)); + } else { + position = Vec3.sum(MyAvatar.position, Vec3.multiply(Quat.getForward(MyAvatar.orientation), CREATE_DISTANCE)); } position.y += 0.5; + if (position.x > HALF_TREE_SCALE || position.y > HALF_TREE_SCALE || position.z > HALF_TREE_SCALE) { return null; } From 9b679325ff2a37aa78b91239fc040aed1d5f04b7 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Mon, 29 May 2017 13:35:54 +1200 Subject: [PATCH 110/357] Don't raise creation position if in independent or entity view mode --- 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 a270c6dd15..2ec76863f9 100644 --- a/scripts/system/edit.js +++ b/scripts/system/edit.js @@ -1415,8 +1415,8 @@ function getPositionToCreateEntity() { position = Vec3.sum(Camera.position, Vec3.multiply(Quat.getForward(Camera.orientation), CREATE_DISTANCE)); } else { position = Vec3.sum(MyAvatar.position, Vec3.multiply(Quat.getForward(MyAvatar.orientation), CREATE_DISTANCE)); + position.y += 0.5; } - position.y += 0.5; if (position.x > HALF_TREE_SCALE || position.y > HALF_TREE_SCALE || position.z > HALF_TREE_SCALE) { return null; From f0785cd39eeb21804e7b9aa5811b54b0e29e5b0e Mon Sep 17 00:00:00 2001 From: David Rowe Date: Mon, 29 May 2017 13:52:36 +1200 Subject: [PATCH 111/357] Adjust creation position so that bounding box is creation distance away --- scripts/system/edit.js | 51 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/scripts/system/edit.js b/scripts/system/edit.js index 2ec76863f9..d3137f5aea 100644 --- a/scripts/system/edit.js +++ b/scripts/system/edit.js @@ -229,11 +229,62 @@ var toolBar = (function () { systemToolbar = null, tablet = null; + function adjustPositionPerBoundingBox(position, direction, registration, dimensions, orientation) { + // Adjust the position such that the bounding box lies behind the original position. + var CORNERS = [ + { x: 0, y: 0, z: 0 }, + { x: 0, y: 0, z: 1 }, + { x: 0, y: 1, z: 0 }, + { x: 0, y: 1, z: 1 }, + { x: 1, y: 0, z: 0 }, + { x: 1, y: 0, z: 1 }, + { x: 1, y: 1, z: 0 }, + { x: 1, y: 1, z: 1 }, + ]; + + // Go through all corners and find least (most negative) distance in front of position. + var distance = 0; + for (var i = 0, length = CORNERS.length; i < length; i++) { + var cornerVector = + Vec3.multiplyQbyV(orientation, Vec3.multiplyVbyV(Vec3.subtract(CORNERS[i], registration), dimensions)); + var cornerDistance = Vec3.dot(cornerVector, direction); + distance = Math.min(cornerDistance, distance); + } + position = Vec3.sum(Vec3.multiply(distance, direction), position); + + return position; + } + function createNewEntity(properties) { var dimensions = properties.dimensions ? properties.dimensions : DEFAULT_DIMENSIONS; var position = getPositionToCreateEntity(); var entityID = null; if (position !== null && position !== undefined) { + var ADJUST_ENTITY_TYPES = ["Box", "Sphere", "Shape", "Text", "Web"]; + if (ADJUST_ENTITY_TYPES.indexOf(properties.type) !== -1) { + var direction; + if (Camera.mode === "entity" || Camera.mode === "independent") { + direction = Camera.orientation; + } else { + direction = MyAvatar.orientation; + } + direction = Vec3.multiplyQbyV(direction, Vec3.UNIT_Z); + + var registration = properties.registration; + if (registration === undefined) { + var DEFAULT_REGISTRATION = { x: 0.5, y: 0.5, z: 0.5 }; + registration = DEFAULT_REGISTRATION; + } + + var orientation = properties.orientation; + if (orientation === undefined) { + var DEFAULT_ORIENTATION = Quat.fromPitchYawRollDegrees(0, 0, 0); + orientation = DEFAULT_ORIENTATION; + } + + position = adjustPositionPerBoundingBox(position, direction, registration, dimensions, orientation); + } + position = grid.snapToSurface(grid.snapToGrid(position, false, dimensions), dimensions); properties.position = position; if (Menu.isOptionChecked(GRABBABLE_ENTITIES_MENU_ITEM)) { From 6c890d90ef7b88d35d6c3f459864eb51c8e1afa9 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Mon, 29 May 2017 17:48:01 +1200 Subject: [PATCH 112/357] Adjust position of model after its been resized --- scripts/system/edit.js | 46 +++++++++++++++++++++++++++++++++--------- 1 file changed, 37 insertions(+), 9 deletions(-) diff --git a/scripts/system/edit.js b/scripts/system/edit.js index d3137f5aea..b5ef6dd395 100644 --- a/scripts/system/edit.js +++ b/scripts/system/edit.js @@ -260,16 +260,17 @@ var toolBar = (function () { var position = getPositionToCreateEntity(); var entityID = null; if (position !== null && position !== undefined) { - var ADJUST_ENTITY_TYPES = ["Box", "Sphere", "Shape", "Text", "Web"]; - if (ADJUST_ENTITY_TYPES.indexOf(properties.type) !== -1) { - var direction; - if (Camera.mode === "entity" || Camera.mode === "independent") { - direction = Camera.orientation; - } else { - direction = MyAvatar.orientation; - } - direction = Vec3.multiplyQbyV(direction, Vec3.UNIT_Z); + var direction; + if (Camera.mode === "entity" || Camera.mode === "independent") { + direction = Camera.orientation; + } else { + direction = MyAvatar.orientation; + } + direction = Vec3.multiplyQbyV(direction, Vec3.UNIT_Z); + var PRE_ADJUST_ENTITY_TYPES = ["Box", "Sphere", "Shape", "Text", "Web"]; + if (PRE_ADJUST_ENTITY_TYPES.indexOf(properties.type) !== -1) { + // Adjust position of entity per bounding box prior to creating it. var registration = properties.registration; if (registration === undefined) { var DEFAULT_REGISTRATION = { x: 0.5, y: 0.5, z: 0.5 }; @@ -294,6 +295,32 @@ var toolBar = (function () { if (properties.type == "ParticleEffect") { selectParticleEntity(entityID); } + + var POST_ADJUST_ENTITY_TYPES = ["Model"]; + if (POST_ADJUST_ENTITY_TYPES.indexOf(properties.type) !== -1) { + // Adjust position of entity per bounding box after it has been created and auto-resized. + var initialDimensions = Entities.getEntityProperties(entityID, ["dimensions"]).dimensions; + var DIMENSIONS_CHECK_INTERVAL = 200; + var MAX_DIMENSIONS_CHECKS = 10; + var dimensionsCheckCount = 0; + var dimensionsCheckFunction = function () { + dimensionsCheckCount++; + var properties = Entities.getEntityProperties(entityID, ["dimensions", "registrationPoint", "orientation", "rotation"]); + if (!Vec3.equal(properties.dimensions, initialDimensions)) { + position = adjustPositionPerBoundingBox(position, direction, properties.registrationPoint, + properties.dimensions, properties.rotation); + position = grid.snapToSurface(grid.snapToGrid(position, false, properties.dimensions), + properties.dimensions); + Entities.editEntity(entityID, { + position: position + }); + selectionManager._update(); + } else if (dimensionsCheckCount < MAX_DIMENSIONS_CHECKS) { + Script.setTimeout(dimensionsCheckFunction, DIMENSIONS_CHECK_INTERVAL); + } + }; + Script.setTimeout(dimensionsCheckFunction, DIMENSIONS_CHECK_INTERVAL); + } } else { Window.notifyEditError("Can't create " + properties.type + ": " + properties.type + " would be out of bounds."); @@ -1458,6 +1485,7 @@ function handeMenuEvent(menuItem) { } tooltip.show(false); } + function getPositionToCreateEntity() { var HALF_TREE_SCALE = 16384; var CREATE_DISTANCE = 2; From 31df18ff5b10ad6ab8d989bea7f6580a578b7736 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Mon, 29 May 2017 18:43:49 +1200 Subject: [PATCH 113/357] Fix snap-to-grid elevation --- scripts/system/libraries/gridTool.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/scripts/system/libraries/gridTool.js b/scripts/system/libraries/gridTool.js index 0290674a0f..11384ad91b 100644 --- a/scripts/system/libraries/gridTool.js +++ b/scripts/system/libraries/gridTool.js @@ -161,9 +161,9 @@ Grid = function(opts) { if (data.origin) { var pos = data.origin; - pos.x = pos.x === undefined ? origin.x : pos.x; - pos.y = pos.y === undefined ? origin.y : pos.y; - pos.z = pos.z === undefined ? origin.z : pos.z; + pos.x = pos.x === undefined ? origin.x : parseFloat(pos.x); + pos.y = pos.y === undefined ? origin.y : parseFloat(pos.y); + pos.z = pos.z === undefined ? origin.z : parseFloat(pos.z); that.setPosition(pos, true); } From 0920dbc1a8910c986b2c83b2422aa7fa63e192d9 Mon Sep 17 00:00:00 2001 From: volansystech Date: Mon, 29 May 2017 15:53:33 +0530 Subject: [PATCH 114/357] Resolve the comments of @ZappoMan. --- interface/src/Application.cpp | 111 +++++++++--------- interface/src/Application.h | 13 +- .../display-plugins/OpenGLDisplayPlugin.cpp | 12 +- .../src/display-plugins/OpenGLDisplayPlugin.h | 10 +- libraries/plugins/src/plugins/Plugin.h | 22 ++-- .../oculus/src/OculusBaseDisplayPlugin.cpp | 14 +-- plugins/oculus/src/OculusBaseDisplayPlugin.h | 4 +- 7 files changed, 92 insertions(+), 94 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index a40f31a8bb..57a627fe53 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -244,6 +244,8 @@ static const QString DESKTOP_LOCATION = QStandardPaths::writableLocation(QStanda Setting::Handle maxOctreePacketsPerSecond("maxOctreePPS", DEFAULT_MAX_OCTREE_PPS); static const QString MARKETPLACE_CDN_HOSTNAME = "mpassets.highfidelity.com"; +static const int INTERVAL_TO_CHECK_HMD_MOUNTED_STATUS = 500; // milliseconds +static const QString OCULUS_RIFT_DISPLAY_PLUGIN_NAME = "Oculus Rift"; const QHash Application::_acceptedExtensions { { SVO_EXTENSION, &Application::importSVOFromURL }, @@ -1338,19 +1340,20 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo properties["active_display_plugin"] = getActiveDisplayPlugin()->getName(); properties["using_hmd"] = isHMDMode(); - if (isOculusRiftPluginAvailable()) { - // If Oculus Rift Plugin is available and current display plugin is not Oculus Rift - // then startOculusRiftStandBySession to listen Oculus HMD Mounted status. - if (getActiveDisplayPlugin()->getName() != "Oculus Rift" && - !oculusRiftPlugin->isStandBySessionActive()) { - startOculusRiftStandBySession(); - } - // Poll periodically to check whether the user has worn Oculus HMD or not. And switch Display mode accordingly. - // If the user wear Oculus HMD then switch to VR mode. If the user removes Oculus HMD then switch to Desktop mode. - QTimer *switchDisplayModeTimer = new QTimer(this); - connect(switchDisplayModeTimer, SIGNAL(timeout()), this, SLOT(switchDisplayModeForOculus())); - switchDisplayModeTimer->start(500); - } + if (isHMDPluginAvailable()) { + // Currently, autoswitch display mode support is only for Oculus Rift. + // If HMD Plugin is available and current display plugin is not HMD plugin + // then startHMDStandBySession to listen HMD Mounted status. + if (getActiveDisplayPlugin()->getName() != _hmdPluginName && + !_hmdPlugin->isStandBySessionActive()) { + startHMDStandBySession(); + } + // Poll periodically to check whether the user has worn HMD or not. And switch Display mode accordingly. + // If the user wear HMD then switch to VR mode. If the user removes HMD then switch to Desktop mode. + QTimer *switchDisplayModeTimer = new QTimer(this); + connect(switchDisplayModeTimer, SIGNAL(timeout()), this, SLOT(switchDisplayMode())); + switchDisplayModeTimer->start(INTERVAL_TO_CHECK_HMD_MOUNTED_STATUS); + } auto glInfo = getGLContextData(); properties["gl_info"] = glInfo; @@ -1581,8 +1584,8 @@ void Application::aboutToQuit() { } getActiveDisplayPlugin()->deactivate(); - if (oculusRiftPlugin && oculusRiftPlugin->isStandBySessionActive()) { - oculusRiftPlugin->endStandBySession(); + if (_hmdPlugin && _hmdPlugin->isStandBySessionActive()) { + _hmdPlugin->endStandBySession(); } // Hide Running Scripts dialog so that it gets destroyed in an orderly manner; prevents warnings at shutdown. DependencyManager::get()->hide("RunningScripts"); @@ -6846,54 +6849,48 @@ void Application::updateDisplayMode() { Q_ASSERT_X(_displayPlugin, "Application::updateDisplayMode", "could not find an activated display plugin"); } -bool Application::isOculusRiftPluginAvailable() { - bool isOculusRiftPluginAvailable = false; - auto displayPlugins = PluginManager::getInstance()->getDisplayPlugins(); - // Default to the first item on the list, in case none of the menu items match - DisplayPluginPointer defaultplugin = displayPlugins.at(0); - if (defaultplugin->isHmd() && defaultplugin->getName() == "Oculus Rift") { - oculusRiftPlugin = defaultplugin; - return true; - } - // Iterate to check If Oculus Rift Plugin is available - foreach(DisplayPluginPointer displayPlugin, PluginManager::getInstance()->getDisplayPlugins()) { - QString pluginname = displayPlugin->getName(); - if (displayPlugin->isHmd() && pluginname == "Oculus Rift") { - oculusRiftPlugin = displayPlugin; - _oculusHMDMountedStatus = displayPlugin->isDisplayVisible(); - isOculusRiftPluginAvailable = true; - break; - } - } - return isOculusRiftPluginAvailable; +bool Application::isHMDPluginAvailable() { + bool isHMDEnabledPluginAvailable = false; + auto displayPlugins = PluginManager::getInstance()->getDisplayPlugins(); + // Currently, autoswitch display mode support is only for Oculus Rift. + foreach(DisplayPluginPointer displayPlugin, PluginManager::getInstance()->getDisplayPlugins()) { + if (displayPlugin->isHmd() && displayPlugin->getName() == OCULUS_RIFT_DISPLAY_PLUGIN_NAME) { + _hmdPlugin = displayPlugin; + _hmdPluginName = displayPlugin->getName(); + _hmdMountedStatus = displayPlugin->isDisplayVisible(); + isHMDEnabledPluginAvailable = true; + break; + } + } + return isHMDEnabledPluginAvailable; } -void Application::switchDisplayModeForOculus() { - bool currenthmdMountedStatus = oculusRiftPlugin->isDisplayVisible(); - if (currenthmdMountedStatus != _oculusHMDMountedStatus) { - // Switch to respective mode as soon as currenthmdMountedStatus changes - if (currenthmdMountedStatus == false && _oculusHMDMountedStatus == true) { - qCDebug(interfaceapp) << "Switching from HMD to desktop mode"; - setActiveDisplayPlugin("Desktop"); - startOculusRiftStandBySession(); - } - if (currenthmdMountedStatus == true && _oculusHMDMountedStatus == false) { - qCDebug(interfaceapp) << "Switching from Desktop to HMD mode"; - endOculusRiftStandBySession(); - setActiveDisplayPlugin("Oculus Rift"); - } - } - _oculusHMDMountedStatus = currenthmdMountedStatus; +void Application::switchDisplayMode() { + bool currentHMDMountedStatus = _hmdPlugin->isDisplayVisible(); + if (currentHMDMountedStatus != _hmdMountedStatus) { + // Switch to respective mode as soon as currenthmdMountedStatus changes + if (currentHMDMountedStatus == false && _hmdMountedStatus == true) { + qCDebug(interfaceapp) << "Switching from HMD to desktop mode"; + setActiveDisplayPlugin("Desktop"); + startHMDStandBySession(); + } + if (currentHMDMountedStatus == true && _hmdMountedStatus == false) { + qCDebug(interfaceapp) << "Switching from Desktop to HMD mode"; + endHMDStandBySession(); + setActiveDisplayPlugin(_hmdPluginName); + } + } + _hmdMountedStatus = currentHMDMountedStatus; } -bool Application::startOculusRiftStandBySession() { - bool isStandBySessionStarted = oculusRiftPlugin->startStandBySession(); - qCDebug(interfaceapp) << "startOculusRiftStandBySession: " << isStandBySessionStarted; - return isStandBySessionStarted; +bool Application::startHMDStandBySession() { + bool isStandBySessionStarted = _hmdPlugin->startStandBySession(); + qCDebug(interfaceapp) << "startHMDStandBySession: " << isStandBySessionStarted; + return isStandBySessionStarted; } -void Application::endOculusRiftStandBySession() { - oculusRiftPlugin->endStandBySession(); +void Application::endHMDStandBySession() { + _hmdPlugin->endStandBySession(); } mat4 Application::getEyeProjection(int eye) const { diff --git a/interface/src/Application.h b/interface/src/Application.h index 112b650160..699cb9f879 100644 --- a/interface/src/Application.h +++ b/interface/src/Application.h @@ -442,7 +442,7 @@ private slots: void addAssetToWorldErrorTimeout(); void handleSandboxStatus(QNetworkReply* reply); - void switchDisplayModeForOculus(); + void switchDisplayMode(); private: static void initDisplay(); void init(); @@ -684,11 +684,12 @@ private: SharedSoundPointer _snapshotSound; - DisplayPluginPointer oculusRiftPlugin; - bool isOculusRiftPluginAvailable(); - bool _oculusHMDMountedStatus; // Keep track of Oculus Rift HMDMounted Flag - bool startOculusRiftStandBySession(); - void endOculusRiftStandBySession(); + DisplayPluginPointer _hmdPlugin; // HMD Enabled Plugin + QString _hmdPluginName; + bool isHMDPluginAvailable(); + bool _hmdMountedStatus; // Check HMD Mounted status + bool startHMDStandBySession(); + void endHMDStandBySession(); }; diff --git a/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.cpp b/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.cpp index cebe844b84..3bdf9a672c 100644 --- a/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.cpp +++ b/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.cpp @@ -339,15 +339,15 @@ void OpenGLDisplayPlugin::deactivate() { } bool OpenGLDisplayPlugin::startStandBySession() { - if (!activateStandBySession()) { - return false; - } - return Parent::startStandBySession(); + if (!activateStandBySession()) { + return false; + } + return Parent::startStandBySession(); } void OpenGLDisplayPlugin::endStandBySession() { - deactivateStandBySession(); - return Parent::endStandBySession(); + deactivateStandBySession(); + return Parent::endStandBySession(); } void OpenGLDisplayPlugin::customizeContext() { diff --git a/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.h b/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.h index ecde3b3c93..9681158c55 100644 --- a/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.h +++ b/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.h @@ -42,8 +42,8 @@ public: // between the main thread and the presentation thread bool activate() override final; void deactivate() override final; - bool startStandBySession() override final; - void endStandBySession() override final; + bool startStandBySession() override final; + void endStandBySession() override final; bool eventFilter(QObject* receiver, QEvent* event) override; bool isDisplayVisible() const override { return true; } @@ -102,9 +102,9 @@ protected: virtual bool internalActivate() { return true; } virtual void internalDeactivate() {} - // Returns true on successful activation of standby session - virtual bool activateStandBySession() { return true; } - virtual void deactivateStandBySession() {} + // Returns true on successful activation of standby session + virtual bool activateStandBySession() { return true; } + virtual void deactivateStandBySession() {} // Plugin specific functionality to send the composed scene to the output window or device virtual void internalPresent(); diff --git a/libraries/plugins/src/plugins/Plugin.h b/libraries/plugins/src/plugins/Plugin.h index 045a9eee15..11ea79186a 100644 --- a/libraries/plugins/src/plugins/Plugin.h +++ b/libraries/plugins/src/plugins/Plugin.h @@ -53,18 +53,18 @@ public: virtual bool isActive() { return _active; } - virtual bool startStandBySession() { - _standbysessionstatus = true; - return _standbysessionstatus; - } + virtual bool startStandBySession() { + _standbysessionstatus = true; + return _standbysessionstatus; + } - virtual void endStandBySession() { - _standbysessionstatus = false; - } + virtual void endStandBySession() { + _standbysessionstatus = false; + } - virtual bool isStandBySessionActive() { - return _standbysessionstatus; - } + virtual bool isStandBySessionActive() { + return _standbysessionstatus; + } /** * Called by the application during it's idle phase. If the plugin needs to do @@ -85,7 +85,7 @@ signals: protected: bool _active { false }; - bool _standbysessionstatus { false }; + bool _standbysessionstatus { false }; PluginContainer* _container { nullptr }; static const char* UNKNOWN_PLUGIN_ID; diff --git a/plugins/oculus/src/OculusBaseDisplayPlugin.cpp b/plugins/oculus/src/OculusBaseDisplayPlugin.cpp index 28e30e0d21..df98abf408 100644 --- a/plugins/oculus/src/OculusBaseDisplayPlugin.cpp +++ b/plugins/oculus/src/OculusBaseDisplayPlugin.cpp @@ -128,15 +128,15 @@ void OculusBaseDisplayPlugin::internalDeactivate() { } bool OculusBaseDisplayPlugin::activateStandBySession() { - _session = acquireOculusSession(); - if (!_session) { - return false; - } - return true; + _session = acquireOculusSession(); + if (!_session) { + return false; + } + return true; } void OculusBaseDisplayPlugin::deactivateStandBySession() { - releaseOculusSession(); - _session = nullptr; + releaseOculusSession(); + _session = nullptr; } void OculusBaseDisplayPlugin::updatePresentPose() { //mat4 sensorResetMat; diff --git a/plugins/oculus/src/OculusBaseDisplayPlugin.h b/plugins/oculus/src/OculusBaseDisplayPlugin.h index 79085f817b..1f54742c2d 100644 --- a/plugins/oculus/src/OculusBaseDisplayPlugin.h +++ b/plugins/oculus/src/OculusBaseDisplayPlugin.h @@ -33,8 +33,8 @@ protected: void uncustomizeContext() override; bool internalActivate() override; void internalDeactivate() override; - bool activateStandBySession() override; - void deactivateStandBySession() override; + bool activateStandBySession() override; + void deactivateStandBySession() override; void updatePresentPose() override; protected: From e90b1b5a67c8fd33d539c7d86b677ba24d17f61c Mon Sep 17 00:00:00 2001 From: volansystech Date: Mon, 29 May 2017 18:21:59 +0530 Subject: [PATCH 115/357] Resolve the comments of @ZappoMan. --- interface/src/Application.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index d219d7bcb6..b5733fa6f5 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -246,6 +246,7 @@ Setting::Handle maxOctreePacketsPerSecond("maxOctreePPS", DEFAULT_MAX_OCTRE static const QString MARKETPLACE_CDN_HOSTNAME = "mpassets.highfidelity.com"; static const int INTERVAL_TO_CHECK_HMD_MOUNTED_STATUS = 500; // milliseconds static const QString OCULUS_RIFT_DISPLAY_PLUGIN_NAME = "Oculus Rift"; +static const QString DESKTOP_DISPLAY_PLUGIN_NAME = "Desktop"; const QHash Application::_acceptedExtensions { { SVO_EXTENSION, &Application::importSVOFromURL }, @@ -1348,8 +1349,8 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo !_hmdPlugin->isStandBySessionActive()) { startHMDStandBySession(); } - // Poll periodically to check whether the user has worn HMD or not. And switch Display mode accordingly. - // If the user wear HMD then switch to VR mode. If the user removes HMD then switch to Desktop mode. + // Poll periodically to check whether the user has worn HMD or not. Switch Display mode accordingly. + // If the user wears HMD then switch to VR mode. If the user removes HMD then switch to Desktop mode. QTimer *switchDisplayModeTimer = new QTimer(this); connect(switchDisplayModeTimer, SIGNAL(timeout()), this, SLOT(switchDisplayMode())); switchDisplayModeTimer->start(INTERVAL_TO_CHECK_HMD_MOUNTED_STATUS); @@ -6773,7 +6774,7 @@ void Application::switchDisplayMode() { // Switch to respective mode as soon as currenthmdMountedStatus changes if (currentHMDMountedStatus == false && _hmdMountedStatus == true) { qCDebug(interfaceapp) << "Switching from HMD to desktop mode"; - setActiveDisplayPlugin("Desktop"); + setActiveDisplayPlugin(DESKTOP_DISPLAY_PLUGIN_NAME); startHMDStandBySession(); } if (currentHMDMountedStatus == true && _hmdMountedStatus == false) { From 18558dd7950b0ae7db44e8e11e190c4539e23a6d Mon Sep 17 00:00:00 2001 From: David Rowe Date: Tue, 30 May 2017 13:34:17 +1200 Subject: [PATCH 116/357] Make JSON import distance 2m --- scripts/system/edit.js | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/scripts/system/edit.js b/scripts/system/edit.js index b5ef6dd395..3a9a7fc106 100644 --- a/scripts/system/edit.js +++ b/scripts/system/edit.js @@ -1486,8 +1486,9 @@ function handeMenuEvent(menuItem) { tooltip.show(false); } +var HALF_TREE_SCALE = 16384; + function getPositionToCreateEntity() { - var HALF_TREE_SCALE = 16384; var CREATE_DISTANCE = 2; var position; if (Camera.mode === "entity" || Camera.mode === "independent") { @@ -1503,22 +1504,20 @@ function getPositionToCreateEntity() { return position; } -function getPositionToImportEntity() { - var dimensions = Clipboard.getContentsDimensions(); - var HALF_TREE_SCALE = 16384; - var direction = Quat.getForward(MyAvatar.orientation); - var longest = 1; - longest = Math.sqrt(Math.pow(dimensions.x, 2) + Math.pow(dimensions.z, 2)); - var position = Vec3.sum(MyAvatar.position, Vec3.multiply(direction, longest)); - +function getPositionToImportEntities() { + var CREATE_DISTANCE = 2; + var distance = CREATE_DISTANCE + Clipboard.getClipboardContentsLargestDimension() / 2; + var position; if (Camera.mode === "entity" || Camera.mode === "independent") { - position = Vec3.sum(Camera.position, Vec3.multiply(Quat.getForward(Camera.orientation), longest)); + position = Vec3.sum(Camera.position, Vec3.multiply(Quat.getForward(Camera.orientation), distance)); + } else { + position = Vec3.sum(MyAvatar.position, Vec3.multiply(Quat.getForward(MyAvatar.orientation), distance)); + position.y += 0.5; } if (position.x > HALF_TREE_SCALE || position.y > HALF_TREE_SCALE || position.z > HALF_TREE_SCALE) { return null; } - return position; } function importSVO(importURL) { @@ -1544,7 +1543,7 @@ function importSVO(importURL) { z: 0 }; if (Clipboard.getClipboardContentsLargestDimension() < VERY_LARGE) { - position = getPositionToImportEntity(); + position = getPositionToImportEntities(); } if (position !== null && position !== undefined) { var pastedEntityIDs = Clipboard.pasteEntities(position); From 4c0296daaa9f3eab8006e1abdc95a60e7ee45ffe Mon Sep 17 00:00:00 2001 From: David Rowe Date: Tue, 30 May 2017 14:29:10 +1200 Subject: [PATCH 117/357] Reposition imported JSON entities so that they start at import distance --- scripts/system/edit.js | 103 ++++++++++++++++++++++++++++------------- 1 file changed, 70 insertions(+), 33 deletions(-) diff --git a/scripts/system/edit.js b/scripts/system/edit.js index 3a9a7fc106..b84fd86f3f 100644 --- a/scripts/system/edit.js +++ b/scripts/system/edit.js @@ -217,6 +217,32 @@ function hideMarketplace() { // } // } +function adjustPositionPerBoundingBox(position, direction, registration, dimensions, orientation) { + // Adjust the position such that the bounding box (registration, dimenions, and orientation) lies behind the original + // position in the given direction. + var CORNERS = [ + { x: 0, y: 0, z: 0 }, + { x: 0, y: 0, z: 1 }, + { x: 0, y: 1, z: 0 }, + { x: 0, y: 1, z: 1 }, + { x: 1, y: 0, z: 0 }, + { x: 1, y: 0, z: 1 }, + { x: 1, y: 1, z: 0 }, + { x: 1, y: 1, z: 1 }, + ]; + + // Go through all corners and find least (most negative) distance in front of position. + var distance = 0; + for (var i = 0, length = CORNERS.length; i < length; i++) { + var cornerVector = + Vec3.multiplyQbyV(orientation, Vec3.multiplyVbyV(Vec3.subtract(CORNERS[i], registration), dimensions)); + var cornerDistance = Vec3.dot(cornerVector, direction); + distance = Math.min(cornerDistance, distance); + } + position = Vec3.sum(Vec3.multiply(distance, direction), position); + return position; +} + var TOOLS_PATH = Script.resolvePath("assets/images/tools/"); var GRABBABLE_ENTITIES_MENU_CATEGORY = "Edit"; var GRABBABLE_ENTITIES_MENU_ITEM = "Create Entities As Grabbable"; @@ -229,33 +255,9 @@ var toolBar = (function () { systemToolbar = null, tablet = null; - function adjustPositionPerBoundingBox(position, direction, registration, dimensions, orientation) { - // Adjust the position such that the bounding box lies behind the original position. - var CORNERS = [ - { x: 0, y: 0, z: 0 }, - { x: 0, y: 0, z: 1 }, - { x: 0, y: 1, z: 0 }, - { x: 0, y: 1, z: 1 }, - { x: 1, y: 0, z: 0 }, - { x: 1, y: 0, z: 1 }, - { x: 1, y: 1, z: 0 }, - { x: 1, y: 1, z: 1 }, - ]; - - // Go through all corners and find least (most negative) distance in front of position. - var distance = 0; - for (var i = 0, length = CORNERS.length; i < length; i++) { - var cornerVector = - Vec3.multiplyQbyV(orientation, Vec3.multiplyVbyV(Vec3.subtract(CORNERS[i], registration), dimensions)); - var cornerDistance = Vec3.dot(cornerVector, direction); - distance = Math.min(cornerDistance, distance); - } - position = Vec3.sum(Vec3.multiply(distance, direction), position); - - return position; - } - function createNewEntity(properties) { + + var dimensions = properties.dimensions ? properties.dimensions : DEFAULT_DIMENSIONS; var position = getPositionToCreateEntity(); var entityID = null; @@ -1520,6 +1522,7 @@ function getPositionToImportEntities() { } return position; } + function importSVO(importURL) { if (!Entities.canRez() && !Entities.canRezTmp()) { Window.notifyEditError(INSUFFICIENT_PERMISSIONS_IMPORT_ERROR_MSG); @@ -1537,22 +1540,56 @@ function importSVO(importURL) { if (success) { var VERY_LARGE = 10000; - var position = { - x: 0, - y: 0, - z: 0 - }; - if (Clipboard.getClipboardContentsLargestDimension() < VERY_LARGE) { + var isLargeImport = Clipboard.getClipboardContentsLargestDimension() >= VERY_LARGE; + var position = Vec3.ZERO; + if (!isLargeImport) { position = getPositionToImportEntities(); } if (position !== null && position !== undefined) { var pastedEntityIDs = Clipboard.pasteEntities(position); + if (!isLargeImport) { + // The first entity in Clipboard gets the specified position with the rest being relative to it. Therefore, move + // entities after they're imported so that they're all the correct distance in front of and with geometric mean + // centered on the avatar/camera direction. + + var targetDirection; + if (Camera.mode === "entity" || Camera.mode === "independent") { + targetDirection = Camera.orientation; + } else { + targetDirection = MyAvatar.orientation; + } + targetDirection = Vec3.multiplyQbyV(targetDirection, Vec3.UNIT_Z); + + var targetPosition = getPositionToCreateEntity(); + var deltaParallel = HALF_TREE_SCALE; // Distance to move entities parallel to targetDirection. + var deltaPerpendicular = Vec3.ZERO; // Distance to move entities perpendicular to targetDirection. + var entityPositions = []; + for (var i = 0, length = pastedEntityIDs.length; i < length; i++) { + var properties = Entities.getEntityProperties(pastedEntityIDs[i], ["position", "dimensions", + "registrationPoint", "rotation"]); + var adjustedPosition = adjustPositionPerBoundingBox(targetPosition, targetDirection, properties.registrationPoint, + properties.dimensions, properties.rotation); + var delta = Vec3.subtract(adjustedPosition, properties.position); + var distance = Vec3.dot(delta, targetDirection); + deltaParallel = Math.min(distance, deltaParallel); + deltaPerpendicular = Vec3.sum(Vec3.subtract(delta, Vec3.multiply(distance, targetDirection)), deltaPerpendicular); + entityPositions[i] = properties.position; + } + deltaPerpendicular = Vec3.multiply(1 / pastedEntityIDs.length, deltaPerpendicular); + + var deltaPosition = Vec3.sum(Vec3.multiply(deltaParallel, targetDirection), deltaPerpendicular); + for (var i = 0, length = pastedEntityIDs.length; i < length; i++) { + Entities.editEntity(pastedEntityIDs[i], { + position: Vec3.sum(deltaPosition, entityPositions[i]) + }); + } + } if (isActive) { selectionManager.setSelections(pastedEntityIDs); } } else { - Window.notifyEditError("Can't import objects: objects would be out of bounds."); + Window.notifyEditError("Can't import entities: entities would be out of bounds."); } } else { Window.notifyEditError("There was an error importing the entity file."); From b176dbe54425990fbdcef98bd88c027a2998e44a Mon Sep 17 00:00:00 2001 From: David Rowe Date: Tue, 30 May 2017 14:35:59 +1200 Subject: [PATCH 118/357] Refactoring --- scripts/system/edit.js | 26 +++++--------------------- 1 file changed, 5 insertions(+), 21 deletions(-) diff --git a/scripts/system/edit.js b/scripts/system/edit.js index b84fd86f3f..293402f618 100644 --- a/scripts/system/edit.js +++ b/scripts/system/edit.js @@ -1490,30 +1490,14 @@ function handeMenuEvent(menuItem) { var HALF_TREE_SCALE = 16384; -function getPositionToCreateEntity() { +function getPositionToCreateEntity(extra) { var CREATE_DISTANCE = 2; var position; + var delta = extra !== undefined ? extra : 0; if (Camera.mode === "entity" || Camera.mode === "independent") { - position = Vec3.sum(Camera.position, Vec3.multiply(Quat.getForward(Camera.orientation), CREATE_DISTANCE)); + position = Vec3.sum(Camera.position, Vec3.multiply(Quat.getForward(Camera.orientation), CREATE_DISTANCE + delta)); } else { - position = Vec3.sum(MyAvatar.position, Vec3.multiply(Quat.getForward(MyAvatar.orientation), CREATE_DISTANCE)); - position.y += 0.5; - } - - if (position.x > HALF_TREE_SCALE || position.y > HALF_TREE_SCALE || position.z > HALF_TREE_SCALE) { - return null; - } - return position; -} - -function getPositionToImportEntities() { - var CREATE_DISTANCE = 2; - var distance = CREATE_DISTANCE + Clipboard.getClipboardContentsLargestDimension() / 2; - var position; - if (Camera.mode === "entity" || Camera.mode === "independent") { - position = Vec3.sum(Camera.position, Vec3.multiply(Quat.getForward(Camera.orientation), distance)); - } else { - position = Vec3.sum(MyAvatar.position, Vec3.multiply(Quat.getForward(MyAvatar.orientation), distance)); + position = Vec3.sum(MyAvatar.position, Vec3.multiply(Quat.getForward(MyAvatar.orientation), CREATE_DISTANCE + delta)); position.y += 0.5; } @@ -1543,7 +1527,7 @@ function importSVO(importURL) { var isLargeImport = Clipboard.getClipboardContentsLargestDimension() >= VERY_LARGE; var position = Vec3.ZERO; if (!isLargeImport) { - position = getPositionToImportEntities(); + position = getPositionToCreateEntity(Clipboard.getClipboardContentsLargestDimension() / 2); } if (position !== null && position !== undefined) { var pastedEntityIDs = Clipboard.pasteEntities(position); From e02021bddf473ef75c5f939b6a4d23617a5703da Mon Sep 17 00:00:00 2001 From: David Rowe Date: Tue, 30 May 2017 14:38:59 +1200 Subject: [PATCH 119/357] Tidying --- scripts/system/edit.js | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/scripts/system/edit.js b/scripts/system/edit.js index 293402f618..9f98c553bf 100644 --- a/scripts/system/edit.js +++ b/scripts/system/edit.js @@ -256,8 +256,6 @@ var toolBar = (function () { tablet = null; function createNewEntity(properties) { - - var dimensions = properties.dimensions ? properties.dimensions : DEFAULT_DIMENSIONS; var position = getPositionToCreateEntity(); var entityID = null; @@ -307,7 +305,7 @@ var toolBar = (function () { var dimensionsCheckCount = 0; var dimensionsCheckFunction = function () { dimensionsCheckCount++; - var properties = Entities.getEntityProperties(entityID, ["dimensions", "registrationPoint", "orientation", "rotation"]); + var properties = Entities.getEntityProperties(entityID, ["dimensions", "registrationPoint", "rotation"]); if (!Vec3.equal(properties.dimensions, initialDimensions)) { position = adjustPositionPerBoundingBox(position, direction, properties.registrationPoint, properties.dimensions, properties.rotation); @@ -1551,12 +1549,13 @@ function importSVO(importURL) { for (var i = 0, length = pastedEntityIDs.length; i < length; i++) { var properties = Entities.getEntityProperties(pastedEntityIDs[i], ["position", "dimensions", "registrationPoint", "rotation"]); - var adjustedPosition = adjustPositionPerBoundingBox(targetPosition, targetDirection, properties.registrationPoint, - properties.dimensions, properties.rotation); + var adjustedPosition = adjustPositionPerBoundingBox(targetPosition, targetDirection, + properties.registrationPoint, properties.dimensions, properties.rotation); var delta = Vec3.subtract(adjustedPosition, properties.position); var distance = Vec3.dot(delta, targetDirection); deltaParallel = Math.min(distance, deltaParallel); - deltaPerpendicular = Vec3.sum(Vec3.subtract(delta, Vec3.multiply(distance, targetDirection)), deltaPerpendicular); + deltaPerpendicular = Vec3.sum(Vec3.subtract(delta, Vec3.multiply(distance, targetDirection)), + deltaPerpendicular); entityPositions[i] = properties.position; } deltaPerpendicular = Vec3.multiply(1 / pastedEntityIDs.length, deltaPerpendicular); From 1e8698aee113540f61a71f9fcc3e972ece37e915 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Tue, 30 May 2017 15:23:18 +1200 Subject: [PATCH 120/357] Snap imported JSON to grid --- scripts/system/edit.js | 11 ++++++++++- scripts/system/libraries/gridTool.js | 16 ++++++++++++---- 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/scripts/system/edit.js b/scripts/system/edit.js index 9f98c553bf..510aab1e7a 100644 --- a/scripts/system/edit.js +++ b/scripts/system/edit.js @@ -1559,8 +1559,17 @@ function importSVO(importURL) { entityPositions[i] = properties.position; } deltaPerpendicular = Vec3.multiply(1 / pastedEntityIDs.length, deltaPerpendicular); - var deltaPosition = Vec3.sum(Vec3.multiply(deltaParallel, targetDirection), deltaPerpendicular); + + if (grid.getSnapToGrid()) { + var properties = Entities.getEntityProperties(pastedEntityIDs[0], ["position", "dimensions", + "registrationPoint"]); + var position = Vec3.sum(deltaPosition, properties.position); + position = grid.snapToSurface(grid.snapToGrid(position, false, properties.dimensions, + properties.registrationPoint), properties.dimensions, properties.registrationPoint); + deltaPosition = Vec3.subtract(position, properties.position); + } + for (var i = 0, length = pastedEntityIDs.length; i < length; i++) { Entities.editEntity(pastedEntityIDs[i], { position: Vec3.sum(deltaPosition, entityPositions[i]) diff --git a/scripts/system/libraries/gridTool.js b/scripts/system/libraries/gridTool.js index 11384ad91b..08eb96a2bc 100644 --- a/scripts/system/libraries/gridTool.js +++ b/scripts/system/libraries/gridTool.js @@ -79,7 +79,7 @@ Grid = function(opts) { } } - that.snapToSurface = function(position, dimensions) { + that.snapToSurface = function(position, dimensions, registration) { if (!snapToGrid) { return position; } @@ -88,14 +88,18 @@ Grid = function(opts) { dimensions = { x: 0, y: 0, z: 0 }; } + if (registration === undefined) { + registration = { x: 0.5, y: 0.5, z: 0.5 }; + } + return { x: position.x, - y: origin.y + (dimensions.y / 2), + y: origin.y + (registration.y * dimensions.y), z: position.z }; } - that.snapToGrid = function(position, majorOnly, dimensions) { + that.snapToGrid = function(position, majorOnly, dimensions, registration) { if (!snapToGrid) { return position; } @@ -104,6 +108,10 @@ Grid = function(opts) { dimensions = { x: 0, y: 0, z: 0 }; } + if (registration === undefined) { + registration = { x: 0.5, y: 0.5, z: 0.5 }; + } + var spacing = majorOnly ? majorGridEvery : minorGridEvery; position = Vec3.subtract(position, origin); @@ -112,7 +120,7 @@ Grid = function(opts) { position.y = Math.round(position.y / spacing) * spacing; position.z = Math.round(position.z / spacing) * spacing; - return Vec3.sum(Vec3.sum(position, Vec3.multiply(0.5, dimensions)), origin); + return Vec3.sum(Vec3.sum(position, Vec3.multiplyVbyV(registration, dimensions)), origin); } that.snapToSpacing = function(delta, majorOnly) { From f5066aac5120b64da88d9726211f62fd5950ac3b Mon Sep 17 00:00:00 2001 From: David Rowe Date: Tue, 30 May 2017 15:53:03 +1200 Subject: [PATCH 121/357] Don't adjust position of imported entities of particular types --- scripts/system/edit.js | 63 +++++++++++++++++++++++------------------- 1 file changed, 35 insertions(+), 28 deletions(-) diff --git a/scripts/system/edit.js b/scripts/system/edit.js index 510aab1e7a..c1ce5321b4 100644 --- a/scripts/system/edit.js +++ b/scripts/system/edit.js @@ -1533,33 +1533,38 @@ function importSVO(importURL) { // The first entity in Clipboard gets the specified position with the rest being relative to it. Therefore, move // entities after they're imported so that they're all the correct distance in front of and with geometric mean // centered on the avatar/camera direction. + var deltaPosition = Vec3.ZERO; - var targetDirection; - if (Camera.mode === "entity" || Camera.mode === "independent") { - targetDirection = Camera.orientation; - } else { - targetDirection = MyAvatar.orientation; - } - targetDirection = Vec3.multiplyQbyV(targetDirection, Vec3.UNIT_Z); + var properties = Entities.getEntityProperties(pastedEntityIDs[0], ["type"]); + var NO_ADJUST_ENTITY_TYPES = ["Zone", "Light", "ParticleEffect"]; + if (NO_ADJUST_ENTITY_TYPES.indexOf(properties.type) === -1) { + var targetDirection; + if (Camera.mode === "entity" || Camera.mode === "independent") { + targetDirection = Camera.orientation; + } else { + targetDirection = MyAvatar.orientation; + } + targetDirection = Vec3.multiplyQbyV(targetDirection, Vec3.UNIT_Z); - var targetPosition = getPositionToCreateEntity(); - var deltaParallel = HALF_TREE_SCALE; // Distance to move entities parallel to targetDirection. - var deltaPerpendicular = Vec3.ZERO; // Distance to move entities perpendicular to targetDirection. - var entityPositions = []; - for (var i = 0, length = pastedEntityIDs.length; i < length; i++) { - var properties = Entities.getEntityProperties(pastedEntityIDs[i], ["position", "dimensions", - "registrationPoint", "rotation"]); - var adjustedPosition = adjustPositionPerBoundingBox(targetPosition, targetDirection, - properties.registrationPoint, properties.dimensions, properties.rotation); - var delta = Vec3.subtract(adjustedPosition, properties.position); - var distance = Vec3.dot(delta, targetDirection); - deltaParallel = Math.min(distance, deltaParallel); - deltaPerpendicular = Vec3.sum(Vec3.subtract(delta, Vec3.multiply(distance, targetDirection)), - deltaPerpendicular); - entityPositions[i] = properties.position; + var targetPosition = getPositionToCreateEntity(); + var deltaParallel = HALF_TREE_SCALE; // Distance to move entities parallel to targetDirection. + var deltaPerpendicular = Vec3.ZERO; // Distance to move entities perpendicular to targetDirection. + var entityPositions = []; + for (var i = 0, length = pastedEntityIDs.length; i < length; i++) { + var properties = Entities.getEntityProperties(pastedEntityIDs[i], ["position", "dimensions", + "registrationPoint", "rotation"]); + var adjustedPosition = adjustPositionPerBoundingBox(targetPosition, targetDirection, + properties.registrationPoint, properties.dimensions, properties.rotation); + var delta = Vec3.subtract(adjustedPosition, properties.position); + var distance = Vec3.dot(delta, targetDirection); + deltaParallel = Math.min(distance, deltaParallel); + deltaPerpendicular = Vec3.sum(Vec3.subtract(delta, Vec3.multiply(distance, targetDirection)), + deltaPerpendicular); + entityPositions[i] = properties.position; + } + deltaPerpendicular = Vec3.multiply(1 / pastedEntityIDs.length, deltaPerpendicular); + deltaPosition = Vec3.sum(Vec3.multiply(deltaParallel, targetDirection), deltaPerpendicular); } - deltaPerpendicular = Vec3.multiply(1 / pastedEntityIDs.length, deltaPerpendicular); - var deltaPosition = Vec3.sum(Vec3.multiply(deltaParallel, targetDirection), deltaPerpendicular); if (grid.getSnapToGrid()) { var properties = Entities.getEntityProperties(pastedEntityIDs[0], ["position", "dimensions", @@ -1570,10 +1575,12 @@ function importSVO(importURL) { deltaPosition = Vec3.subtract(position, properties.position); } - for (var i = 0, length = pastedEntityIDs.length; i < length; i++) { - Entities.editEntity(pastedEntityIDs[i], { - position: Vec3.sum(deltaPosition, entityPositions[i]) - }); + if (!Vec3.equal(deltaPosition, Vec3.ZERO)) { + for (var i = 0, length = pastedEntityIDs.length; i < length; i++) { + Entities.editEntity(pastedEntityIDs[i], { + position: Vec3.sum(deltaPosition, entityPositions[i]) + }); + } } } From 8de93d9651f0924c9630ca9a25b819575c2e6ae0 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Tue, 30 May 2017 15:53:58 +1200 Subject: [PATCH 122/357] Fix typo noticed in passing --- libraries/shared/src/Extents.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/shared/src/Extents.h b/libraries/shared/src/Extents.h index 850735dd5d..444575b7d3 100644 --- a/libraries/shared/src/Extents.h +++ b/libraries/shared/src/Extents.h @@ -69,7 +69,7 @@ public: glm::vec3 size() const { return maximum - minimum; } float largestDimension() const { return glm::compMax(size()); } - /// \return new Extents which is original rotated around orign by rotation + /// \return new Extents which is original rotated around origin by rotation Extents getRotated(const glm::quat& rotation) const { Extents temp(minimum, maximum); temp.rotate(rotation); From 0f80a8b7af6991a5873fafd220fde1600f2b9d27 Mon Sep 17 00:00:00 2001 From: Vladyslav Stelmakhovskyi Date: Tue, 30 May 2017 16:51:04 +0200 Subject: [PATCH 123/357] On create button, switch Tablet to landscape mode --- scripts/system/edit.js | 6 +++++- scripts/system/tablet-ui/tabletUI.js | 8 ++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/scripts/system/edit.js b/scripts/system/edit.js index f39165f3df..79064a02df 100644 --- a/scripts/system/edit.js +++ b/scripts/system/edit.js @@ -564,6 +564,8 @@ var toolBar = (function () { enabled: active })); isActive = active; + var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system"); + if (!isActive) { entityListTool.setVisible(false); gridTool.setVisible(false); @@ -572,8 +574,8 @@ var toolBar = (function () { selectionManager.clearSelections(); cameraManager.disable(); selectionDisplay.triggerMapping.disable(); + tablet.landscape = false; } else { - var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system"); tablet.loadQMLSource("Edit.qml"); UserActivityLogger.enabledEdit(); entityListTool.setVisible(true); @@ -581,6 +583,8 @@ var toolBar = (function () { grid.setEnabled(true); propertiesTool.setVisible(true); selectionDisplay.triggerMapping.enable(); + print("starting tablet in landscape mode") + tablet.landscape = true; // Not sure what the following was meant to accomplish, but it currently causes // everybody else to think that Interface has lost focus overall. fogbugzid:558 // Window.setFocus(); diff --git a/scripts/system/tablet-ui/tabletUI.js b/scripts/system/tablet-ui/tabletUI.js index f83e8d9550..e45fc8d87b 100644 --- a/scripts/system/tablet-ui/tabletUI.js +++ b/scripts/system/tablet-ui/tabletUI.js @@ -191,16 +191,12 @@ gTablet.updateAudioBar(currentMicLevel); } - if (validCheckTime - now > MSECS_PER_SEC/4) { - //each 250ms should be just fine + if (now - validCheckTime > MSECS_PER_SEC) { + validCheckTime = now; updateTabletWidthFromSettings(); if (UIWebTablet) { UIWebTablet.setLandscape(landscape); } - } - - if (validCheckTime - now > MSECS_PER_SEC) { - validCheckTime = now; if (tabletRezzed && UIWebTablet && !tabletIsValid()) { // when we switch domains, the tablet entity gets destroyed and recreated. this causes // the overlay to be deleted, but not recreated. If the overlay is deleted for this or any From e82e80e8e08cf68572049483b89992a3cd44ea9e Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Tue, 30 May 2017 09:55:33 -0700 Subject: [PATCH 124/357] OculusDebugDisplayPlugin is head controller --- plugins/oculus/src/OculusDebugDisplayPlugin.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/plugins/oculus/src/OculusDebugDisplayPlugin.h b/plugins/oculus/src/OculusDebugDisplayPlugin.h index ec05cd92e2..1cc6bd0f8e 100644 --- a/plugins/oculus/src/OculusDebugDisplayPlugin.h +++ b/plugins/oculus/src/OculusDebugDisplayPlugin.h @@ -15,6 +15,8 @@ public: grouping getGrouping() const override { return DEVELOPER; } bool isSupported() const override; + bool isHeadController() const override { return false; } + protected: void hmdPresent() override {} bool isHmdMounted() const override { return true; } From 765bd3890eee93e7af0a5b516f96c22922443065 Mon Sep 17 00:00:00 2001 From: Brad Davis Date: Tue, 30 May 2017 10:00:30 -0700 Subject: [PATCH 125/357] Improving test code for KTX library --- libraries/ktx/src/khronos/KHR.h | 2 + tests/ktx/CMakeLists.txt | 20 +-- tests/ktx/src/KtxTests.cpp | 195 ++++++++++++++++++++++++++++ tests/ktx/src/KtxTests.h | 21 +++ tests/ktx/src/main.cpp | 223 -------------------------------- 5 files changed, 225 insertions(+), 236 deletions(-) create mode 100644 tests/ktx/src/KtxTests.cpp create mode 100644 tests/ktx/src/KtxTests.h delete mode 100644 tests/ktx/src/main.cpp diff --git a/libraries/ktx/src/khronos/KHR.h b/libraries/ktx/src/khronos/KHR.h index a98f2cc0d4..98cc1a4736 100644 --- a/libraries/ktx/src/khronos/KHR.h +++ b/libraries/ktx/src/khronos/KHR.h @@ -211,6 +211,8 @@ namespace khronos { template inline uint32_t evalAlignedCompressedBlockCount(uint32_t value) { + enum { val = ALIGNMENT && !(ALIGNMENT & (ALIGNMENT - 1)) }; + static_assert(val, "template parameter ALIGNMENT must be a power of 2"); // FIXME add static assert that ALIGNMENT is a power of 2 static uint32_t ALIGNMENT_REMAINDER = ALIGNMENT - 1; return (value + ALIGNMENT_REMAINDER) / ALIGNMENT; diff --git a/tests/ktx/CMakeLists.txt b/tests/ktx/CMakeLists.txt index 7133c30898..599435a90b 100644 --- a/tests/ktx/CMakeLists.txt +++ b/tests/ktx/CMakeLists.txt @@ -1,15 +1,9 @@ +# Declare dependencies +macro (SETUP_TESTCASE_DEPENDENCIES) + # link in the shared libraries + link_hifi_libraries(shared ktx gpu image) -set(TARGET_NAME ktx-test) - -if (WIN32) - SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /ignore:4049 /ignore:4217") -endif() + package_libraries_for_deployment() +endmacro () -# This is not a testcase -- just set it up as a regular hifi project -setup_hifi_project(Quick Gui OpenGL) -set_target_properties(${TARGET_NAME} PROPERTIES FOLDER "Tests/manual-tests/") - -# link in the shared libraries -link_hifi_libraries(shared octree ktx gl gpu gpu-gl render model model-networking networking render-utils fbx entities entities-renderer animation audio avatars script-engine physics image) - -package_libraries_for_deployment() +setup_hifi_testcase() diff --git a/tests/ktx/src/KtxTests.cpp b/tests/ktx/src/KtxTests.cpp new file mode 100644 index 0000000000..94e5d7e8e7 --- /dev/null +++ b/tests/ktx/src/KtxTests.cpp @@ -0,0 +1,195 @@ +// +// Created by Bradley Austin Davis on 2016/07/01 +// Copyright 2014 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +#include "KtxTests.h" + +#include + +#include + +#include +#include +#include + + +QTEST_GUILESS_MAIN(KtxTests) + +QString getRootPath() { + static std::once_flag once; + static QString result; + std::call_once(once, [&] { + QFileInfo file(__FILE__); + QDir parent = file.absolutePath(); + result = QDir::cleanPath(parent.currentPath() + "/../../.."); + }); + return result; +} + +void KtxTests::initTestCase() { +} + +void KtxTests::cleanupTestCase() { +} + +void KtxTests::testKhronosCompressionFunctions() { + using namespace khronos::gl::texture; + QCOMPARE(evalAlignedCompressedBlockCount<4>(0), (uint32_t)0x0); + QCOMPARE(evalAlignedCompressedBlockCount<4>(1), (uint32_t)0x1); + QCOMPARE(evalAlignedCompressedBlockCount<4>(4), (uint32_t)0x1); + QCOMPARE(evalAlignedCompressedBlockCount<4>(5), (uint32_t)0x2); + QCOMPARE(evalCompressedBlockCount(InternalFormat::COMPRESSED_SRGB_S3TC_DXT1_EXT, 0x00), (uint32_t)0x00); + QCOMPARE(evalCompressedBlockCount(InternalFormat::COMPRESSED_SRGB_S3TC_DXT1_EXT, 0x01), (uint32_t)0x01); + QCOMPARE(evalCompressedBlockCount(InternalFormat::COMPRESSED_SRGB_S3TC_DXT1_EXT, 0x04), (uint32_t)0x01); + QCOMPARE(evalCompressedBlockCount(InternalFormat::COMPRESSED_SRGB_S3TC_DXT1_EXT, 0x05), (uint32_t)0x02); + QCOMPARE(evalCompressedBlockCount(InternalFormat::COMPRESSED_SRGB_S3TC_DXT1_EXT, 0x1000), (uint32_t)0x400); + + QVERIFY_EXCEPTION_THROWN(evalCompressedBlockCount(InternalFormat::RGBA8, 0x00), std::runtime_error); +} + +void KtxTests::testKtxEvalFunctions() { + QCOMPARE(sizeof(ktx::Header), (size_t)64); + QCOMPARE(ktx::evalPadding(0x0), (uint8_t)0); + QCOMPARE(ktx::evalPadding(0x1), (uint8_t)3); + QCOMPARE(ktx::evalPadding(0x2), (uint8_t)2); + QCOMPARE(ktx::evalPadding(0x3), (uint8_t)1); + QCOMPARE(ktx::evalPadding(0x4), (uint8_t)0); + QCOMPARE(ktx::evalPadding(0x400), (uint8_t)0); + QCOMPARE(ktx::evalPadding(0x401), (uint8_t)3); + QCOMPARE(ktx::evalPaddedSize(0x0), 0x0); + QCOMPARE(ktx::evalPaddedSize(0x1), 0x4); + QCOMPARE(ktx::evalPaddedSize(0x2), 0x4); + QCOMPARE(ktx::evalPaddedSize(0x3), 0x4); + QCOMPARE(ktx::evalPaddedSize(0x4), 0x4); + QCOMPARE(ktx::evalPaddedSize(0x400), 0x400); + QCOMPARE(ktx::evalPaddedSize(0x401), 0x404); + QCOMPARE(ktx::evalAlignedCount((uint32_t)0x0), (uint32_t)0x0); + QCOMPARE(ktx::evalAlignedCount((uint32_t)0x1), (uint32_t)0x1); + QCOMPARE(ktx::evalAlignedCount((uint32_t)0x4), (uint32_t)0x1); + QCOMPARE(ktx::evalAlignedCount((uint32_t)0x5), (uint32_t)0x2); +} + +void KtxTests::testKtxSerialization() { + const QString TEST_IMAGE = getRootPath() + "/scripts/developer/tests/cube_texture.png"; + QImage image(TEST_IMAGE); + gpu::TexturePointer testTexture = image::TextureUsage::process2DTextureColorFromImage(image, TEST_IMAGE.toStdString(), true); + auto ktxMemory = gpu::Texture::serialize(*testTexture); + QVERIFY(ktxMemory.get()); + + // Serialize the image to a file + QTemporaryFile TEST_IMAGE_KTX; + { + const auto& ktxStorage = ktxMemory->getStorage(); + QVERIFY(ktx::KTX::validate(ktxStorage)); + QVERIFY(ktxMemory->isValid()); + + auto& outFile = TEST_IMAGE_KTX; + if (!outFile.open()) { + QFAIL("Unable to open file"); + } + auto ktxSize = ktxStorage->size(); + outFile.resize(ktxSize); + auto dest = outFile.map(0, ktxSize); + memcpy(dest, ktxStorage->data(), ktxSize); + outFile.unmap(dest); + outFile.close(); + } + + + { + auto ktxStorage = std::make_shared(TEST_IMAGE_KTX.fileName()); + QVERIFY(ktx::KTX::validate(ktxStorage)); + auto ktxFile = ktx::KTX::create(ktxStorage); + QVERIFY(ktxFile.get()); + QVERIFY(ktxFile->isValid()); + { + const auto& memStorage = ktxMemory->getStorage(); + const auto& fileStorage = ktxFile->getStorage(); + QVERIFY(memStorage->size() == fileStorage->size()); + QVERIFY(memStorage->data() != fileStorage->data()); + QVERIFY(0 == memcmp(memStorage->data(), fileStorage->data(), memStorage->size())); + QVERIFY(ktxFile->_images.size() == ktxMemory->_images.size()); + auto imageCount = ktxFile->_images.size(); + auto startMemory = ktxMemory->_storage->data(); + auto startFile = ktxFile->_storage->data(); + for (size_t i = 0; i < imageCount; ++i) { + auto memImages = ktxMemory->_images[i]; + auto fileImages = ktxFile->_images[i]; + QVERIFY(memImages._padding == fileImages._padding); + QVERIFY(memImages._numFaces == fileImages._numFaces); + QVERIFY(memImages._imageSize == fileImages._imageSize); + QVERIFY(memImages._faceSize == fileImages._faceSize); + QVERIFY(memImages._faceBytes.size() == memImages._numFaces); + QVERIFY(fileImages._faceBytes.size() == fileImages._numFaces); + auto faceCount = fileImages._numFaces; + for (uint32_t face = 0; face < faceCount; ++face) { + auto memFace = memImages._faceBytes[face]; + auto memOffset = memFace - startMemory; + auto fileFace = fileImages._faceBytes[face]; + auto fileOffset = fileFace - startFile; + QVERIFY(memOffset % 4 == 0); + QVERIFY(memOffset == fileOffset); + } + } + } + } + testTexture->setKtxBacking(TEST_IMAGE_KTX.fileName().toStdString()); +} + +#if 0 + +static const QString TEST_FOLDER { "H:/ktx_cacheold" }; +//static const QString TEST_FOLDER { "C:/Users/bdavis/Git/KTX/testimages" }; + +//static const QString EXTENSIONS { "4bbdf8f786470e4ab3e672d44b8e8df2.ktx" }; +static const QString EXTENSIONS { "*.ktx" }; + +int mainTemp(int, char**) { + qInstallMessageHandler(messageHandler); + auto fileInfoList = QDir { TEST_FOLDER }.entryInfoList(QStringList { EXTENSIONS }); + for (auto fileInfo : fileInfoList) { + qDebug() << fileInfo.filePath(); + std::shared_ptr storage { new storage::FileStorage { fileInfo.filePath() } }; + + if (!ktx::KTX::validate(storage)) { + qDebug() << "KTX invalid"; + } + + auto ktxFile = ktx::KTX::create(storage); + ktx::KTXDescriptor ktxDescriptor = ktxFile->toDescriptor(); + + qDebug() << "Contains " << ktxDescriptor.keyValues.size() << " key value pairs"; + for (const auto& kv : ktxDescriptor.keyValues) { + qDebug() << "\t" << kv._key.c_str(); + } + + auto offsetToMinMipKV = ktxDescriptor.getValueOffsetForKey(ktx::HIFI_MIN_POPULATED_MIP_KEY); + if (offsetToMinMipKV) { + auto data = storage->data() + ktx::KTX_HEADER_SIZE + offsetToMinMipKV; + auto minMipLevelAvailable = *data; + qDebug() << "\tMin mip available " << minMipLevelAvailable; + assert(minMipLevelAvailable < ktxDescriptor.header.numberOfMipmapLevels); + } + auto storageSize = storage->size(); + for (const auto& faceImageDesc : ktxDescriptor.images) { + //assert(0 == (faceImageDesc._faceSize % 4)); + for (const auto& faceOffset : faceImageDesc._faceOffsets) { + assert(0 == (faceOffset % 4)); + auto faceEndOffset = faceOffset + faceImageDesc._faceSize; + assert(faceEndOffset <= storageSize); + } + } + + for (const auto& faceImage : ktxFile->_images) { + for (const ktx::Byte* faceBytes : faceImage._faceBytes) { + assert(0 == (reinterpret_cast(faceBytes) % 4)); + } + } + } + return 0; +} +#endif diff --git a/tests/ktx/src/KtxTests.h b/tests/ktx/src/KtxTests.h new file mode 100644 index 0000000000..5627dc313d --- /dev/null +++ b/tests/ktx/src/KtxTests.h @@ -0,0 +1,21 @@ +// +// Created by Bradley Austin Davis on 2016/07/01 +// Copyright 2014 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +#include + +class KtxTests : public QObject { + Q_OBJECT +private slots: + void initTestCase(); + void cleanupTestCase(); + void testKtxEvalFunctions(); + void testKhronosCompressionFunctions(); + void testKtxSerialization(); +}; + + diff --git a/tests/ktx/src/main.cpp b/tests/ktx/src/main.cpp deleted file mode 100644 index 3b62b89948..0000000000 --- a/tests/ktx/src/main.cpp +++ /dev/null @@ -1,223 +0,0 @@ -// -// Created by Bradley Austin Davis on 2016/07/01 -// Copyright 2014 High Fidelity, Inc. -// -// Distributed under the Apache License, Version 2.0. -// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html -// - -#include -#include -#include -#include - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include - -QSharedPointer logger; - -gpu::Texture* cacheTexture(const std::string& name, gpu::Texture* srcTexture, bool write = true, bool read = true); - - -void messageHandler(QtMsgType type, const QMessageLogContext& context, const QString& message) { - QString logMessage = LogHandler::getInstance().printMessage((LogMsgType)type, context, message); - - if (!logMessage.isEmpty()) { -#ifdef Q_OS_WIN - OutputDebugStringA(logMessage.toLocal8Bit().constData()); - OutputDebugStringA("\n"); -#endif - if (logger) { - logger->addMessage(qPrintable(logMessage + "\n")); - } - } -} - -const char * LOG_FILTER_RULES = R"V0G0N( -hifi.gpu=true -)V0G0N"; - -QString getRootPath() { - static std::once_flag once; - static QString result; - std::call_once(once, [&] { - QFileInfo file(__FILE__); - QDir parent = file.absolutePath(); - result = QDir::cleanPath(parent.currentPath() + "/../../.."); - }); - return result; -} - -const QString TEST_IMAGE = getRootPath() + "/scripts/developer/tests/cube_texture.png"; -const QString TEST_IMAGE_KTX = getRootPath() + "/scripts/developer/tests/cube_texture.ktx"; - -int main(int argc, char** argv) { - QApplication app(argc, argv); - QCoreApplication::setApplicationName("KTX"); - QCoreApplication::setOrganizationName("High Fidelity"); - QCoreApplication::setOrganizationDomain("highfidelity.com"); - logger.reset(new FileLogger()); - - Q_ASSERT(ktx::evalPadding(0) == 0); - Q_ASSERT(ktx::evalPadding(1) == 3); - Q_ASSERT(ktx::evalPadding(2) == 2); - Q_ASSERT(ktx::evalPadding(3) == 1); - Q_ASSERT(ktx::evalPadding(4) == 0); - Q_ASSERT(ktx::evalPadding(1024) == 0); - Q_ASSERT(ktx::evalPadding(1025) == 3); - Q_ASSERT(ktx::evalPaddedSize(0) == 0); - Q_ASSERT(ktx::evalPaddedSize(1) == 4); - Q_ASSERT(ktx::evalPaddedSize(2) == 4); - Q_ASSERT(ktx::evalPaddedSize(3) == 4); - Q_ASSERT(ktx::evalPaddedSize(4) == 4); - Q_ASSERT(ktx::evalPaddedSize(1024) == 1024); - Q_ASSERT(ktx::evalPaddedSize(1025) == 1028); - Q_ASSERT(sizeof(ktx::Header) == 12 + (sizeof(uint32_t) * 13)); - - DependencyManager::set(); - qInstallMessageHandler(messageHandler); - QLoggingCategory::setFilterRules(LOG_FILTER_RULES); - - QImage image(TEST_IMAGE); - gpu::TexturePointer testTexture = image::TextureUsage::process2DTextureColorFromImage(image, TEST_IMAGE.toStdString(), true); - - auto ktxMemory = gpu::Texture::serialize(*testTexture); - { - const auto& ktxStorage = ktxMemory->getStorage(); - Q_ASSERT_X(ktx::KTX::validate(ktxStorage), __FUNCTION__, "KTX storage validation failed"); - Q_ASSERT_X(ktxMemory->isValid(), __FUNCTION__, "KTX self-validation failed"); - QSaveFile outFile(TEST_IMAGE_KTX); - if (!outFile.open(QFile::WriteOnly)) { - throw std::runtime_error("Unable to open file"); - } - auto ktxSize = ktxStorage->size(); - outFile.resize(ktxSize); - auto dest = outFile.map(0, ktxSize); - memcpy(dest, ktxStorage->data(), ktxSize); - outFile.unmap(dest); - outFile.commit(); - } - - { - auto ktxFile = ktx::KTX::create(std::shared_ptr(new storage::FileStorage(TEST_IMAGE_KTX))); - { - const auto& memStorage = ktxMemory->getStorage(); - const auto& fileStorage = ktxFile->getStorage(); - Q_ASSERT(memStorage->size() == fileStorage->size()); - Q_ASSERT(memStorage->data() != fileStorage->data()); - Q_ASSERT(0 == memcmp(memStorage->data(), fileStorage->data(), memStorage->size())); - Q_ASSERT(ktxFile->_images.size() == ktxMemory->_images.size()); - auto imageCount = ktxFile->_images.size(); - auto startMemory = ktxMemory->_storage->data(); - auto startFile = ktxFile->_storage->data(); - for (size_t i = 0; i < imageCount; ++i) { - auto memImages = ktxMemory->_images[i]; - auto fileImages = ktxFile->_images[i]; - Q_ASSERT(memImages._padding == fileImages._padding); - Q_ASSERT(memImages._numFaces == fileImages._numFaces); - Q_ASSERT(memImages._imageSize == fileImages._imageSize); - Q_ASSERT(memImages._faceSize == fileImages._faceSize); - Q_ASSERT(memImages._faceBytes.size() == memImages._numFaces); - Q_ASSERT(fileImages._faceBytes.size() == fileImages._numFaces); - auto faceCount = fileImages._numFaces; - for (uint32_t face = 0; face < faceCount; ++face) { - auto memFace = memImages._faceBytes[face]; - auto memOffset = memFace - startMemory; - auto fileFace = fileImages._faceBytes[face]; - auto fileOffset = fileFace - startFile; - Q_ASSERT(memOffset % 4 == 0); - Q_ASSERT(memOffset == fileOffset); - } - } - } - } - testTexture->setKtxBacking(TEST_IMAGE_KTX.toStdString()); - return 0; -} - -#if 0 -static const QString TEST_FOLDER { "H:/ktx_cacheold" }; -//static const QString TEST_FOLDER { "C:/Users/bdavis/Git/KTX/testimages" }; - -//static const QString EXTENSIONS { "4bbdf8f786470e4ab3e672d44b8e8df2.ktx" }; -static const QString EXTENSIONS { "*.ktx" }; - -int mainTemp(int, char**) { - qInstallMessageHandler(messageHandler); - auto fileInfoList = QDir { TEST_FOLDER }.entryInfoList(QStringList { EXTENSIONS }); - for (auto fileInfo : fileInfoList) { - qDebug() << fileInfo.filePath(); - std::shared_ptr storage { new storage::FileStorage { fileInfo.filePath() } }; - - if (!ktx::KTX::validate(storage)) { - qDebug() << "KTX invalid"; - } - - auto ktxFile = ktx::KTX::create(storage); - ktx::KTXDescriptor ktxDescriptor = ktxFile->toDescriptor(); - - qDebug() << "Contains " << ktxDescriptor.keyValues.size() << " key value pairs"; - for (const auto& kv : ktxDescriptor.keyValues) { - qDebug() << "\t" << kv._key.c_str(); - } - - auto offsetToMinMipKV = ktxDescriptor.getValueOffsetForKey(ktx::HIFI_MIN_POPULATED_MIP_KEY); - if (offsetToMinMipKV) { - auto data = storage->data() + ktx::KTX_HEADER_SIZE + offsetToMinMipKV; - auto minMipLevelAvailable = *data; - qDebug() << "\tMin mip available " << minMipLevelAvailable; - assert(minMipLevelAvailable < ktxDescriptor.header.numberOfMipmapLevels); - } - auto storageSize = storage->size(); - for (const auto& faceImageDesc : ktxDescriptor.images) { - //assert(0 == (faceImageDesc._faceSize % 4)); - for (const auto& faceOffset : faceImageDesc._faceOffsets) { - assert(0 == (faceOffset % 4)); - auto faceEndOffset = faceOffset + faceImageDesc._faceSize; - assert(faceEndOffset <= storageSize); - } - } - - for (const auto& faceImage : ktxFile->_images) { - for (const ktx::Byte* faceBytes : faceImage._faceBytes) { - assert(0 == (reinterpret_cast(faceBytes) % 4)); - } - } - } - return 0; -} -#endif - -#include "main.moc" - From 133951617704427025d83fa2095440698b2ab007 Mon Sep 17 00:00:00 2001 From: Thijs Wenker Date: Tue, 30 May 2017 20:56:45 +0200 Subject: [PATCH 126/357] OpenSSL installer update --- BUILD_WIN.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BUILD_WIN.md b/BUILD_WIN.md index 841cfba3b3..14709b7e92 100644 --- a/BUILD_WIN.md +++ b/BUILD_WIN.md @@ -24,7 +24,7 @@ Go to "Control Panel > System > Advanced System Settings > Environment Variables ###Step 5. Installing OpenSSL -Download and install the [Win64 OpenSSL v1.0.2k Installer](https://slproweb.com/download/Win64OpenSSL-1_0_2k.exe). +Download and install the [Win64 OpenSSL v1.0.2L Installer](https://slproweb.com/download/Win64OpenSSL-1_0_2L.exe). ###Step 6. Running CMake to Generate Build Files From 1ea3b2b7f43599bbbb38124e6484cdffda2d60d0 Mon Sep 17 00:00:00 2001 From: Thijs Wenker Date: Tue, 30 May 2017 21:01:42 +0200 Subject: [PATCH 127/357] let headers be headers --- BUILD_WIN.md | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/BUILD_WIN.md b/BUILD_WIN.md index 14709b7e92..311dfd9267 100644 --- a/BUILD_WIN.md +++ b/BUILD_WIN.md @@ -1,32 +1,32 @@ This is a stand-alone guide for creating your first High Fidelity build for Windows 64-bit. -###Step 1. Installing Visual Studio 2013 +### Step 1. Installing Visual Studio 2013 If you don't already have the Community or Professional edition of Visual Studio 2013, download and install [Visual Studio Community 2013](https://www.visualstudio.com/en-us/news/releasenotes/vs2013-community-vs). You do not need to install any of the optional components when going through the installer. Note: Newer versions of Visual Studio are not yet compatible. -###Step 2. Installing CMake +### Step 2. Installing CMake Download and install the [CMake 3.8.0 win64-x64 Installer](https://cmake.org/files/v3.8/cmake-3.8.0-win64-x64.msi). Make sure "Add CMake to system PATH for all users" is checked when going through the installer. -###Step 3. Installing Qt +### Step 3. Installing Qt Download and install the [Qt 5.6.2 for Windows 64-bit (VS 2013)](http://download.qt.io/official_releases/qt/5.6/5.6.2/qt-opensource-windows-x86-msvc2013_64-5.6.2.exe). Keep the default components checked when going through the installer. -###Step 4. Setting Qt Environment Variable +### Step 4. Setting Qt Environment Variable Go to "Control Panel > System > Advanced System Settings > Environment Variables > New..." (or search “Environment Variables” in Start Search). * Set "Variable name": QT_CMAKE_PREFIX_PATH * Set "Variable value": `%QT_DIR%\5.6\msvc2013_64\lib\cmake` -###Step 5. Installing OpenSSL +### Step 5. Installing OpenSSL Download and install the [Win64 OpenSSL v1.0.2L Installer](https://slproweb.com/download/Win64OpenSSL-1_0_2L.exe). -###Step 6. Running CMake to Generate Build Files +### Step 6. Running CMake to Generate Build Files Run Command Prompt from Start and run the following commands: cd "%HIFI_DIR%" @@ -36,7 +36,7 @@ Run Command Prompt from Start and run the following commands: Where %HIFI_DIR% is the directory for the highfidelity repository. -###Step 7. Making a Build +### Step 7. Making a Build Open '%HIFI_DIR%\build\hifi.sln' using Visual Studio. @@ -44,7 +44,7 @@ Change the Solution Configuration (next to the green play button) from "Debug" t Run Build > Build Solution. -###Step 8. Testing Interface +### Step 8. Testing Interface Create another environment variable (see Step #4) * Set "Variable name": _NO_DEBUG_HEAP @@ -56,7 +56,7 @@ Now, you should have a full build of High Fidelity and be able to run the Interf Note: You can also run Interface by launching it from command line or File Explorer from %HIFI_DIR%\build\interface\Release\interface.exe -###Troubleshooting +### Troubleshooting For any problems after Step #6, first try this: * Delete your locally cloned copy of the highfidelity repository @@ -64,18 +64,18 @@ For any problems after Step #6, first try this: * Redownload the [repository](https://github.com/highfidelity/hifi) * Restart directions from Step #6 -####CMake gives you the same error message repeatedly after the build fails +#### CMake gives you the same error message repeatedly after the build fails Remove `CMakeCache.txt` found in the '%HIFI_DIR%\build' directory -####nmake cannot be found +#### nmake cannot be found Make sure nmake.exe is located at the following path: C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin If not, add the directory where nmake is located to the PATH environment variable. -####Qt is throwing an error +#### Qt is throwing an error Make sure you have the correct version (5.6.2) installed and 'QT_CMAKE_PREFIX_PATH' environment variable is set correctly. From 68ad8fa9816ca4829fbdc78cce247a9397eb9d5a Mon Sep 17 00:00:00 2001 From: Thijs Wenker Date: Tue, 30 May 2017 21:12:51 +0200 Subject: [PATCH 128/357] visual headers --- BUILD.md | 25 +++++++++++++++---------- BUILD_ANDROID.md | 18 +++++++++--------- BUILD_LINUX.md | 3 ++- BUILD_OSX.md | 11 +++++++---- INSTALL.md | 8 ++++---- 5 files changed, 37 insertions(+), 28 deletions(-) diff --git a/BUILD.md b/BUILD.md index fc2359b057..c45b7cb636 100644 --- a/BUILD.md +++ b/BUILD.md @@ -1,4 +1,4 @@ -###Dependencies +### Dependencies * [cmake](https://cmake.org/download/) ~> 3.3.2 * [Qt](https://www.qt.io/download-open-source) ~> 5.6.2 @@ -6,7 +6,7 @@ * IMPORTANT: Use the latest available version of OpenSSL to avoid security vulnerabilities. * [VHACD](https://github.com/virneo/v-hacd)(clone this repository)(Optional) -####CMake External Project Dependencies +#### CMake External Project Dependencies * [boostconfig](https://github.com/boostorg/config) ~> 1.58 * [Bullet Physics Engine](https://github.com/bulletphysics/bullet3/releases) ~> 2.83 @@ -30,16 +30,19 @@ These are not placed in your normal build tree when doing an out of source build If you would like to use a specific install of a dependency instead of the version that would be grabbed as a CMake ExternalProject, you can pass -DUSE_LOCAL_$NAME=0 (where $NAME is the name of the subfolder in [cmake/externals](cmake/externals)) when you run CMake to tell it not to get that dependency as an external project. -###OS Specific Build Guides +### OS Specific Build Guides + * [BUILD_OSX.md](BUILD_OSX.md) - additional instructions for OS X. * [BUILD_LINUX.md](BUILD_LINUX.md) - additional instructions for Linux. * [BUILD_WIN.md](BUILD_WIN.md) - additional instructions for Windows. * [BUILD_ANDROID.md](BUILD_ANDROID.md) - additional instructions for Android -###CMake +### CMake + Hifi uses CMake to generate build files and project files for your platform. -####Qt +#### Qt + In order for CMake to find the Qt5 find modules, you will need to set a QT_CMAKE_PREFIX_PATH environment variable pointing to your Qt installation. This can either be entered directly into your shell session before you build or in your shell profile (e.g.: ~/.bash_profile, ~/.bashrc, ~/.zshrc - this depends on your shell and environment). @@ -50,7 +53,8 @@ The path it needs to be set to will depend on where and how Qt5 was installed. e export QT_CMAKE_PREFIX_PATH=/usr/local/Cellar/qt5/5.6.2/lib/cmake export QT_CMAKE_PREFIX_PATH=/usr/local/opt/qt5/lib/cmake -####Generating build files +#### Generating build files + Create a build directory in the root of your checkout and then run the CMake build from there. This will keep the rest of the directory clean. mkdir build @@ -59,14 +63,15 @@ Create a build directory in the root of your checkout and then run the CMake bui If cmake gives you the same error message repeatedly after the build fails (e.g. you had a typo in the QT_CMAKE_PREFIX_PATH that you fixed but the `.cmake` files still cannot be found), try removing `CMakeCache.txt`. -####Variables +#### Variables + Any variables that need to be set for CMake to find dependencies can be set as ENV variables in your shell profile, or passed directly to CMake with a `-D` flag appended to the `cmake ..` command. For example, to pass the QT_CMAKE_PREFIX_PATH variable during build file generation: cmake .. -DQT_CMAKE_PREFIX_PATH=/usr/local/qt/5.6.2/lib/cmake -####Finding Dependencies +#### Finding Dependencies The following applies for dependencies we do not grab via CMake ExternalProject (OpenSSL is an example), or for dependencies you have opted not to grab as a CMake ExternalProject (via -DUSE_LOCAL_$NAME=0). The list of dependencies we grab by default as external projects can be found in [the CMake External Project Dependencies section](#cmake-external-project-dependencies). @@ -78,8 +83,8 @@ In the examples below the variable $NAME would be replaced by the name of the de * $NAME_ROOT_DIR - set this variable in your ENV * HIFI_LIB_DIR - set this variable in your ENV to your High Fidelity lib folder, should contain a folder '$name' -###Optional Components +### Optional Components -####Devices +#### Devices You can support external input/output devices such as Leap Motion, MIDI, and more by adding each individual SDK in the visible building path. Refer to the readme file available in each device folder in [interface/external/](interface/external) for the detailed explanation of the requirements to use the device. diff --git a/BUILD_ANDROID.md b/BUILD_ANDROID.md index 1f144bf3ba..d69d20ee8a 100644 --- a/BUILD_ANDROID.md +++ b/BUILD_ANDROID.md @@ -1,6 +1,6 @@ Please read the [general build guide](BUILD.md) for information on dependencies required for all platforms. Only Android specific instructions are found in this file. -###Android Dependencies +### Android Dependencies You will need the following tools to build our Android targets. @@ -17,23 +17,23 @@ You will need the following tools to build our Android targets. You will also need to cross-compile the dependencies required for all platforms for Android, and help CMake find these compiled libraries on your machine. -####Scribe +#### Scribe High Fidelity has a shader pre-processing tool called `scribe` that various libraries will call on during the build process. You must compile scribe using your native toolchain (following the build instructions for your platform) and then pass a CMake variable or set an ENV variable `SCRIBE_PATH` that is a path to the scribe executable. CMake will fatally error if it does not find the scribe executable while using the android toolchain. -####Optional Components +#### Optional Components * [Oculus Mobile SDK](https://developer.oculus.com/downloads/#sdk=mobile) ~> 0.4.2 -####ANDROID_LIB_DIR +#### ANDROID_LIB_DIR Since you won't be installing Android dependencies to system paths on your development machine, CMake will need a little help tracking down your Android dependencies. This is most easily accomplished by installing all Android dependencies in the same folder. You can place this folder wherever you like on your machine. In this build guide and across our CMakeLists files this folder is referred to as `ANDROID_LIB_DIR`. You can set `ANDROID_LIB_DIR` in your environment or by passing when you run CMake. -####Qt +#### Qt Install Qt 5.5.1 for Android for your host environment from the [Qt downloads page](http://www.qt.io/download/). Install Qt to ``$ANDROID_LIB_DIR/Qt``. This is required so that our root CMakeLists file can help CMake find your Android Qt installation. @@ -41,7 +41,7 @@ The component required for the Android build is the `Android armv7` component. If you would like to install Qt to a different location, or attempt to build with a different Qt version, you can pass `ANDROID_QT_CMAKE_PREFIX_PATH` to CMake. Point to the `cmake` folder inside `$VERSION_NUMBER/android_armv7/lib`. Otherwise, our root CMakeLists will set it to `$ANDROID_LIB_DIR/Qt/5.5/android_armv7/lib/cmake`. -####OpenSSL +#### OpenSSL Cross-compilation of OpenSSL has been tested from an OS X machine running 10.10 compiling OpenSSL 1.0.2. It is likely that the steps below will work for other OpenSSL versions than 1.0.2. @@ -76,7 +76,7 @@ This should generate libcrypto and libssl in the root of the OpenSSL directory. If you have been building other components it is possible that the OpenSSL compile will fail based on the values other cross-compilations (tbb, bullet) have set. Ensure that you are in a new terminal window to avoid compilation errors from previously set environment variables. -####Oculus Mobile SDK +#### Oculus Mobile SDK The Oculus Mobile SDK is optional, for Gear VR support. It is not required to compile gvr-interface. @@ -91,7 +91,7 @@ ndk-build This will create the liboculus.a archive that our FindLibOVR module will look for when cmake is run. -#####Hybrid testing +##### Hybrid testing Currently the 'vr_dual' mode that would allow us to run a hybrid app has limited support in the Oculus Mobile SDK. The best way to have an application we can launch without having to connect to the GearVR is to put the Gear VR Service into developer mode. This stops Oculus Home from taking over the device when it is plugged into the Gear VR headset, and allows the application to be launched from the Applications page. @@ -99,7 +99,7 @@ To put the Gear VR Service into developer mode you need an application with an O Once the application is on your device, go to `Settings->Application Manager->Gear VR Service->Manage Storage`. Tap on `VR Service Version` six times. It will scan your device to verify that you have an osig file in an application on your device, and then it will let you enable Developer mode. -###CMake +### CMake We use CMake to generate the makefiles that compile and deploy the Android APKs to your device. In order to create Makefiles for the Android targets, CMake requires that some environment variables are set, and that other variables are passed to it when it is run. diff --git a/BUILD_LINUX.md b/BUILD_LINUX.md index 34ba41894c..d40576a75d 100644 --- a/BUILD_LINUX.md +++ b/BUILD_LINUX.md @@ -1,6 +1,7 @@ Please read the [general build guide](BUILD.md) for information on dependencies required for all platforms. Only Linux specific instructions are found in this file. -###Qt5 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 libjack0 libjack-dev libxrandr-dev libudev-dev libssl-dev diff --git a/BUILD_OSX.md b/BUILD_OSX.md index afd3fa040c..3365627b8c 100644 --- a/BUILD_OSX.md +++ b/BUILD_OSX.md @@ -1,12 +1,13 @@ Please read the [general build guide](BUILD.md) for information on dependencies required for all platforms. Only OS X specific instructions are found in this file. -###Homebrew +### Homebrew + [Homebrew](https://brew.sh/) is an excellent package manager for OS X. It makes install of some High Fidelity dependencies very simple. brew tap homebrew/versions brew install cmake openssl -###OpenSSL +### OpenSSL Assuming you've installed OpenSSL using the homebrew instructions above, you'll need to set OPENSSL_ROOT_DIR so CMake can find your installations. For OpenSSL installed via homebrew, set OPENSSL_ROOT_DIR: @@ -15,7 +16,8 @@ For OpenSSL installed via homebrew, set OPENSSL_ROOT_DIR: Note that this uses the version from the homebrew formula at the time of this writing, and the version in the path will likely change. -###Qt +### Qt + Download and install the [Qt 5.6.2 for macOS](http://download.qt.io/official_releases/qt/5.6/5.6.2/qt-opensource-mac-x64-clang-5.6.2.dmg). Keep the default components checked when going through the installer. @@ -23,7 +25,8 @@ Keep the default components checked when going through the installer. Once Qt is installed, you need to manually configure the following: * Set the QT_CMAKE_PREFIX_PATH environment variable to your `Qt5.6.2/5.6/clang_64/lib/cmake/` directory. -###Xcode +### Xcode + If Xcode is your editor of choice, you can ask CMake to generate Xcode project files instead of Unix Makefiles. cmake .. -GXcode diff --git a/INSTALL.md b/INSTALL.md index 701752f6af..79d7e96977 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -2,15 +2,15 @@ Follow the [build guide](BUILD.md) to figure out how to build High Fidelity for During generation, CMake should produce an `install` target and a `package` target. -###Install +### Install The `install` target will copy the High Fidelity targets and their dependencies to your `CMAKE_INSTALL_PREFIX`. -###Packaging +### Packaging To produce an installer, run the `package` target. -####Windows +#### Windows To produce an executable installer on Windows, the following are required: @@ -20,6 +20,6 @@ To produce an executable installer on Windows, the following are required: Run the `package` target to create an executable installer using the Nullsoft Scriptable Install System. -####OS X +#### OS X Run the `package` target to create an Apple Disk Image (.dmg). From d891c834ba720d59831edaa266b5f2b6aebf8364 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Wed, 31 May 2017 09:06:11 +1200 Subject: [PATCH 129/357] Move record script files to unpublishedScripts directory --- .../record}/assets/sounds/countdown-tick.wav | Bin .../assets/sounds/finish-recording.wav | Bin .../record}/assets/sounds/start-recording.wav | Bin .../record/html/css/edit-style.css | 1262 +++++++++++++++++ .../marketplace/record}/html/css/record.css | 0 .../marketplace/record}/html/js/record.js | 0 .../marketplace/record}/html/record.html | 0 .../marketplace/record}/playRecordingAC.js | 0 .../marketplace/record}/record.js | 0 9 files changed, 1262 insertions(+) rename {scripts/system => unpublishedScripts/marketplace/record}/assets/sounds/countdown-tick.wav (100%) rename {scripts/system => unpublishedScripts/marketplace/record}/assets/sounds/finish-recording.wav (100%) rename {scripts/system => unpublishedScripts/marketplace/record}/assets/sounds/start-recording.wav (100%) create mode 100644 unpublishedScripts/marketplace/record/html/css/edit-style.css rename {scripts/system => unpublishedScripts/marketplace/record}/html/css/record.css (100%) rename {scripts/system => unpublishedScripts/marketplace/record}/html/js/record.js (100%) rename {scripts/system => unpublishedScripts/marketplace/record}/html/record.html (100%) rename {scripts/system => unpublishedScripts/marketplace/record}/playRecordingAC.js (100%) rename {scripts/system => unpublishedScripts/marketplace/record}/record.js (100%) diff --git a/scripts/system/assets/sounds/countdown-tick.wav b/unpublishedScripts/marketplace/record/assets/sounds/countdown-tick.wav similarity index 100% rename from scripts/system/assets/sounds/countdown-tick.wav rename to unpublishedScripts/marketplace/record/assets/sounds/countdown-tick.wav diff --git a/scripts/system/assets/sounds/finish-recording.wav b/unpublishedScripts/marketplace/record/assets/sounds/finish-recording.wav similarity index 100% rename from scripts/system/assets/sounds/finish-recording.wav rename to unpublishedScripts/marketplace/record/assets/sounds/finish-recording.wav diff --git a/scripts/system/assets/sounds/start-recording.wav b/unpublishedScripts/marketplace/record/assets/sounds/start-recording.wav similarity index 100% rename from scripts/system/assets/sounds/start-recording.wav rename to unpublishedScripts/marketplace/record/assets/sounds/start-recording.wav diff --git a/unpublishedScripts/marketplace/record/html/css/edit-style.css b/unpublishedScripts/marketplace/record/html/css/edit-style.css new file mode 100644 index 0000000000..fcb1815ca4 --- /dev/null +++ b/unpublishedScripts/marketplace/record/html/css/edit-style.css @@ -0,0 +1,1262 @@ +/* +// edit-style.css +// +// Created by Ryan Huffman on 13 Nov 2014 +// Copyright 2014 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +*/ + +@font-face { + font-family: Raleway-Regular; + src: url(../../../../resources/fonts/Raleway-Regular.ttf), /* Windows production */ + url(../../../../fonts/Raleway-Regular.ttf), /* OSX production */ + url(../../../../interface/resources/fonts/Raleway-Regular.ttf), /* Development, running script in /HiFi/examples */ + url(../fonts/Raleway-Regular.ttf); /* Marketplace script */ +} + +@font-face { + font-family: Raleway-Light; + src: url(../../../../resources/fonts/Raleway-Light.ttf), + url(../../../../fonts/Raleway-Light.ttf), + url(../../../../interface/resources/fonts/Raleway-Light.ttf), + url(../fonts/Raleway-Light.ttf); +} + +@font-face { + font-family: Raleway-Bold; + src: url(../../../../resources/fonts/Raleway-Bold.ttf), + url(../../../../fonts/Raleway-Bold.ttf), + url(../../../../interface/resources/fonts/Raleway-Bold.ttf), + url(../fonts/Raleway-Bold.ttf); +} + +@font-face { + font-family: Raleway-SemiBold; + src: url(../../../../resources/fonts/Raleway-SemiBold.ttf), + url(../../../../fonts/Raleway-SemiBold.ttf), + url(../../../../interface/resources/fonts/Raleway-SemiBold.ttf), + url(../fonts/Raleway-SemiBold.ttf); +} + +@font-face { + font-family: FiraSans-SemiBold; + src: url(../../../../resources/fonts/FiraSans-SemiBold.ttf), + url(../../../../fonts/FiraSans-SemiBold.ttf), + url(../../../../interface/resources/fonts/FiraSans-SemiBold.ttf), + url(../fonts/FiraSans-SemiBold.ttf); +} + +@font-face { + font-family: AnonymousPro-Regular; + src: url(../../../../resources/fonts/AnonymousPro-Regular.ttf), + url(../../../../fonts/AnonymousPro-Regular.ttf), + url(../../../../interface/resources/fonts/AnonymousPro-Regular.ttf), + url(../fonts/AnonymousPro-Regular.ttf); +} + +@font-face { + font-family: HiFi-Glyphs; + src: url(../../../../resources/fonts/hifi-glyphs.ttf), + url(../../../../fonts/hifi-glyphs.ttf), + url(../../../../interface/resources/fonts/hifi-glyphs.ttf), + url(../fonts/hifi-glyphs.ttf); +} + +* { + margin: 0; + padding: 0; +} + +body { + padding: 21px 21px 21px 21px; + + color: #afafaf; + background-color: #404040; + font-family: Raleway-Regular; + font-size: 15px; + + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + + overflow-x: hidden; + overflow-y: auto; +} + +table { + font-family: FiraSans-SemiBold; + font-size: 15px; + color: #afafaf; + border-collapse: collapse; + width: 100%; + border: 2px solid #575757; + border-radius: 7px; +} + +thead { + font-family: Raleway-Regular; + font-size: 12px; + text-transform: uppercase; + background-color: #1c1c1c; + padding: 1px 0px; + border-bottom: 1px solid #575757; + width: 100%; +} + +tbody { + width: 100%; +} + +tfoot { + font-family: Raleway-Light; + font-size: 13px; + background-color: #1c1c1c; + border-top: 1px solid #575757; + width: 100%; +} + +tfoot tr { + background-color: #1c1cff; +} + +thead tr { + height: 26px; /* 28px with thead padding */ +} + +thead th { + height: 26px; + background-color: #1c1c1c; + border-right: 1px solid #575757; +} + +thead th:last-child { + border: none; +} + +tbody td { + height: 26px; +} + +tfoot td { + height: 18px; + width: 100%; + background-color: #1c1c1c; + margin-left: 12px; +} + +tr { + width: 100%; + cursor: pointer; +} + +tr:nth-child(odd) { + background-color: #2e2e2e; +} + +tr:nth-child(even) { + background-color: #1c1c1c; +} + +tr:focus { + outline: none; +} + +tr.selected { + color: #000000; + background-color: #00b4ef; +} + +tr.selected + tr.selected { + border-top: 1px solid #2e2e2e; +} + +th { + text-align: center; + word-wrap: nowrap; + white-space: nowrap; + padding-left: 12px; + padding-right: 12px; +} + +td { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + word-wrap: nowrap; + padding-left: 12px; + padding-right: 12px; +} + +td.url { + white-space: nowrap; + overflow: hidden; +} + + +input[type="text"], input[type="number"], textarea { + margin: 0; + padding: 0 12px; + color: #afafaf; + background-color: #252525; + border: none; + font-family: FiraSans-SemiBold; + font-size: 15px; +} + +textarea { + font-family: AnonymousPro-Regular; + font-size: 16px; + padding-top: 5px; + padding-bottom: 5px; + min-height: 64px; + width: 100%; + resize: vertical; +} + +input::-webkit-input-placeholder { + font-style: italic; +} + +input:focus, textarea:focus { + color: #fff; + background-color: #000; + outline: 1px solid #00b4ef; + outline-offset: -1px; +} + +input::selection, textarea::selection { + color: #000000; + background-color: #00b4ef; +} + +input.search { + border-radius: 14px; +} + +input.search:focus { + outline: none; + box-sizing: border-box; + height: 26px; + margin-top: 1px; + margin-bottom: 1px; + box-shadow: 0 0 0px 1px #00b4ef; +} + +input:disabled, textarea:disabled { + background-color: #383838; + color: #afafaf; +} + +input[type="text"] { + height: 28px; + width: 100%; +} + +input[type="number"] { + position: relative; + height: 28px; + width: 124px; +} + +input[type=number] { + padding-right: 3px; +} +input[type=number]::-webkit-inner-spin-button { + -webkit-appearance: none; + opacity: 1.0; + display: block; + position: relative; + width: 10px; + height: 100%; + overflow: hidden; + font-family: hifi-glyphs; + font-size: 46px; + color: #afafaf; + cursor: pointer; + /*background-color: #000000;*/ +} +input[type=number]::-webkit-inner-spin-button:before, +input[type=number]::-webkit-inner-spin-button:after { + position:absolute; + left: -19px; + line-height: 8px; + text-align: center; +} +input[type=number]::-webkit-inner-spin-button:before { + content: "6"; + top: 4px; +} +input[type=number]::-webkit-inner-spin-button:after { + content: "5"; + bottom: 4px; +} + +input[type=number].hover-up::-webkit-inner-spin-button:before, +input[type=number].hover-down::-webkit-inner-spin-button:after { + color: #ffffff; +} + +input.no-spin::-webkit-outer-spin-button, +input.no-spin::-webkit-inner-spin-button { + display: none; + -webkit-appearance: none; + margin: 0; /* <-- Apparently some margin are still there even though it's hidden */ + padding-right: 12px; +} + +input[type=button] { + font-family: Raleway-Bold; + font-size: 13px; + text-transform: uppercase; + vertical-align: top; + height: 28px; + min-width: 120px; + padding: 0px 18px; + margin-right: 6px; + border-radius: 5px; + border: none; + color: #fff; + background-color: #000; + background: linear-gradient(#343434 20%, #000 100%); + cursor: pointer; +} + +input[type=button].glyph { + font-family: HiFi-Glyphs; + font-size: 20px; + text-transform: none; + min-width: 32px; + padding: 0; +} + +input[type=button].red { + color: #fff; + background-color: #94132e; + background: linear-gradient(#d42043 20%, #94132e 100%); +} +input[type=button].blue { + color: #fff; + background-color: #1080b8; + background: linear-gradient(#00b4ef 20%, #1080b8 100%); +} +input[type=button].white { + color: #121212; + background-color: #afafaf; + background: linear-gradient(#fff 20%, #afafaf 100%); +} + +input[type=button]:enabled:hover { + background: linear-gradient(#000, #000); + border: none; +} +input[type=button].red:enabled:hover { + background: linear-gradient(#d42043, #d42043); + border: none; +} +input[type=button].blue:enabled:hover { + background: linear-gradient(#00b4ef, #00b4ef); + border: none; +} +input[type=button].white:enabled:hover { + background: linear-gradient(#fff, #fff); + border: none; +} + +input[type=button]:active { + background: linear-gradient(#343434, #343434); +} +input[type=button].red:active { + background: linear-gradient(#94132e, #94132e); +} +input[type=button].blue:active { + background: linear-gradient(#1080b8, #1080b8); +} +input[type=button].white:active { + background: linear-gradient(#afafaf, #afafaf); +} + +input[type=button]:disabled { + color: #252525; + background: linear-gradient(#575757 20%, #252525 100%); +} + +input[type=button][pressed=pressed] { + color: #00b4ef; +} + +input[type=checkbox] { + display: none; +} +input[type=checkbox] + label { + padding-left: 24px; + background-position-y: 6px; + background-repeat: no-repeat; + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACpSURBVDhPY2xoaGD68+dPMSMjY9L////VgTQjAw4AlH8PxLOPHj1azWxjY1MBVNsBFBfBpwkEgNKcQGwtJyfHyATkF0KEiQdAzYlMQEIUyicFyDD9+/ePgRxMvsb///4zkIOZ/v0HmkAGHginYjGNGAzS+BpdkAj8mun/3//92DyPD//993cG88nTJ4+Zm5p/BSZeJYb/DEJADEzNOPF7hn8Mk69cvVIPAHN5pyfo70F5AAAAAElFTkSuQmCC); +} +input[type=checkbox]:enabled + label:hover { + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAClSURBVDhPY2hoaGD6//9/6b9//64D8T8gGycASr/7+/dv5/79+1kYgIxKqDjRAKiniRFIv2JgYBAFYlLAE0aQ66AckgDjjx8/yNP44cMH8jS+fPmSPI0PHz4kT+PNmzfJ03jp0iXyNJ46dYo8jYcPHyYnAbxm+vnzZz8wLhlIwd+/f5/BrKSkdExCQuLrnz9/lIBpUAiIQekXF34PTGmTT548WQ8AokXg+rhVtPYAAAAASUVORK5CYII=); +} +input[type=checkbox]:checked + label { + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAFLSURBVDhPjZK9SgNBFIXvbCaQRDQq7mIhQRPBRisJKcwLWOobaCsExEaxcEEQe0trGysfwg0EwWoDsbFIJUaIBJOwus547saNP3FlPzgzzJxzL5edFbZtG77v7wkhtrXWS9gFRQC/DZ07jnOYKJfL+8ie4n7mvyIGdhpay+VyQuK8y5dPZoHuVtbpZcLi4wjJ1x4t316R9dDgBlsSi8mGu7pJjyJFzVaH+r7iqyHSELSQzVADjS0UgjlDKUUsLzVO98+9kSLGV5qaHXhjU0GWNSxk3hCIwnsfeMNCjTArLmHeUBodoLiE+R+jxuHPUZP4elGE3teonx2S/Q7lJzOUlkYQ+A4/xzyegzNhXmJpwTMXry9IFjcoa84O0r+QXpcK1cugCLREZadyoA19Ergxwf96nKjd1KqlYqmLQ540TUNwItUmRWdu3T36AODjwgpY9xqqAAAAAElFTkSuQmCC); +} +input[type=checkbox]:checked + label:hover { + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAEySURBVDhPnZLPSsNAEMa/XVPBCE0RhNy0OarP4Av4AD6JB0GwVBA8efBBxHsgh4CQswcRoUIpiIpVAm3zZ5M4szFSbQPBH3xkJvNNZskOer2eLIriKM/ze1JOcS1UHmdZduF5ngEKjr/fN4Z6+oKerwA2gxC4HAFPEWVLsAzgZAvYt3Q6Enw6jg7uBAaTFMNwhpnKdbXCkAJdy8ROu4XrXW2HTJIErHcFDD6nC02Mom8PwymeE2gvS0ZRBBaTlsOXEmdlrfLLOI7Bakrl/zWxCT8T/904f9QW/b06qtrCUdtFCqdjYs2Q2jAPX8c2XQd7Kr/wfV8vwIPs4Ga1ixe5Xrr/YFLTYfKIvWzM6ZtwXZdX7lxXG0L+sxXHcW5t254opRzawQ0S72+dPmjTroIgOP0CQSMt5LDn1T8AAAAASUVORK5CYII=); +} + +.icon-input input { + position: relative; + padding-left: 36px; +} +.icon-input span { + position: absolute; + left: 6px; + top: -2px; + font-family: hifi-glyphs; + font-size: 30px; + color: #afafaf; +} +.icon-input input:focus + span { + color: #ffffff; +} + +.selectable { + -webkit-touch-callout: text; + -webkit-user-select: text; + -khtml-user-select: text; + -moz-user-select: text; + -ms-user-select: text; + user-select: text; + cursor: text; +} + +.color-box { + display: inline-block; + width: 15pt; + height: 15pt; + border: 0.75pt solid black; + margin: 1.5pt; + cursor: pointer; +} + +.color-box.highlight { + width: 13.5pt; + height: 13.5pt; + border: 1.5pt solid black; +} + + +.section-header, .sub-section-header, hr { + display: table; + width: 100%; + margin: 21px -21px 0 -21px; + padding: 14px 21px 0 21px; + font-family: Raleway-Regular; + font-size: 12px; + color: #afafaf; + height: 28px; + text-transform: uppercase; + outline: none; +} + +.section-header { + position: relative; + background: #404040 url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAqCAIAAAAbNW1vAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAmSURBVChTY1BFAgzhSIDBAQmMcoYHRwIJMCgjAQZ9JMBgBQdWVgBh5XmBV5A2FQAAAABJRU5ErkJggg==) repeat-x top left; +} + +.sub-section-header, .no-collapse, hr { + background: #404040 url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAAjSURBVBhXY1RVVf3PgARYjIyMoEwIYHRwcEBRwQSloYCBAQCwjgPMiI7W2QAAAABJRU5ErkJggg==) repeat-x top left; +} + +.section-header:first-child { + margin-top: -2px; + padding-top: 0; + background: none; + height: auto; +} + +.sub-section-header { + margin-bottom: -10px; +} + +.section-header span { + font-family: HiFi-Glyphs; + font-size: 30px; + float: right; + position: absolute; + top: 4px; + right: 13px; +} + +.section-header[collapsed="true"] { + margin-bottom: -21px; +} + +hr { + border: none; + padding-top: 2px; +} + +.text-group[collapsed="true"] ~ .text-group, +.zone-group[collapsed="true"] ~ .zone-group, +.web-group[collapsed="true"] ~ .web-group, +.hyperlink-group[collapsed="true"] ~ .hyperlink-group, +.spatial-group[collapsed="true"] ~ .spatial-group, +.physical-group[collapsed="true"] ~ .physical-group, +.behavior-group[collapsed="true"] ~ .behavior-group, +.model-group[collapsed="true"] ~ .model-group, +.light-group[collapsed="true"] ~ .light-group { + display: none !important; +} + + +.property { + display: table; + width: 100%; + margin-top: 21px; + min-height: 28px; +} + +.property.checkbox { + width: auto; +} + +.property label, .number label { + display: table-cell; + vertical-align: middle; + font-family: Raleway-SemiBold; + font-size: 14px; +} +.property label .unit, .number label .unit { + margin-left: 8px; + font-family: Raleway-Light; + font-size: 13px; +} + +.value { + display: block; + min-height: 18px; +} +.value label { + display: inline-block; + vertical-align: top; + width: 48px; +} +.value span { + font-family: FiraSans-SemiBold; + font-size: 15px; +} + +.checkbox + .checkbox { + margin-top: 0; +} + +.checkbox-sub-props { + margin-top: 18px; +} + +.property .number { + float: left; +} +.property .number + .number { + margin-left: 10px; +} + +.text label, .url label, .number label, .textarea label, .rgb label, .xyz label, .pyr label, .dropdown label, .gen label { + float: left; + margin-left: 1px; + margin-bottom: 3px; + margin-top: -2px; +} + +.number > input { + clear: both; + float: left; +} +.number > span { + clear: both; + float: left; +} +.xyz > div, .pyr > div, .gen > div { + clear: both; +} + +.dropdown { + position: relative; + margin-bottom: -17px; +} + +.dropdown select { + clear: both; +} + +.dropdown dl { + clear: both; +} +.dropdown dl { + font-family: FiraSans-SemiBold; + font-size: 15px; + width: 292px; + height: 28px; + padding: 0 28px 0 12px; + color: #afafaf; + background: linear-gradient(#7d7d7d 20%, #686a68 100%); + position: relative; +} +.dropdown dl[dropped="true"] { + color: #404040; + background: linear-gradient(#afafaf, #afafaf); +} + +.dropdown dt { + height: 100%; + box-sizing: border-box; + border-right: 1px solid #121212; + width: 100%; +} +.dropdown dt:hover { + color: #404040; +} +.dropdown dt:focus { + outline: none; +} +.dropdown dt span:first-child { + display: inline-block; + position: relative; + top: 5px; +} +.dropdown dt span:last-child { + font-family: HiFi-Glyphs; + font-size: 42px; + float: right; + margin-right: -48px; + position: relative; + left: -12px; + top: -9px; +} + +.dropdown dd { + position: absolute; + top: 28px; + left: 3px; + display: none; +} +.dropdown dl[dropped="true"] dd { + display: block; +} + +.dropdown li { + list-style-type: none; + padding: 3px 0 1px 12px; + width: 320px; + height: auto; + font-family: FiraSans-SemiBold; + font-size: 15px; + color: #404040; + background-color: #afafaf +} +.dropdown li:hover { + background-color: #00b4ef; +} + +.dropdown dl[disabled="disabled"], .dropdown dl[disabled="disabled"][dropped="true"] { + color: #252525; + background: linear-gradient(#575757 20%, #252525 100%); +} +.dropdown dl[disabled="disabled"] dd { + display: none; +} +.dropdown dl[disabled="disabled"] dt:hover { + color: #252525; +} + + +div.refresh { + box-sizing: border-box; + padding-right: 44px; +} +div.refresh input[type="button"] { + float: right; + margin-right: -44px; +} + +.color-picker { + box-sizing: border-box; + float: left; + margin-bottom: 21px; + width: 36px; + height: 36px; + border: 4px solid #afafaf; + border-radius: 4px; + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAABTSURBVChTjcxBDoAwCETRwTs33sFjwB6uaCE1Ggvav5qQF7CSqu40dllHjYiOT3gh3yV8Ii+Fb+RNMEP9hm3sKENmBhG5P1aImWMH/EMerSAAOAFgTC/R8ZXSXAAAAABJRU5ErkJggg==); + background-position: bottom right; + background-repeat: no-repeat; +} +.color-picker:focus { + outline: none; +} +.color-picker[active="true"] { + border-color: #000; + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAABDSURBVChTjcoLCkAhCETRNq0tf97Y5xGZ1gVJ45TH6njThIO+xk2UwhWFcEdH6JCqOuiQiMDi/hcii3crRRb/7ggAPvIMVihQwvSXAAAAAElFTkSuQmCC); +} + +.color-picker[disabled="disabled"] { + border-color: #afafaf; + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAABTSURBVChTjcxBDoAwCETRwTs33sFjwB6uaCE1Ggvav5qQF7CSqu40dllHjYiOT3gh3yV8Ii+Fb+RNMEP9hm3sKENmBhG5P1aImWMH/EMerSAAOAFgTC/R8ZXSXAAAAABJRU5ErkJggg==); +} + +.colpick[disabled="disabled"] { + display: none !important; +} + + +.rgb label { + float: left; + margin-top: 10px; + margin-left: 21px; +} +.rgb label + * { + clear: both; +} + +.tuple div { + display: inline-block; + position: relative; + margin-right: 6px; +} +.tuple div:last-child { + margin-right: 0; +} + +.tuple label { + margin-right: -6px; +} + +.rgb .tuple input { + padding-left: 65px; +} +.xyz .tuple input { + padding-left: 25px; +} +.pyr .tuple input { + padding-left: 40px; +} + +.tuple div > label:first-child { + float: left; +} +.tuple div > label + input { + clear: both; + float: left; +} +.tuple div input + label { + display: inline !important; + float: none !important; + position: absolute; + margin-top: 8px; + margin-left: 6px; + left: 0; + font-family: FiraSans-SemiBold; + font-size: 12px; +} +.tuple .red + label, .tuple .x + label, .tuple .pitch + label { + color: #e2334d; +} +.tuple .green + label, .tuple .y + label, .tuple .yaw + label { + color: #1ac567; +} +.tuple .blue + label, .tuple .z + label, .tuple .roll + label { + color: #1080b8; +} + +.tuple .red:focus, .tuple .x:focus, .tuple .pitch:focus { + outline-color: #e2334d; +} +.tuple .green:focus, .tuple .y:focus, .tuple .yaw:focus { + outline-color: #1ac567; +} +tuple, .blue:focus, .tuple .z:focus, .tuple .roll:focus { + outline-color: #1080b8; +} + +.xyz .buttons input { + margin-top: 14px; +} +.xyz .buttons span { + word-wrap: nowrap; + white-space: nowrap; +} + +.row .property { + width: auto; + display: inline-block; + margin-right: 6px; +} +.row .property:last-child { + margin-right: 0; +} +.row .property input { + clear: both; + float: left; +} + +.two-column { + display: table; + width: 100%; +} +.two-column > div { + display: table-cell; + width: 50%; +} +.column { + vertical-align: top; +} + +.indent { + margin-left: 24px; +} + +::-webkit-scrollbar { + width: 20px; + height: 10px; +} +::-webkit-scrollbar-track { + background-color: #2e2e2e; +} +::-webkit-scrollbar-thumb { + background-color: #696969; + border: 2px solid #2e2e2e; + border-radius: 8px; +} + +/* FIXME: Revisit textarea resizer/corner when move to Qt 5.6 or later: see if can get resizer/corner to always be visible and +have correct background color with and without scrollbars. */ +textarea:enabled::-webkit-resizer { + background-size: 10px 10px; + background: #252525 url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAIAAAACUFjqAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAXSURBVChTY1RVVWXADZigNA4wMqUZGACS3gCD5UUtKAAAAABJRU5ErkJggg==) no-repeat bottom right; +} +textarea:focus::-webkit-resizer { + background-size: 10px 10px; + background: #000000 url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACOSURBVChThdC5DQQhDAXQvyRI5LQxFdABARWQElAPogYkiqEWQhLYGe8xxzJaS5a/8AuQHwDG2n+Lvee0hBDQWlO+hRvy3mNZFjDG5vCDOOeIMaL3/guPKISAWiu9n+AVSSlhraXdF86Qcw6tNdoTvEOlFOScd6iUOv3JGEMopYQx9jNvaawnoHnNr8Z4AuRLPOq2gPgnAAAAAElFTkSuQmCC) no-repeat bottom right; +} +textarea:enabled[scrolling="true"]::-webkit-resizer { + background-size: 10px 10px; + background: #2e2e2e url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACKSURBVChTjdAxDsMgDAXQT4UYuQIzCwsSKxsSJ4YDoByDY7AwUOG2aZMQqX+xhd9gzIwxA3/k8a7LCCFgraX+Fk4UY4RSCoyxNfwgzjlyzhhjXOEvSimhtUbvB3hGUkp472m2wxUKIaD3TnOCd6jWim3bvlBrfdjJOUeolEJoZj/4PMH83bl/BXgCWSs2Z09IjgoAAAAASUVORK5CYII=) no-repeat bottom right; +} + + +#entity-list-header { + margin-bottom: 36px; +} + +#entity-list-header div { + display: inline-block; + width: 65px; + margin-right: 6px; +} + +#entity-list-header div input:first-child { + margin-right: 0; + float: left; + width: 33px; + border-right: 1px solid #808080; + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +#entity-list-header div input:last-child { + margin-right: 0; + float: right; + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +#delete { + float: right; + margin-right: 0; + background-color: #ff0000; + min-width: 90px; +} + +#entity-list { + position: relative; /* New positioning context. */ +} + +#search-area { + padding-right: 168px; + padding-bottom: 24px; +} + +#filter { + width: 98%; +} + +#in-view { + position: absolute; + right: 126px; +} + +#radius-and-unit { + float: right; + margin-right: -168px; + position: relative; + top: -17px; +} +#radius-and-unit label { + margin-left: 2px; +} +#radius-and-unit input { + width: 120px; +} + +#entity-table-scroll { + /* Height is set by JavaScript. */ + width: 100%; + overflow-x: hidden; + overflow-y: auto; + box-sizing: border-box; + padding-top: 28px; /* Space for header and footer outside of scroll region. */ + margin-top: 28px; + border-left: 2px solid #575757; + border-right: 2px solid #575757; + background-color: #1c1c1c; +} + +#entity-table-scroll .glyph { + font-family: HiFi-Glyphs; + font-size: 15px; +} + +#entity-table { + margin-top: -28px; + margin-bottom: -18px; + table-layout: fixed; + border: none; + background-color: #1c1c1c; +} + +#entity-table thead tr, #entity-table thead tr th, +#entity-table tfoot tr, #entity-table tfoot tr td { + background: none; +} + +#entity-table .glyph { + margin: 0 -2px 0 -2px; + vertical-align: middle; +} + +#entity-table thead { + box-sizing: border-box; + border: 2px solid #575757; + border-top-left-radius: 7px; + border-top-right-radius: 7px; + border-bottom: 1px solid #575757; + position: absolute; + top: 49px; + left: 0; + width: 100%; + word-wrap: nowrap; + white-space: nowrap; + overflow: hidden; +} + +.verticesCount, .texturesCount, .texturesSize, .drawCalls { + text-align: right; +} + +#entity-table th { + display: inline-block; + box-sizing: border-box; + padding: 5px 0 0 0; + vertical-align: middle; + overflow: hidden; + text-overflow: ellipsis; +} + +#entity-table th:focus { + outline: none; +} + +#entity-table th .glyph { + position: relative; + left: 4px; +} +#entity-table th .glyph + .sort-order { + position: relative; + left: 4px; +} + +#entity-table th#entity-hasScript { + overflow: visible; +} + +#entity-table th#entity-hasScript .glyph { + text-transform: none; +} + +#entity-table thead .sort-order { + display: inline-block; + width: 8px; + margin: -5px 0 -3px 0; + vertical-align: middle; +} + +#entity-table th #info-toggle { + display: inline-block; + position: absolute; + left: initial; + right: 0; + width: 11px; + background-color: #1c1c1c; + z-index: 100; +} +#entity-table th #info-toggle span { + position: relative; + left: -2px; +} + +th#entity-hasTransparent .glyph { + font-weight: normal; + font-size: 24px !important; + margin: -6px; + position: relative; + top: -6px; +} +th#entity-hasTransparent .sort-order { + position: relative; + top: -4px; +} + +#entity-table td { + box-sizing: border-box; +} + +#entity-table td.glyph { + text-align: center; + padding: 0; +} +#entity-table td.hasTransparent.glyph { + font-size: 22px; + position: relative; + top: -1px; +} + +#entity-table td.isBaked.glyph { + font-size: 22px; + position: relative; + top: -1px; +} + +#entity-table tfoot { + box-sizing: border-box; + border: 2px solid #575757; + border-bottom-left-radius: 7px; + border-bottom-right-radius: 7px; + border-top: 1px solid #575757; + position: absolute; + bottom: -21px; + left: 0; + width: 100%; +} + + +#col-type { + width: 16%; +} +#col-name { + width: 34%; +} +#col-url { + width: 34%; +} +#col-locked, #col-visible { + width: 9%; +} +#col-verticesCount, #col-texturesCount, #col-texturesSize, #col-hasTransparent, #col-isBaked, #col-drawCalls, #col-hasScript { + width: 0; +} + +.showExtraInfo #col-type { + width: 10%; +} +.showExtraInfo #col-name { + width: 19%; +} +.showExtraInfo #col-url { + width: 19%; +} +.showExtraInfo #col-locked, .showExtraInfo #col-visible { + width: 4%; +} +.showExtraInfo #col-verticesCount { + width: 8%; +} +.showExtraInfo #col-texturesCount { + width: 8%; +} +.showExtraInfo #col-texturesSize { + width: 10%; +} +.showExtraInfo #col-hasTransparent { + width: 4%; +} +.showExtraInfo #col-isBaked { + width: 8%; +} +.showExtraInfo #col-drawCalls { + width: 8%; +} +.showExtraInfo #col-hasScript { + width: 6%; +} + +th#entity-verticesCount, th#entity-texturesCount, th#entity-texturesSize, th#entity-hasTransparent, th#entity-isBaked, th#entity-drawCalls, +th#entity-hasScript { + display: none; +} + +.verticesCount, .texturesCount, .texturesSize, .hasTransparent, .isBaked, .drawCalls, .hasScript { + display: none; +} + +#entity-visible { + border: none; +} + +.showExtraInfo #entity-verticesCount, .showExtraInfo #entity-texturesCount, .showExtraInfo #entity-texturesSize, +.showExtraInfo #entity-hasTransparent, .showExtraInfo #entity-isBaked, .showExtraInfo #entity-drawCalls, .showExtraInfo #entity-hasScript { + display: inline-block; +} + +.showExtraInfo .verticesCount, .showExtraInfo .texturesCount, .showExtraInfo .texturesSize, .showExtraInfo .hasTransparent, +.showExtraInfo .isBaked, .showExtraInfo .drawCalls, .showExtraInfo .hasScript { + display: table-cell; +} + +.showExtraInfo #entity-visible { + border-right: 1px solid #575757; +} + + +#no-entities { + display: none; + position: absolute; + top: 80px; + padding: 12px; + font-family: FiraSans-SemiBold; + font-size: 15px; + font-style: italic; + color: #afafaf; +} + + +#properties-header { + display: table-row; + height: 28px; +} + +#properties-header .property { + display: table-cell; + vertical-align: middle; +} +#properties-header .checkbox { + position: relative; + top: -1px; +} + +#properties-header #type-icon { + font-family: hifi-glyphs; + font-size: 31px; + color: #00b4ef; + margin: -4px 12px -4px -2px; + width: auto; + display: none; + vertical-align: middle; +} + +#properties-header #property-type { + padding: 5px 24px 5px 0; + border-right: 1px solid #808080; + height: 100%; + width: auto; + display: inline-block; + vertical-align: middle; +} + +#properties-header .checkbox:last-child { + padding-left: 24px; +} + +#properties-header .checkbox label { + background-position-y: 1px; +} + +#properties-header .checkbox label span { + font-family: HiFi-Glyphs; + font-size: 20px; + padding-right: 6px; + vertical-align: top; + position: relative; + top: -4px; +} + +#properties-header input[type=checkbox]:checked + label span { + color: #ffffff; +} + +#properties-header + hr { + margin-top: 12px; +} + + +#id label { + width: 24px; +} +#property-id { + display: inline-block; +} +#property-id::selection { + color: #000000; + background-color: #00b4ef; +} + +input#property-parent-id { + width: 340px; +} + +input#dimension-rescale-button { + min-width: 50px; + margin-left: 6px; +} +input#reset-to-natural-dimensions { + margin-right: 0; +} + +#animation-fps { + margin-top: 48px; +} + +#userdata-clear{ + margin-bottom: 10px; +} + + +#static-userdata{ + display: none; + z-index: 99; + position: absolute; + width: 96%; + padding-left:1%; + margin-top:5px; + margin-bottom:10px; + background-color: #2e2e2e; +} + +#userdata-saved{ + margin-top:5px; + font-size:16px; + display:none; +} diff --git a/scripts/system/html/css/record.css b/unpublishedScripts/marketplace/record/html/css/record.css similarity index 100% rename from scripts/system/html/css/record.css rename to unpublishedScripts/marketplace/record/html/css/record.css diff --git a/scripts/system/html/js/record.js b/unpublishedScripts/marketplace/record/html/js/record.js similarity index 100% rename from scripts/system/html/js/record.js rename to unpublishedScripts/marketplace/record/html/js/record.js diff --git a/scripts/system/html/record.html b/unpublishedScripts/marketplace/record/html/record.html similarity index 100% rename from scripts/system/html/record.html rename to unpublishedScripts/marketplace/record/html/record.html diff --git a/scripts/system/playRecordingAC.js b/unpublishedScripts/marketplace/record/playRecordingAC.js similarity index 100% rename from scripts/system/playRecordingAC.js rename to unpublishedScripts/marketplace/record/playRecordingAC.js diff --git a/scripts/system/record.js b/unpublishedScripts/marketplace/record/record.js similarity index 100% rename from scripts/system/record.js rename to unpublishedScripts/marketplace/record/record.js From fc12d7547a45434f784412c029acedc1e127acc9 Mon Sep 17 00:00:00 2001 From: "Anthony J. Thibault" Date: Wed, 24 May 2017 19:06:49 -0700 Subject: [PATCH 130/357] Addition of CubicHermiteSpline helper classes. --- .../animation/src/AnimInverseKinematics.cpp | 67 +++++++++++++- .../animation/src/AnimInverseKinematics.h | 1 + libraries/shared/src/CubicHermiteSpline.h | 90 +++++++++++++++++++ tests/shared/src/CubicHermiteSplineTests.cpp | 77 ++++++++++++++++ tests/shared/src/CubicHermiteSplineTests.h | 23 +++++ 5 files changed, 254 insertions(+), 4 deletions(-) create mode 100644 libraries/shared/src/CubicHermiteSpline.h create mode 100644 tests/shared/src/CubicHermiteSplineTests.cpp create mode 100644 tests/shared/src/CubicHermiteSplineTests.h diff --git a/libraries/animation/src/AnimInverseKinematics.cpp b/libraries/animation/src/AnimInverseKinematics.cpp index d613e42866..0684cdbd8e 100644 --- a/libraries/animation/src/AnimInverseKinematics.cpp +++ b/libraries/animation/src/AnimInverseKinematics.cpp @@ -20,6 +20,7 @@ #include "ElbowConstraint.h" #include "SwingTwistConstraint.h" #include "AnimationLogging.h" +#include "CubicHermiteSpline.h" AnimInverseKinematics::IKTargetVar::IKTargetVar(const QString& jointNameIn, const QString& positionVarIn, const QString& rotationVarIn, const QString& typeVarIn, const QString& weightVarIn, float weightIn, const std::vector& flexCoefficientsIn) : @@ -457,10 +458,6 @@ const AnimPoseVec& AnimInverseKinematics::overlay(const AnimVariantMap& animVars // allows solutionSource to be overridden by an animVar auto solutionSource = animVars.lookup(_solutionSourceVar, (int)_solutionSource); - if (context.getEnableDebugDrawIKConstraints()) { - debugDrawConstraints(context); - } - const float MAX_OVERLAY_DT = 1.0f / 30.0f; // what to clamp delta-time to in AnimInverseKinematics::overlay if (dt > MAX_OVERLAY_DT) { dt = MAX_OVERLAY_DT; @@ -581,6 +578,11 @@ const AnimPoseVec& AnimInverseKinematics::overlay(const AnimVariantMap& animVars } } + if (context.getEnableDebugDrawIKConstraints()) { + debugDrawConstraints(context); + } + debugDrawSpineSpline(context); + return _relativePoses; } @@ -1316,3 +1318,60 @@ void AnimInverseKinematics::initRelativePosesFromSolutionSource(SolutionSource s break; } } + +void AnimInverseKinematics::debugDrawSpineSpline(const AnimContext& context) const { + AnimPose geomToWorldPose = AnimPose(context.getRigToWorldMatrix() * context.getGeometryToRigMatrix()); + + AnimPose hipsPose = geomToWorldPose * _skeleton->getAbsolutePose(_hipsIndex, _relativePoses); + AnimPose headPose = geomToWorldPose * _skeleton->getAbsolutePose(_headIndex, _relativePoses); + + float d = glm::length(hipsPose.trans() - headPose.trans()); + + const float BACK_GAIN = 1.0f; + const float NECK_GAIN = 0.33f; + glm::vec3 cp0 = hipsPose.trans(); + glm::vec3 cm0 = BACK_GAIN * d * (hipsPose.rot() * Vectors::UNIT_Y); + glm::vec3 cp1 = headPose.trans(); + glm::vec3 cm1 = NECK_GAIN * d * (headPose.rot() * Vectors::UNIT_Y); + + CubicHermiteSplineFunctorWithArcLength hermiteFunc(cp0, cm0, cp1, cm1); + + const glm::vec4 BLUE(0.0f, 0.0f, 1.0f, 1.0f); + const glm::vec4 WHITE(1.0f, 1.0f, 1.0f, 1.0f); + const glm::vec4 RED(1.0f, 0.0f, 0.0f, 1.0f); + const glm::vec4 GREEN(0.0f, 1.0f, 0.0f, 1.0f); + const glm::vec4 CYAN(0.0f, 1.0f, 1.0f, 1.0f); + + int NUM_SUBDIVISIONS = 20; + float totalArcLength = hermiteFunc.arcLength(1.0f); + const float dArcLength = totalArcLength / NUM_SUBDIVISIONS; + float arcLength = 0.0f; + for (int i = 0; i < NUM_SUBDIVISIONS; i++) { + float prevT = hermiteFunc.arcLengthInverse(arcLength); + float nextT = hermiteFunc.arcLengthInverse(arcLength + dArcLength); + DebugDraw::getInstance().drawRay(hermiteFunc(prevT), hermiteFunc(nextT), (i % 2) == 0 ? RED : WHITE); + arcLength += dArcLength; + } + + /* + AnimPose p0 = hipsPose; + AnimPose p1 = AnimPose(glm::vec3(1.0f), glm::normalize(glm::lerp(hipsPose.rot(), headPose.rot(), 0.25f)), hermiteSpline(cp0, cm0, cp1, cm1, 0.25f)); + AnimPose p2 = AnimPose(glm::vec3(1.0f), glm::normalize(glm::lerp(hipsPose.rot(), headPose.rot(), 0.75f)), hermiteSpline(cp0, cm0, cp1, cm1, 0.75f)); + AnimPose p3 = headPose; + + DebugDraw::getInstance().drawRay(cp0, cp0 + cm0, GREEN); + DebugDraw::getInstance().drawRay(cp0 + cm0, cp1, CYAN); + DebugDraw::getInstance().drawRay(cp1, cp1 + cm1, GREEN); + + // draw the spline itself + int NUM_SUBDIVISIONS = 20; + float D_ALPHA = 1.0f / NUM_SUBDIVISIONS; + float alpha = 0.0f; + for (int i = 0; i < NUM_SUBDIVISIONS; i++) { + DebugDraw::getInstance().drawRay(hermiteSpline(cp0, cm0, cp1, cm1, alpha), + hermiteSpline(cp0, cm0, cp1, cm1, alpha + D_ALPHA), + (i % 2) == 0 ? RED : WHITE); + alpha += D_ALPHA; + } + */ +} diff --git a/libraries/animation/src/AnimInverseKinematics.h b/libraries/animation/src/AnimInverseKinematics.h index 0267f14650..22ebee4dec 100644 --- a/libraries/animation/src/AnimInverseKinematics.h +++ b/libraries/animation/src/AnimInverseKinematics.h @@ -70,6 +70,7 @@ protected: void debugDrawIKChain(std::map& debugJointMap, const AnimContext& context) const; void debugDrawRelativePoses(const AnimContext& context) const; void debugDrawConstraints(const AnimContext& context) const; + void debugDrawSpineSpline(const AnimContext& context) const; void initRelativePosesFromSolutionSource(SolutionSource solutionSource, const AnimPoseVec& underPose); void blendToPoses(const AnimPoseVec& targetPoses, const AnimPoseVec& underPose, float blendFactor); diff --git a/libraries/shared/src/CubicHermiteSpline.h b/libraries/shared/src/CubicHermiteSpline.h new file mode 100644 index 0000000000..310dedb1af --- /dev/null +++ b/libraries/shared/src/CubicHermiteSpline.h @@ -0,0 +1,90 @@ +// +// CubicHermiteSpline.h +// +// Copyright 2017 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +#ifndef hifi_CubicHermiteSpline_h +#define hifi_CubicHermiteSpline_h + +#include "GLMHelpers.h" + +class CubicHermiteSplineFunctor { +public: + CubicHermiteSplineFunctor(const glm::vec3& p0, const glm::vec3& m0, const glm::vec3& p1, const glm::vec3& m1) : _p0(p0), _m0(m0), _p1(p1), _m1(m1) {} + + CubicHermiteSplineFunctor(const CubicHermiteSplineFunctor& orig) : _p0(orig._p0), _m0(orig._m0), _p1(orig._p1), _m1(orig._m1) {} + + virtual ~CubicHermiteSplineFunctor() {} + + // evalute the hermite curve at parameter t (0..1) + glm::vec3 operator()(float t) const { + float t3 = t * t * t; + float t2 = t * t; + float w0 = 2.0f * t3 - 3.0f * t2 + 1.0f; + float w1 = t3 - 2.0f * t2 + t; + float w2 = -2.0f * t3 + 3.0f * t2; + float w3 = t3 - t2; + return w0 * _p0 + w1 * _m0 + w2 * _p1 + w3 * _m1; + } + +protected: + glm::vec3 _p0; + glm::vec3 _m0; + glm::vec3 _p1; + glm::vec3 _m1; +}; + +class CubicHermiteSplineFunctorWithArcLength : public CubicHermiteSplineFunctor { +public: + enum Constants { NUM_SUBDIVISIONS = 30 }; + + CubicHermiteSplineFunctorWithArcLength(const glm::vec3& p0, const glm::vec3& m0, const glm::vec3& p1, const glm::vec3& m1) : CubicHermiteSplineFunctor(p0, m0, p1, m1) { + // initialize _values with the accumulated arcLength along the spline. + const float DELTA = 1.0f / NUM_SUBDIVISIONS; + float alpha = 0.0f; + float accum = 0.0f; + _values[0] = 0.0f; + for (int i = 0; i < NUM_SUBDIVISIONS; i++) { + accum += glm::distance(this->operator()(alpha), + this->operator()(alpha + DELTA)); + alpha += DELTA; + _values[i + 1] = accum; + } + } + + CubicHermiteSplineFunctorWithArcLength(const CubicHermiteSplineFunctorWithArcLength& orig) : CubicHermiteSplineFunctor(orig) { + memcpy(_values, orig._values, sizeof(float) * NUM_SUBDIVISIONS + 1); + } + + // given the spline parameter (0..1) output the arcLength of the spline up to that point. + float arcLength(float t) const { + float index = t * NUM_SUBDIVISIONS; + int prevIndex = std::min(std::max(0, (int)glm::floor(index)), (int)NUM_SUBDIVISIONS); + int nextIndex = std::min(std::max(0, (int)glm::ceil(index)), (int)NUM_SUBDIVISIONS); + float alpha = glm::fract(index); + return lerp(_values[prevIndex], _values[nextIndex], alpha); + } + + // given an arcLength compute the spline parameter (0..1) that cooresponds to that arcLength. + float arcLengthInverse(float s) const { + // find first item in _values that is > s. + int nextIndex; + for (nextIndex = 0; nextIndex < NUM_SUBDIVISIONS; nextIndex++) { + if (_values[nextIndex] > s) { + break; + } + } + int prevIndex = std::min(std::max(0, nextIndex - 1), (int)NUM_SUBDIVISIONS); + float alpha = glm::clamp((s - _values[prevIndex]) / (_values[nextIndex] - _values[prevIndex]), 0.0f, 1.0f); + const float DELTA = 1.0f / NUM_SUBDIVISIONS; + return lerp(prevIndex * DELTA, nextIndex * DELTA, alpha); + } +protected: + float _values[NUM_SUBDIVISIONS + 1]; +}; + +#endif // hifi_CubicHermiteSpline_h diff --git a/tests/shared/src/CubicHermiteSplineTests.cpp b/tests/shared/src/CubicHermiteSplineTests.cpp new file mode 100644 index 0000000000..53a4ba8f6b --- /dev/null +++ b/tests/shared/src/CubicHermiteSplineTests.cpp @@ -0,0 +1,77 @@ +// +// CubicHermiteSplineTests.cpp +// tests/shared/src +// +// Copyright 2017 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +#include "CubicHermiteSplineTests.h" +#include "../QTestExtensions.h" +#include +#include "CubicHermiteSpline.h" + +QTEST_MAIN(CubicHermiteSplineTests) + +void CubicHermiteSplineTests::testCubicHermiteSplineFunctor() { + glm::vec3 p0(0.0f, 0.0f, 0.0f); + glm::vec3 m0(1.0f, 0.0f, 0.0f); + glm::vec3 p1(1.0f, 1.0f, 0.0f); + glm::vec3 m1(2.0f, 0.0f, 0.0f); + CubicHermiteSplineFunctor hermiteSpline(p0, m0, p1, m1); + + const float EPSILON = 0.0001f; + + QCOMPARE_WITH_ABS_ERROR(p0, hermiteSpline(0.0f), EPSILON); + QCOMPARE_WITH_ABS_ERROR(p1, hermiteSpline(1.0f), EPSILON); + + // these values were computed offline. + const glm::vec3 oneFourth(0.203125f, 0.15625f, 0.0f); + const glm::vec3 oneHalf(0.375f, 0.5f, 0.0f); + const glm::vec3 threeFourths(0.609375f, 0.84375f, 0.0f); + + QCOMPARE_WITH_ABS_ERROR(oneFourth, hermiteSpline(0.25f), EPSILON); + QCOMPARE_WITH_ABS_ERROR(oneHalf, hermiteSpline(0.5f), EPSILON); + QCOMPARE_WITH_ABS_ERROR(threeFourths, hermiteSpline(0.75f), EPSILON); +} + +void CubicHermiteSplineTests::testCubicHermiteSplineFunctorWithArcLength() { + glm::vec3 p0(0.0f, 0.0f, 0.0f); + glm::vec3 m0(1.0f, 0.0f, 0.0f); + glm::vec3 p1(1.0f, 1.0f, 0.0f); + glm::vec3 m1(2.0f, 0.0f, 0.0f); + CubicHermiteSplineFunctorWithArcLength hermiteSpline(p0, m0, p1, m1); + + const float EPSILON = 0.001f; + + float arcLengths[5] = { + hermiteSpline.arcLength(0.0f), + hermiteSpline.arcLength(0.25f), + hermiteSpline.arcLength(0.5f), + hermiteSpline.arcLength(0.75f), + hermiteSpline.arcLength(1.0f) + }; + + // these values were computed offline + float referenceArcLengths[5] = { + 0.0f, + 0.268317f, + 0.652788f, + 1.07096f, + 1.50267f + }; + + QCOMPARE_WITH_ABS_ERROR(arcLengths[0], referenceArcLengths[0], EPSILON); + QCOMPARE_WITH_ABS_ERROR(arcLengths[1], referenceArcLengths[1], EPSILON); + QCOMPARE_WITH_ABS_ERROR(arcLengths[2], referenceArcLengths[2], EPSILON); + QCOMPARE_WITH_ABS_ERROR(arcLengths[3], referenceArcLengths[3], EPSILON); + QCOMPARE_WITH_ABS_ERROR(arcLengths[4], referenceArcLengths[4], EPSILON); + + QCOMPARE_WITH_ABS_ERROR(0.0f, hermiteSpline.arcLengthInverse(referenceArcLengths[0]), EPSILON); + QCOMPARE_WITH_ABS_ERROR(0.25f, hermiteSpline.arcLengthInverse(referenceArcLengths[1]), EPSILON); + QCOMPARE_WITH_ABS_ERROR(0.5f, hermiteSpline.arcLengthInverse(referenceArcLengths[2]), EPSILON); + QCOMPARE_WITH_ABS_ERROR(0.75f, hermiteSpline.arcLengthInverse(referenceArcLengths[3]), EPSILON); + QCOMPARE_WITH_ABS_ERROR(1.0f, hermiteSpline.arcLengthInverse(referenceArcLengths[4]), EPSILON); +} diff --git a/tests/shared/src/CubicHermiteSplineTests.h b/tests/shared/src/CubicHermiteSplineTests.h new file mode 100644 index 0000000000..1828d1aa02 --- /dev/null +++ b/tests/shared/src/CubicHermiteSplineTests.h @@ -0,0 +1,23 @@ +// +// CubicHermiteSplineTests.h +// tests/shared/src +// +// Copyright 2017 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +#ifndef hifi_CubicHermiteSplineTests_h +#define hifi_CubicHermiteSplineTests_h + +#include + +class CubicHermiteSplineTests : public QObject { + Q_OBJECT +private slots: + void testCubicHermiteSplineFunctor(); + void testCubicHermiteSplineFunctorWithArcLength(); +}; + +#endif // hifi_TransformTests_h From 39c23bfe2f60721bf8d251927cfc553f93935f47 Mon Sep 17 00:00:00 2001 From: "Anthony J. Thibault" Date: Fri, 26 May 2017 17:09:30 -0700 Subject: [PATCH 131/357] revision of spine spline rotation calculation --- .../animation/src/AnimInverseKinematics.cpp | 68 +++++++++++-------- libraries/shared/src/CubicHermiteSpline.h | 19 ++++++ libraries/shared/src/GLMHelpers.cpp | 2 +- 3 files changed, 59 insertions(+), 30 deletions(-) diff --git a/libraries/animation/src/AnimInverseKinematics.cpp b/libraries/animation/src/AnimInverseKinematics.cpp index 0684cdbd8e..69a224c686 100644 --- a/libraries/animation/src/AnimInverseKinematics.cpp +++ b/libraries/animation/src/AnimInverseKinematics.cpp @@ -1319,6 +1319,13 @@ void AnimInverseKinematics::initRelativePosesFromSolutionSource(SolutionSource s } } +struct SplineJointInfo { + int index; + float ratio; + AnimPose defaultPose; + AnimPose offsetPose; +}; + void AnimInverseKinematics::debugDrawSpineSpline(const AnimContext& context) const { AnimPose geomToWorldPose = AnimPose(context.getRigToWorldMatrix() * context.getGeometryToRigMatrix()); @@ -1327,21 +1334,22 @@ void AnimInverseKinematics::debugDrawSpineSpline(const AnimContext& context) con float d = glm::length(hipsPose.trans() - headPose.trans()); - const float BACK_GAIN = 1.0f; - const float NECK_GAIN = 0.33f; - glm::vec3 cp0 = hipsPose.trans(); - glm::vec3 cm0 = BACK_GAIN * d * (hipsPose.rot() * Vectors::UNIT_Y); - glm::vec3 cp1 = headPose.trans(); - glm::vec3 cm1 = NECK_GAIN * d * (headPose.rot() * Vectors::UNIT_Y); + const float BACK_GAIN = 0.5f; + const float NECK_GAIN = 1.0f; + glm::vec3 p0 = hipsPose.trans(); + glm::vec3 m0 = BACK_GAIN * d * (hipsPose.rot() * Vectors::UNIT_Y); + glm::vec3 p1 = headPose.trans(); + glm::vec3 m1 = NECK_GAIN * d * (headPose.rot() * Vectors::UNIT_Y); - CubicHermiteSplineFunctorWithArcLength hermiteFunc(cp0, cm0, cp1, cm1); + CubicHermiteSplineFunctorWithArcLength hermiteFunc(p0, m0, p1, m1); - const glm::vec4 BLUE(0.0f, 0.0f, 1.0f, 1.0f); - const glm::vec4 WHITE(1.0f, 1.0f, 1.0f, 1.0f); const glm::vec4 RED(1.0f, 0.0f, 0.0f, 1.0f); + const glm::vec4 WHITE(1.0f, 1.0f, 1.0f, 1.0f); + const glm::vec4 BLUE(0.0f, 0.0f, 1.0f, 1.0f); const glm::vec4 GREEN(0.0f, 1.0f, 0.0f, 1.0f); - const glm::vec4 CYAN(0.0f, 1.0f, 1.0f, 1.0f); + // draw red and white stripped spline, parameterized by arc length. + // i.e. each stripe should be the same length. int NUM_SUBDIVISIONS = 20; float totalArcLength = hermiteFunc.arcLength(1.0f); const float dArcLength = totalArcLength / NUM_SUBDIVISIONS; @@ -1353,25 +1361,27 @@ void AnimInverseKinematics::debugDrawSpineSpline(const AnimContext& context) con arcLength += dArcLength; } - /* - AnimPose p0 = hipsPose; - AnimPose p1 = AnimPose(glm::vec3(1.0f), glm::normalize(glm::lerp(hipsPose.rot(), headPose.rot(), 0.25f)), hermiteSpline(cp0, cm0, cp1, cm1, 0.25f)); - AnimPose p2 = AnimPose(glm::vec3(1.0f), glm::normalize(glm::lerp(hipsPose.rot(), headPose.rot(), 0.75f)), hermiteSpline(cp0, cm0, cp1, cm1, 0.75f)); - AnimPose p3 = headPose; + AnimPose defaultHipsPose = _skeleton->getAbsoluteDefaultPose(_hipsIndex); + AnimPose defaultHeadPose = _skeleton->getAbsoluteDefaultPose(_headIndex); + float hipsToHeadHeight = defaultHeadPose.trans().y - defaultHipsPose.trans().y; - DebugDraw::getInstance().drawRay(cp0, cp0 + cm0, GREEN); - DebugDraw::getInstance().drawRay(cp0 + cm0, cp1, CYAN); - DebugDraw::getInstance().drawRay(cp1, cp1 + cm1, GREEN); - - // draw the spline itself - int NUM_SUBDIVISIONS = 20; - float D_ALPHA = 1.0f / NUM_SUBDIVISIONS; - float alpha = 0.0f; - for (int i = 0; i < NUM_SUBDIVISIONS; i++) { - DebugDraw::getInstance().drawRay(hermiteSpline(cp0, cm0, cp1, cm1, alpha), - hermiteSpline(cp0, cm0, cp1, cm1, alpha + D_ALPHA), - (i % 2) == 0 ? RED : WHITE); - alpha += D_ALPHA; + // iterate down the chain and build the splineJointInfoVec + std::vector splineJointInfoVec; + int index = _headIndex; + int endIndex = _skeleton->getParentIndex(_hipsIndex); + while (index != endIndex) { + AnimPose defaultPose = _skeleton->getAbsoluteDefaultPose(index); + float ratio = (defaultPose.trans().y - defaultHipsPose.trans().y) / hipsToHeadHeight; + SplineJointInfo splineJointInfo = { index, ratio, defaultPose, AnimPose() }; + splineJointInfoVec.push_back(splineJointInfo); + index = _skeleton->getParentIndex(index); } - */ + + for (auto& splineJointInfo : splineJointInfoVec) { + float t = hermiteFunc.arcLengthInverse(splineJointInfo.ratio * totalArcLength); + glm::vec3 trans = hermiteFunc(t); + glm::quat rot = glm::normalize(glm::lerp(hipsPose.rot(), headPose.rot(), t)); + DebugDraw::getInstance().addMarker(QString("splineJoint%1").arg(splineJointInfo.index), rot, trans, BLUE); + } + } diff --git a/libraries/shared/src/CubicHermiteSpline.h b/libraries/shared/src/CubicHermiteSpline.h index 310dedb1af..e563fc2b73 100644 --- a/libraries/shared/src/CubicHermiteSpline.h +++ b/libraries/shared/src/CubicHermiteSpline.h @@ -31,6 +31,25 @@ public: return w0 * _p0 + w1 * _m0 + w2 * _p1 + w3 * _m1; } + // evaulate the first derivative of the hermite curve at parameter t (0..1) + glm::vec3 d(float t) const { + float t2 = t * t; + float w0 = -6.0f * t + 6.0f * t2; + float w1 = 1.0f - 4.0f * t + 3.0f * t2; + float w2 = 6.0 * t - 6.0f * t2; + float w3 = -2.0f * t + 3.0f * t2; + return w0 * _p0 + w1 * _m0 + w2 * _p1 + w3 * _m1; + } + + // evaulate the second derivative of the hermite curve at paramter t (0..1) + glm::vec3 d2(float t) const { + float w0 = -6.0f + 12.0f * t; + float w1 = -4.0f + 6.0f * t; + float w2 = 6.0f - 12.0f * t; + float w3 = -2.0f + 6.0f * t; + return w0 + _p0 + w1 * _m0 + w2 * _p1 + w3 * _m1; + } + protected: glm::vec3 _p0; glm::vec3 _m0; diff --git a/libraries/shared/src/GLMHelpers.cpp b/libraries/shared/src/GLMHelpers.cpp index 70237e8ff6..f4989d61f5 100644 --- a/libraries/shared/src/GLMHelpers.cpp +++ b/libraries/shared/src/GLMHelpers.cpp @@ -540,7 +540,7 @@ void generateBasisVectors(const glm::vec3& primaryAxis, const glm::vec3& seconda // if secondaryAxis is parallel with the primaryAxis, pick another axis. const float EPSILON = 1.0e-4f; - if (fabsf(fabsf(glm::dot(uAxisOut, secondaryAxis)) - 1.0f) > EPSILON) { + if (fabsf(fabsf(glm::dot(uAxisOut, secondaryAxis)) - 1.0f) > EPSILON) { // pick a better secondaryAxis. normSecondary = glm::vec3(1.0f, 0.0f, 0.0f); if (fabsf(fabsf(glm::dot(uAxisOut, secondaryAxis)) - 1.0f) > EPSILON) { From d4dbd94a3564c2bc020fceeb5723eaaff8547f17 Mon Sep 17 00:00:00 2001 From: "Anthony J. Thibault" Date: Tue, 30 May 2017 14:22:03 -0700 Subject: [PATCH 132/357] Compute defaultSpineSplineto defaultPose offset --- .../animation/src/AnimInverseKinematics.cpp | 110 +++++++++++++----- .../animation/src/AnimInverseKinematics.h | 11 +- 2 files changed, 92 insertions(+), 29 deletions(-) diff --git a/libraries/animation/src/AnimInverseKinematics.cpp b/libraries/animation/src/AnimInverseKinematics.cpp index 69a224c686..03f1208600 100644 --- a/libraries/animation/src/AnimInverseKinematics.cpp +++ b/libraries/animation/src/AnimInverseKinematics.cpp @@ -576,12 +576,12 @@ const AnimPoseVec& AnimInverseKinematics::overlay(const AnimVariantMap& animVars _hipsOffset = Vectors::ZERO; } } - } - if (context.getEnableDebugDrawIKConstraints()) { - debugDrawConstraints(context); + if (context.getEnableDebugDrawIKConstraints()) { + debugDrawConstraints(context); + } + debugDrawSpineSpline(context, targets); } - debugDrawSpineSpline(context); return _relativePoses; } @@ -1319,14 +1319,77 @@ void AnimInverseKinematics::initRelativePosesFromSolutionSource(SolutionSource s } } -struct SplineJointInfo { - int index; - float ratio; - AnimPose defaultPose; - AnimPose offsetPose; -}; +void AnimInverseKinematics::computeSplineJointInfosForIKTarget(const AnimContext& context, int targetIndex, const IKTarget& target) { + std::vector splineJointInfoVec; + + // build default spline + AnimPose geomToRigPose(context.getGeometryToRigMatrix()); + AnimPose tipPose = geomToRigPose * _skeleton->getAbsoluteDefaultPose(target.getIndex()); + AnimPose basePose = geomToRigPose * _skeleton->getAbsoluteDefaultPose(_hipsIndex); + + const float BASE_GAIN = 0.5f; + const float TIP_GAIN = 1.0f; + float d = glm::length(basePose.trans() - tipPose.trans()); + glm::vec3 p0 = basePose.trans(); + glm::vec3 m0 = BASE_GAIN * d * (basePose.rot() * Vectors::UNIT_Y); + glm::vec3 p1 = tipPose.trans(); + glm::vec3 m1 = TIP_GAIN * d * (tipPose.rot() * Vectors::UNIT_Y); + + // AJT: FIXME: TODO: this won't work for horizontal splines... + float baseToTipHeight = tipPose.trans().y - basePose.trans().y; + + CubicHermiteSplineFunctorWithArcLength spline(p0, m0, p1, m1); + float totalArcLength = spline.arcLength(1.0f); + + int index = _headIndex; + int endIndex = _skeleton->getParentIndex(_hipsIndex); + while (index != endIndex) { + AnimPose defaultPose = geomToRigPose * _skeleton->getAbsoluteDefaultPose(index); + + // AJT: FIXME: TODO: this wont work for horizontal splines... + float ratio = (defaultPose.trans().y - basePose.trans().y) / baseToTipHeight; + + // compute offset from default spline pose to default pose. + float t = spline.arcLengthInverse(ratio * totalArcLength); + AnimPose pose(glm::vec3(1.0f), glm::normalize(glm::lerp(basePose.rot(), tipPose.rot(), t)), spline(t)); + AnimPose offset = pose.inverse() * defaultPose; + + SplineJointInfo splineJointInfo = { index, ratio, defaultPose, offset }; + splineJointInfoVec.push_back(splineJointInfo); + index = _skeleton->getParentIndex(index); + } + + _splineJointInfoMap[targetIndex] = splineJointInfoVec; +} + +void AnimInverseKinematics::debugDrawSpineSpline(const AnimContext& context, const std::vector& targets) { + + // find head target + int headTargetIndex = -1; + for (int i = 0; i < (int)targets.size(); i++) { + if (targets[i].getIndex() == _headIndex) { + headTargetIndex = i; + break; + } + } + + // find or create splineJointInfo for the head target + const std::vector* splineJointInfoVec = nullptr; + if (headTargetIndex != -1) { + auto iter = _splineJointInfoMap.find(headTargetIndex); + if (iter != _splineJointInfoMap.end()) { + splineJointInfoVec = &(iter->second); + } else { + computeSplineJointInfosForIKTarget(context, headTargetIndex, targets[headTargetIndex]); + auto iter = _splineJointInfoMap.find(headTargetIndex); + if (iter != _splineJointInfoMap.end()) { + splineJointInfoVec = &(iter->second); + } + } + } + + // AJT: TODO: render using splineJointInfoVec offset -void AnimInverseKinematics::debugDrawSpineSpline(const AnimContext& context) const { AnimPose geomToWorldPose = AnimPose(context.getRigToWorldMatrix() * context.getGeometryToRigMatrix()); AnimPose hipsPose = geomToWorldPose * _skeleton->getAbsolutePose(_hipsIndex, _relativePoses); @@ -1365,23 +1428,14 @@ void AnimInverseKinematics::debugDrawSpineSpline(const AnimContext& context) con AnimPose defaultHeadPose = _skeleton->getAbsoluteDefaultPose(_headIndex); float hipsToHeadHeight = defaultHeadPose.trans().y - defaultHipsPose.trans().y; - // iterate down the chain and build the splineJointInfoVec - std::vector splineJointInfoVec; - int index = _headIndex; - int endIndex = _skeleton->getParentIndex(_hipsIndex); - while (index != endIndex) { - AnimPose defaultPose = _skeleton->getAbsoluteDefaultPose(index); - float ratio = (defaultPose.trans().y - defaultHipsPose.trans().y) / hipsToHeadHeight; - SplineJointInfo splineJointInfo = { index, ratio, defaultPose, AnimPose() }; - splineJointInfoVec.push_back(splineJointInfo); - index = _skeleton->getParentIndex(index); - } - - for (auto& splineJointInfo : splineJointInfoVec) { - float t = hermiteFunc.arcLengthInverse(splineJointInfo.ratio * totalArcLength); - glm::vec3 trans = hermiteFunc(t); - glm::quat rot = glm::normalize(glm::lerp(hipsPose.rot(), headPose.rot(), t)); - DebugDraw::getInstance().addMarker(QString("splineJoint%1").arg(splineJointInfo.index), rot, trans, BLUE); + if (splineJointInfoVec) { + for (auto& splineJointInfo : *splineJointInfoVec) { + float t = hermiteFunc.arcLengthInverse(splineJointInfo.ratio * totalArcLength); + glm::vec3 trans = hermiteFunc(t); + glm::quat rot = glm::normalize(glm::lerp(hipsPose.rot(), headPose.rot(), t)); + AnimPose pose = AnimPose(glm::vec3(1.0f), rot, trans) * splineJointInfo.offsetPose; + DebugDraw::getInstance().addMarker(QString("splineJoint%1").arg(splineJointInfo.jointIndex), pose.rot(), pose.trans(), BLUE); + } } } diff --git a/libraries/animation/src/AnimInverseKinematics.h b/libraries/animation/src/AnimInverseKinematics.h index 22ebee4dec..2b2535ac79 100644 --- a/libraries/animation/src/AnimInverseKinematics.h +++ b/libraries/animation/src/AnimInverseKinematics.h @@ -70,7 +70,8 @@ protected: void debugDrawIKChain(std::map& debugJointMap, const AnimContext& context) const; void debugDrawRelativePoses(const AnimContext& context) const; void debugDrawConstraints(const AnimContext& context) const; - void debugDrawSpineSpline(const AnimContext& context) const; + void debugDrawSpineSpline(const AnimContext& context, const std::vector& targets); + void computeSplineJointInfosForIKTarget(const AnimContext& context, int targetIndex, const IKTarget& target); void initRelativePosesFromSolutionSource(SolutionSource solutionSource, const AnimPoseVec& underPose); void blendToPoses(const AnimPoseVec& targetPoses, const AnimPoseVec& underPose, float blendFactor); @@ -112,6 +113,14 @@ protected: AnimPoseVec _relativePoses; // current relative poses AnimPoseVec _limitCenterPoses; // relative + struct SplineJointInfo { + int jointIndex; + float ratio; + AnimPose defaultPose; + AnimPose offsetPose; + }; + std::map> _splineJointInfoMap; + // experimental data for moving hips during IK glm::vec3 _hipsOffset { Vectors::ZERO }; float _maxHipsOffsetLength{ FLT_MAX }; From 4c4811dca82ea881bdf19d07dd581d179b807194 Mon Sep 17 00:00:00 2001 From: Dante Ruiz Date: Tue, 30 May 2017 22:52:39 +0100 Subject: [PATCH 133/357] finished the head puck --- libraries/shared/src/GLMHelpers.h | 3 +- plugins/openvr/src/ViveControllerManager.cpp | 78 +++++++++++++++++--- plugins/openvr/src/ViveControllerManager.h | 1 + 3 files changed, 70 insertions(+), 12 deletions(-) diff --git a/libraries/shared/src/GLMHelpers.h b/libraries/shared/src/GLMHelpers.h index 5574007b9b..ef92552d1f 100644 --- a/libraries/shared/src/GLMHelpers.h +++ b/libraries/shared/src/GLMHelpers.h @@ -147,8 +147,7 @@ bool isPointBehindTrianglesPlane(glm::vec3 point, glm::vec3 p0, glm::vec3 p1, gl glm::vec3 extractTranslation(const glm::mat4& matrix); -void setTranslation(glm::mat4& matrix, cons - t glm::vec3& translation); +void setTranslation(glm::mat4& matrix, const glm::vec3& translation); glm::quat extractRotation(const glm::mat4& matrix, bool assumeOrthogonal = false); glm::quat glmExtractRotation(const glm::mat4& matrix); diff --git a/plugins/openvr/src/ViveControllerManager.cpp b/plugins/openvr/src/ViveControllerManager.cpp index 0f0cc5860e..82457928a2 100644 --- a/plugins/openvr/src/ViveControllerManager.cpp +++ b/plugins/openvr/src/ViveControllerManager.cpp @@ -82,6 +82,28 @@ static bool sortPucksXPosition(PuckPosePair firstPuck, PuckPosePair secondPuck) return (firstPuck.second.translation.x < secondPuck.second.translation.x); } +static bool comparePosePositions(const controller::Pose& poseA, const controller::Pose& poseB, glm::vec3 axis, glm::vec3 axisOrigin) { + glm::vec3 poseAPosition = poseA.getTranslation(); + glm::vec3 poseBPosition = poseB.getTranslation(); + + glm::vec3 poseAFinalPosition = poseAPosition - axisOrigin; + glm::vec3 poseBFinalPosition = poseBPosition - axisOrigin; + + float poseADistance = glm::dot(poseAFinalPosition, axis); + float poseBDistance = glm::dot(poseBFinalPosition, axis); + return (poseADistance > poseBDistance); +} + +static glm::vec3 getHeadXAxis(glm::mat4 defaultToReferenceMat, glm::mat4 defaultHead) { + glm::mat4 finalHead = defaultToReferenceMat * defaultHead; + return glmExtractRotation(finalHead) * Vectors::UNIT_X; +} + +static glm::vec3 getHeadPosition(glm::mat4 defaultToReferenceMat, glm::mat4 defaultHead) { + glm::mat4 finalHead = defaultToReferenceMat * defaultHead; + return extractTranslation(finalHead); +} + static QString deviceTrackingResultToString(vr::ETrackingResult trackingResult) { QString result; auto iterator = TRACKING_RESULT_TO_STRING.find(trackingResult); @@ -361,12 +383,16 @@ void ViveControllerManager::InputDevice::calibrate(const controller::InputCalibr calibrateShoulders(defaultToReferenceMat, inputCalibration, firstShoulderIndex, secondShoulderIndex); } else if (_config == Config::FeetHipsAndHead && puckCount == MIN_FEET_HIPS_HEAD) { glm::mat4 headPuckDefaultToReferenceMat = recalculateDefaultToReferenceForHeadPuck(inputCalibration); - calibrateFeet(headPuckDefaultToReferenceMat, inputCalibration); + glm::vec3 headXAxis = getHeadXAxis(headPuckDefaultToReferenceMat, inputCalibration.defaultHeadMat); + glm::vec3 headPosition = getHeadPosition(headPuckDefaultToReferenceMat, inputCalibration.defaultHeadMat); + calibrateFeet(headPuckDefaultToReferenceMat, inputCalibration, headXAxis, headPosition); calibrateHips(headPuckDefaultToReferenceMat, inputCalibration); calibrateHead(headPuckDefaultToReferenceMat, inputCalibration); } else if (_config == Config::FeetHipsChestAndHead && puckCount == MIN_FEET_HIPS_CHEST_HEAD) { glm::mat4 headPuckDefaultToReferenceMat = recalculateDefaultToReferenceForHeadPuck(inputCalibration); - calibrateFeet(headPuckDefaultToReferenceMat, inputCalibration); + glm::vec3 headXAxis = getHeadXAxis(headPuckDefaultToReferenceMat, inputCalibration.defaultHeadMat); + glm::vec3 headPosition = getHeadPosition(headPuckDefaultToReferenceMat, inputCalibration.defaultHeadMat); + calibrateFeet(headPuckDefaultToReferenceMat, inputCalibration, headXAxis, headPosition); calibrateHips(headPuckDefaultToReferenceMat, inputCalibration); calibrateChest(headPuckDefaultToReferenceMat, inputCalibration); calibrateHead(headPuckDefaultToReferenceMat, inputCalibration); @@ -468,17 +494,29 @@ glm::mat4 ViveControllerManager::InputDevice::recalculateDefaultToReferenceForHe glm::mat4 sensorToAvatarMat = glm::inverse(inputCalibration.avatarMat) * inputCalibration.sensorToWorldMat; size_t headPuckIndex = _validTrackedObjects.size() - 1; controller::Pose headPuckPose = _validTrackedObjects[headPuckIndex].second; - glm::mat4 headPuckSensorMat = avatarToSensorMat * createMatFromQuatAndPos(headPuckPose.getRotation(), headPuckPose.getTranslation()); - glm::vec3 headPuckTranslation = extractTranslation(headPuckSensorMat); - glm::vec3 headPuckYRotation = glmExtractRotation(headPuckSensorMat) * glm::vec3(0.0f, 1.0f, 0.0f); + glm::mat4 headPuckAvatarMat = createMatFromQuatAndPos(headPuckPose.getRotation(), headPuckPose.getTranslation()) * Matrices::Y_180; + glm::vec3 headPuckTranslation = extractTranslation(headPuckAvatarMat); + glm::vec3 headPuckZAxis = cancelOutRollAndPitch(glmExtractRotation(headPuckAvatarMat)) * glm::vec3(0.0f, 0.0f, 1.0f); glm::vec3 worldUp = glm::vec3(0.0f, 1.0f, 0.0f); - glm::vec3 desiredY = glm::vec3(0.0f, 1.0f, 0.0f); - glm::vec3 xPrime = glm::normalize(glm::cross(worldUp, headPuckYRotation)); - glm::vec3 zPrime = glm::normalize(glm::cross(xPrime, desiredY)); + glm::vec3 yPrime = glm::vec3(0.0f, 1.0f, 0.0f); + glm::vec3 xPrime = glm::normalize(glm::cross(worldUp, headPuckZAxis)); + glm::vec3 zPrime = glm::normalize(glm::cross(xPrime, yPrime)); + glm::mat4 newHeadPuck = glm::mat4(glm::vec4(xPrime, 0.0f), glm::vec4(yPrime, 0.0f), + glm::vec4(zPrime, 0.0f), glm::vec4(headPuckTranslation, 1.0f)); - glm::mat4 - return glm::mat4(); + glm::mat4 headPuckOffset = glm::mat4(glm::vec4(1.0f, 0.0f, 0.0f, 0.0f), glm::vec4(0.0f, 1.0f, 0.0f, 0.0f), + glm::vec4(0.0f, 0.0f, 1.0f, 0.0f), glm::vec4(0.0f, -0.005f, 0.0f, 1.0f)); + + glm::mat4 finalHeadPuck = newHeadPuck * headPuckOffset; + + glm::mat4 defaultHeadOffset = glm::inverse(inputCalibration.defaultCenterEyeMat) * inputCalibration.defaultHeadMat; + + glm::mat4 currentHead = finalHeadPuck * defaultHeadOffset; + + // calculate the defaultToRefrenceXform + glm::mat4 defaultToReferenceMat = currentHead * glm::inverse(inputCalibration.defaultHeadMat); + return defaultToReferenceMat; } void ViveControllerManager::InputDevice::partitionTouchpad(int sButton, int xAxis, int yAxis, int centerPseudoButton, int xPseudoButton, int yPseudoButton) { @@ -668,6 +706,26 @@ void ViveControllerManager::InputDevice::calibrateFeet(glm::mat4& defaultToRefer } } + +void ViveControllerManager::InputDevice::calibrateFeet(glm::mat4& defaultToReferenceMat, const controller::InputCalibrationData& inputCalibration, glm::vec3 headXAxis, glm::vec3 headPosition) { + auto& firstFoot = _validTrackedObjects[FIRST_FOOT]; + auto& secondFoot = _validTrackedObjects[SECOND_FOOT]; + controller::Pose& firstFootPose = firstFoot.second; + controller::Pose& secondFootPose = secondFoot.second; + + if (comparePosePositions(firstFootPose, secondFootPose, headXAxis, headPosition)) { + _jointToPuckMap[controller::LEFT_FOOT] = firstFoot.first; + _pucksOffset[firstFoot.first] = computeOffset(defaultToReferenceMat, inputCalibration.defaultLeftFoot, firstFootPose); + _jointToPuckMap[controller::RIGHT_FOOT] = secondFoot.first; + _pucksOffset[secondFoot.first] = computeOffset(defaultToReferenceMat, inputCalibration.defaultRightFoot, secondFootPose); + } else { + _jointToPuckMap[controller::LEFT_FOOT] = secondFoot.first; + _pucksOffset[secondFoot.first] = computeOffset(defaultToReferenceMat, inputCalibration.defaultLeftFoot, secondFootPose); + _jointToPuckMap[controller::RIGHT_FOOT] = firstFoot.first; + _pucksOffset[firstFoot.first] = computeOffset(defaultToReferenceMat, inputCalibration.defaultRightFoot, firstFootPose); + } +} + void ViveControllerManager::InputDevice::calibrateHips(glm::mat4& defaultToReferenceMat, const controller::InputCalibrationData& inputCalibration) { _jointToPuckMap[controller::HIPS] = _validTrackedObjects[HIP].first; _pucksOffset[_validTrackedObjects[HIP].first] = computeOffset(defaultToReferenceMat, inputCalibration.defaultHips, _validTrackedObjects[HIP].second); diff --git a/plugins/openvr/src/ViveControllerManager.h b/plugins/openvr/src/ViveControllerManager.h index 545af1b00b..c32579b0d8 100644 --- a/plugins/openvr/src/ViveControllerManager.h +++ b/plugins/openvr/src/ViveControllerManager.h @@ -85,6 +85,7 @@ private: void loadSettings(); void saveSettings() const; void calibrateFeet(glm::mat4& defaultToReferenceMat, const controller::InputCalibrationData& inputCalibration); + void calibrateFeet(glm::mat4& defaultToReferenceMat, const controller::InputCalibrationData& inputCalibration, glm::vec3 headXAxis, glm::vec3 headPosition); void calibrateHips(glm::mat4& defaultToReferenceMat, const controller::InputCalibrationData& inputCalibration); void calibrateChest(glm::mat4& defaultToReferenceMat, const controller::InputCalibrationData& inputCalibration); From 9c787eb784326adc4f650dc113fe03bf400a445b Mon Sep 17 00:00:00 2001 From: Dante Ruiz Date: Tue, 30 May 2017 22:59:12 +0100 Subject: [PATCH 134/357] removed commented code --- scripts/defaultScripts.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/defaultScripts.js b/scripts/defaultScripts.js index db0b705f8e..81ce72d901 100644 --- a/scripts/defaultScripts.js +++ b/scripts/defaultScripts.js @@ -13,7 +13,7 @@ var DEFAULT_SCRIPTS_COMBINED = [ "system/progress.js", - //"system/away.js", + "system/away.js", "system/audio.js", "system/hmd.js", "system/menu.js", From 07ea2e271bc1c0ca0e23b9768fe6b75a8b43fd78 Mon Sep 17 00:00:00 2001 From: howard-stearns Date: Tue, 30 May 2017 14:59:19 -0700 Subject: [PATCH 135/357] hook into location changes --- interface/src/avatar/MyAvatar.cpp | 35 ++++++++++++++++++++++--------- interface/src/avatar/MyAvatar.h | 5 +++-- 2 files changed, 28 insertions(+), 12 deletions(-) diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index 1d9009e129..e10327b7c7 100755 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -435,6 +435,11 @@ void MyAvatar::update(float deltaTime) { // so we update now. It's ok if it updates again in the normal way. updateSensorToWorldMatrix(); emit positionGoneTo(); + _physicsSafetyPending = true; + } + if (_physicsSafetyPending && qApp->isPhysicsEnabled()) { + _physicsSafetyPending = false; + safeLanding(_goToPosition); // no-op if already safe } Head* head = getHead(); @@ -2244,22 +2249,30 @@ bool MyAvatar::safeLanding(const glm::vec3& position) { QMetaObject::invokeMethod(this, "safeLanding", Qt::BlockingQueuedConnection, Q_RETURN_ARG(bool, result), Q_ARG(const glm::vec3&, position)); return result; } + glm::vec3 better; + if (requiresSafeLanding(position, better)) { + qDebug() << "rechecking" << position << " => " << better << " collisions:" << getCollisionsEnabled() << " physics:" << qApp->isPhysicsEnabled(); + if (!getCollisionsEnabled()) { + goToLocation(better); // recurses + } else { // If you try to go while stuck, physics will keep you stuck. + setCollisionsEnabled(false); + // Don't goToLocation just yet. Yield so that physics can act on the above. + QMetaObject::invokeMethod(this, "goToLocationAndEnableCollisions", Qt::QueuedConnection, // The equivalent of javascript nextTick + Q_ARG(glm::vec3, better)); // I.e., capsuleCenter - offset + } + return true; + } + return false; +} +bool MyAvatar::requiresSafeLanding(const glm::vec3& position, glm::vec3& betterPosition) { const auto offset = getOrientation() *_characterController.getCapsuleLocalOffset(); const auto capsuleCenter = position + offset; // We could repeat this whole test for each of the four corners of our bounding box, in case the surface is uneven. However: // 1) This is only meant to cover the most important cases, and even the four corners won't handle random spikes in the surfaces or avatar. // 2) My feeling is that this code is already at the limit of what can realistically be reviewed and maintained. auto direct = [&](const char* label) { // position is good to go, or at least, we cannot do better - //qDebug() << "Already safe" << label << position; - if (!getCollisionsEnabled()) { - goToLocation(position); - } else { // If you try to go while stuck, physics will keep you stuck. - setCollisionsEnabled(false); - // Don't goToLocation just yet. Yield so that physics can act on the above. - QMetaObject::invokeMethod(this, "goToLocationAndEnableCollisions", Qt::QueuedConnection, // The equivalent of javascript nextTick - Q_ARG(glm::vec3, position)); // I.e., capsuleCenter - offset - } + qDebug() << "Already safe" << label << position << " collisions:" << getCollisionsEnabled() << " physics:" << qApp->isPhysicsEnabled(); return false; }; auto halfHeight = _characterController.getCapsuleHalfHeight(); @@ -2277,7 +2290,7 @@ bool MyAvatar::safeLanding(const glm::vec3& position) { QVector include{}; QVector ignore{}; auto recurse = [&] { // Place bottom of capsule at the upperIntersection, and check again based on the capsule center. - safeLanding(upperIntersection + (up * halfHeight) - offset); + betterPosition = upperIntersection + (up * halfHeight) - offset; return true; }; auto findIntersection = [&](const glm::vec3& startPointIn, const glm::vec3& directionIn, glm::vec3& intersectionOut, EntityItemID& entityIdOut, glm::vec3& normalOut) { @@ -2287,6 +2300,7 @@ bool MyAvatar::safeLanding(const glm::vec3& position) { BoxFace face; const bool visibleOnly = false; // FIXME: this doesn't do what we want here. findRayIntersection always works on mesh, skipping entirely based on collidable. What we really want is to use the collision hull! See CharacterGhostObject::rayTest? + // See https://highfidelity.fogbugz.com/f/cases/5003/findRayIntersection-has-option-to-use-collidableOnly-but-doesn-t-actually-use-colliders const bool collidableOnly = true; const bool precisionPicking = true; const auto lockType = Octree::Lock; // Should we refactor to take a lock just once? @@ -2378,6 +2392,7 @@ void MyAvatar::updateMotionBehaviorFromMenu() { } else { _motionBehaviors &= ~AVATAR_MOTION_SCRIPTED_MOTOR_ENABLED; } + qDebug() << "FIXME updateMotionBehaviorFromMenu collisions:" << menu->isOptionChecked(MenuOption::EnableAvatarCollisions) << "physics:" << qApp->isPhysicsEnabled(); setCollisionsEnabled(menu->isOptionChecked(MenuOption::EnableAvatarCollisions)); } diff --git a/interface/src/avatar/MyAvatar.h b/interface/src/avatar/MyAvatar.h index 08c3d9c67c..efab177a04 100644 --- a/interface/src/avatar/MyAvatar.h +++ b/interface/src/avatar/MyAvatar.h @@ -571,7 +571,7 @@ private: glm::vec3 getWorldBodyPosition() const; glm::quat getWorldBodyOrientation() const; - + bool requiresSafeLanding(const glm::vec3& positionIn, glm::vec3& positionOut); virtual QByteArray toByteArrayStateful(AvatarDataDetail dataDetail) override; @@ -722,7 +722,8 @@ private: }; FollowHelper _follow; - bool _goToPending; + bool _goToPending { false }; + bool _physicsSafetyPending { false }; glm::vec3 _goToPosition; glm::quat _goToOrientation; From b3401d97629a6544358b2c908ff43349268f091e Mon Sep 17 00:00:00 2001 From: Dante Ruiz Date: Tue, 30 May 2017 23:55:45 +0100 Subject: [PATCH 136/357] making some final changes --- interface/resources/controllers/vive.json | 22 ++++++++++++-------- plugins/openvr/src/ViveControllerManager.cpp | 2 +- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/interface/resources/controllers/vive.json b/interface/resources/controllers/vive.json index 984f9c65fb..a0e9bd30d4 100644 --- a/interface/resources/controllers/vive.json +++ b/interface/resources/controllers/vive.json @@ -34,32 +34,36 @@ { "from": "Vive.RSCenter", "to": "Standard.RightPrimaryThumb" }, { "from": "Vive.RightApplicationMenu", "to": "Standard.RightSecondaryThumb" }, - { "from": "Vive.LeftHand", "to": "Standard.LeftHand" }, - { "from": "Vive.RightHand", "to": "Standard.RightHand" }, + { "from": "Vive.LeftHand", "to": "Standard.LeftHand", "when": [ "Application.InHMD" ] }, + { "from": "Vive.RightHand", "to": "Standard.RightHand", "when": [ "Application.InHMD" ] }, { "from": "Vive.LeftFoot", "to" : "Standard.LeftFoot", - "filters" : [{"type" : "lowVelocity", "rotation" : 1.0, "translation": 1.0}] + "filters" : [{"type" : "lowVelocity", "rotation" : 1.0, "translation": 1.0}], + "when": [ "Application.InHMD" ] }, { "from": "Vive.RightFoot", "to" : "Standard.RightFoot", - "filters" : [{"type" : "lowVelocity", "rotation" : 1.0, "translation": 1.0}] + "filters" : [{"type" : "lowVelocity", "rotation" : 1.0, "translation": 1.0}], + "when": [ "Application.InHMD" ] }, { "from": "Vive.Hips", "to" : "Standard.Hips", - "filters" : [{"type" : "lowVelocity", "rotation" : 0.01, "translation": 0.01}] + "filters" : [{"type" : "lowVelocity", "rotation" : 0.01, "translation": 0.01}], + "when": [ "Application.InHMD" ] }, { "from": "Vive.Spine2", "to" : "Standard.Spine2", - "filters" : [{"type" : "lowVelocity", "rotation" : 0.01, "translation": 0.01}] + "filters" : [{"type" : "lowVelocity", "rotation" : 0.01, "translation": 0.01}], + "when": [ "Application.InHMD" ] }, - { "from": "Vive.Head", "to" : "Standard.Head"}, + { "from": "Vive.Head", "to" : "Standard.Head", "when": [ "Application.InHMD" ] }, - { "from": "Vive.RightArm", "to" : "Standard.RightArm"}, - { "from": "Vive.LeftArm", "to" : "Standard.LeftArm"} + { "from": "Vive.RightArm", "to" : "Standard.RightArm", "when": [ "Application.InHMD" ] }, + { "from": "Vive.LeftArm", "to" : "Standard.LeftArm", "when": [ "Application.InHMD" ] } ] } diff --git a/plugins/openvr/src/ViveControllerManager.cpp b/plugins/openvr/src/ViveControllerManager.cpp index 82457928a2..6edcbcb3fa 100644 --- a/plugins/openvr/src/ViveControllerManager.cpp +++ b/plugins/openvr/src/ViveControllerManager.cpp @@ -506,7 +506,7 @@ glm::mat4 ViveControllerManager::InputDevice::recalculateDefaultToReferenceForHe glm::vec4(zPrime, 0.0f), glm::vec4(headPuckTranslation, 1.0f)); glm::mat4 headPuckOffset = glm::mat4(glm::vec4(1.0f, 0.0f, 0.0f, 0.0f), glm::vec4(0.0f, 1.0f, 0.0f, 0.0f), - glm::vec4(0.0f, 0.0f, 1.0f, 0.0f), glm::vec4(0.0f, -0.005f, 0.0f, 1.0f)); + glm::vec4(0.0f, 0.0f, 1.0f, 0.0f), glm::vec4(0.0f, -0.0254f, -0.152f, 1.0f)); glm::mat4 finalHeadPuck = newHeadPuck * headPuckOffset; From 8559ed6260f04c61d22eac76d9057e20b8d3b900 Mon Sep 17 00:00:00 2001 From: samcake Date: Tue, 30 May 2017 16:37:10 -0700 Subject: [PATCH 137/357] Starting to add the stencil mask for hmd --- .../src/gpu/DrawTransformVertexPosition.slv | 28 ++++++++ libraries/gpu/src/gpu/DrawWhite.slf | 18 +++++ libraries/gpu/src/gpu/StandardShaderLib.cpp | 17 +++++ libraries/gpu/src/gpu/StandardShaderLib.h | 8 +++ libraries/model/src/model/Geometry.cpp | 38 ++++++++++ libraries/model/src/model/Geometry.h | 6 ++ .../src/DeferredLightingEffect.cpp | 10 +-- .../render-utils/src/RenderDeferredTask.cpp | 69 +++++++++++++++++++ .../render-utils/src/RenderDeferredTask.h | 16 +++++ 9 files changed, 205 insertions(+), 5 deletions(-) create mode 100644 libraries/gpu/src/gpu/DrawTransformVertexPosition.slv create mode 100644 libraries/gpu/src/gpu/DrawWhite.slf diff --git a/libraries/gpu/src/gpu/DrawTransformVertexPosition.slv b/libraries/gpu/src/gpu/DrawTransformVertexPosition.slv new file mode 100644 index 0000000000..cf66a615f5 --- /dev/null +++ b/libraries/gpu/src/gpu/DrawTransformVertexPosition.slv @@ -0,0 +1,28 @@ +<@include gpu/Config.slh@> +<$VERSION_HEADER$> +// Generated on <$_SCRIBE_DATE$> +// +// Draw and transform the fed vertex position with the standard MVP stack +// Output the clip position +// +// Created by Sam Gateau on 5/30/2017 +// Copyright 2017 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +<@include gpu/Transform.slh@> + +<$declareStandardTransform()$> + +layout(location = 0) in vec4 inPosition; + +out vec3 varWorldPos; + +void main(void) { + // standard transform + TransformCamera cam = getTransformCamera(); + TransformObject obj = getTransformObject(); + <$transformModelToClipPos(cam, obj, inPosition, gl_Position)$> +} diff --git a/libraries/gpu/src/gpu/DrawWhite.slf b/libraries/gpu/src/gpu/DrawWhite.slf new file mode 100644 index 0000000000..bdecc0c5c5 --- /dev/null +++ b/libraries/gpu/src/gpu/DrawWhite.slf @@ -0,0 +1,18 @@ +<@include gpu/Config.slh@> +<$VERSION_HEADER$> +// Generated on <$_SCRIBE_DATE$> +// +// Draw white +// +// Created by Sam Gateau on 5/30/2017 +// Copyright 2017 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +out vec4 outFragColor; + +void main(void) { + outFragColor = vec4(1.0); +} diff --git a/libraries/gpu/src/gpu/StandardShaderLib.cpp b/libraries/gpu/src/gpu/StandardShaderLib.cpp index 81500347fd..cc92719a06 100755 --- a/libraries/gpu/src/gpu/StandardShaderLib.cpp +++ b/libraries/gpu/src/gpu/StandardShaderLib.cpp @@ -16,6 +16,8 @@ #include "DrawTransformUnitQuad_vert.h" #include "DrawTexcoordRectTransformUnitQuad_vert.h" #include "DrawViewportQuadTransformTexcoord_vert.h" +#include "DrawTransformVertexPosition_vert.h" +#include "DrawWhite_frag.h" #include "DrawTexture_frag.h" #include "DrawTextureOpaque_frag.h" #include "DrawColoredTexture_frag.h" @@ -26,6 +28,8 @@ ShaderPointer StandardShaderLib::_drawUnitQuadTexcoordVS; ShaderPointer StandardShaderLib::_drawTransformUnitQuadVS; ShaderPointer StandardShaderLib::_drawTexcoordRectTransformUnitQuadVS; ShaderPointer StandardShaderLib::_drawViewportQuadTransformTexcoordVS; +ShaderPointer StandardShaderLib::_drawTransformVertexPositionVS; +ShaderPointer StandardShaderLib::_drawWhitePS; ShaderPointer StandardShaderLib::_drawTexturePS; ShaderPointer StandardShaderLib::_drawTextureOpaquePS; ShaderPointer StandardShaderLib::_drawColoredTexturePS; @@ -84,6 +88,19 @@ ShaderPointer StandardShaderLib::getDrawViewportQuadTransformTexcoordVS() { } return _drawViewportQuadTransformTexcoordVS; } +ShaderPointer StandardShaderLib::getDrawTransformVertexPositionVS() { + if (!_drawTransformVertexPositionVS) { + _drawTransformVertexPositionVS = gpu::Shader::createVertex(std::string(DrawTransformVertexPosition_vert)); + } + return _drawTransformVertexPositionVS; +} + +ShaderPointer StandardShaderLib::getDrawWhitePS() { + if (!_drawWhitePS) { + _drawWhitePS = gpu::Shader::createPixel(std::string(DrawWhite_frag)); + } + return _drawWhitePS; +} ShaderPointer StandardShaderLib::getDrawTexturePS() { if (!_drawTexturePS) { diff --git a/libraries/gpu/src/gpu/StandardShaderLib.h b/libraries/gpu/src/gpu/StandardShaderLib.h index 12ea9045c2..677ad8c7a1 100755 --- a/libraries/gpu/src/gpu/StandardShaderLib.h +++ b/libraries/gpu/src/gpu/StandardShaderLib.h @@ -37,6 +37,11 @@ public: // Shader draws the unit quad in the full viewport clipPos = ([(-1,-1),(1,1)]) and transform the texcoord = [(0,0),(1,1)] by the model transform. static ShaderPointer getDrawViewportQuadTransformTexcoordVS(); + // Shader draw the fed vertex position and transform it by the full model transform stack (Model, View, Proj). + // simply output the world pos and the clip pos to the next stage + static ShaderPointer getDrawTransformVertexPositionVS(); + + static ShaderPointer getDrawWhitePS(); static ShaderPointer getDrawTexturePS(); static ShaderPointer getDrawTextureOpaquePS(); static ShaderPointer getDrawColoredTexturePS(); @@ -51,6 +56,9 @@ protected: static ShaderPointer _drawTransformUnitQuadVS; static ShaderPointer _drawTexcoordRectTransformUnitQuadVS; static ShaderPointer _drawViewportQuadTransformTexcoordVS; + static ShaderPointer _drawTransformVertexPositionVS; + + static ShaderPointer _drawWhitePS; static ShaderPointer _drawTexturePS; static ShaderPointer _drawTextureOpaquePS; static ShaderPointer _drawColoredTexturePS; diff --git a/libraries/model/src/model/Geometry.cpp b/libraries/model/src/model/Geometry.cpp index 16608ab63e..2525491460 100755 --- a/libraries/model/src/model/Geometry.cpp +++ b/libraries/model/src/model/Geometry.cpp @@ -241,6 +241,42 @@ void Mesh::forEach(std::function vertexFunc, } } +MeshPointer Mesh::createIndexedTriangles_P3F(uint32_t numVertices, uint32_t numIndices, const glm::vec3* vertices, const uint32_t* indices) { + MeshPointer mesh; + if (numVertices == 0) { return mesh; } + if (numIndices < 3) { return mesh; } + + mesh = std::make_shared(); + + // Vertex buffer + mesh->setVertexBuffer(gpu::BufferView(new gpu::Buffer(numVertices * sizeof(glm::vec3), (gpu::Byte*) vertices), gpu::Element::VEC3F_XYZ)); + + // trim down the indices to shorts if possible + if (numIndices < std::numeric_limits::max()) { + Indices16 shortIndicesVector; + int16_t* shortIndices = nullptr; + if (indices) { + shortIndicesVector.resize(numIndices); + for (int i = 0; i < numIndices; i++) { + shortIndicesVector[i] = indices[i]; + } + shortIndices = shortIndicesVector.data(); + } + + mesh->setIndexBuffer(gpu::BufferView(new gpu::Buffer(numIndices * sizeof(uint16_t), (gpu::Byte*) shortIndices), gpu::Element::INDEX_UINT16)); + } else { + + mesh->setIndexBuffer(gpu::BufferView(new gpu::Buffer(numIndices * sizeof(uint32_t), (gpu::Byte*) indices), gpu::Element::INDEX_INT32)); + } + + + std::vector parts; + parts.push_back(model::Mesh::Part(0, numIndices, 0, model::Mesh::TRIANGLES)); + mesh->setPartBuffer(gpu::BufferView(new gpu::Buffer(parts.size() * sizeof(model::Mesh::Part), (gpu::Byte*) parts.data()), gpu::Element::PART_DRAWCALL)); + + return mesh; +} + Geometry::Geometry() { } @@ -256,3 +292,5 @@ Geometry::~Geometry() { void Geometry::setMesh(const MeshPointer& mesh) { _mesh = mesh; } + + diff --git a/libraries/model/src/model/Geometry.h b/libraries/model/src/model/Geometry.h index 7ba3e83407..2375944f04 100755 --- a/libraries/model/src/model/Geometry.h +++ b/libraries/model/src/model/Geometry.h @@ -65,6 +65,9 @@ public: const gpu::BufferStream& getVertexStream() const { return _vertexStream; } // Index Buffer + using Indices16 = std::vector; + using Indices32 = std::vector; + void setIndexBuffer(const BufferView& buffer); const BufferView& getIndexBuffer() const { return _indexBuffer; } size_t getNumIndices() const { return _indexBuffer.getNumElements(); } @@ -127,6 +130,9 @@ public: std::function normalFunc, std::function indexFunc); + + static MeshPointer createIndexedTriangles_P3F(uint32_t numVertices, uint32_t numTriangles, const glm::vec3* vertices = nullptr, const uint32_t* indices = nullptr); + protected: gpu::Stream::FormatPointer _vertexFormat; diff --git a/libraries/render-utils/src/DeferredLightingEffect.cpp b/libraries/render-utils/src/DeferredLightingEffect.cpp index e1042912aa..9d839d6ee1 100644 --- a/libraries/render-utils/src/DeferredLightingEffect.cpp +++ b/libraries/render-utils/src/DeferredLightingEffect.cpp @@ -160,11 +160,11 @@ void DeferredLightingEffect::init() { lp->setAmbientIntensity(0.5f); - lp->setAmbientMap(_defaultSkyboxAmbientTexture); - auto irradianceSH = _defaultSkyboxAmbientTexture->getIrradiance(); - if (irradianceSH) { - lp->setAmbientSphere((*irradianceSH)); - } + lp->setAmbientMap(_defaultSkyboxAmbientTexture); + auto irradianceSH = _defaultSkyboxAmbientTexture->getIrradiance(); + if (irradianceSH) { + lp->setAmbientSphere((*irradianceSH)); + } } void DeferredLightingEffect::setupKeyLightBatch(gpu::Batch& batch, int lightBufferUnit, int ambientBufferUnit, int skyboxCubemapUnit) { diff --git a/libraries/render-utils/src/RenderDeferredTask.cpp b/libraries/render-utils/src/RenderDeferredTask.cpp index b844da8bbe..60fd6e2f64 100644 --- a/libraries/render-utils/src/RenderDeferredTask.cpp +++ b/libraries/render-utils/src/RenderDeferredTask.cpp @@ -85,12 +85,15 @@ void RenderDeferredTask::build(JobModel& task, const render::Varying& input, ren const auto deferredFramebuffer = prepareDeferredOutputs.getN(0); const auto lightingFramebuffer = prepareDeferredOutputs.getN(1); + // draw a stencil mask in hidden regions of the frmaebuffer. + // Render opaque objects in DeferredBuffer const auto opaqueInputs = DrawStateSortDeferred::Inputs(opaques, lightingModel).hasVarying(); task.addJob("DrawOpaqueDeferred", opaqueInputs, shapePlumber); // Once opaque is all rendered create stencil background task.addJob("DrawOpaqueStencil", deferredFramebuffer); + task.addJob("PrepareStencil", primaryFramebuffer); task.addJob("OpaqueRangeTimer", opaqueRangeTimer); @@ -469,6 +472,71 @@ void DrawBackgroundDeferred::run(const RenderContextPointer& renderContext, cons // std::static_pointer_cast(renderContext->jobConfig)->gpuTime = _gpuTimer.getAverage(); } +gpu::PipelinePointer PrepareStencil::getDrawStencilPipeline() { + if (!_drawStencilPipeline) { + const gpu::int8 STENCIL_OPAQUE = 1; + auto vs = gpu::StandardShaderLib::getDrawTransformVertexPositionVS(); + auto ps = gpu::StandardShaderLib::getDrawWhitePS(); + auto program = gpu::Shader::createProgram(vs, ps); + gpu::Shader::makeProgram((*program)); + + auto state = std::make_shared(); + state->setStencilTest(true, 0xFF, gpu::State::StencilTest(0, 0xFF, gpu::ALWAYS, gpu::State::STENCIL_OP_REPLACE, gpu::State::STENCIL_OP_REPLACE, gpu::State::STENCIL_OP_KEEP)); + state->setColorWriteMask(0); + + _drawStencilPipeline = gpu::Pipeline::create(program, state); + } + return _drawStencilPipeline; +} + +model::MeshPointer PrepareStencil::getMesh() { + if (!_mesh) { + + std::vector vertices { + { -1.0f, -1.0f, 0.0f }, { -1.0f, 0.0f, 0.0f }, + { -1.0f, 1.0f, 0.0f }, { 0.0f, 1.0f, 0.0f }, + { 1.0f, 1.0f, 0.0f }, { 1.0f, 0.0f, 0.0f }, + { 1.0f, -1.0f, 0.0f }, { 0.0f, -1.0f, 0.0f } }; + + std::vector indices { 0, 7, 1, 1, 3, 2, 3, 5, 4, 5, 7, 6 }; + + _mesh = model::Mesh::createIndexedTriangles_P3F((uint32_t) vertices.size(), (uint32_t) indices.size(), vertices.data(), indices.data()); + + } + return _mesh; +} + + +void PrepareStencil::run(const RenderContextPointer& renderContext, const gpu::FramebufferPointer& srcFramebuffer) { + assert(renderContext->args); + assert(renderContext->args->_context); + + RenderArgs* args = renderContext->args; + doInBatch(args->_context, [&](gpu::Batch& batch) { + args->_batch = &batch; + + batch.setViewportTransform(args->_viewport); + batch.setStateScissorRect(args->_viewport); + + batch.resetViewTransform(); + batch.setModelTransform(Transform()); + glm::mat4 proj; + batch.setProjectionTransform(proj); + + batch.setPipeline(getDrawStencilPipeline()); + + auto mesh = getMesh(); + batch.setIndexBuffer(gpu::UINT32, (mesh->getIndexBuffer()._buffer), 0); + batch.setInputFormat((mesh->getVertexFormat())); + batch.setInputStream(0, mesh->getVertexStream()); + + // Draw + auto part = mesh->getPartBuffer().get(0); + batch.drawIndexed(gpu::TRIANGLES, part._numIndices, part._startIndex); + }); + args->_batch = nullptr; +} + void Blit::run(const RenderContextPointer& renderContext, const gpu::FramebufferPointer& srcFramebuffer) { assert(renderContext->args); assert(renderContext->args->_context); @@ -538,3 +606,4 @@ void Blit::run(const RenderContextPointer& renderContext, const gpu::Framebuffer } }); } + diff --git a/libraries/render-utils/src/RenderDeferredTask.h b/libraries/render-utils/src/RenderDeferredTask.h index 12ecd5ecaf..bba1b26404 100644 --- a/libraries/render-utils/src/RenderDeferredTask.h +++ b/libraries/render-utils/src/RenderDeferredTask.h @@ -13,6 +13,7 @@ #define hifi_RenderDeferredTask_h #include +#include #include #include "LightingModel.h" @@ -185,6 +186,21 @@ protected: bool _opaquePass{ true }; }; +class PrepareStencil { +public: + using JobModel = render::Job::ModelI; + + void run(const render::RenderContextPointer& renderContext, const gpu::FramebufferPointer& dstFramebuffer); +private: + gpu::PipelinePointer _drawStencilPipeline; + gpu::PipelinePointer getDrawStencilPipeline(); + + model::MeshPointer _mesh; + model::MeshPointer getMesh(); + +}; + + class Blit { public: using JobModel = render::Job::ModelI; From 2ad85c158aafaa3477ed75edd6bfa53d53edbac5 Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Tue, 30 May 2017 17:11:56 -0700 Subject: [PATCH 138/357] more work on getting head routed through input system --- .../oculus/src/OculusControllerManager.cpp | 37 ++++++++++++++++--- plugins/oculus/src/OculusControllerManager.h | 9 ++++- 2 files changed, 38 insertions(+), 8 deletions(-) diff --git a/plugins/oculus/src/OculusControllerManager.cpp b/plugins/oculus/src/OculusControllerManager.cpp index 6445c3c891..6042968ffc 100644 --- a/plugins/oculus/src/OculusControllerManager.cpp +++ b/plugins/oculus/src/OculusControllerManager.cpp @@ -230,14 +230,14 @@ void OculusControllerManager::TouchDevice::update(float deltaTime, const control _lastControllerPose[controller] = tracking.HandPoses[hand]; return; } - + if (_lostTracking[controller]) { if (currentTime > _regainTrackingDeadline[controller]) { _poseStateMap.erase(controller); _poseStateMap[controller].valid = false; return; } - + } else { quint64 deadlineToRegainTracking = currentTime + LOST_TRACKING_DELAY; _regainTrackingDeadline[controller] = deadlineToRegainTracking; @@ -245,6 +245,10 @@ void OculusControllerManager::TouchDevice::update(float deltaTime, const control } handleRotationForUntrackedHand(inputCalibrationData, hand, tracking.HandPoses[hand]); }); + + _poseStateMap.erase(controller::HEAD); + handleHeadPose(deltaTime, inputCalibrationData, tracking.HeadPose); + using namespace controller; // Axes const auto& inputState = _parent._inputState; @@ -269,7 +273,7 @@ void OculusControllerManager::TouchDevice::update(float deltaTime, const control if (inputState.Touches & pair.first) { _buttonPressedMap.insert(pair.second); } - } + } // Haptics { @@ -292,16 +296,36 @@ void OculusControllerManager::TouchDevice::focusOutEvent() { _buttonPressedMap.clear(); }; -void OculusControllerManager::TouchDevice::handlePose(float deltaTime, - const controller::InputCalibrationData& inputCalibrationData, ovrHandType hand, - const ovrPoseStatef& handPose) { +void OculusControllerManager::TouchDevice::handlePose(float deltaTime, + const controller::InputCalibrationData& inputCalibrationData, + ovrHandType hand, const ovrPoseStatef& handPose) { auto poseId = hand == ovrHand_Left ? controller::LEFT_HAND : controller::RIGHT_HAND; auto& pose = _poseStateMap[poseId]; pose = ovrControllerPoseToHandPose(hand, handPose); // transform into avatar frame glm::mat4 controllerToAvatar = glm::inverse(inputCalibrationData.avatarMat) * inputCalibrationData.sensorToWorldMat; pose = pose.transform(controllerToAvatar); +} +void OculusControllerManager::TouchDevice::handleHeadPose(float deltaTime, + const controller::InputCalibrationData& inputCalibrationData, + const ovrPoseStatef& headPose) { + auto poseId = controller::HEAD; + auto& pose = _poseStateMap[poseId]; + + pose.translation = toGlm(headPose.ThePose.Position); + pose.rotation = toGlm(headPose.ThePose.Orientation); + pose.angularVelocity = toGlm(headPose.AngularVelocity); + pose.velocity = toGlm(headPose.LinearVelocity); + pose.valid = true; + + qDebug() << "handleHeadPose" << pose.translation.x << pose.translation.y << pose.translation.z; + + // transform into avatar frame + glm::mat4 controllerToAvatar = glm::inverse(inputCalibrationData.avatarMat) * inputCalibrationData.sensorToWorldMat; + pose = pose.transform(controllerToAvatar); + + qDebug() << "handleHeadPose after" << pose.translation.x << pose.translation.y << pose.translation.z; } void OculusControllerManager::TouchDevice::handleRotationForUntrackedHand(const controller::InputCalibrationData& inputCalibrationData, @@ -382,6 +406,7 @@ controller::Input::NamedVector OculusControllerManager::TouchDevice::getAvailabl makePair(LEFT_HAND, "LeftHand"), makePair(RIGHT_HAND, "RightHand"), + makePair(HEAD, "Head"), makePair(LEFT_PRIMARY_THUMB_TOUCH, "LeftPrimaryThumbTouch"), makePair(LEFT_SECONDARY_THUMB_TOUCH, "LeftSecondaryThumbTouch"), diff --git a/plugins/oculus/src/OculusControllerManager.h b/plugins/oculus/src/OculusControllerManager.h index 77b40d3764..61f2241f4d 100644 --- a/plugins/oculus/src/OculusControllerManager.h +++ b/plugins/oculus/src/OculusControllerManager.h @@ -76,8 +76,13 @@ private: private: void stopHapticPulse(bool leftHand); - void handlePose(float deltaTime, const controller::InputCalibrationData& inputCalibrationData, ovrHandType hand, const ovrPoseStatef& handPose); - void handleRotationForUntrackedHand(const controller::InputCalibrationData& inputCalibrationData, ovrHandType hand, const ovrPoseStatef& handPose); + void handlePose(float deltaTime, const controller::InputCalibrationData& inputCalibrationData, + ovrHandType hand, const ovrPoseStatef& handPose); + void handleRotationForUntrackedHand(const controller::InputCalibrationData& inputCalibrationData, + ovrHandType hand, const ovrPoseStatef& handPose); + void handleHeadPose(float deltaTime, const controller::InputCalibrationData& inputCalibrationData, + const ovrPoseStatef& headPose); + int _trackedControllers { 0 }; // perform an action when the TouchDevice mutex is acquired. From 41869430f7dab1dc1eefb6a5788926c19f811305 Mon Sep 17 00:00:00 2001 From: Dante Ruiz Date: Wed, 31 May 2017 01:29:32 +0100 Subject: [PATCH 139/357] made some changes that were requested --- plugins/openvr/src/ViveControllerManager.cpp | 33 +++++++++++--------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/plugins/openvr/src/ViveControllerManager.cpp b/plugins/openvr/src/ViveControllerManager.cpp index 6edcbcb3fa..e08929cf08 100644 --- a/plugins/openvr/src/ViveControllerManager.cpp +++ b/plugins/openvr/src/ViveControllerManager.cpp @@ -57,6 +57,8 @@ static const int FIRST_FOOT = 0; static const int SECOND_FOOT = 1; static const int HIP = 2; static const int CHEST = 3; +static const float HEAD_PUCK_Y_OFFSET = -0.0254f; +static const float HEAD_PUCK_Z_OFFSET = -0.152f; const char* ViveControllerManager::NAME { "OpenVR" }; @@ -82,24 +84,24 @@ static bool sortPucksXPosition(PuckPosePair firstPuck, PuckPosePair secondPuck) return (firstPuck.second.translation.x < secondPuck.second.translation.x); } -static bool comparePosePositions(const controller::Pose& poseA, const controller::Pose& poseB, glm::vec3 axis, glm::vec3 axisOrigin) { +static bool determineFeetOrdering(const controller::Pose& poseA, const controller::Pose& poseB, glm::vec3 axis, glm::vec3 axisOrigin) { glm::vec3 poseAPosition = poseA.getTranslation(); glm::vec3 poseBPosition = poseB.getTranslation(); - glm::vec3 poseAFinalPosition = poseAPosition - axisOrigin; - glm::vec3 poseBFinalPosition = poseBPosition - axisOrigin; + glm::vec3 poseAVector = poseAPosition - axisOrigin; + glm::vec3 poseBVector = poseBPosition - axisOrigin; - float poseADistance = glm::dot(poseAFinalPosition, axis); - float poseBDistance = glm::dot(poseBFinalPosition, axis); - return (poseADistance > poseBDistance); + float poseAProjection = glm::dot(poseAVector, axis); + float poseBProjection = glm::dot(poseBVector, axis); + return (poseAProjection > poseBProjection); } -static glm::vec3 getHeadXAxis(glm::mat4 defaultToReferenceMat, glm::mat4 defaultHead) { +static glm::vec3 getReferenceHeadXAxis(glm::mat4 defaultToReferenceMat, glm::mat4 defaultHead) { glm::mat4 finalHead = defaultToReferenceMat * defaultHead; return glmExtractRotation(finalHead) * Vectors::UNIT_X; } -static glm::vec3 getHeadPosition(glm::mat4 defaultToReferenceMat, glm::mat4 defaultHead) { +static glm::vec3 getReferenceHeadPosition(glm::mat4 defaultToReferenceMat, glm::mat4 defaultHead) { glm::mat4 finalHead = defaultToReferenceMat * defaultHead; return extractTranslation(finalHead); } @@ -383,19 +385,21 @@ void ViveControllerManager::InputDevice::calibrate(const controller::InputCalibr calibrateShoulders(defaultToReferenceMat, inputCalibration, firstShoulderIndex, secondShoulderIndex); } else if (_config == Config::FeetHipsAndHead && puckCount == MIN_FEET_HIPS_HEAD) { glm::mat4 headPuckDefaultToReferenceMat = recalculateDefaultToReferenceForHeadPuck(inputCalibration); - glm::vec3 headXAxis = getHeadXAxis(headPuckDefaultToReferenceMat, inputCalibration.defaultHeadMat); - glm::vec3 headPosition = getHeadPosition(headPuckDefaultToReferenceMat, inputCalibration.defaultHeadMat); + glm::vec3 headXAxis = getReferenceHeadXAxis(headPuckDefaultToReferenceMat, inputCalibration.defaultHeadMat); + glm::vec3 headPosition = getReferenceHeadPosition(headPuckDefaultToReferenceMat, inputCalibration.defaultHeadMat); calibrateFeet(headPuckDefaultToReferenceMat, inputCalibration, headXAxis, headPosition); calibrateHips(headPuckDefaultToReferenceMat, inputCalibration); calibrateHead(headPuckDefaultToReferenceMat, inputCalibration); + _overrideHead = true; } else if (_config == Config::FeetHipsChestAndHead && puckCount == MIN_FEET_HIPS_CHEST_HEAD) { glm::mat4 headPuckDefaultToReferenceMat = recalculateDefaultToReferenceForHeadPuck(inputCalibration); - glm::vec3 headXAxis = getHeadXAxis(headPuckDefaultToReferenceMat, inputCalibration.defaultHeadMat); - glm::vec3 headPosition = getHeadPosition(headPuckDefaultToReferenceMat, inputCalibration.defaultHeadMat); + glm::vec3 headXAxis = getReferenceHeadXAxis(headPuckDefaultToReferenceMat, inputCalibration.defaultHeadMat); + glm::vec3 headPosition = getReferenceHeadPosition(headPuckDefaultToReferenceMat, inputCalibration.defaultHeadMat); calibrateFeet(headPuckDefaultToReferenceMat, inputCalibration, headXAxis, headPosition); calibrateHips(headPuckDefaultToReferenceMat, inputCalibration); calibrateChest(headPuckDefaultToReferenceMat, inputCalibration); calibrateHead(headPuckDefaultToReferenceMat, inputCalibration); + _overrideHead = true; } else { qDebug() << "Puck Calibration: " << configToString(_config) << " Config Failed: Could not meet the minimal # of pucks"; uncalibrate(); @@ -506,7 +510,7 @@ glm::mat4 ViveControllerManager::InputDevice::recalculateDefaultToReferenceForHe glm::vec4(zPrime, 0.0f), glm::vec4(headPuckTranslation, 1.0f)); glm::mat4 headPuckOffset = glm::mat4(glm::vec4(1.0f, 0.0f, 0.0f, 0.0f), glm::vec4(0.0f, 1.0f, 0.0f, 0.0f), - glm::vec4(0.0f, 0.0f, 1.0f, 0.0f), glm::vec4(0.0f, -0.0254f, -0.152f, 1.0f)); + glm::vec4(0.0f, 0.0f, 1.0f, 0.0f), glm::vec4(0.0f, HEAD_PUCK_Y_OFFSET, HEAD_PUCK_Z_OFFSET, 1.0f)); glm::mat4 finalHeadPuck = newHeadPuck * headPuckOffset; @@ -713,7 +717,7 @@ void ViveControllerManager::InputDevice::calibrateFeet(glm::mat4& defaultToRefer controller::Pose& firstFootPose = firstFoot.second; controller::Pose& secondFootPose = secondFoot.second; - if (comparePosePositions(firstFootPose, secondFootPose, headXAxis, headPosition)) { + if (determineFeetOrdering(firstFootPose, secondFootPose, headXAxis, headPosition)) { _jointToPuckMap[controller::LEFT_FOOT] = firstFoot.first; _pucksOffset[firstFoot.first] = computeOffset(defaultToReferenceMat, inputCalibration.defaultLeftFoot, firstFootPose); _jointToPuckMap[controller::RIGHT_FOOT] = secondFoot.first; @@ -766,7 +770,6 @@ void ViveControllerManager::InputDevice::calibrateHead(glm::mat4& defaultToRefer _jointToPuckMap[controller::HEAD] = head.first; _pucksOffset[head.first] = computeOffset(defaultToReferenceMat, inputCalibration.defaultHeadMat, newHead); - _overrideHead = true; } From cff42ab9b0a5b92aac8275d7db20850f3b23f98b Mon Sep 17 00:00:00 2001 From: "Anthony J. Thibault" Date: Tue, 30 May 2017 19:01:52 -0700 Subject: [PATCH 140/357] Working spline spline. --- .../animation/src/AnimInverseKinematics.cpp | 142 ++++++++++++++---- .../animation/src/AnimInverseKinematics.h | 13 +- libraries/animation/src/IKTarget.cpp | 3 + libraries/animation/src/IKTarget.h | 1 + libraries/animation/src/Rig.cpp | 8 +- .../animation/src/RotationAccumulator.cpp | 4 +- .../animation/src/TranslationAccumulator.cpp | 34 +++++ .../animation/src/TranslationAccumulator.h | 42 ++++++ 8 files changed, 207 insertions(+), 40 deletions(-) create mode 100644 libraries/animation/src/TranslationAccumulator.cpp create mode 100644 libraries/animation/src/TranslationAccumulator.h diff --git a/libraries/animation/src/AnimInverseKinematics.cpp b/libraries/animation/src/AnimInverseKinematics.cpp index 03f1208600..31f7bc63d2 100644 --- a/libraries/animation/src/AnimInverseKinematics.cpp +++ b/libraries/animation/src/AnimInverseKinematics.cpp @@ -60,7 +60,8 @@ AnimInverseKinematics::AnimInverseKinematics(const QString& id) : AnimNode(AnimN AnimInverseKinematics::~AnimInverseKinematics() { clearConstraints(); - _accumulators.clear(); + _rotationAccumulators.clear(); + _translationAccumulators.clear(); _targetVarVec.clear(); } @@ -73,10 +74,12 @@ void AnimInverseKinematics::loadPoses(const AnimPoseVec& poses) { assert(_skeleton && ((poses.size() == 0) || (_skeleton->getNumJoints() == (int)poses.size()))); if (_skeleton->getNumJoints() == (int)poses.size()) { _relativePoses = poses; - _accumulators.resize(_relativePoses.size()); + _rotationAccumulators.resize(_relativePoses.size()); + _translationAccumulators.resize(_relativePoses.size()); } else { _relativePoses.clear(); - _accumulators.clear(); + _rotationAccumulators.clear(); + _translationAccumulators.clear(); } } @@ -176,14 +179,17 @@ void AnimInverseKinematics::computeTargets(const AnimVariantMap& animVars, std:: } } -void AnimInverseKinematics::solveWithCyclicCoordinateDescent(const AnimContext& context, const std::vector& targets) { +void AnimInverseKinematics::solve(const AnimContext& context, const std::vector& targets) { // compute absolute poses that correspond to relative target poses AnimPoseVec absolutePoses; absolutePoses.resize(_relativePoses.size()); computeAbsolutePoses(absolutePoses); // clear the accumulators before we start the IK solver - for (auto& accumulator: _accumulators) { + for (auto& accumulator : _rotationAccumulators) { + accumulator.clearAndClean(); + } + for (auto& accumulator : _translationAccumulators) { accumulator.clearAndClean(); } @@ -198,14 +204,22 @@ void AnimInverseKinematics::solveWithCyclicCoordinateDescent(const AnimContext& // solve all targets for (auto& target: targets) { - solveTargetWithCCD(context, target, absolutePoses, debug); + if (target.getType() == IKTarget::Type::Spline) { + solveTargetWithSpline(context, target, absolutePoses, debug); + } else { + solveTargetWithCCD(context, target, absolutePoses, debug); + } } // harvest accumulated rotations and apply the average for (int i = 0; i < (int)_relativePoses.size(); ++i) { - if (_accumulators[i].size() > 0) { - _relativePoses[i].rot() = _accumulators[i].getAverage(); - _accumulators[i].clear(); + if (_rotationAccumulators[i].size() > 0) { + _relativePoses[i].rot() = _rotationAccumulators[i].getAverage(); + _rotationAccumulators[i].clear(); + } + if (_translationAccumulators[i].size() > 0) { + _relativePoses[i].trans() = _translationAccumulators[i].getAverage(); + _translationAccumulators[i].clear(); } } @@ -237,7 +251,7 @@ void AnimInverseKinematics::solveWithCyclicCoordinateDescent(const AnimContext& int parentIndex = _skeleton->getParentIndex(tipIndex); // update rotationOnly targets that don't lie on the ik chain of other ik targets. - if (parentIndex != -1 && !_accumulators[tipIndex].isDirty() && target.getType() == IKTarget::Type::RotationOnly) { + if (parentIndex != -1 && !_rotationAccumulators[tipIndex].isDirty() && target.getType() == IKTarget::Type::RotationOnly) { const glm::quat& targetRotation = target.getRotation(); // compute tip's new parent-relative rotation // Q = Qp * q --> q' = Qp^ * Q @@ -312,10 +326,13 @@ void AnimInverseKinematics::solveTargetWithCCD(const AnimContext& context, const } // store the relative rotation change in the accumulator - _accumulators[tipIndex].add(tipRelativeRotation, target.getWeight()); + _rotationAccumulators[tipIndex].add(tipRelativeRotation, target.getWeight()); + + glm::vec3 tipRelativeTranslation = _relativePoses[target.getIndex()].trans(); + _translationAccumulators[tipIndex].add(tipRelativeTranslation); if (debug) { - debugJointMap[tipIndex] = DebugJoint(tipRelativeRotation, constrained); + debugJointMap[tipIndex] = DebugJoint(tipRelativeRotation, tipRelativeTranslation, constrained); } } @@ -423,10 +440,13 @@ void AnimInverseKinematics::solveTargetWithCCD(const AnimContext& context, const } // store the relative rotation change in the accumulator - _accumulators[pivotIndex].add(newRot, target.getWeight()); + _rotationAccumulators[pivotIndex].add(newRot, target.getWeight()); + + glm::vec3 newTrans = _relativePoses[pivotIndex].trans(); + _translationAccumulators[pivotIndex].add(newTrans); if (debug) { - debugJointMap[pivotIndex] = DebugJoint(newRot, constrained); + debugJointMap[pivotIndex] = DebugJoint(newRot, newTrans, constrained); } // keep track of tip's new transform as we descend towards root @@ -445,6 +465,68 @@ void AnimInverseKinematics::solveTargetWithCCD(const AnimContext& context, const } } +void AnimInverseKinematics::solveTargetWithSpline(const AnimContext& context, const IKTarget& target, const AnimPoseVec& absolutePoses, bool debug) { + + std::map debugJointMap; + + const int baseIndex = _hipsIndex; + + // build spline + AnimPose tipPose = AnimPose(glm::vec3(1.0f), target.getRotation(), target.getTranslation()); + AnimPose basePose = absolutePoses[baseIndex]; + + const float BASE_GAIN = 0.5f; + const float TIP_GAIN = 1.0f; + float d = glm::length(basePose.trans() - tipPose.trans()); + glm::vec3 p0 = basePose.trans(); + glm::vec3 m0 = BASE_GAIN * d * (basePose.rot() * Vectors::UNIT_Y); + glm::vec3 p1 = tipPose.trans(); + glm::vec3 m1 = TIP_GAIN * d * (tipPose.rot() * Vectors::UNIT_Y); + + CubicHermiteSplineFunctorWithArcLength spline(p0, m0, p1, m1); + float totalArcLength = spline.arcLength(1.0f); + + // find or create splineJointInfo for the head target + const std::vector* splineJointInfoVec = nullptr; + auto iter = _splineJointInfoMap.find(target.getIndex()); + if (iter != _splineJointInfoMap.end()) { + splineJointInfoVec = &(iter->second); + } else { + computeSplineJointInfosForIKTarget(context, target); + auto iter = _splineJointInfoMap.find(target.getIndex()); + if (iter != _splineJointInfoMap.end()) { + splineJointInfoVec = &(iter->second); + } + } + + if (splineJointInfoVec && splineJointInfoVec->size() > 0) { + const int baseParentIndex = _skeleton->getParentIndex(baseIndex); + AnimPose parentAbsPose = (baseParentIndex >= 0) ? absolutePoses[baseParentIndex] : AnimPose(); + + // go thru splineJointInfoVec backwards (base to tip) + for (int i = (int)splineJointInfoVec->size() - 1; i >= 0; i--) { + const SplineJointInfo& splineJointInfo = (*splineJointInfoVec)[i]; + float t = spline.arcLengthInverse(splineJointInfo.ratio * totalArcLength); + glm::vec3 trans = spline(t); + glm::quat rot = glm::normalize(glm::lerp(basePose.rot(), tipPose.rot(), t)); + AnimPose absPose = AnimPose(glm::vec3(1.0f), rot, trans) * splineJointInfo.offsetPose; + AnimPose relPose = parentAbsPose.inverse() * absPose; + _rotationAccumulators[splineJointInfo.jointIndex].add(relPose.rot(), target.getWeight()); + _translationAccumulators[splineJointInfo.jointIndex].add(relPose.trans(), target.getWeight()); + + if (debug) { + debugJointMap[splineJointInfo.jointIndex] = DebugJoint(relPose.rot(), relPose.trans(), false); + } + + parentAbsPose = absPose; + } + } + + if (debug) { + debugDrawIKChain(debugJointMap, context); + } +} + //virtual const AnimPoseVec& AnimInverseKinematics::evaluate(const AnimVariantMap& animVars, const AnimContext& context, float dt, AnimNode::Triggers& triggersOut) { // don't call this function, call overlay() instead @@ -566,7 +648,7 @@ const AnimPoseVec& AnimInverseKinematics::overlay(const AnimVariantMap& animVars { PROFILE_RANGE_EX(simulation_animation, "ik/ccd", 0xffff00ff, 0); - solveWithCyclicCoordinateDescent(context, targets); + solve(context, targets); } if (_hipsTargetIndex < 0) { @@ -1047,7 +1129,10 @@ void AnimInverseKinematics::setSkeletonInternal(AnimSkeleton::ConstPointer skele _maxTargetIndex = -1; - for (auto& accumulator: _accumulators) { + for (auto& accumulator: _rotationAccumulators) { + accumulator.clearAndClean(); + } + for (auto& accumulator: _translationAccumulators) { accumulator.clearAndClean(); } @@ -1119,6 +1204,7 @@ void AnimInverseKinematics::debugDrawIKChain(std::map& debugJoi // copy debug joint rotations into the relative poses for (auto& debugJoint : debugJointMap) { poses[debugJoint.first].rot() = debugJoint.second.relRot; + poses[debugJoint.first].trans() = debugJoint.second.relTrans; } // convert relative poses to absolute @@ -1284,7 +1370,7 @@ void AnimInverseKinematics::blendToPoses(const AnimPoseVec& targetPoses, const A int numJoints = (int)_relativePoses.size(); for (int i = 0; i < numJoints; ++i) { float dotSign = copysignf(1.0f, glm::dot(_relativePoses[i].rot(), targetPoses[i].rot())); - if (_accumulators[i].isDirty()) { + if (_rotationAccumulators[i].isDirty()) { // this joint is affected by IK --> blend toward the targetPoses rotation _relativePoses[i].rot() = glm::normalize(glm::lerp(_relativePoses[i].rot(), dotSign * targetPoses[i].rot(), blendFactor)); } else { @@ -1319,13 +1405,12 @@ void AnimInverseKinematics::initRelativePosesFromSolutionSource(SolutionSource s } } -void AnimInverseKinematics::computeSplineJointInfosForIKTarget(const AnimContext& context, int targetIndex, const IKTarget& target) { +void AnimInverseKinematics::computeSplineJointInfosForIKTarget(const AnimContext& context, const IKTarget& target) { std::vector splineJointInfoVec; // build default spline - AnimPose geomToRigPose(context.getGeometryToRigMatrix()); - AnimPose tipPose = geomToRigPose * _skeleton->getAbsoluteDefaultPose(target.getIndex()); - AnimPose basePose = geomToRigPose * _skeleton->getAbsoluteDefaultPose(_hipsIndex); + AnimPose tipPose = _skeleton->getAbsoluteDefaultPose(target.getIndex()); + AnimPose basePose = _skeleton->getAbsoluteDefaultPose(_hipsIndex); const float BASE_GAIN = 0.5f; const float TIP_GAIN = 1.0f; @@ -1341,10 +1426,10 @@ void AnimInverseKinematics::computeSplineJointInfosForIKTarget(const AnimContext CubicHermiteSplineFunctorWithArcLength spline(p0, m0, p1, m1); float totalArcLength = spline.arcLength(1.0f); - int index = _headIndex; + int index = target.getIndex(); int endIndex = _skeleton->getParentIndex(_hipsIndex); while (index != endIndex) { - AnimPose defaultPose = geomToRigPose * _skeleton->getAbsoluteDefaultPose(index); + AnimPose defaultPose = _skeleton->getAbsoluteDefaultPose(index); // AJT: FIXME: TODO: this wont work for horizontal splines... float ratio = (defaultPose.trans().y - basePose.trans().y) / baseToTipHeight; @@ -1352,18 +1437,19 @@ void AnimInverseKinematics::computeSplineJointInfosForIKTarget(const AnimContext // compute offset from default spline pose to default pose. float t = spline.arcLengthInverse(ratio * totalArcLength); AnimPose pose(glm::vec3(1.0f), glm::normalize(glm::lerp(basePose.rot(), tipPose.rot(), t)), spline(t)); - AnimPose offset = pose.inverse() * defaultPose; + AnimPose offsetPose = pose.inverse() * defaultPose; - SplineJointInfo splineJointInfo = { index, ratio, defaultPose, offset }; + SplineJointInfo splineJointInfo = { index, ratio, offsetPose }; splineJointInfoVec.push_back(splineJointInfo); index = _skeleton->getParentIndex(index); } - _splineJointInfoMap[targetIndex] = splineJointInfoVec; + _splineJointInfoMap[target.getIndex()] = splineJointInfoVec; } void AnimInverseKinematics::debugDrawSpineSpline(const AnimContext& context, const std::vector& targets) { + /* // find head target int headTargetIndex = -1; for (int i = 0; i < (int)targets.size(); i++) { @@ -1388,8 +1474,6 @@ void AnimInverseKinematics::debugDrawSpineSpline(const AnimContext& context, con } } - // AJT: TODO: render using splineJointInfoVec offset - AnimPose geomToWorldPose = AnimPose(context.getRigToWorldMatrix() * context.getGeometryToRigMatrix()); AnimPose hipsPose = geomToWorldPose * _skeleton->getAbsolutePose(_hipsIndex, _relativePoses); @@ -1437,5 +1521,5 @@ void AnimInverseKinematics::debugDrawSpineSpline(const AnimContext& context, con DebugDraw::getInstance().addMarker(QString("splineJoint%1").arg(splineJointInfo.jointIndex), pose.rot(), pose.trans(), BLUE); } } - + */ } diff --git a/libraries/animation/src/AnimInverseKinematics.h b/libraries/animation/src/AnimInverseKinematics.h index 2b2535ac79..42e84530cc 100644 --- a/libraries/animation/src/AnimInverseKinematics.h +++ b/libraries/animation/src/AnimInverseKinematics.h @@ -19,6 +19,7 @@ #include "IKTarget.h" #include "RotationAccumulator.h" +#include "TranslationAccumulator.h" class RotationConstraint; @@ -58,20 +59,22 @@ public: protected: void computeTargets(const AnimVariantMap& animVars, std::vector& targets, const AnimPoseVec& underPoses); - void solveWithCyclicCoordinateDescent(const AnimContext& context, const std::vector& targets); + void solve(const AnimContext& context, const std::vector& targets); void solveTargetWithCCD(const AnimContext& context, const IKTarget& target, const AnimPoseVec& absolutePoses, bool debug); + void solveTargetWithSpline(const AnimContext& context, const IKTarget& target, const AnimPoseVec& absolutePoses, bool debug); virtual void setSkeletonInternal(AnimSkeleton::ConstPointer skeleton) override; struct DebugJoint { DebugJoint() : relRot(), constrained(false) {} - DebugJoint(const glm::quat& relRotIn, bool constrainedIn) : relRot(relRotIn), constrained(constrainedIn) {} + DebugJoint(const glm::quat& relRotIn, const glm::vec3& relTransIn, bool constrainedIn) : relRot(relRotIn), relTrans(relTransIn), constrained(constrainedIn) {} glm::quat relRot; + glm::vec3 relTrans; bool constrained; }; void debugDrawIKChain(std::map& debugJointMap, const AnimContext& context) const; void debugDrawRelativePoses(const AnimContext& context) const; void debugDrawConstraints(const AnimContext& context) const; void debugDrawSpineSpline(const AnimContext& context, const std::vector& targets); - void computeSplineJointInfosForIKTarget(const AnimContext& context, int targetIndex, const IKTarget& target); + void computeSplineJointInfosForIKTarget(const AnimContext& context, const IKTarget& target); void initRelativePosesFromSolutionSource(SolutionSource solutionSource, const AnimPoseVec& underPose); void blendToPoses(const AnimPoseVec& targetPoses, const AnimPoseVec& underPose, float blendFactor); @@ -107,7 +110,8 @@ protected: }; std::map _constraints; - std::vector _accumulators; + std::vector _rotationAccumulators; + std::vector _translationAccumulators; std::vector _targetVarVec; AnimPoseVec _defaultRelativePoses; // poses of the relaxed state AnimPoseVec _relativePoses; // current relative poses @@ -116,7 +120,6 @@ protected: struct SplineJointInfo { int jointIndex; float ratio; - AnimPose defaultPose; AnimPose offsetPose; }; std::map> _splineJointInfoMap; diff --git a/libraries/animation/src/IKTarget.cpp b/libraries/animation/src/IKTarget.cpp index 2fe767b08d..41cac62fa3 100644 --- a/libraries/animation/src/IKTarget.cpp +++ b/libraries/animation/src/IKTarget.cpp @@ -44,6 +44,9 @@ void IKTarget::setType(int type) { case (int)Type::HipsRelativeRotationAndPosition: _type = Type::HipsRelativeRotationAndPosition; break; + case (int)Type::Spline: + _type = Type::Spline; + break; default: _type = Type::Unknown; } diff --git a/libraries/animation/src/IKTarget.h b/libraries/animation/src/IKTarget.h index 4f464c103c..011175aedf 100644 --- a/libraries/animation/src/IKTarget.h +++ b/libraries/animation/src/IKTarget.h @@ -21,6 +21,7 @@ public: RotationOnly, HmdHead, HipsRelativeRotationAndPosition, + Spline, Unknown }; diff --git a/libraries/animation/src/Rig.cpp b/libraries/animation/src/Rig.cpp index add3a461af..dd98993688 100644 --- a/libraries/animation/src/Rig.cpp +++ b/libraries/animation/src/Rig.cpp @@ -1041,7 +1041,7 @@ void Rig::updateFromHeadParameters(const HeadParameters& params, float dt) { } if (params.spine2Enabled) { - _animVars.set("spine2Type", (int)IKTarget::Type::RotationAndPosition); + _animVars.set("spine2Type", (int)IKTarget::Type::Spline); _animVars.set("spine2Position", extractTranslation(params.spine2Matrix)); _animVars.set("spine2Rotation", glmExtractRotation(params.spine2Matrix)); } else { @@ -1101,9 +1101,9 @@ void Rig::updateHeadAnimVars(const HeadParameters& params) { _animVars.set("headPosition", params.rigHeadPosition); _animVars.set("headRotation", params.rigHeadOrientation); if (params.hipsEnabled) { - // Since there is an explicit hips ik target, switch the head to use the more generic RotationAndPosition IK chain type. - // this will allow the spine to bend more, ensuring that it can reach the head target position. - _animVars.set("headType", (int)IKTarget::Type::RotationAndPosition); + // Since there is an explicit hips ik target, switch the head to use the more flexible Spline IK chain type. + // this will allow the spine to compress/expand and bend more natrually, ensuring that it can reach the head target position. + _animVars.set("headType", (int)IKTarget::Type::Spline); _animVars.unset("headWeight"); // use the default weight for this target. } else { // When there is no hips IK target, use the HmdHead IK chain type. This will make the spine very stiff, diff --git a/libraries/animation/src/RotationAccumulator.cpp b/libraries/animation/src/RotationAccumulator.cpp index a4940e1989..2b8fc7d66a 100644 --- a/libraries/animation/src/RotationAccumulator.cpp +++ b/libraries/animation/src/RotationAccumulator.cpp @@ -1,5 +1,5 @@ // -// RotationAccumulator.h +// RotationAccumulator.cpp // // Copyright 2015 High Fidelity, Inc. // @@ -27,7 +27,7 @@ void RotationAccumulator::clear() { _numRotations = 0; } -void RotationAccumulator::clearAndClean() { +void RotationAccumulator::clearAndClean() { clear(); _isDirty = false; } diff --git a/libraries/animation/src/TranslationAccumulator.cpp b/libraries/animation/src/TranslationAccumulator.cpp new file mode 100644 index 0000000000..4b110b1564 --- /dev/null +++ b/libraries/animation/src/TranslationAccumulator.cpp @@ -0,0 +1,34 @@ +// +// TranslationAccumulator.cpp +// +// Copyright 2015 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +#include "TranslationAccumulator.h" + +void TranslationAccumulator::add(const glm::vec3& translation, float weight) { + _accum += weight * translation; + _totalWeight += weight; + _isDirty = true; +} + +glm::vec3 TranslationAccumulator::getAverage() { + if (_totalWeight > 0.0f) { + return _accum / _totalWeight; + } else { + return glm::vec3(); + } +} + +void TranslationAccumulator::clear() { + _accum *= 0.0f; + _totalWeight = 0.0f; +} + +void TranslationAccumulator::clearAndClean() { + clear(); + _isDirty = false; +} diff --git a/libraries/animation/src/TranslationAccumulator.h b/libraries/animation/src/TranslationAccumulator.h new file mode 100644 index 0000000000..65f8a0dc97 --- /dev/null +++ b/libraries/animation/src/TranslationAccumulator.h @@ -0,0 +1,42 @@ +// +// TranslationAccumulator.h +// +// Copyright 2017 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +#ifndef hifi_TranslationAccumulator_h +#define hifi_TranslationAccumulator_h + +#include + +class TranslationAccumulator { +public: + TranslationAccumulator() : _accum(0.0f, 0.0f, 0.0f), _totalWeight(0), _isDirty(false) { } + + int size() const { return _totalWeight > 0.0f; } + + /// \param rotation rotation to add + /// \param weight contribution factor of this rotation to total accumulation + void add(const glm::vec3& translation, float weight = 1.0f); + + glm::vec3 getAverage(); + + /// \return true if any rotations were accumulated + bool isDirty() const { return _isDirty; } + + /// \brief clear accumulated rotation but don't change _isDirty + void clear(); + + /// \brief clear accumulated rotation and set _isDirty to false + void clearAndClean(); + +private: + glm::vec3 _accum; + float _totalWeight; + bool _isDirty; +}; + +#endif // hifi_TranslationAccumulator_h From 32c5dac66af66ebfd805890d3206531c60854d5a Mon Sep 17 00:00:00 2001 From: Sam Cake Date: Wed, 31 May 2017 00:55:28 -0700 Subject: [PATCH 141/357] Big cleanup of unecessary shaders and legacy from deferred lighting, and messing around with the stencil --- libraries/gpu/src/gpu/DrawVertexPosition.slv | 19 +++ libraries/gpu/src/gpu/StandardShaderLib.cpp | 10 ++ libraries/gpu/src/gpu/StandardShaderLib.h | 3 + .../src/DeferredLightingEffect.cpp | 66 +--------- .../render-utils/src/DeferredLightingEffect.h | 11 -- .../render-utils/src/RenderDeferredTask.cpp | 25 ++-- .../render-utils/src/RenderDeferredTask.h | 3 + .../render-utils/src/RenderPipelines.cpp | 1 + .../render-utils/src/directional_light.slf | 47 ------- .../src/directional_light_shadow.slf | 49 -------- libraries/render-utils/src/point_light.slf | 85 ------------- libraries/render-utils/src/spot_light.slf | 115 ------------------ 12 files changed, 49 insertions(+), 385 deletions(-) create mode 100644 libraries/gpu/src/gpu/DrawVertexPosition.slv delete mode 100644 libraries/render-utils/src/directional_light.slf delete mode 100644 libraries/render-utils/src/directional_light_shadow.slf delete mode 100644 libraries/render-utils/src/point_light.slf delete mode 100644 libraries/render-utils/src/spot_light.slf diff --git a/libraries/gpu/src/gpu/DrawVertexPosition.slv b/libraries/gpu/src/gpu/DrawVertexPosition.slv new file mode 100644 index 0000000000..b12280d577 --- /dev/null +++ b/libraries/gpu/src/gpu/DrawVertexPosition.slv @@ -0,0 +1,19 @@ +<@include gpu/Config.slh@> +<$VERSION_HEADER$> +// Generated on <$_SCRIBE_DATE$> +// +// Draw the fed vertex position, pass straight as clip pos +// Output the clip position +// +// Created by Sam Gateau on 5/30/2017 +// Copyright 2017 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +layout(location = 0) in vec4 inPosition; + +void main(void) { + gl_Position = inPosition; +} diff --git a/libraries/gpu/src/gpu/StandardShaderLib.cpp b/libraries/gpu/src/gpu/StandardShaderLib.cpp index cc92719a06..36ad548cfa 100755 --- a/libraries/gpu/src/gpu/StandardShaderLib.cpp +++ b/libraries/gpu/src/gpu/StandardShaderLib.cpp @@ -16,6 +16,7 @@ #include "DrawTransformUnitQuad_vert.h" #include "DrawTexcoordRectTransformUnitQuad_vert.h" #include "DrawViewportQuadTransformTexcoord_vert.h" +#include "DrawVertexPosition_vert.h" #include "DrawTransformVertexPosition_vert.h" #include "DrawWhite_frag.h" #include "DrawTexture_frag.h" @@ -28,6 +29,7 @@ ShaderPointer StandardShaderLib::_drawUnitQuadTexcoordVS; ShaderPointer StandardShaderLib::_drawTransformUnitQuadVS; ShaderPointer StandardShaderLib::_drawTexcoordRectTransformUnitQuadVS; ShaderPointer StandardShaderLib::_drawViewportQuadTransformTexcoordVS; +ShaderPointer StandardShaderLib::_drawVertexPositionVS; ShaderPointer StandardShaderLib::_drawTransformVertexPositionVS; ShaderPointer StandardShaderLib::_drawWhitePS; ShaderPointer StandardShaderLib::_drawTexturePS; @@ -88,6 +90,14 @@ ShaderPointer StandardShaderLib::getDrawViewportQuadTransformTexcoordVS() { } return _drawViewportQuadTransformTexcoordVS; } + +ShaderPointer StandardShaderLib::getDrawVertexPositionVS() { + if (!_drawVertexPositionVS) { + _drawVertexPositionVS = gpu::Shader::createVertex(std::string(DrawVertexPosition_vert)); + } + return _drawVertexPositionVS; +} + ShaderPointer StandardShaderLib::getDrawTransformVertexPositionVS() { if (!_drawTransformVertexPositionVS) { _drawTransformVertexPositionVS = gpu::Shader::createVertex(std::string(DrawTransformVertexPosition_vert)); diff --git a/libraries/gpu/src/gpu/StandardShaderLib.h b/libraries/gpu/src/gpu/StandardShaderLib.h index 677ad8c7a1..485e5bbbf9 100755 --- a/libraries/gpu/src/gpu/StandardShaderLib.h +++ b/libraries/gpu/src/gpu/StandardShaderLib.h @@ -39,6 +39,7 @@ public: // Shader draw the fed vertex position and transform it by the full model transform stack (Model, View, Proj). // simply output the world pos and the clip pos to the next stage + static ShaderPointer getDrawVertexPositionVS(); static ShaderPointer getDrawTransformVertexPositionVS(); static ShaderPointer getDrawWhitePS(); @@ -56,6 +57,8 @@ protected: static ShaderPointer _drawTransformUnitQuadVS; static ShaderPointer _drawTexcoordRectTransformUnitQuadVS; static ShaderPointer _drawViewportQuadTransformTexcoordVS; + + static ShaderPointer _drawVertexPositionVS; static ShaderPointer _drawTransformVertexPositionVS; static ShaderPointer _drawWhitePS; diff --git a/libraries/render-utils/src/DeferredLightingEffect.cpp b/libraries/render-utils/src/DeferredLightingEffect.cpp index 9d839d6ee1..025274e66d 100644 --- a/libraries/render-utils/src/DeferredLightingEffect.cpp +++ b/libraries/render-utils/src/DeferredLightingEffect.cpp @@ -27,18 +27,15 @@ #include "deferred_light_point_vert.h" #include "deferred_light_spot_vert.h" -#include "directional_light_frag.h" #include "directional_ambient_light_frag.h" #include "directional_skybox_light_frag.h" -#include "directional_light_shadow_frag.h" #include "directional_ambient_light_shadow_frag.h" #include "directional_skybox_light_shadow_frag.h" #include "local_lights_shading_frag.h" #include "local_lights_drawOutline_frag.h" -#include "point_light_frag.h" -#include "spot_light_frag.h" + using namespace render; @@ -82,48 +79,26 @@ enum DeferredShader_BufferSlot { }; static void loadLightProgram(const char* vertSource, const char* fragSource, bool lightVolume, gpu::PipelinePointer& program, LightLocationsPtr& locations); -static void loadLightVolumeProgram(const char* vertSource, const char* fragSource, bool front, gpu::PipelinePointer& program, LightLocationsPtr& locations); - -const char no_light_frag[] = -R"SCRIBE( -out vec4 _fragColor; - -void main(void) { - _fragColor = vec4(1.0, 1.0, 1.0, 1.0); -} -)SCRIBE" -; void DeferredLightingEffect::init() { - _directionalLightLocations = std::make_shared(); _directionalAmbientSphereLightLocations = std::make_shared(); _directionalSkyboxLightLocations = std::make_shared(); - _directionalLightShadowLocations = std::make_shared(); _directionalAmbientSphereLightShadowLocations = std::make_shared(); _directionalSkyboxLightShadowLocations = std::make_shared(); _localLightLocations = std::make_shared(); _localLightOutlineLocations = std::make_shared(); - _pointLightLocations = std::make_shared(); - _spotLightLocations = std::make_shared(); - loadLightProgram(deferred_light_vert, directional_light_frag, false, _directionalLight, _directionalLightLocations); loadLightProgram(deferred_light_vert, directional_ambient_light_frag, false, _directionalAmbientSphereLight, _directionalAmbientSphereLightLocations); loadLightProgram(deferred_light_vert, directional_skybox_light_frag, false, _directionalSkyboxLight, _directionalSkyboxLightLocations); - loadLightProgram(deferred_light_vert, directional_light_shadow_frag, false, _directionalLightShadow, _directionalLightShadowLocations); loadLightProgram(deferred_light_vert, directional_ambient_light_shadow_frag, false, _directionalAmbientSphereLightShadow, _directionalAmbientSphereLightShadowLocations); loadLightProgram(deferred_light_vert, directional_skybox_light_shadow_frag, false, _directionalSkyboxLightShadow, _directionalSkyboxLightShadowLocations); loadLightProgram(deferred_light_vert, local_lights_shading_frag, true, _localLight, _localLightLocations); loadLightProgram(deferred_light_vert, local_lights_drawOutline_frag, true, _localLightOutline, _localLightOutlineLocations); - loadLightVolumeProgram(deferred_light_point_vert, no_light_frag, false, _pointLightBack, _pointLightLocations); - loadLightVolumeProgram(deferred_light_point_vert, no_light_frag, true, _pointLightFront, _pointLightLocations); - loadLightVolumeProgram(deferred_light_spot_vert, no_light_frag, false, _spotLightBack, _spotLightLocations); - loadLightVolumeProgram(deferred_light_spot_vert, no_light_frag, true, _spotLightFront, _spotLightLocations); - // Light Stage and clusters _lightStage = std::make_shared(); @@ -290,39 +265,6 @@ static void loadLightProgram(const char* vertSource, const char* fragSource, boo } - -static void loadLightVolumeProgram(const char* vertSource, const char* fragSource, bool front, gpu::PipelinePointer& pipeline, LightLocationsPtr& locations) { - gpu::ShaderPointer program = makeLightProgram(vertSource, fragSource, locations); - - auto state = std::make_shared(); - - // Stencil test all the light passes for objects pixels only, not the background - - if (front) { - state->setCullMode(gpu::State::CULL_BACK); - state->setDepthTest(true, false, gpu::LESS_EQUAL); - state->setStencilTest(true, 0xFF, gpu::State::StencilTest(0, 0xFF, gpu::NOT_EQUAL, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_DECR, gpu::State::STENCIL_OP_KEEP)); - - // state->setDepthClampEnable(true); - // TODO: We should use DepthClamp and avoid changing geometry for inside /outside cases - // additive blending - // state->setBlendFunction(true, gpu::State::ONE, gpu::State::BLEND_OP_ADD, gpu::State::ONE); - - //state->setColorWriteMask(true, true, true, false); - state->setColorWriteMask(false, false, false, false); - } else { - state->setCullMode(gpu::State::CULL_FRONT); - state->setDepthTest(true, false, gpu::LESS_EQUAL); - state->setStencilTest(true, 0xFF, gpu::State::StencilTest(0, 0xFF, gpu::NOT_EQUAL, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_INCR, gpu::State::STENCIL_OP_KEEP)); - // additive blending - // state->setBlendFunction(true, gpu::State::ONE, gpu::State::BLEND_OP_ADD, gpu::State::ONE); - // state->setColorWriteMask(true, true, true, false); - state->setColorWriteMask(false, false, false, false); - } - pipeline = gpu::Pipeline::create(program, state); - -} - void DeferredLightingEffect::setGlobalLight(const model::LightPointer& light) { /* auto globalLight = _allocatedLights.front(); globalLight->setDirection(light->getDirection()); @@ -535,7 +477,7 @@ void PrepareDeferred::run(const RenderContextPointer& renderContext, const Input gpu::Framebuffer::BUFFER_COLOR0 | gpu::Framebuffer::BUFFER_COLOR1 | gpu::Framebuffer::BUFFER_COLOR2 | gpu::Framebuffer::BUFFER_COLOR3 | gpu::Framebuffer::BUFFER_DEPTH | gpu::Framebuffer::BUFFER_STENCIL, - vec4(vec3(0), 0), 1.0, 0.0, true); + vec4(vec3(0), 0), 1.0, 0, true); // For the rest of the rendering, bind the lighting model batch.setUniformBuffer(LIGHTING_MODEL_BUFFER_SLOT, lightingModel->getParametersBuffer()); @@ -619,8 +561,8 @@ void RenderDeferredSetup::run(const render::RenderContextPointer& renderContext, batch.setResourceTexture(SHADOW_MAP_UNIT, globalShadow->map); } - auto& program = deferredLightingEffect->_shadowMapEnabled ? deferredLightingEffect->_directionalLightShadow : deferredLightingEffect->_directionalLight; - LightLocationsPtr locations = deferredLightingEffect->_shadowMapEnabled ? deferredLightingEffect->_directionalLightShadowLocations : deferredLightingEffect->_directionalLightLocations; + auto& program = deferredLightingEffect->_directionalSkyboxLight; + LightLocationsPtr locations = deferredLightingEffect->_directionalSkyboxLightLocations; const auto& keyLight = deferredLightingEffect->_allocatedLights[deferredLightingEffect->_globalLights.front()]; // Setup the global directional pass pipeline diff --git a/libraries/render-utils/src/DeferredLightingEffect.h b/libraries/render-utils/src/DeferredLightingEffect.h index 2f4f9901c3..c171973216 100644 --- a/libraries/render-utils/src/DeferredLightingEffect.h +++ b/libraries/render-utils/src/DeferredLightingEffect.h @@ -82,32 +82,21 @@ private: gpu::PipelinePointer _directionalSkyboxLight; gpu::PipelinePointer _directionalAmbientSphereLight; - gpu::PipelinePointer _directionalLight; gpu::PipelinePointer _directionalSkyboxLightShadow; gpu::PipelinePointer _directionalAmbientSphereLightShadow; - gpu::PipelinePointer _directionalLightShadow; gpu::PipelinePointer _localLight; gpu::PipelinePointer _localLightOutline; - gpu::PipelinePointer _pointLightBack; - gpu::PipelinePointer _pointLightFront; - gpu::PipelinePointer _spotLightBack; - gpu::PipelinePointer _spotLightFront; - LightLocationsPtr _directionalSkyboxLightLocations; LightLocationsPtr _directionalAmbientSphereLightLocations; - LightLocationsPtr _directionalLightLocations; LightLocationsPtr _directionalSkyboxLightShadowLocations; LightLocationsPtr _directionalAmbientSphereLightShadowLocations; - LightLocationsPtr _directionalLightShadowLocations; LightLocationsPtr _localLightLocations; LightLocationsPtr _localLightOutlineLocations; - LightLocationsPtr _pointLightLocations; - LightLocationsPtr _spotLightLocations; using Lights = std::vector; diff --git a/libraries/render-utils/src/RenderDeferredTask.cpp b/libraries/render-utils/src/RenderDeferredTask.cpp index 60fd6e2f64..0fbe35025d 100644 --- a/libraries/render-utils/src/RenderDeferredTask.cpp +++ b/libraries/render-utils/src/RenderDeferredTask.cpp @@ -85,7 +85,8 @@ void RenderDeferredTask::build(JobModel& task, const render::Varying& input, ren const auto deferredFramebuffer = prepareDeferredOutputs.getN(0); const auto lightingFramebuffer = prepareDeferredOutputs.getN(1); - // draw a stencil mask in hidden regions of the frmaebuffer. + // draw a stencil mask in hidden regions of the framebuffer. + task.addJob("PrepareStencil", primaryFramebuffer); // Render opaque objects in DeferredBuffer const auto opaqueInputs = DrawStateSortDeferred::Inputs(opaques, lightingModel).hasVarying(); @@ -93,7 +94,6 @@ void RenderDeferredTask::build(JobModel& task, const render::Varying& input, ren // Once opaque is all rendered create stencil background task.addJob("DrawOpaqueStencil", deferredFramebuffer); - task.addJob("PrepareStencil", primaryFramebuffer); task.addJob("OpaqueRangeTimer", opaqueRangeTimer); @@ -401,7 +401,7 @@ gpu::PipelinePointer DrawStencilDeferred::getOpaquePipeline() { auto state = std::make_shared(); state->setDepthTest(true, false, gpu::LESS_EQUAL); - state->setStencilTest(true, 0xFF, gpu::State::StencilTest(STENCIL_OPAQUE, 0xFF, gpu::ALWAYS, gpu::State::STENCIL_OP_REPLACE, gpu::State::STENCIL_OP_REPLACE, gpu::State::STENCIL_OP_KEEP)); + state->setStencilTest(true, 0xFF, gpu::State::StencilTest(STENCIL_OPAQUE, 0xFF, gpu::ALWAYS, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP)); state->setColorWriteMask(0); _opaquePipeline = gpu::Pipeline::create(program, state); @@ -410,6 +410,7 @@ gpu::PipelinePointer DrawStencilDeferred::getOpaquePipeline() { } void DrawStencilDeferred::run(const RenderContextPointer& renderContext, const DeferredFramebufferPointer& deferredFramebuffer) { + // return; assert(renderContext->args); assert(renderContext->args->hasViewFrustum()); @@ -474,15 +475,14 @@ void DrawBackgroundDeferred::run(const RenderContextPointer& renderContext, cons gpu::PipelinePointer PrepareStencil::getDrawStencilPipeline() { if (!_drawStencilPipeline) { - const gpu::int8 STENCIL_OPAQUE = 1; - auto vs = gpu::StandardShaderLib::getDrawTransformVertexPositionVS(); + auto vs = gpu::StandardShaderLib::getDrawVertexPositionVS(); auto ps = gpu::StandardShaderLib::getDrawWhitePS(); auto program = gpu::Shader::createProgram(vs, ps); gpu::Shader::makeProgram((*program)); auto state = std::make_shared(); - state->setStencilTest(true, 0xFF, gpu::State::StencilTest(0, 0xFF, gpu::ALWAYS, gpu::State::STENCIL_OP_REPLACE, gpu::State::STENCIL_OP_REPLACE, gpu::State::STENCIL_OP_KEEP)); - state->setColorWriteMask(0); + state->setStencilTest(true, 0xFF, gpu::State::StencilTest(STENCIL_MASK, 0xFF, gpu::ALWAYS, gpu::State::STENCIL_OP_REPLACE, gpu::State::STENCIL_OP_REPLACE, gpu::State::STENCIL_OP_REPLACE)); + // state->setColorWriteMask(0); _drawStencilPipeline = gpu::Pipeline::create(program, state); } @@ -499,9 +499,7 @@ model::MeshPointer PrepareStencil::getMesh() { { 1.0f, -1.0f, 0.0f }, { 0.0f, -1.0f, 0.0f } }; std::vector indices { 0, 7, 1, 1, 3, 2, 3, 5, 4, 5, 7, 6 }; - _mesh = model::Mesh::createIndexedTriangles_P3F((uint32_t) vertices.size(), (uint32_t) indices.size(), vertices.data(), indices.data()); - } return _mesh; } @@ -514,19 +512,14 @@ void PrepareStencil::run(const RenderContextPointer& renderContext, const gpu::F RenderArgs* args = renderContext->args; doInBatch(args->_context, [&](gpu::Batch& batch) { args->_batch = &batch; + batch.enableStereo(false); batch.setViewportTransform(args->_viewport); - batch.setStateScissorRect(args->_viewport); - - batch.resetViewTransform(); - batch.setModelTransform(Transform()); - glm::mat4 proj; - batch.setProjectionTransform(proj); batch.setPipeline(getDrawStencilPipeline()); auto mesh = getMesh(); - batch.setIndexBuffer(gpu::UINT32, (mesh->getIndexBuffer()._buffer), 0); + batch.setIndexBuffer(mesh->getIndexBuffer()); batch.setInputFormat((mesh->getVertexFormat())); batch.setInputStream(0, mesh->getVertexStream()); diff --git a/libraries/render-utils/src/RenderDeferredTask.h b/libraries/render-utils/src/RenderDeferredTask.h index bba1b26404..c978a5f9a3 100644 --- a/libraries/render-utils/src/RenderDeferredTask.h +++ b/libraries/render-utils/src/RenderDeferredTask.h @@ -191,6 +191,9 @@ public: using JobModel = render::Job::ModelI; void run(const render::RenderContextPointer& renderContext, const gpu::FramebufferPointer& dstFramebuffer); + + static const gpu::int8 STENCIL_MASK = 64; + private: gpu::PipelinePointer _drawStencilPipeline; gpu::PipelinePointer getDrawStencilPipeline(); diff --git a/libraries/render-utils/src/RenderPipelines.cpp b/libraries/render-utils/src/RenderPipelines.cpp index da264cbf7d..c83e5c5f34 100644 --- a/libraries/render-utils/src/RenderPipelines.cpp +++ b/libraries/render-utils/src/RenderPipelines.cpp @@ -330,6 +330,7 @@ void addPlumberPipeline(ShapePlumber& plumber, bool isWireframed = (i & 4); auto state = std::make_shared(); + state->setStencilTest(true, 0xFF, gpu::State::StencilTest(0, 0xFF, gpu::GREATER, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_INCR_SAT)); // Depth test depends on transparency state->setDepthTest(true, !key.isTranslucent(), gpu::LESS_EQUAL); diff --git a/libraries/render-utils/src/directional_light.slf b/libraries/render-utils/src/directional_light.slf deleted file mode 100644 index cda03b0779..0000000000 --- a/libraries/render-utils/src/directional_light.slf +++ /dev/null @@ -1,47 +0,0 @@ -<@include gpu/Config.slh@> -<$VERSION_HEADER$> -// Generated on <$_SCRIBE_DATE$> -// -// directional_light.frag -// fragment shader -// -// Created by Andrzej Kapolka on 9/3/14. -// Copyright 2016 High Fidelity, Inc. -// -// Distributed under the Apache License, Version 2.0. -// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html -// - -<@include DeferredBufferRead.slh@> -<@include DeferredGlobalLight.slh@> - -<$declareEvalLightmappedColor()$> -<$declareEvalAmbientGlobalColor()$> - -in vec2 _texCoord0; -out vec4 _fragColor; - -void main(void) { - DeferredFrameTransform deferredTransform = getDeferredFrameTransform(); - DeferredFragment frag = unpackDeferredFragment(deferredTransform, _texCoord0); - - float shadowAttenuation = 1.0; - - if (frag.mode == FRAG_MODE_UNLIT) { - discard; - } else if (frag.mode == FRAG_MODE_LIGHTMAPPED) { - discard; - } else { - vec3 color = evalAmbientGlobalColor( - getViewInverse(), - shadowAttenuation, - frag.obscurance, - frag.position.xyz, - frag.normal, - frag.albedo, - frag.fresnel, - frag.metallic, - frag.roughness); - _fragColor = vec4(color, 1.0); - } -} diff --git a/libraries/render-utils/src/directional_light_shadow.slf b/libraries/render-utils/src/directional_light_shadow.slf deleted file mode 100644 index 7f98330f84..0000000000 --- a/libraries/render-utils/src/directional_light_shadow.slf +++ /dev/null @@ -1,49 +0,0 @@ -<@include gpu/Config.slh@> -<$VERSION_HEADER$> -// Generated on <$_SCRIBE_DATE$> -// -// directional_light_shadow.frag -// fragment shader -// -// Created by Zach Pomerantz on 1/18/2016. -// Copyright 2016 High Fidelity, Inc. -// -// Distributed under the Apache License, Version 2.0. -// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html -// - -<@include Shadow.slh@> -<@include DeferredBufferRead.slh@> -<@include DeferredGlobalLight.slh@> - -<$declareEvalLightmappedColor()$> -<$declareEvalAmbientGlobalColor()$> - -in vec2 _texCoord0; -out vec4 _fragColor; - -void main(void) { - DeferredFrameTransform deferredTransform = getDeferredFrameTransform(); - DeferredFragment frag = unpackDeferredFragment(deferredTransform, _texCoord0); - - vec4 worldPos = getViewInverse() * vec4(frag.position.xyz, 1.0); - float shadowAttenuation = evalShadowAttenuation(worldPos); - - if (frag.mode == FRAG_MODE_UNLIT) { - discard; - } else if (frag.mode == FRAG_MODE_LIGHTMAPPED) { - discard; - } else { - vec3 color = evalAmbientGlobalColor( - getViewInverse(), - shadowAttenuation, - frag.obscurance, - frag.position.xyz, - frag.normal, - frag.albedo, - frag.fresnel, - frag.metallic, - frag.roughness); - _fragColor = vec4(color, 1.0); - } -} diff --git a/libraries/render-utils/src/point_light.slf b/libraries/render-utils/src/point_light.slf deleted file mode 100644 index e646db5069..0000000000 --- a/libraries/render-utils/src/point_light.slf +++ /dev/null @@ -1,85 +0,0 @@ -<@include gpu/Config.slh@> -<$VERSION_HEADER$> -// Generated on <$_SCRIBE_DATE$> -// -// point_light.frag -// fragment shader -// -// Created by Sam Gateau on 9/18/15. -// Copyright 2014 High Fidelity, Inc. -// -// Distributed under the Apache License, Version 2.0. -// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html -// - - -<$declareDeferredCurvature()$> - -// Everything about light -<@include model/Light.slh@> -<$declareLightBuffer()$> - -<@include LightingModel.slh@> - -<@include LightPoint.slh@> -<$declareLightingPoint(supportScattering)$> - - -uniform vec4 texcoordFrameTransform; - -in vec4 _texCoord0;!> -out vec4 _fragColor; - -void main(void) { - _fragColor = vec4(1.0, 1.0, 1.0, 1.0); - - -} diff --git a/libraries/render-utils/src/spot_light.slf b/libraries/render-utils/src/spot_light.slf deleted file mode 100644 index 4cacff86c4..0000000000 --- a/libraries/render-utils/src/spot_light.slf +++ /dev/null @@ -1,115 +0,0 @@ -<@include gpu/Config.slh@> -<$VERSION_HEADER$> -// Generated on <$_SCRIBE_DATE$> -// -// spot_light.frag -// fragment shader -// -// Created by Sam Gateau on 9/18/15. -// Copyright 2014 High Fidelity, Inc. -// -// Distributed under the Apache License, Version 2.0. -// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html -// - -// Everything about deferred buffer - - -<$declareDeferredCurvature()$> - -// Everything about light -<@include model/Light.slh@> -<$declareLightBuffer(256)$> -uniform lightIndexBuffer { - int lightIndex[256]; -}; -<@include LightingModel.slh@> - -<@include LightPoint.slh@> -<$declareLightingPoint(supportScattering)$> -<@include LightSpot.slh@> -<$declareLightingSpot(supportScattering)$> - -//uniform vec4 texcoordFrameTransform; -!> - - -//in vec4 _texCoord0; -//flat in int instanceID; -out vec4 _fragColor; - -void main(void) { - _fragColor = vec4(1.0, 1.0, 1.0, 1.0); - -// DeferredFrameTransform deferredTransform = getDeferredFrameTransform(); - - // Grab the fragment data from the uv - //vec2 texCoord = _texCoord0.st;/* / _texCoord0.q; - /*texCoord *= texcoordFrameTransform.zw; - texCoord += texcoordFrameTransform.xy;*/ - /* - vec4 fragPosition = unpackDeferredPositionFromZeye(texCoord); - DeferredFragment frag = unpackDeferredFragmentNoPosition(texCoord); - - if (frag.mode == FRAG_MODE_UNLIT) { - discard; - } - - - // frag.depthVal = depthValue; - frag.position = fragPosition; - - vec4 midNormalCurvature; - vec4 lowNormalCurvature; - if (frag.mode == FRAG_MODE_SCATTERING) { - unpackMidLowNormalCurvature(texCoord, midNormalCurvature, lowNormalCurvature); - } - - // Frag pos in world - mat4 invViewMat = getViewInverse(); - vec4 fragPos = invViewMat * fragPosition; - - // Frag to eye vec - vec4 fragEyeVector = invViewMat * vec4(-frag.position.xyz, 0.0); - vec3 fragEyeDir = normalize(fragEyeVector.xyz); - - int numLights = lightIndex[0]; - for (int i = 0; i < numLights; i++) { - // Need the light now - Light light = getLight(lightIndex[i + 1]); - bool isSpot = light_isSpot(light); - // Clip againgst the light volume and Make the Light vector going from fragment to light center in world space - vec4 fragLightVecLen2; - vec4 fragLightDirLen; - float cosSpotAngle; - if (isSpot) { - if (!clipFragToLightVolumeSpot(light, fragPos.xyz, fragLightVecLen2, fragLightDirLen, cosSpotAngle)) { - continue; - } - } else { - if (!clipFragToLightVolumePoint(light, fragPos.xyz, fragLightVecLen2)) { - continue; - } - } - - vec3 diffuse; - vec3 specular; - - if (isSpot) { - evalLightingSpot(diffuse, specular, light, - fragLightDirLen.xyzw, cosSpotAngle, fragEyeDir, frag.normal, frag.roughness, - frag.metallic, frag.fresnel, frag.albedo, 1.0, - frag.scattering, midNormalCurvature, lowNormalCurvature); - } else { - evalLightingPoint(diffuse, specular, light, - fragLightVecLen2.xyz, fragEyeDir, frag.normal, frag.roughness, - frag.metallic, frag.fresnel, frag.albedo, 1.0, - frag.scattering, midNormalCurvature, lowNormalCurvature); - } - - _fragColor.rgb += diffuse; - _fragColor.rgb += specular; - } - */ -} - From 58142817a12d132077515669953fd3c4087487df Mon Sep 17 00:00:00 2001 From: NeetBhagat Date: Wed, 31 May 2017 19:13:55 +0530 Subject: [PATCH 142/357] Resolve the review comments of @ZappoMan. --- interface/src/Application.cpp | 86 ++++++++++++++++++----------------- interface/src/Application.h | 14 ++---- 2 files changed, 49 insertions(+), 51 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index b5733fa6f5..ac39f51d7e 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -244,8 +244,8 @@ static const QString DESKTOP_LOCATION = QStandardPaths::writableLocation(QStanda Setting::Handle maxOctreePacketsPerSecond("maxOctreePPS", DEFAULT_MAX_OCTREE_PPS); static const QString MARKETPLACE_CDN_HOSTNAME = "mpassets.highfidelity.com"; -static const int INTERVAL_TO_CHECK_HMD_MOUNTED_STATUS = 500; // milliseconds -static const QString OCULUS_RIFT_DISPLAY_PLUGIN_NAME = "Oculus Rift"; +static const int INTERVAL_TO_CHECK_HMD_WORN_STATUS = 500; // milliseconds +static const QString DISPLAY_PLUGIN_NAME_OCULUS_RIFT = "Oculus Rift"; static const QString DESKTOP_DISPLAY_PLUGIN_NAME = "Desktop"; const QHash Application::_acceptedExtensions { @@ -1341,19 +1341,38 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo properties["active_display_plugin"] = getActiveDisplayPlugin()->getName(); properties["using_hmd"] = isHMDMode(); - if (isHMDPluginAvailable()) { - // Currently, autoswitch display mode support is only for Oculus Rift. - // If HMD Plugin is available and current display plugin is not HMD plugin - // then startHMDStandBySession to listen HMD Mounted status. - if (getActiveDisplayPlugin()->getName() != _hmdPluginName && - !_hmdPlugin->isStandBySessionActive()) { + _autoSwitchDisplayModeSupportedHMDPlugin = nullptr; + foreach(DisplayPluginPointer displayPlugin, PluginManager::getInstance()->getDisplayPlugins()) { + if (displayPlugin->isHmd() && + displayPlugin->getName() == DISPLAY_PLUGIN_NAME_OCULUS_RIFT) { + + // Currently auto switch display mode support is only for Oculus Rift + // To support other plugins, add a condition + // (|| displayPlugin->getName() == "Other HMD Display Plugin Name") + + _autoSwitchDisplayModeSupportedHMDPlugin = displayPlugin; + _autoSwitchDisplayModeSupportedHMDPluginName = + _autoSwitchDisplayModeSupportedHMDPlugin->getName(); + _previousHMDWornStatus = + _autoSwitchDisplayModeSupportedHMDPlugin->isDisplayVisible(); + qCDebug(interfaceapp) << "_autoSwitchModeSupportedPluginName::" + << _autoSwitchDisplayModeSupportedHMDPluginName; + break; + } + } + + if (_autoSwitchDisplayModeSupportedHMDPlugin != nullptr) { + // If HMD Plugin is available and current display plugin is not HMD plugin + // then startHMDStandBySession to poll HMD Worn status. + if (getActiveDisplayPlugin()->getName() != _autoSwitchDisplayModeSupportedHMDPluginName && + !_autoSwitchDisplayModeSupportedHMDPlugin->isStandBySessionActive()) { startHMDStandBySession(); } // Poll periodically to check whether the user has worn HMD or not. Switch Display mode accordingly. // If the user wears HMD then switch to VR mode. If the user removes HMD then switch to Desktop mode. - QTimer *switchDisplayModeTimer = new QTimer(this); - connect(switchDisplayModeTimer, SIGNAL(timeout()), this, SLOT(switchDisplayMode())); - switchDisplayModeTimer->start(INTERVAL_TO_CHECK_HMD_MOUNTED_STATUS); + QTimer* autoSwitchDisplayModeTimer = new QTimer(this); + connect(autoSwitchDisplayModeTimer, SIGNAL(timeout()), this, SLOT(switchDisplayMode())); + autoSwitchDisplayModeTimer->start(INTERVAL_TO_CHECK_HMD_WORN_STATUS); } auto glInfo = getGLContextData(); @@ -1585,9 +1604,10 @@ void Application::aboutToQuit() { } getActiveDisplayPlugin()->deactivate(); - if (_hmdPlugin && _hmdPlugin->isStandBySessionActive()) { - _hmdPlugin->endStandBySession(); - } + if (_autoSwitchDisplayModeSupportedHMDPlugin != nullptr + && _autoSwitchDisplayModeSupportedHMDPlugin->isStandBySessionActive()) { + _autoSwitchDisplayModeSupportedHMDPlugin->endStandBySession(); + } // Hide Running Scripts dialog so that it gets destroyed in an orderly manner; prevents warnings at shutdown. DependencyManager::get()->hide("RunningScripts"); @@ -6752,48 +6772,30 @@ void Application::updateDisplayMode() { Q_ASSERT_X(_displayPlugin, "Application::updateDisplayMode", "could not find an activated display plugin"); } -bool Application::isHMDPluginAvailable() { - bool isHMDEnabledPluginAvailable = false; - auto displayPlugins = PluginManager::getInstance()->getDisplayPlugins(); - // Currently, autoswitch display mode support is only for Oculus Rift. - foreach(DisplayPluginPointer displayPlugin, PluginManager::getInstance()->getDisplayPlugins()) { - if (displayPlugin->isHmd() && displayPlugin->getName() == OCULUS_RIFT_DISPLAY_PLUGIN_NAME) { - _hmdPlugin = displayPlugin; - _hmdPluginName = displayPlugin->getName(); - _hmdMountedStatus = displayPlugin->isDisplayVisible(); - isHMDEnabledPluginAvailable = true; - break; - } - } - return isHMDEnabledPluginAvailable; -} - void Application::switchDisplayMode() { - bool currentHMDMountedStatus = _hmdPlugin->isDisplayVisible(); - if (currentHMDMountedStatus != _hmdMountedStatus) { - // Switch to respective mode as soon as currenthmdMountedStatus changes - if (currentHMDMountedStatus == false && _hmdMountedStatus == true) { + bool currentHMDWornStatus = _autoSwitchDisplayModeSupportedHMDPlugin->isDisplayVisible(); + if (currentHMDWornStatus != _previousHMDWornStatus) { + // Switch to respective mode as soon as currentHMDWornStatus changes + if (currentHMDWornStatus == false && _previousHMDWornStatus == true) { qCDebug(interfaceapp) << "Switching from HMD to desktop mode"; setActiveDisplayPlugin(DESKTOP_DISPLAY_PLUGIN_NAME); startHMDStandBySession(); } - if (currentHMDMountedStatus == true && _hmdMountedStatus == false) { + if (currentHMDWornStatus == true && _previousHMDWornStatus == false) { qCDebug(interfaceapp) << "Switching from Desktop to HMD mode"; endHMDStandBySession(); - setActiveDisplayPlugin(_hmdPluginName); + setActiveDisplayPlugin(_autoSwitchDisplayModeSupportedHMDPluginName); } } - _hmdMountedStatus = currentHMDMountedStatus; + _previousHMDWornStatus = currentHMDWornStatus; } -bool Application::startHMDStandBySession() { - bool isStandBySessionStarted = _hmdPlugin->startStandBySession(); - qCDebug(interfaceapp) << "startHMDStandBySession: " << isStandBySessionStarted; - return isStandBySessionStarted; +void Application::startHMDStandBySession() { + _autoSwitchDisplayModeSupportedHMDPlugin->startStandBySession(); } void Application::endHMDStandBySession() { - _hmdPlugin->endStandBySession(); + _autoSwitchDisplayModeSupportedHMDPlugin->endStandBySession(); } mat4 Application::getEyeProjection(int eye) const { diff --git a/interface/src/Application.h b/interface/src/Application.h index f19c2c9adf..e1fb37ef3a 100644 --- a/interface/src/Application.h +++ b/interface/src/Application.h @@ -681,14 +681,10 @@ private: AudioInjector* _snapshotSoundInjector { nullptr }; SharedSoundPointer _snapshotSound; - - DisplayPluginPointer _hmdPlugin; // HMD Enabled Plugin - QString _hmdPluginName; - bool isHMDPluginAvailable(); - bool _hmdMountedStatus; // Check HMD Mounted status - bool startHMDStandBySession(); - void endHMDStandBySession(); + DisplayPluginPointer _autoSwitchDisplayModeSupportedHMDPlugin = nullptr; + QString _autoSwitchDisplayModeSupportedHMDPluginName; + bool _previousHMDWornStatus; + void startHMDStandBySession(); + void endHMDStandBySession(); }; - - #endif // hifi_Application_h From f4328af66f6d2535707a5bef5f86b438defe2761 Mon Sep 17 00:00:00 2001 From: Dante Ruiz Date: Wed, 31 May 2017 17:12:27 +0100 Subject: [PATCH 143/357] made final requested changes --- plugins/openvr/src/ViveControllerManager.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/plugins/openvr/src/ViveControllerManager.cpp b/plugins/openvr/src/ViveControllerManager.cpp index e08929cf08..8ddf458210 100644 --- a/plugins/openvr/src/ViveControllerManager.cpp +++ b/plugins/openvr/src/ViveControllerManager.cpp @@ -503,6 +503,13 @@ glm::mat4 ViveControllerManager::InputDevice::recalculateDefaultToReferenceForHe glm::vec3 headPuckZAxis = cancelOutRollAndPitch(glmExtractRotation(headPuckAvatarMat)) * glm::vec3(0.0f, 0.0f, 1.0f); glm::vec3 worldUp = glm::vec3(0.0f, 1.0f, 0.0f); + // check that the head puck z axis is not parrallel to the world up + const float EPSILON = 1.0e-4f; + glm::vec3 zAxis = glmExtractRotation(headPuckAvatarMat) * glm::vec3(0.0f, 0.0f, 1.0f); + if (fabsf(fabsf(glm::dot(glm::normalize(worldUp), glm::normalize(zAxis))) - 1.0f) < EPSILON) { + headPuckZAxis = glm::vec3(1.0f, 0.0f, 0.0f); + } + glm::vec3 yPrime = glm::vec3(0.0f, 1.0f, 0.0f); glm::vec3 xPrime = glm::normalize(glm::cross(worldUp, headPuckZAxis)); glm::vec3 zPrime = glm::normalize(glm::cross(xPrime, yPrime)); From 7fcdc6124450e988df0a8900a9843edeb33816a0 Mon Sep 17 00:00:00 2001 From: Dante Ruiz Date: Wed, 31 May 2017 18:20:35 +0100 Subject: [PATCH 144/357] add head puck offset preference --- plugins/openvr/src/ViveControllerManager.cpp | 36 ++++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) diff --git a/plugins/openvr/src/ViveControllerManager.cpp b/plugins/openvr/src/ViveControllerManager.cpp index 8ddf458210..5583ec6351 100644 --- a/plugins/openvr/src/ViveControllerManager.cpp +++ b/plugins/openvr/src/ViveControllerManager.cpp @@ -57,8 +57,8 @@ static const int FIRST_FOOT = 0; static const int SECOND_FOOT = 1; static const int HIP = 2; static const int CHEST = 3; -static const float HEAD_PUCK_Y_OFFSET = -0.0254f; -static const float HEAD_PUCK_Z_OFFSET = -0.152f; +static float HEAD_PUCK_Y_OFFSET = -0.0254f; +static float HEAD_PUCK_Z_OFFSET = -0.152f; const char* ViveControllerManager::NAME { "OpenVR" }; @@ -825,6 +825,38 @@ void ViveControllerManager::InputDevice::createPreferences() { auto preferences = DependencyManager::get(); static const QString VIVE_PUCKS_CONFIG = "Vive Pucks Configuration"; + { + static const float MIN_VALUE = -3.0f; + static const float MAX_VALUE = 3.0f; + static const float STEP = 0.01f; + + auto getter = [this]()->float { return HEAD_PUCK_Y_OFFSET; }; + auto setter = [this](const float& value) { HEAD_PUCK_Y_OFFSET = value; }; + + auto preference = new SpinnerPreference(VIVE_PUCKS_CONFIG, "HeadPuckYOffset", getter, setter); + preference->setMin(MIN_VALUE); + preference->setMax(MAX_VALUE); + preference->setDecimals(3); + preference->setStep(STEP); + preferences->addPreference(preference); + } + + { + static const float MIN_VALUE = -3.0f; + static const float MAX_VALUE = 3.0f; + static const float STEP = 0.01f; + + auto getter = [this]()->float { return HEAD_PUCK_Z_OFFSET; }; + auto setter = [this](const float& value) { HEAD_PUCK_Z_OFFSET = value; }; + + auto preference = new SpinnerPreference(VIVE_PUCKS_CONFIG, "HeadPuckXOffset", getter, setter); + preference->setMin(MIN_VALUE); + preference->setMax(MAX_VALUE); + preference->setStep(STEP); + preference->setDecimals(3); + preferences->addPreference(preference); + } + { auto getter = [this]()->QString { return _configStringMap[_preferedConfig]; }; auto setter = [this](const QString& value) { setConfigFromString(value); saveSettings(); }; From 7a47250aa7db257553711de94c7c2a7de1454246 Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Wed, 31 May 2017 10:21:10 -0700 Subject: [PATCH 145/357] oops missed a comma --- interface/resources/controllers/oculus_touch.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/resources/controllers/oculus_touch.json b/interface/resources/controllers/oculus_touch.json index 544c8bd5b8..03fc1cbefb 100644 --- a/interface/resources/controllers/oculus_touch.json +++ b/interface/resources/controllers/oculus_touch.json @@ -57,7 +57,7 @@ { "from": "OculusTouch.LeftThumbUp", "to": "Standard.LeftThumbUp" }, { "from": "OculusTouch.RightThumbUp", "to": "Standard.RightThumbUp" }, { "from": "OculusTouch.LeftIndexPoint", "to": "Standard.LeftIndexPoint" }, - { "from": "OculusTouch.RightIndexPoint", "to": "Standard.RightIndexPoint" } + { "from": "OculusTouch.RightIndexPoint", "to": "Standard.RightIndexPoint" }, { "from": "OculusTouch.Head", "to" : "Standard.Head", "when" : [ "Application.InHMD"] } ] From 0441d8c70364550cee596b5e0f9a0bbc8de2a5a6 Mon Sep 17 00:00:00 2001 From: Zach Fox Date: Wed, 31 May 2017 10:11:59 -0700 Subject: [PATCH 146/357] Add placeholder image when previous snapshot can't be loaded --- interface/resources/snapshot/img/no-image.jpg | Bin 0 -> 20880 bytes scripts/system/html/js/SnapshotReview.js | 32 +++++++++++------- scripts/system/snapshot.js | 6 ++-- 3 files changed, 23 insertions(+), 15 deletions(-) create mode 100644 interface/resources/snapshot/img/no-image.jpg diff --git a/interface/resources/snapshot/img/no-image.jpg b/interface/resources/snapshot/img/no-image.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fff41c4e540fac630a540ab0ced18b498e86a576 GIT binary patch literal 20880 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 literal 0 HcmV?d00001 diff --git a/scripts/system/html/js/SnapshotReview.js b/scripts/system/html/js/SnapshotReview.js index 6c5829d64f..2a4d535fee 100644 --- a/scripts/system/html/js/SnapshotReview.js +++ b/scripts/system/html/js/SnapshotReview.js @@ -293,19 +293,25 @@ function addImage(image_data, isLoggedIn, canShare, isGifLoading, isShowingPrevi isGif = img.src.split('.').pop().toLowerCase() === "gif"; imageContainer.appendChild(img); document.getElementById("snapshot-images").appendChild(imageContainer); - paths.push(image_data.localPath); - if (isGif) { - imageContainer.innerHTML += 'GIF'; - } - if (!isGifLoading) { - appendShareBar(id, isLoggedIn, canShare, isGif, blastButtonDisabled, hifiButtonDisabled, canBlast); - } - if (!isGifLoading || (isShowingPreviousImages && !image_data.story_id)) { - shareForUrl(id); - } - if (isShowingPreviousImages && isLoggedIn && image_data.story_id) { - updateShareInfo(id, image_data.story_id); - } + img.onload = function () { + paths.push(image_data.localPath); + if (isGif) { + imageContainer.innerHTML += 'GIF'; + } + if (!isGifLoading) { + appendShareBar(id, isLoggedIn, canShare, isGif, blastButtonDisabled, hifiButtonDisabled, canBlast); + } + if (!isGifLoading || (isShowingPreviousImages && !image_data.story_id)) { + shareForUrl(id); + } + if (isShowingPreviousImages && isLoggedIn && image_data.story_id) { + updateShareInfo(id, image_data.story_id); + } + }; + img.onerror = function () { + img.onload = null; + img.src = image_data.errorPath; + }; } function showConfirmationMessage(selectedID, destination) { if (selectedID.id) { diff --git a/scripts/system/snapshot.js b/scripts/system/snapshot.js index 4c661482fc..1c257cfed5 100644 --- a/scripts/system/snapshot.js +++ b/scripts/system/snapshot.js @@ -273,7 +273,8 @@ function fillImageDataFromPrevious() { localPath: previousStillSnapPath, story_id: previousStillSnapStoryID, blastButtonDisabled: previousStillSnapBlastingDisabled, - hifiButtonDisabled: previousStillSnapHifiSharingDisabled + hifiButtonDisabled: previousStillSnapHifiSharingDisabled, + errorPath: Script.resolvePath(Script.resourcesPath() + 'snapshot/img/no-image.jpg') }); } if (previousAnimatedSnapPath !== "") { @@ -281,7 +282,8 @@ function fillImageDataFromPrevious() { localPath: previousAnimatedSnapPath, story_id: previousAnimatedSnapStoryID, blastButtonDisabled: previousAnimatedSnapBlastingDisabled, - hifiButtonDisabled: previousAnimatedSnapHifiSharingDisabled + hifiButtonDisabled: previousAnimatedSnapHifiSharingDisabled, + errorPath: Script.resolvePath(Script.resourcesPath() + 'snapshot/img/no-image.jpg') }); } } From 7b69a5dbd5f66dc383376d154c3bd5412292681b Mon Sep 17 00:00:00 2001 From: Patrick Manalich Date: Wed, 31 May 2017 10:46:04 -0700 Subject: [PATCH 147/357] Changed the DEFAULT_DISCOVERABILITY_MODE to Connections --- interface/src/DiscoverabilityManager.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/src/DiscoverabilityManager.cpp b/interface/src/DiscoverabilityManager.cpp index 36f6d8633e..94fdacb5c0 100644 --- a/interface/src/DiscoverabilityManager.cpp +++ b/interface/src/DiscoverabilityManager.cpp @@ -25,7 +25,7 @@ #include -const Discoverability::Mode DEFAULT_DISCOVERABILITY_MODE = Discoverability::Friends; +const Discoverability::Mode DEFAULT_DISCOVERABILITY_MODE = Discoverability::Connections; DiscoverabilityManager::DiscoverabilityManager() : _mode("discoverabilityMode", DEFAULT_DISCOVERABILITY_MODE) From 5c5aaf3254757d320022b3136194b94b7d0e618f Mon Sep 17 00:00:00 2001 From: Thijs Wenker Date: Wed, 31 May 2017 20:18:42 +0200 Subject: [PATCH 148/357] Fix hidden dynamic property whenever the item is clone-able / DRYing propertyUpdates --- scripts/system/html/js/entityProperties.js | 186 +++++++-------------- 1 file changed, 60 insertions(+), 126 deletions(-) diff --git a/scripts/system/html/js/entityProperties.js b/scripts/system/html/js/entityProperties.js index e000e14aec..f2873954ed 100644 --- a/scripts/system/html/js/entityProperties.js +++ b/scripts/system/html/js/entityProperties.js @@ -82,11 +82,23 @@ function showElements(els, show) { } } +function updateProperty(propertyName, propertyValue) { + var properties = {}; + properties[propertyName] = propertyValue; + updateProperties(properties); +} + +function updateProperties(properties) { + EventBridge.emitWebEvent(JSON.stringify({ + id: lastEntityID, + type: "update", + properties: properties + })); +} + function createEmitCheckedPropertyUpdateFunction(propertyName) { return function() { - EventBridge.emitWebEvent( - '{"id":' + lastEntityID + ', "type":"update", "properties":{"' + propertyName + '":' + this.checked + '}}' - ); + updateProperty(propertyName, this.checked); }; } @@ -105,13 +117,7 @@ function createEmitGroupCheckedPropertyUpdateFunction(group, propertyName) { var properties = {}; properties[group] = {}; properties[group][propertyName] = this.checked; - EventBridge.emitWebEvent( - JSON.stringify({ - id: lastEntityID, - type: "update", - properties: properties - }) - ); + updateProperties(properties); }; } @@ -119,10 +125,7 @@ function createEmitNumberPropertyUpdateFunction(propertyName, decimals) { decimals = decimals == undefined ? 4 : decimals; return function() { var value = parseFloat(this.value).toFixed(decimals); - - EventBridge.emitWebEvent( - '{"id":' + lastEntityID + ', "type":"update", "properties":{"' + propertyName + '":' + value + '}}' - ); + updateProperty(propertyName, value); }; } @@ -131,28 +134,14 @@ function createEmitGroupNumberPropertyUpdateFunction(group, propertyName) { var properties = {}; properties[group] = {}; properties[group][propertyName] = this.value; - EventBridge.emitWebEvent( - JSON.stringify({ - id: lastEntityID, - type: "update", - properties: properties, - }) - ); + updateProperties(properties); }; } function createEmitTextPropertyUpdateFunction(propertyName) { return function() { - var properties = {}; - properties[propertyName] = this.value; - EventBridge.emitWebEvent( - JSON.stringify({ - id: lastEntityID, - type: "update", - properties: properties, - }) - ); + updateProperty(propertyName, this.value); }; } @@ -161,62 +150,44 @@ function createEmitGroupTextPropertyUpdateFunction(group, propertyName) { var properties = {}; properties[group] = {}; properties[group][propertyName] = this.value; - EventBridge.emitWebEvent( - JSON.stringify({ - id: lastEntityID, - type: "update", - properties: properties, - }) - ); + updateProperties(properties); }; } function createEmitVec3PropertyUpdateFunction(property, elX, elY, elZ) { return function() { - var data = { - id: lastEntityID, - type: "update", - properties: {} - }; - data.properties[property] = { + var properties = {}; + properties[property] = { x: elX.value, y: elY.value, z: elZ.value, }; - EventBridge.emitWebEvent(JSON.stringify(data)); + updateProperties(properties); } }; function createEmitGroupVec3PropertyUpdateFunction(group, property, elX, elY, elZ) { return function() { - var data = { - id: lastEntityID, - type: "update", - properties: {} - }; - data.properties[group] = {}; - data.properties[group][property] = { + var properties = {}; + properties[group] = {}; + properties[group][property] = { x: elX.value, y: elY.value, z: elZ ? elZ.value : 0, }; - EventBridge.emitWebEvent(JSON.stringify(data)); + updateProperties(properties); } }; function createEmitVec3PropertyUpdateFunctionWithMultiplier(property, elX, elY, elZ, multiplier) { return function() { - var data = { - id: lastEntityID, - type: "update", - properties: {} - }; - data.properties[property] = { + var properties = {}; + properties[property] = { x: elX.value * multiplier, y: elY.value * multiplier, z: elZ.value * multiplier, }; - EventBridge.emitWebEvent(JSON.stringify(data)); + updateProperties(properties); } }; @@ -227,44 +198,35 @@ function createEmitColorPropertyUpdateFunction(property, elRed, elGreen, elBlue) }; function emitColorPropertyUpdate(property, red, green, blue, group) { - var data = { - id: lastEntityID, - type: "update", - properties: {} - }; + var properties = {}; if (group) { - data.properties[group] = {}; - data.properties[group][property] = { + properties[group] = {}; + properties[group][property] = { red: red, green: green, blue: blue, }; } else { - data.properties[property] = { + properties[property] = { red: red, green: green, blue: blue, }; } - EventBridge.emitWebEvent(JSON.stringify(data)); + updateProperties(properties); }; function createEmitGroupColorPropertyUpdateFunction(group, property, elRed, elGreen, elBlue) { return function() { - var data = { - id: lastEntityID, - type: "update", - properties: {} - }; - data.properties[group] = {}; - - data.properties[group][property] = { + var properties = {}; + properties[group] = {}; + properties[group][property] = { red: elRed.value, green: elGreen.value, blue: elBlue.value, }; - EventBridge.emitWebEvent(JSON.stringify(data)); + updateProperties(properties); } }; @@ -277,18 +239,7 @@ function updateCheckedSubProperty(propertyName, propertyValue, subPropertyElemen // We've unchecked, so remove propertyValue = propertyValue.replace(subPropertyString + ",", ""); } - - var _properties = {} - _properties[propertyName] = propertyValue; - - EventBridge.emitWebEvent( - JSON.stringify({ - id: lastEntityID, - type: "update", - properties: _properties - }) - ); - + updateProperty(propertyName, propertyValue); } function setUserDataFromEditor(noUpdate) { @@ -314,18 +265,11 @@ function setUserDataFromEditor(noUpdate) { ); return; } else { - EventBridge.emitWebEvent( - JSON.stringify({ - id: lastEntityID, - type: "update", - properties: { - userData: text - }, - }) - ); + updateProperty('userData', text); } } } + function multiDataUpdater(groupName, updateKeyPair, userDataElement, defaults) { var properties = {}; var parsedData = {}; @@ -372,13 +316,7 @@ function multiDataUpdater(groupName, updateKeyPair, userDataElement, defaults) { userDataElement.value = properties['userData']; - EventBridge.emitWebEvent( - JSON.stringify({ - id: lastEntityID, - type: "update", - properties: properties, - }) - ); + updateProperties(properties); } function userDataChanger(groupName, keyName, values, userDataElement, defaultValue) { var val = {}, def = {}; @@ -900,7 +838,6 @@ function loaded() { elCloneable.checked = parsedUserData["grabbableKey"].cloneable; elCloneableGroup.style.display = elCloneable.checked ? "block": "none"; elCloneableDynamic.checked = parsedUserData["grabbableKey"].cloneDynamic ? parsedUserData["grabbableKey"].cloneDynamic : properties.dynamic; - elDynamic.checked = elCloneable.checked ? false: properties.dynamic; if (elCloneable.checked) { if ("cloneLifetime" in parsedUserData["grabbableKey"]) { elCloneableLifetime.value = parsedUserData["grabbableKey"].cloneLifetime ? parsedUserData["grabbableKey"].cloneLifetime : 300; @@ -1202,8 +1139,8 @@ function loaded() { }); elGrabbable.addEventListener('change', function() { - if(elCloneable.checked) { - elGrabbable.checked = false; + if (elCloneable.checked) { + elGrabbable.checked = false; } userDataChanger("grabbableKey", "grabbable", elGrabbable, elUserData, properties.dynamic); }); @@ -1213,17 +1150,22 @@ function loaded() { elCloneable.addEventListener('change', function (event) { var checked = event.target.checked; if (checked) { - multiDataUpdater("grabbableKey", - {cloneLifetime: elCloneableLifetime, cloneLimit: elCloneableLimit, cloneDynamic: elCloneableDynamic, cloneable: event.target}, - elUserData, {}); + multiDataUpdater("grabbableKey", { + cloneLifetime: elCloneableLifetime, + cloneLimit: elCloneableLimit, + cloneDynamic: elCloneableDynamic, + cloneable: event.target, + grabbable: null + }, elUserData, {}); elCloneableGroup.style.display = "block"; - EventBridge.emitWebEvent( - '{"id":' + lastEntityID + ', "type":"update", "properties":{"dynamic":false, "grabbable": false}}' - ); + updateProperty('dynamic', false); } else { - multiDataUpdater("grabbableKey", - {cloneLifetime: null, cloneLimit: null, cloneDynamic: null, cloneable: false}, - elUserData, {}); + multiDataUpdater("grabbableKey", { + cloneLifetime: null, + cloneLimit: null, + cloneDynamic: null, + cloneable: false + }, elUserData, {}); elCloneableGroup.style.display = "none"; } }); @@ -1258,15 +1200,7 @@ function loaded() { showUserDataTextArea(); showNewJSONEditorButton(); hideSaveUserDataButton(); - var properties = {}; - properties['userData'] = elUserData.value; - EventBridge.emitWebEvent( - JSON.stringify({ - id: lastEntityID, - type: "update", - properties: properties, - }) - ); + updateProperty('userData', elUserData.value) }); elSaveUserData.addEventListener("click", function() { From 6edc6b2756eb99f37d090c0d1624535aaa5a453e Mon Sep 17 00:00:00 2001 From: Chris Howe Date: Wed, 31 May 2017 15:05:43 -0400 Subject: [PATCH 149/357] WL21317 New MyAvatar functions to support converting from avatar joint space to world space and vice versa. Added some tests to support these functions. --- interface/src/avatar/MyAvatar.cpp | 109 ++++++++++++++++++++++++ interface/src/avatar/MyAvatar.h | 13 +++ scripts/avatarToWorldTests.js | 127 ++++++++++++++++++++++++++++ scripts/worldToAvatarTests.js | 134 ++++++++++++++++++++++++++++++ 4 files changed, 383 insertions(+) create mode 100644 scripts/avatarToWorldTests.js create mode 100644 scripts/worldToAvatarTests.js diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index 9996df2afc..a24a737301 100755 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -773,6 +773,115 @@ controller::Pose MyAvatar::getRightHandTipPose() const { return pose; } + +//////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////// +//:1P: conversion functions for world-space to avatar-space or vice versa +glm::vec3 MyAvatar::worldToAvatarPoint(const glm::vec3& position, const int jointIndex) const +{ + glm::vec3 jointPos = getPosition();//default value if no or invalid joint specified + glm::quat jointRot = getRotation();//default value if no or invalid joint specified + if (jointIndex != -1) + { + if (!_skeletonModel->getJointPositionInWorldFrame(jointIndex, jointPos)) + { + qWarning() << "Invalid joint index specified: " << jointIndex; + } + if (!_skeletonModel->getJointRotationInWorldFrame(jointIndex, jointRot)) + { + qWarning() << "Invalid joint index specified: " << jointIndex; + } + } + glm::vec3 modelOffset = position - jointPos; + glm::vec3 modelPosition = glm::inverse(jointRot) * modelOffset; + + return modelPosition; +} + +glm::vec3 MyAvatar::worldToAvatarDirection(const glm::vec3& worldDir, const int jointIndex) const +{ + glm::quat jointRot = getRotation();//default value if no or invalid joint specified + if (jointIndex != -1) + { + if (!_skeletonModel->getJointRotationInWorldFrame(jointIndex, jointRot)) + { + qWarning() << "Invalid joint index specified: " << jointIndex; + } + } + + glm::vec3 avatarDir = glm::inverse(jointRot) * worldDir; + return avatarDir; +} + +glm::quat MyAvatar::worldToAvatarRotation(const glm::quat& worldRot, const int jointIndex) const +{ + glm::quat jointRot = getRotation();//default value if no or invalid joint specified + if (jointIndex != -1) + { + if (!_skeletonModel->getJointRotationInWorldFrame(jointIndex, jointRot)) + { + qWarning() << "Invalid joint index specified: " << jointIndex; + } + } + glm::quat avatarRot = glm::inverse(jointRot) * worldRot; + return avatarRot; +} + +glm::vec3 MyAvatar::avatarToWorldPoint(const glm::vec3& avatarPos, const int jointIndex) const +{ + glm::vec3 jointPos = getPosition();//default value if no or invalid joint specified + glm::quat jointRot = getRotation();//default value if no or invalid joint specified + + if (jointIndex != -1) + { + if (!_skeletonModel->getJointPositionInWorldFrame(jointIndex, jointPos)) + { + qWarning() << "Invalid joint index specified: " << jointIndex; + } + if (!_skeletonModel->getJointRotationInWorldFrame(jointIndex, jointRot)) + { + qWarning() << "Invalid joint index specified: " << jointIndex; + } + } + + glm::vec3 worldOffset = jointRot * avatarPos; + glm::vec3 worldPos = jointPos + worldOffset; + + return worldPos; +} + +glm::vec3 MyAvatar::avatarToWorldDirection(const glm::vec3& avatarDir, const int jointIndex) const +{ + glm::quat jointRot = getRotation();//default value if no or invalid joint specified + if (jointIndex != -1) + { + if (!_skeletonModel->getJointRotationInWorldFrame(jointIndex, jointRot)) + { + qWarning() << "Invalid joint index specified: " << jointIndex; + } + } + glm::vec3 worldDir = jointRot * avatarDir; + return worldDir; +} + +glm::quat MyAvatar::avatarToWorldRotation(const glm::quat& avatarRot, const int jointIndex) const +{ + glm::quat jointRot = getRotation();//default value if no or invalid joint specified + if (jointIndex != -1) + { + if (!_skeletonModel->getJointRotationInWorldFrame(jointIndex, jointRot)) + { + qWarning() << "Invalid joint index specified: " << jointIndex; + } + } + glm::quat worldRot = jointRot * avatarRot; + return worldRot; +} +//////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////// + + + // virtual void MyAvatar::render(RenderArgs* renderArgs) { // don't render if we've been asked to disable local rendering diff --git a/interface/src/avatar/MyAvatar.h b/interface/src/avatar/MyAvatar.h index fde350a43e..a4c9f19316 100644 --- a/interface/src/avatar/MyAvatar.h +++ b/interface/src/avatar/MyAvatar.h @@ -379,6 +379,19 @@ public: Q_INVOKABLE controller::Pose getLeftHandTipPose() const; Q_INVOKABLE controller::Pose getRightHandTipPose() const; + //////////////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////////////// + //:1P: world-space to avatar-space rigconversion functions + Q_INVOKABLE glm::vec3 worldToAvatarPoint(const glm::vec3& position, const int jointIndex = -1) const; + Q_INVOKABLE glm::vec3 worldToAvatarDirection(const glm::vec3& direction, const int jointIndex = -1) const; + Q_INVOKABLE glm::quat worldToAvatarRotation(const glm::quat& rotation, const int jointIndex = -1) const; + + Q_INVOKABLE glm::vec3 avatarToWorldPoint(const glm::vec3& position, const int jointIndex = -1) const; + Q_INVOKABLE glm::vec3 avatarToWorldDirection(const glm::vec3& direction, const int jointIndex = -1) const; + Q_INVOKABLE glm::quat avatarToWorldRotation(const glm::quat& rotation, const int jointIndex = -1) const; + //////////////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////////////// + AvatarWeakPointer getLookAtTargetAvatar() const { return _lookAtTargetAvatar; } void updateLookAtTargetAvatar(); void clearLookAtTargetAvatar(); diff --git a/scripts/avatarToWorldTests.js b/scripts/avatarToWorldTests.js new file mode 100644 index 0000000000..35e9cc59eb --- /dev/null +++ b/scripts/avatarToWorldTests.js @@ -0,0 +1,127 @@ +var AVATAR_SELF_ID = "{00000000-0000-0000-0000-000000000001}"; + +var debugSphereBaseProperties = { + type: "Sphere", + dimensions: { x: 0.2, y: 0.2, z: 0.2 }, + dynamic: false, + collisionless: true, + gravity: { x: 0, y: 0, z: 0 }, + lifetime: 10.0, + userData: "{ \"grabbableKey\": { \"grabbable\": false, \"kinematic\": false } }" +}; + +var debugBoxBaseProperties = { + type: "Box", + dimensions: { x: 0.2, y: 0.2, z: 0.2 }, + dynamic: false, + collisionless: true, + gravity: { x: 0, y: 0, z: 0 }, + lifetime: 10.0, + userData: "{ \"grabbableKey\": { \"grabbable\": false, \"kinematic\": false } }" +}; + +//avatarToWorldPoint +// create sphere for finger on left hand +// each frame, calculate world position of finger, with some offset +// update sphere to match this position +var avatarToWorldPointTest_sphereEntity; +function avatarToWorldPointTest() { + var jointIndex = MyAvatar.getJointIndex("LeftHandPinky4"); + var jointOffset_WorldSpace = { x: 0.1, y: 0, z: 0 }; + var worldPos = MyAvatar.avatarToWorldPoint(jointOffset_WorldSpace, jointIndex); + + var jointSphereProps = Object.create(debugSphereBaseProperties); + jointSphereProps.name = "avatarToWorldPointTest_Sphere"; + jointSphereProps.color = { blue: 240, green: 150, red: 150 }; + jointSphereProps.position = worldPos; + avatarToWorldPointTest_sphereEntity = Entities.addEntity(jointSphereProps); +} +function avatarToWorldPointTest_update(deltaTime) { + var jointIndex = MyAvatar.getJointIndex("LeftHandPinky4"); + var jointOffset_WorldSpace = { x: 0.1, y: 0, z: 0 }; + var worldPos = MyAvatar.avatarToWorldPoint(jointOffset_WorldSpace, jointIndex); + var newProperties = { position: worldPos }; + Entities.editEntity(avatarToWorldPointTest_sphereEntity, newProperties); +} + +//avatarToWorldDirection +// create line in world space +// each frame calculate world space direction of players head z axis +// update line to match +var avatarToWorldDirectionTest_lineEntity; +function avatarToWorldDirectionTest() { + var jointIndex = MyAvatar.getJointIndex("Head"); + var avatarPos = MyAvatar.getJointPosition(jointIndex); + + var jointDir = { x: 1, y: 0, z: 1 }; + var worldDir = MyAvatar.avatarToWorldDirection(jointDir, jointIndex); + print(worldDir.x); + print(worldDir.y); + print(worldDir.z); + avatarToWorldDirectionTest_lineEntity = Entities.addEntity({ + type: "Line", + color: {red: 250, green: 0, blue: 0}, + dimensions: {x: 5, y: 5, z: 5}, + lifetime: 10.0, + linePoints: [{ + x: 0, + y: 0, + z: 0 + }, worldDir + ], + position : avatarPos, + }); +} +function avatarToWorldDirection_update(deltaTime) { + var jointIndex = MyAvatar.getJointIndex("Head"); + var avatarPos = MyAvatar.getJointPosition(jointIndex); + var jointDir = { x: 1, y: 0, z: 0 }; + var worldDir = MyAvatar.avatarToWorldDirection(jointDir, jointIndex); + var newProperties = { + linePoints: [{ + x: 0, + y: 0, + z: 0 + }, worldDir + ], + position : avatarPos + }; + + Entities.editEntity(avatarToWorldDirectionTest_lineEntity, newProperties); +} + +//avatarToWorldRotation +// create box in world space +// each frame calculate world space rotation of players head +// update box rotation to match +var avatarToWorldRotationTest_boxEntity; +function avatarToWorldRotationTest() { + var jointIndex = MyAvatar.getJointIndex("Head"); + var jointPosition_WorldSpace = MyAvatar.getJointPosition(jointIndex); + var jointRot = MyAvatar.getJointRotation(jointIndex); + var jointRot_WorldSpace = MyAvatar.avatarToWorldRotation(jointRot, jointIndex); + + var boxProps = Object.create(debugBoxBaseProperties); + boxProps.name = "avatarToWorldRotationTest_Box"; + boxProps.color = { blue: 250, green: 250, red: 250 }; + boxProps.position = jointPosition_WorldSpace; + boxProps.rotation = jointRot_WorldSpace; + avatarToWorldRotationTest_boxEntity = Entities.addEntity(boxProps); +} +function avatarToWorldRotationTest_update(deltaTime) { + var jointIndex = MyAvatar.getJointIndex("Head"); + var jointPosition_WorldSpace = MyAvatar.getJointPosition(jointIndex); + var jointRot = MyAvatar.getJointRotation(jointIndex); + var jointRot_WorldSpace = MyAvatar.avatarToWorldRotation(jointRot, jointIndex); + var newProperties = { position: jointPosition_WorldSpace, rotation: jointRot_WorldSpace }; + Entities.editEntity(avatarToWorldRotationTest_boxEntity, newProperties); +} + +avatarToWorldPointTest(); +Script.update.connect(avatarToWorldPointTest_update); + +avatarToWorldDirectionTest(); +Script.update.connect(avatarToWorldDirection_update); + +avatarToWorldRotationTest(); +Script.update.connect(avatarToWorldRotationTest_update); diff --git a/scripts/worldToAvatarTests.js b/scripts/worldToAvatarTests.js new file mode 100644 index 0000000000..d860517a22 --- /dev/null +++ b/scripts/worldToAvatarTests.js @@ -0,0 +1,134 @@ +var AVATAR_SELF_ID = "{00000000-0000-0000-0000-000000000001}"; + +var debugSphereBaseProperties = { + type: "Sphere", + dimensions: { x: 0.2, y: 0.2, z: 0.2 }, + dynamic: false, + collisionless: true, + gravity: { x: 0, y: 0, z: 0 }, + lifetime: 10.0, + userData: "{ \"grabbableKey\": { \"grabbable\": false, \"kinematic\": false } }" +}; + +var debugBoxBaseProperties = { + type: "Box", + dimensions: { x: 0.2, y: 0.2, z: 0.2 }, + dynamic: false, + collisionless: true, + gravity: { x: 0, y: 0, z: 0 }, + lifetime: 10.0, + userData: "{ \"grabbableKey\": { \"grabbable\": false, \"kinematic\": false } }" +}; + +//worldToAvatarPoint +// calculate position offset from joint using getJointPosition +// pass through worldToAvatarPoint to get offset in joint space of players joint +// create a blue sphere and attach it to players joint using the joint space offset +// The two spheres should appear in the same place, but the blue sphere will follow the avatar +function worldToAvatarPointTest() { + var jointIndex = MyAvatar.getJointIndex("LeftHandPinky4"); + var avatarPos = MyAvatar.position; + + var jointPosition_WorldSpace = MyAvatar.getJointPosition(jointIndex); + var jointOffset_WorldSpace = { x: 0.1, y: 0, z: 0 }; + var jointPosition_WorldSpaceOffset = Vec3.sum(jointPosition_WorldSpace, jointOffset_WorldSpace); + var jointPosition_JointSpaceOffset = MyAvatar.worldToAvatarPoint(jointPosition_WorldSpaceOffset, jointIndex); + + var jointSphereProps = Object.create(debugSphereBaseProperties); + jointSphereProps.name = "worldToAvatarPointTest_Joint"; + jointSphereProps.color = { blue: 240, green: 150, red: 150 }; + jointSphereProps.localPosition = jointPosition_JointSpaceOffset; + jointSphereProps.parentID = AVATAR_SELF_ID; + jointSphereProps.parentJointIndex = jointIndex; + Entities.addEntity(jointSphereProps); + + var worldSphereProps = Object.create(debugSphereBaseProperties); + worldSphereProps.name = "worldToAvatarPointTest_World"; + worldSphereProps.color = { blue: 150, green: 250, red: 150 }; + worldSphereProps.position = jointPosition_WorldSpaceOffset; + Entities.addEntity(worldSphereProps); +} + +//worldToAvatarDirection +// create line and attach to avatars head +// each frame calculate direction of world x axis in joint space of players head +// update arrow orientation to match +var worldToAvatarDirectionTest_lineEntity; +function worldToAvatarDirectionTest() { + var jointIndex = MyAvatar.getJointIndex("Head"); + + var jointPosition_WorldSpace = MyAvatar.getJointPosition(jointIndex); + var jointOffset_WorldSpace = { x: 0, y: 0, z: 0 }; + var jointPosition_WorldSpaceOffset = Vec3.sum(jointPosition_WorldSpace, jointOffset_WorldSpace); + var jointPosition_JointSpaceOffset = MyAvatar.worldToAvatarPoint(jointPosition_WorldSpaceOffset, jointIndex); + + var worldDir = { x: 1, y: 0, z: 0 }; + var avatarDir = MyAvatar.worldToAvatarDirection(worldDir, jointIndex); + + worldToAvatarDirectionTest_lineEntity = Entities.addEntity({ + type: "Line", + color: {red: 200, green: 250, blue: 0}, + dimensions: {x: 5, y: 5, z: 5}, + lifetime: 10.0, + linePoints: [{ + x: 0, + y: 0, + z: 0 + }, avatarDir + ], + localPosition : jointOffset_WorldSpace, + parentID : AVATAR_SELF_ID, + parentJointIndex : jointIndex + }); +} + +function worldToAvatarDirectionTest_update(deltaTime) { + var jointIndex = MyAvatar.getJointIndex("Head"); + var worldDir = { x: 1, y: 0, z: 0 }; + var avatarDir = MyAvatar.worldToAvatarDirection(worldDir, jointIndex); + var newProperties = { linePoints: [{ + x: 0, + y: 0, + z: 0 + }, avatarDir + ]}; + + Entities.editEntity(worldToAvatarDirectionTest_lineEntity, newProperties); +} + +//worldToAvatarRotation +// create box and parent to some player joint +// convert world identity rotation to joint space rotation +// each frame, update box with new orientation +var worldToAvatarRotationTest_boxEntity; +function worldToAvatarRotationTest() { + var jointIndex = MyAvatar.getJointIndex("RightHandPinky4"); + var avatarPos = MyAvatar.position; + + var jointPosition_WorldSpace = MyAvatar.getJointPosition(jointIndex); + var jointOffset_WorldSpace = { x: 0.0, y: 0, z: 0 }; + var jointPosition_WorldSpaceOffset = Vec3.sum(jointPosition_WorldSpace, jointOffset_WorldSpace); + var jointPosition_JointSpaceOffset = MyAvatar.worldToAvatarPoint(jointPosition_WorldSpaceOffset, jointIndex); + + var jointBoxProps = Object.create(debugBoxBaseProperties); + jointBoxProps.name = "worldToAvatarRotationTest_Box"; + jointBoxProps.color = { blue: 0, green: 0, red: 250 }; + jointBoxProps.localPosition = jointPosition_JointSpaceOffset; + jointBoxProps.parentID = AVATAR_SELF_ID; + jointBoxProps.parentJointIndex = jointIndex; + worldToAvatarRotationTest_boxEntity = Entities.addEntity(jointBoxProps); +} +function worldToAvatarRotationTest_update(deltaTime) { + var jointIndex = MyAvatar.getJointIndex("RightHandPinky4"); + var worldRot = Quat.fromPitchYawRollDegrees(0,0,0); + var avatarRot = MyAvatar.worldToAvatarRotation(worldRot, jointIndex); + var newProperties = { localRotation: avatarRot }; + Entities.editEntity(worldToAvatarRotationTest_boxEntity, newProperties); +} + +worldToAvatarPointTest(); +worldToAvatarDirectionTest(); +worldToAvatarRotationTest(); + +Script.update.connect(worldToAvatarDirectionTest_update); +Script.update.connect(worldToAvatarRotationTest_update); From e1700915f7adf668f3a048d9123900e4a1d29dc4 Mon Sep 17 00:00:00 2001 From: David Kelly Date: Wed, 31 May 2017 13:28:57 -0700 Subject: [PATCH 150/357] remove extra activity logger call --- scripts/system/makeUserConnection.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/scripts/system/makeUserConnection.js b/scripts/system/makeUserConnection.js index 37a334bd70..d95ad919b6 100644 --- a/scripts/system/makeUserConnection.js +++ b/scripts/system/makeUserConnection.js @@ -613,7 +613,6 @@ error = "All participants must be logged in to connect."; } result = error ? {status: 'error', connection: error} : response; - UserActivityLogger.makeUserConnection(connectingId, false, error || response); connectionRequestCompleted(); } else { result = response; @@ -668,8 +667,8 @@ // to be sure the hand is still close enough. If not, we terminate // the interval, go back to the waiting state. If we make it // the entire CONNECTING_TIME, we make the connection. We pass in - // whether or not the connecting id is actually logged in, as now we - // will allow to start the connection process but have it stop with a + // whether or not the connecting id is actually logged in, as now we + // will allow to start the connection process but have it stop with a // fail message before trying to call the backend if the other guy isn't // logged in. function startConnecting(id, jointIndex, isLoggedIn) { From a77491ccb1128679fbe92f47d8caa9eb75b08b80 Mon Sep 17 00:00:00 2001 From: Brad Davis Date: Thu, 25 May 2017 10:33:34 -0700 Subject: [PATCH 151/357] FileCache refactoring and tests --- libraries/networking/src/FileCache.cpp | 173 +++++++++++++++------- libraries/networking/src/FileCache.h | 52 ++++--- libraries/shared/src/NumericalConstants.h | 3 + tests/networking/src/FileCacheTests.cpp | 170 +++++++++++++++++++++ tests/networking/src/FileCacheTests.h | 30 ++++ 5 files changed, 353 insertions(+), 75 deletions(-) create mode 100644 tests/networking/src/FileCacheTests.cpp create mode 100644 tests/networking/src/FileCacheTests.h diff --git a/libraries/networking/src/FileCache.cpp b/libraries/networking/src/FileCache.cpp index 8f3509d8f3..6cb8cd8f7c 100644 --- a/libraries/networking/src/FileCache.cpp +++ b/libraries/networking/src/FileCache.cpp @@ -11,52 +11,81 @@ #include "FileCache.h" -#include -#include -#include -#include -#include -#include +#include +#include +#include + +#include +#include +#include +#include #include +#include +#ifdef Q_OS_WIN +#include +#else +#include +#endif + +#ifdef NDEBUG Q_LOGGING_CATEGORY(file_cache, "hifi.file_cache", QtWarningMsg) - +#else +Q_LOGGING_CATEGORY(file_cache, "hifi.file_cache") +#endif using namespace cache; -static const std::string MANIFEST_NAME = "manifest"; +static const char DIR_SEP = '/'; +static const char EXT_SEP = '.'; -static const size_t BYTES_PER_MEGABYTES = 1024 * 1024; -static const size_t BYTES_PER_GIGABYTES = 1024 * BYTES_PER_MEGABYTES; -const size_t FileCache::DEFAULT_UNUSED_MAX_SIZE = 5 * BYTES_PER_GIGABYTES; // 5GB -const size_t FileCache::MAX_UNUSED_MAX_SIZE = 100 * BYTES_PER_GIGABYTES; // 100GB -const size_t FileCache::DEFAULT_OFFLINE_MAX_SIZE = 2 * BYTES_PER_GIGABYTES; // 2GB +const size_t FileCache::DEFAULT_MAX_SIZE { GB_TO_BYTES(5) }; +const size_t FileCache::MAX_MAX_SIZE { GB_TO_BYTES(100) }; +const size_t FileCache::DEFAULT_MIN_FREE_STORAGE_SPACE { GB_TO_BYTES(1) }; -void FileCache::setUnusedFileCacheSize(size_t unusedFilesMaxSize) { - _unusedFilesMaxSize = std::min(unusedFilesMaxSize, MAX_UNUSED_MAX_SIZE); - reserve(0); + +std::string getCacheName(const std::string& dirname_str) { + QString dirname { dirname_str.c_str() }; + QDir dir(dirname); + if (!dir.isAbsolute()) { + return dirname_str; + } + return dir.dirName().toStdString(); +} + +std::string getCachePath(const std::string& dirname_str) { + QString dirname { dirname_str.c_str() }; + QDir dir(dirname); + if (dir.isAbsolute()) { + return dirname_str; + } + return PathUtils::getAppLocalDataFilePath(dirname).toStdString(); +} + +void FileCache::setMinFreeSize(size_t size) { + _minFreeSpaceSize = size; + clean(); emit dirty(); } -void FileCache::setOfflineFileCacheSize(size_t offlineFilesMaxSize) { - _offlineFilesMaxSize = std::min(offlineFilesMaxSize, MAX_UNUSED_MAX_SIZE); +void FileCache::setMaxSize(size_t maxSize) { + _maxSize = std::min(maxSize, MAX_MAX_SIZE); + clean(); + emit dirty(); } FileCache::FileCache(const std::string& dirname, const std::string& ext, QObject* parent) : QObject(parent), _ext(ext), - _dirname(dirname), - _dirpath(PathUtils::getAppLocalDataFilePath(dirname.c_str()).toStdString()) {} + _dirname(getCacheName(dirname)), + _dirpath(getCachePath(dirname)) { +} FileCache::~FileCache() { clear(); } -void fileDeleter(File* file) { - file->deleter(); -} - void FileCache::initialize() { QDir dir(_dirpath.c_str()); @@ -84,7 +113,7 @@ void FileCache::initialize() { } FilePointer FileCache::addFile(Metadata&& metadata, const std::string& filepath) { - FilePointer file(createFile(std::move(metadata), filepath).release(), &fileDeleter); + FilePointer file(createFile(std::move(metadata), filepath).release(), std::mem_fn(&File::deleter)); if (file) { _numTotalFiles += 1; _totalFilesSize += file->getLength(); @@ -141,6 +170,7 @@ FilePointer FileCache::getFile(const Key& key) { if (it != _files.cend()) { file = it->second.lock(); if (file) { + file->touch(); // if it exists, it is active - remove it from the cache removeUnusedFile(file); qCDebug(file_cache, "[%s] Found %s", _dirname.c_str(), key.c_str()); @@ -155,44 +185,74 @@ FilePointer FileCache::getFile(const Key& key) { } std::string FileCache::getFilepath(const Key& key) { - return _dirpath + '/' + key + '.' + _ext; + return _dirpath + DIR_SEP + key + EXT_SEP + _ext; } -void FileCache::addUnusedFile(const FilePointer file) { +void FileCache::addUnusedFile(const FilePointer& file) { { Lock lock(_filesMutex); _files[file->getKey()] = file; } - reserve(file->getLength()); - file->_LRUKey = ++_lastLRUKey; - { Lock lock(_unusedFilesMutex); - _unusedFiles.insert({ file->_LRUKey, file }); + _unusedFiles.insert(file); _numUnusedFiles += 1; _unusedFilesSize += file->getLength(); } + clean(); emit dirty(); } -void FileCache::removeUnusedFile(const FilePointer file) { +void FileCache::removeUnusedFile(const FilePointer& file) { Lock lock(_unusedFilesMutex); - const auto it = _unusedFiles.find(file->_LRUKey); - if (it != _unusedFiles.cend()) { - _unusedFiles.erase(it); + if (_unusedFiles.erase(file)) { _numUnusedFiles -= 1; _unusedFilesSize -= file->getLength(); } } -void FileCache::reserve(size_t length) { +size_t FileCache::getOverbudgetAmount() const { + size_t result = 0; + + size_t currentFreeSpace = QStorageInfo(_dirpath.c_str()).bytesFree(); + if (_minFreeSpaceSize > currentFreeSpace) { + result = _minFreeSpaceSize - currentFreeSpace; + } + + if (_totalFilesSize > _maxSize) { + result = std::max(_totalFilesSize - _maxSize, result); + } + + return result; +} + +namespace cache { + struct FilePointerComparator { + bool operator()(const FilePointer& a, const FilePointer& b) { + return a->_modified > b->_modified; + } + }; +} + +void FileCache::clean() { + size_t overbudgetAmount = getOverbudgetAmount(); + + // Avoid sorting the unused files by LRU if we're not over budget / under free space + if (0 == overbudgetAmount) { + return; + } + Lock unusedLock(_unusedFilesMutex); - while (!_unusedFiles.empty() && - _unusedFilesSize + length > _unusedFilesMaxSize) { - auto it = _unusedFiles.begin(); - auto file = it->second; + using Queue = std::priority_queue, FilePointerComparator>; + Queue queue; + for (const auto& file : _unusedFiles) { + queue.push(file); + } + while (!queue.empty() && overbudgetAmount > 0) { + auto file = queue.top(); + queue.pop(); auto length = file->getLength(); unusedLock.unlock(); @@ -203,34 +263,32 @@ void FileCache::reserve(size_t length) { } unusedLock.lock(); - _unusedFiles.erase(it); + _unusedFiles.erase(file); _numTotalFiles -= 1; _numUnusedFiles -= 1; _totalFilesSize -= length; _unusedFilesSize -= length; + overbudgetAmount -= std::min(length, overbudgetAmount); } } void FileCache::clear() { - Lock unusedFilesLock(_unusedFilesMutex); - for (const auto& pair : _unusedFiles) { - auto& file = pair.second; - file->_cache = nullptr; + // Eliminate any overbudget files + clean(); - if (_totalFilesSize > _offlineFilesMaxSize) { - _totalFilesSize -= file->getLength(); - } else { - file->_shouldPersist = true; - qCDebug(file_cache, "[%s] Persisting %s", _dirname.c_str(), file->getKey().c_str()); - } + // Mark everything remaining as persisted + Lock unusedFilesLock(_unusedFilesMutex); + for (auto& file : _unusedFiles) { + file->_shouldPersist = true; + file->_cache = nullptr; + qCDebug(file_cache, "[%s] Persisting %s", _dirname.c_str(), file->getKey().c_str()); } _unusedFiles.clear(); } void File::deleter() { if (_cache) { - FilePointer self(this, &fileDeleter); - _cache->addUnusedFile(self); + _cache->addUnusedFile(FilePointer(this, std::mem_fn(&File::deleter))); } else { deleteLater(); } @@ -239,7 +297,9 @@ void File::deleter() { File::File(Metadata&& metadata, const std::string& filepath) : _key(std::move(metadata.key)), _length(metadata.length), - _filepath(filepath) {} + _filepath(filepath), + _modified(QFileInfo(_filepath.c_str()).lastRead().toMSecsSinceEpoch()) { +} File::~File() { QFile file(getFilepath().c_str()); @@ -248,3 +308,8 @@ File::~File() { file.remove(); } } + +void File::touch() { + utime(_filepath.c_str(), nullptr); + _modified = std::max(QFileInfo(_filepath.c_str()).lastRead().toMSecsSinceEpoch(), _modified); +} \ No newline at end of file diff --git a/libraries/networking/src/FileCache.h b/libraries/networking/src/FileCache.h index 908ddcd285..040e1ab592 100644 --- a/libraries/networking/src/FileCache.h +++ b/libraries/networking/src/FileCache.h @@ -14,6 +14,7 @@ #include #include #include +#include #include #include #include @@ -35,24 +36,28 @@ class FileCache : public QObject { Q_PROPERTY(size_t sizeTotal READ getSizeTotalFiles NOTIFY dirty) Q_PROPERTY(size_t sizeCached READ getSizeCachedFiles NOTIFY dirty) - static const size_t DEFAULT_UNUSED_MAX_SIZE; - static const size_t MAX_UNUSED_MAX_SIZE; - static const size_t DEFAULT_OFFLINE_MAX_SIZE; + static const size_t DEFAULT_MAX_SIZE; + static const size_t MAX_MAX_SIZE; + static const size_t DEFAULT_MIN_FREE_STORAGE_SPACE; public: + // You can initialize the FileCache with a directory name (ex.: "temp_jpgs") that will be relative to the application local data, OR with a full path + // The file cache will ignore any file that doesn't match the extension provided + FileCache(const std::string& dirname, const std::string& ext, QObject* parent = nullptr); + virtual ~FileCache(); + size_t getNumTotalFiles() const { return _numTotalFiles; } size_t getNumCachedFiles() const { return _numUnusedFiles; } size_t getSizeTotalFiles() const { return _totalFilesSize; } size_t getSizeCachedFiles() const { return _unusedFilesSize; } - void setUnusedFileCacheSize(size_t unusedFilesMaxSize); - size_t getUnusedFileCacheSize() const { return _unusedFilesSize; } + // Set the maximum amount of disk space to use on disk + void setMaxSize(size_t maxCacheSize); - void setOfflineFileCacheSize(size_t offlineFilesMaxSize); - - // initialize FileCache with a directory name (not a path, ex.: "temp_jpgs") and an ext (ex.: "jpg") - FileCache(const std::string& dirname, const std::string& ext, QObject* parent = nullptr); - virtual ~FileCache(); + // Set the minumum amount of free disk space to retain. This supercedes the max size, + // so if the cache is consuming all but 500 MB of the drive, unused entries will be ejected + // to free up more space, regardless of the cache max size + void setMinFreeSize(size_t size); using Key = std::string; struct Metadata { @@ -76,10 +81,11 @@ public: signals: void dirty(); -protected: +public: /// must be called after construction to create the cache on the fs and restore persisted files void initialize(); + // Add file to the cache and return the cache entry. FilePointer writeFile(const char* data, Metadata&& metadata, bool overwrite = false); FilePointer getFile(const Key& key); @@ -95,11 +101,17 @@ private: std::string getFilepath(const Key& key); FilePointer addFile(Metadata&& metadata, const std::string& filepath); - void addUnusedFile(const FilePointer file); - void removeUnusedFile(const FilePointer file); - void reserve(size_t length); + void addUnusedFile(const FilePointer& file); + void removeUnusedFile(const FilePointer& file); + void clean(); void clear(); + size_t getOverbudgetAmount() const; + + // FIXME it might be desirable to have the min free space variable be static so it can be + // shared among multiple instances of FileCache + std::atomic _minFreeSpaceSize { DEFAULT_MIN_FREE_STORAGE_SPACE }; + std::atomic _maxSize { DEFAULT_MAX_SIZE }; std::atomic _numTotalFiles { 0 }; std::atomic _numUnusedFiles { 0 }; std::atomic _totalFilesSize { 0 }; @@ -113,12 +125,8 @@ private: std::unordered_map> _files; Mutex _filesMutex; - std::map _unusedFiles; + std::unordered_set _unusedFiles; Mutex _unusedFilesMutex; - size_t _unusedFilesMaxSize { DEFAULT_UNUSED_MAX_SIZE }; - int _lastLRUKey { 0 }; - - size_t _offlineFilesMaxSize { DEFAULT_OFFLINE_MAX_SIZE }; }; class File : public QObject { @@ -142,13 +150,15 @@ protected: private: friend class FileCache; + friend struct FilePointerComparator; const Key _key; const size_t _length; const std::string _filepath; - FileCache* _cache; - int _LRUKey { 0 }; + void touch(); + FileCache* _cache { nullptr }; + int64_t _modified { 0 }; bool _shouldPersist { false }; }; diff --git a/libraries/shared/src/NumericalConstants.h b/libraries/shared/src/NumericalConstants.h index d37e1e31c5..e2d2409d56 100644 --- a/libraries/shared/src/NumericalConstants.h +++ b/libraries/shared/src/NumericalConstants.h @@ -50,10 +50,13 @@ const int KILO_PER_MEGA = 1000; #define KB_TO_BYTES_SHIFT 10 #define MB_TO_BYTES_SHIFT 20 +#define GB_TO_BYTES_SHIFT 30 +#define GB_TO_BYTES(X) ((size_t)(X) << GB_TO_BYTES_SHIFT) #define MB_TO_BYTES(X) ((size_t)(X) << MB_TO_BYTES_SHIFT) #define KB_TO_BYTES(X) ((size_t)(X) << KB_TO_BYTES_SHIFT) +#define BYTES_TO_GB(X) (X >> GB_TO_BYTES_SHIFT) #define BYTES_TO_MB(X) (X >> MB_TO_BYTES_SHIFT) #define BYTES_TO_KB(X) (X >> KB_TO_BYTES_SHIFT) diff --git a/tests/networking/src/FileCacheTests.cpp b/tests/networking/src/FileCacheTests.cpp new file mode 100644 index 0000000000..0813d05a54 --- /dev/null +++ b/tests/networking/src/FileCacheTests.cpp @@ -0,0 +1,170 @@ +// +// ResoruceTests.cpp +// +// Copyright 2015 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + + +#include "FileCacheTests.h" + +#include + +QTEST_GUILESS_MAIN(FileCacheTests) + +using namespace cache; + +// Limit the file size to 10 MB +static const size_t MAX_UNUSED_SIZE { 1024 * 1024 * 10 }; +static const QByteArray TEST_DATA { 1024 * 1024, '0' }; + +static std::string getFileKey(int i) { + return QString(QByteArray { 1, (char)i }.toHex()).toStdString(); +} + +class TestFile : public File { + using Parent = File; +public: + TestFile(Metadata&& metadata, const std::string& filepath) + : Parent(std::move(metadata), filepath) { + } +}; + +class TestFileCache : public FileCache { + using Parent = FileCache; + +public: + TestFileCache(const std::string& dirname, const std::string& ext, QObject* parent = nullptr) : Parent(dirname, ext, nullptr) { + initialize(); + } + + std::unique_ptr createFile(Metadata&& metadata, const std::string& filepath) override { + qCInfo(file_cache) << "Wrote KTX" << metadata.key.c_str(); + return std::unique_ptr(new TestFile(std::move(metadata), filepath)); + } +}; + +using CachePointer = std::shared_ptr; + +// The FileCache relies on deleteLater to clear unused files, but QTest classes don't run a conventional event loop +// so we need to call this function to force any pending deletes to occur in the File destructor +static void forceDeletes() { + while (QCoreApplication::hasPendingEvents()) { + QCoreApplication::sendPostedEvents(); + QCoreApplication::sendPostedEvents(0, QEvent::DeferredDelete); + QCoreApplication::processEvents(); + } +} + +size_t FileCacheTests::getCacheDirectorySize() const { + size_t result = 0; + QDir dir(_testDir.path()); + for (const auto& file : dir.entryList({ "*.tmp" })) { + result += QFileInfo(dir.absoluteFilePath(file)).size(); + } + return result; +} + +CachePointer makeFileCache(QString& location) { + auto result = std::make_shared(location.toStdString(), "tmp"); + result->setMaxSize(MAX_UNUSED_SIZE); + return result; +} + +void FileCacheTests::initTestCase() { +} + +void FileCacheTests::testUnusedFiles() { + auto cache = makeFileCache(_testDir.path()); + std::list inUseFiles; + + { + for (int i = 0; i < 100; ++i) { + std::string key = getFileKey(i); + auto file = cache->writeFile(TEST_DATA.data(), TestFileCache::Metadata(key, TEST_DATA.size())); + inUseFiles.push_back(file); + forceDeletes(); + QThread::msleep(10); + } + QCOMPARE(cache->getNumCachedFiles(), (size_t)0); + QCOMPARE(cache->getNumTotalFiles(), (size_t)100); + // Release the in-use files + inUseFiles.clear(); + // Cache state is updated, but the directory state is unchanged, + // because the file deletes are triggered by an event loop + QCOMPARE(cache->getNumCachedFiles(), (size_t)10); + QCOMPARE(cache->getNumTotalFiles(), (size_t)10); + QVERIFY(getCacheDirectorySize() > MAX_UNUSED_SIZE); + forceDeletes(); + QCOMPARE(cache->getNumCachedFiles(), (size_t)10); + QCOMPARE(cache->getNumTotalFiles(), (size_t)10); + QVERIFY(getCacheDirectorySize() <= MAX_UNUSED_SIZE); + } + + // Reset the cache + cache = makeFileCache(_testDir.path()); + { + // Test files 0 to 89 are missing, because the LRU algorithm deleted them when we released the files + for (int i = 0; i < 90; ++i) { + std::string key = getFileKey(i); + auto file = cache->getFile(key); + QVERIFY(!file.get()); + } + + QThread::msleep(1000); + // Test files 90 to 99 are present + for (int i = 90; i < 100; ++i) { + std::string key = getFileKey(i); + auto file = cache->getFile(key); + QVERIFY(file.get()); + inUseFiles.push_back(file); + // Each access touches the file, so we need to sleep here to ensure that the files are + // spaced out in numeric order, otherwise later tests can't reliably determine the order + // for cache ejection + QThread::msleep(1000); + } + QCOMPARE(cache->getNumCachedFiles(), (size_t)0); + QCOMPARE(cache->getNumTotalFiles(), (size_t)10); + inUseFiles.clear(); + QCOMPARE(cache->getNumCachedFiles(), (size_t)10); + QCOMPARE(cache->getNumTotalFiles(), (size_t)10); + } +} + +size_t FileCacheTests::getFreeSpace() const { + return QStorageInfo(_testDir.path()).bytesFree(); +} + +// FIXME if something else is changing the amount of free space on the target drive concurrently with this test +// running, then it may fail +void FileCacheTests::testFreeSpacePreservation() { + QCOMPARE(getCacheDirectorySize(), MAX_UNUSED_SIZE); + // Set the target free space to slightly above whatever the current free space is... + size_t targetFreeSpace = getFreeSpace() + MAX_UNUSED_SIZE / 2; + + // Reset the cache + auto cache = makeFileCache(_testDir.path()); + // Setting the min free space causes it to eject the oldest files that cause the cache to exceed the minimum space + cache->setMinFreeSize(targetFreeSpace); + QVERIFY(getFreeSpace() < targetFreeSpace); + forceDeletes(); + QCOMPARE(cache->getNumCachedFiles(), (size_t)5); + QCOMPARE(cache->getNumTotalFiles(), (size_t)5); + QVERIFY(getFreeSpace() >= targetFreeSpace); + for (int i = 0; i < 95; ++i) { + std::string key = getFileKey(i); + auto file = cache->getFile(key); + QVERIFY(!file.get()); + } + for (int i = 95; i < 100; ++i) { + std::string key = getFileKey(i); + auto file = cache->getFile(key); + QVERIFY(file.get()); + } +} + +void FileCacheTests::cleanupTestCase() { +} + diff --git a/tests/networking/src/FileCacheTests.h b/tests/networking/src/FileCacheTests.h new file mode 100644 index 0000000000..838c15afb8 --- /dev/null +++ b/tests/networking/src/FileCacheTests.h @@ -0,0 +1,30 @@ +// +// ResourceTests.h +// +// Copyright 2015 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +#ifndef hifi_ResourceTests_h +#define hifi_ResourceTests_h + +#include +#include + +class FileCacheTests : public QObject { + Q_OBJECT +private slots: + void initTestCase(); + void testUnusedFiles(); + void testFreeSpacePreservation(); + void cleanupTestCase(); + +private: + size_t getFreeSpace() const; + size_t getCacheDirectorySize() const; + QTemporaryDir _testDir; +}; + +#endif // hifi_ResourceTests_h From e37387f45c4e1f80ac431406dbd332fc0d8c7356 Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Wed, 31 May 2017 14:01:09 -0700 Subject: [PATCH 152/357] sync --- interface/src/Application.cpp | 2 +- interface/src/avatar/MyAvatar.cpp | 18 +++++++++--------- interface/src/avatar/MySkeletonModel.cpp | 3 ++- .../src/scripting/HMDScriptingInterface.cpp | 3 ++- plugins/oculus/src/OculusControllerManager.cpp | 9 ++++----- 5 files changed, 18 insertions(+), 17 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 17f9b03346..13c3605320 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -3992,7 +3992,7 @@ void Application::updateMyAvatarLookAtPosition() { // I am not looking at anyone else, so just look forward if (isHMD) { glm::mat4 worldHMDMat = myAvatar->getSensorToWorldMatrix() * - (glm::mat4)myAvatar->getHeadControllerPoseInSensorFrame(); + (glm::mat4)myAvatar->getHeadControllerPoseInSensorFrame() * Matrices::Y_180; lookAtSpot = transformPoint(worldHMDMat, glm::vec3(0.0f, 0.0f, -TREE_SCALE)); } else { lookAtSpot = myAvatar->getHead()->getEyePosition() + diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index 11c8c5b186..e2aadbc365 100755 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -2328,9 +2328,9 @@ glm::quat MyAvatar::getWorldBodyOrientation() const { glm::mat4 MyAvatar::deriveBodyFromHMDSensor() const { // HMD is in sensor space. - const glm::vec3 hmdPosition = getHeadControllerPoseInSensorFrame(); - const glm::quat hmdOrientation = getHeadControllerPoseInSensorFrame(); - const glm::quat hmdOrientationYawOnly = cancelOutRollAndPitch(hmdOrientation); + const glm::vec3 headPosition = getHeadControllerPoseInSensorFrame(); + const glm::quat headOrientation = (glm::quat)getHeadControllerPoseInSensorFrame() * Quaternions::Y_180; + const glm::quat headOrientationYawOnly = cancelOutRollAndPitch(headOrientation); const Rig& rig = _skeletonModel->getRig(); int rightEyeIndex = rig.indexOfJoint("RightEye"); @@ -2353,12 +2353,12 @@ glm::mat4 MyAvatar::deriveBodyFromHMDSensor() const { // eyeToNeck offset is relative full HMD orientation. // while neckToRoot offset is only relative to HMDs yaw. - // Y_180 is necessary because rig is z forward and hmdOrientation is -z forward - glm::vec3 eyeToNeck = hmdOrientation * Quaternions::Y_180 * (localNeck - localEyes); - glm::vec3 neckToRoot = hmdOrientationYawOnly * Quaternions::Y_180 * -localNeck; - glm::vec3 bodyPos = hmdPosition + eyeToNeck + neckToRoot; + // Y_180 is necessary because rig is z forward and headOrientation is -z forward + glm::vec3 eyeToNeck = headOrientation * Quaternions::Y_180 * (localNeck - localEyes); + glm::vec3 neckToRoot = headOrientationYawOnly * Quaternions::Y_180 * -localNeck; + glm::vec3 bodyPos = headPosition + eyeToNeck + neckToRoot; - return createMatFromQuatAndPos(hmdOrientationYawOnly, bodyPos); + return createMatFromQuatAndPos(headOrientationYawOnly, bodyPos); } glm::vec3 MyAvatar::getPositionForAudio() { @@ -2474,7 +2474,7 @@ bool MyAvatar::FollowHelper::shouldActivateRotation(const MyAvatar& myAvatar, co } else { const float FOLLOW_ROTATION_THRESHOLD = cosf(PI / 6.0f); // 30 degrees glm::vec2 bodyFacing = getFacingDir2D(currentBodyMatrix); - return glm::dot(myAvatar.getHeadControllerFacingMovingAverage(), bodyFacing) < FOLLOW_ROTATION_THRESHOLD; + return glm::dot(myAvatar.getHeadControllerFacingMovingAverage() * -1.0f, bodyFacing) < FOLLOW_ROTATION_THRESHOLD; } } diff --git a/interface/src/avatar/MySkeletonModel.cpp b/interface/src/avatar/MySkeletonModel.cpp index 84e4a9ff83..20b9ee2850 100644 --- a/interface/src/avatar/MySkeletonModel.cpp +++ b/interface/src/avatar/MySkeletonModel.cpp @@ -59,7 +59,8 @@ void MySkeletonModel::updateRig(float deltaTime, glm::mat4 parentTransform) { } else { if (qApp->isHMDMode()) { // get HMD position from sensor space into world space, and back into rig space - glm::mat4 worldHMDMat = myAvatar->getHeadControllerPoseInWorldFrame(); + // glm::mat4 worldHMDMat = myAvatar->getHeadControllerPoseInWorldFrame(); + glm::mat4 worldHMDMat = myAvatar->getSensorToWorldMatrix() * myAvatar->getHMDSensorMatrix(); glm::mat4 rigToWorld = createMatFromQuatAndPos(getRotation(), getTranslation()); glm::mat4 worldToRig = glm::inverse(rigToWorld); glm::mat4 rigHMDMat = worldToRig * worldHMDMat; diff --git a/interface/src/scripting/HMDScriptingInterface.cpp b/interface/src/scripting/HMDScriptingInterface.cpp index d347b72d7b..ecc207a519 100644 --- a/interface/src/scripting/HMDScriptingInterface.cpp +++ b/interface/src/scripting/HMDScriptingInterface.cpp @@ -122,7 +122,8 @@ bool HMDScriptingInterface::getHUDLookAtPosition3D(glm::vec3& result) const { glm::mat4 HMDScriptingInterface::getWorldHMDMatrix() const { auto myAvatar = DependencyManager::get()->getMyAvatar(); - return myAvatar->getSensorToWorldMatrix() * (glm::mat4)myAvatar->getHeadControllerPoseInSensorFrame(); + // return myAvatar->getSensorToWorldMatrix() * (glm::mat4)myAvatar->getHeadControllerPoseInSensorFrame(); + return myAvatar->getSensorToWorldMatrix() * myAvatar->getHMDSensorMatrix(); } glm::vec3 HMDScriptingInterface::getPosition() const { diff --git a/plugins/oculus/src/OculusControllerManager.cpp b/plugins/oculus/src/OculusControllerManager.cpp index 6042968ffc..0236ea1e62 100644 --- a/plugins/oculus/src/OculusControllerManager.cpp +++ b/plugins/oculus/src/OculusControllerManager.cpp @@ -19,6 +19,8 @@ #include #include +#include +#include #include @@ -313,19 +315,16 @@ void OculusControllerManager::TouchDevice::handleHeadPose(float deltaTime, auto poseId = controller::HEAD; auto& pose = _poseStateMap[poseId]; + static const glm::quat yFlip = glm::angleAxis(PI, Vectors::UNIT_Y); pose.translation = toGlm(headPose.ThePose.Position); - pose.rotation = toGlm(headPose.ThePose.Orientation); + pose.rotation = toGlm(headPose.ThePose.Orientation) * yFlip; pose.angularVelocity = toGlm(headPose.AngularVelocity); pose.velocity = toGlm(headPose.LinearVelocity); pose.valid = true; - qDebug() << "handleHeadPose" << pose.translation.x << pose.translation.y << pose.translation.z; - // transform into avatar frame glm::mat4 controllerToAvatar = glm::inverse(inputCalibrationData.avatarMat) * inputCalibrationData.sensorToWorldMat; pose = pose.transform(controllerToAvatar); - - qDebug() << "handleHeadPose after" << pose.translation.x << pose.translation.y << pose.translation.z; } void OculusControllerManager::TouchDevice::handleRotationForUntrackedHand(const controller::InputCalibrationData& inputCalibrationData, From f0c56dac3f017f49c94219b63026a382ce0b3a8c Mon Sep 17 00:00:00 2001 From: David Rowe Date: Thu, 1 Jun 2017 09:09:17 +1200 Subject: [PATCH 153/357] Further files required for record script --- .../record/html/fonts/FiraSans-SemiBold.ttf | Bin 0 -> 437824 bytes .../record/html/fonts/FiraSans.license | 94 ++++++++++++++++++ .../record/html/fonts/Raleway-Bold.ttf | Bin 0 -> 179244 bytes .../record/html/fonts/Raleway-Light.ttf | Bin 0 -> 182376 bytes .../record/html/fonts/Raleway-Regular.ttf | Bin 0 -> 178520 bytes .../record/html/fonts/Raleway-SemiBold.ttf | Bin 0 -> 180492 bytes .../record/html/fonts/Raleway.license | 94 ++++++++++++++++++ .../record/html/fonts/hifi-glyphs.ttf | Bin 0 -> 27612 bytes .../html/img/loader-red-countdown-ring.gif | Bin 9 files changed, 188 insertions(+) create mode 100644 unpublishedScripts/marketplace/record/html/fonts/FiraSans-SemiBold.ttf create mode 100644 unpublishedScripts/marketplace/record/html/fonts/FiraSans.license create mode 100644 unpublishedScripts/marketplace/record/html/fonts/Raleway-Bold.ttf create mode 100644 unpublishedScripts/marketplace/record/html/fonts/Raleway-Light.ttf create mode 100644 unpublishedScripts/marketplace/record/html/fonts/Raleway-Regular.ttf create mode 100644 unpublishedScripts/marketplace/record/html/fonts/Raleway-SemiBold.ttf create mode 100644 unpublishedScripts/marketplace/record/html/fonts/Raleway.license create mode 100644 unpublishedScripts/marketplace/record/html/fonts/hifi-glyphs.ttf rename {scripts/system => unpublishedScripts/marketplace/record}/html/img/loader-red-countdown-ring.gif (100%) diff --git a/unpublishedScripts/marketplace/record/html/fonts/FiraSans-SemiBold.ttf b/unpublishedScripts/marketplace/record/html/fonts/FiraSans-SemiBold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..821a43d7fd25967a72ebe7b828fd8d1491767de6 GIT binary patch literal 437824 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 z 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 literal 0 HcmV?d00001 diff --git a/unpublishedScripts/marketplace/record/html/fonts/FiraSans.license b/unpublishedScripts/marketplace/record/html/fonts/FiraSans.license new file mode 100644 index 0000000000..d444ea92b6 --- /dev/null +++ b/unpublishedScripts/marketplace/record/html/fonts/FiraSans.license @@ -0,0 +1,94 @@ +Digitized data copyright (c) 2012-2015, The Mozilla Foundation and Telefonica S.A. +with Reserved Font Name < Fira >, + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/unpublishedScripts/marketplace/record/html/fonts/Raleway-Bold.ttf b/unpublishedScripts/marketplace/record/html/fonts/Raleway-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..38c099cc857f5c21ed7289d757f2f96ccd483552 GIT binary patch literal 179244 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 literal 0 HcmV?d00001 diff --git a/unpublishedScripts/marketplace/record/html/fonts/Raleway-Light.ttf b/unpublishedScripts/marketplace/record/html/fonts/Raleway-Light.ttf new file mode 100644 index 0000000000000000000000000000000000000000..91aa0c701f04f5bd804362b583b44f0b4a1f9acb GIT binary patch literal 182376 zcmbrm2Yg%A^#FX%eNWT#X@11wwz2}^J_6;Ba za0tLcX~&}8?vW)UKL+wt5&(SN!$XTcM#oyfL%#!fQtVzd()OFKUt9#_@y`L6uAxO$ zkz4LLzZd|o1b~T^>nAtOyXdlw0EH(5D1Nu{2Pg0?1=hmxyz!aXFaZBLfTC^v@)h-!Qp; z$~AucJAiNX02K0@HXeV%PxrT80ro&?@DYsRP0$Y0&`#RHN>)NWUI`)m8bX8vKPdwv zv4e}GAWqESBl96jy1`B1;bG{)FTsg-LMMI+aeM;=rVXme^-xSMhf%T%MDjF@l2tHD z7Q!fb4n%SQM&Uyk#kZl9oCc$$6GoX$Fv=)klza>#Sr4P+|3D-4MVQu#r^| zAW0a6=V1_D&7McJFo+B+WG;b0dYueIKz?o&1aJff@gVS+gmTgky`&V3j0g1if4~tN zaQIi?;d5w&1CWN#p%y=c4jKRdgb5M=5&sMkVupHh71-ciScV@%7(GzWG(!#E4mHFF ze$oPiqzc;QYv(`=6%fOhVLtv4+_)9o@>-@~gbaX#;u=f9jA{_@5eO3>%wwz&##6vT zuQ6Rvjc0(H2|$oOi!XvxrU9kH^-zpS2+8gFP?f(1pFo^>H2X(#JNRV!P#VpA;X`o3 zhp-Sn1O`3?8`%fKEPW`A=6vxnXqSIeI?er3I;CNhxM5JH38l*sU*(rWJ42A%S6N~^hF8*pS949YFV1${roM-hbO{&i3U z??SEIr@TseW=;ziLnMDq#v#2=`FRZlWcus_LFO@vH@b%Z)>8hbeE1zLoDX&Ky#p{R zuk!<_CP^rS53}#U^Vt{R!|Y$+`Rp6;A=u%0D4}$rc%gfVJPV_EBMj0#1;)DYXnVB1nXsNuQ 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 Jcpr{+0 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

    eix7GX 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

    XDCG$Cn90yW2!TvHc6kUO~pBDt)WIi`>J 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 literal 0 HcmV?d00001 diff --git a/unpublishedScripts/marketplace/record/html/fonts/Raleway-Regular.ttf b/unpublishedScripts/marketplace/record/html/fonts/Raleway-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..e570a2d5c39b2841b5753350a3822bd2b685e771 GIT binary patch literal 178520 zcmbrm2Y4Gr+Bp8s?5ew|TUOiEs##jeDwgCT+p;aW$w{2VNvt@DOPqv|N>3=E1p=WT z?T&+^bJSy<&u7i?yBXLic_zVr4q zAOKJ!02->&^Lx7&ELw08;73CM;O!omGyiXhJqFO1y8xc&yXP)V@z22T0GPJ`BpvI|5JIvTVN$N>UIE7047fX$a~bi1p|Pjt>7(qB{p%S z89#gzd4g|(Eg%ygW8k3$E&_n-%MIca3jGdU4iW&o3vUO2i;E?C7b5U209HvT3Lz;_ zHvujT05e<~e&gojPkvj=p%vW-^>6?N&>heYPe40f0%kk`33M+6u>yE( z05^7k5wpPIVW`JOaNxNR!F}L_UC<6MLl^oUSo9F2(f5!*?|_5KKpnmf%J6lN!@mI^ zei3qb403oD zfI0ZrP)-}53~vGnz6h%DNnl49hHwK|5QYdggC7;39o~a5W`V`4A&Xt$!Rx_`v*1B} zV8O?N7k5Jz_Cpp96fVLV$f7EkOlxCPp% zM&Qv|P)(juqYyybz)5AmN8Uxh2Zx9Qf`{9n4E2FeEUy8+^b8I{gxXX16TSyLB7O*t zrY<-Lb~p$N;24IHvJKa5UpWFF;DXCwQ895j+h;4tpRg;)LMksEfJ{SP@TI z@XWkmKU9f$+7Df@zwme14-&i>eA9R$xSDyHpi{gjxSDy{pb`&5RxAlD$ovEzHQ*QP zw?Y~G6%t~d&?=#s8715TkBDf_q z_Mggs7TXEGAZJ#jLqZ27zVQXvMgB3fJOEZ)0X9h+9QGI9frC&@a6J8fX`CWV z8>V4-G%QN6Ex|4eR>E8GHZbDvAb^J;i)Vp}(6C6`gg;KvTM6gWV;?nE37$un)3E%( zULZ%#@bubCYbAIn;e(W&0Mu0gA}>4-+TmG9!IO{@V*P4ebNB$O}&fJGv6QXgSoNOTmq<1V(JLgM;u#v<-H4aX)9%?T5$$D@cEO;fz@J_H}H89u=Y205pDDw8FK!tZg0P&ze0<@zyU_N>p zTG7+cj=lvO?g9%s2o~H87W^Jqs4!S4KXAAS28lc-bK-Jv!k=J}Y5@bbLj~5tAlW;< z7eZpG1p`?R=D~|EhAeJ`8r%tk1Rl5_G_)J^=q}JxTR|h@EdqnM7RvE_;Bf?W@CnRC zU%?>uf=h(gFz|RScnOTL4Osj&4B{JLP=xhO;KK+8@rA$>d5YfwAGHxYcn$C(EEHfT z@FzM2!53Z!gD44R+yfy|PG=y5`#_EDFoIKy{df!(Qoh3!*~NM z7J2>{sKxg_0anyA-h^Si90JsBFibrI!}tTJqM|U2XTdPu1vct+7{;5xh8@6?vBm2N zP-7Vki`Opjku!v!1~pcJNnF=ks&`)F#+7Ej1?A!q!Q737He)IwO@aND^NuVFMf*zj<{pe-r z$5yc7PoW=u1-5A!+Y1!BNo?~FUJUO*KfD7n_^5C(WdkY2i0i=OIvSy0oXZORWMAkm z=*MdTW2dO~5*?IWmZEk{Jq?stvj9!q0RT_KSs;ZDaDofw!F<>PyWlza0%25%94Lfh zs22^OE$A}zGxQSr3;G%Z#@LJ#IEQ!P=kW{pU8<5&Q&&-UQM;(!w3!akBlH#Yq^;cM zvSn<;w&k{Uw)1RP+8(t%VSCy3iR~Y@e=`)LV`>;1<6zuOh-qTd%tmH2b0Kpxa~pF9 za~E?j^C+uj4J^YtST`GF2iau~?2tMt9U6z;QRA>V{Ei;SsAGj|-#5>EM}H?R5bc@) z7r0?Q48l$D1nhO*tIJv@v4jQ)nc#RyYVd)SL#z;7L~2cRuX%6ICNA?df$e;;LmJtSH`PmBNlVTL92!yoBW>{t5jE>+;m>DvGQ-yLx0e;wo; z*b3*vHn;#Tgp1%3xD;N6-@)tf2D}Nshd;poz#m~hyaVsTd+;#Ah(a`yz;<{WUV*pZ zGI$LxMjRf;%kczWfmh*Ua1yuRR@{bDxE*)kH15LPxCi&*KD-jI##!8tkHs0h26y7M z=u&h!`T%{1K1P2+pQ6t}ij`!=Nc{hZADXs=OBV4@{fLE4xBv|jkb(>ppn@_ehYF~K zDo}$4w4eh$7{CbCV1gPjg9WT$13NIlf&(~_Ke)jIUZ@2h_<@H21fdQ>5QYdup&nuo zhXlx>0UDtRnjr}-&)8H5F}5Ej7@ ze_zm0#_roOYgdOkzJP41#L+~g( z2D{)%cmke+J+K>|gJ)qcJdYlS6JQ0bgk#YYuo>=x<6td%7fyjS=o`2kZbAQm6VboW zK{y6Bp}(Ln(f^`L&_7`voPpj00iJ>LVFEUwzoYr+YxD)Ihb`zypkNzZ1UDiVa-*H- z0rUuZ6g`L@f~V2HVIRtZ61|0Xqdn+5^gY@Ir=o|^W9TWk5Uzp?;A;38Tnj&kU%)kR z1N@43CEzx=9d3n(VLMz5$4}AIX^4Z@;B5hTMt}uFnHQMV*(yuDWK&78WkkIfFR=;vQ$;)@<(VGXUGnO)M$=$8BL2zmGe7fD(K8~_}FRK zEBGUEp)8Jq{G0%t0__@QGTXT^f)^29U?wmX7_*R?hLS+JxUqC`3e``%E;t8<$jj4P zoB2{1p&+hfhe}ChhFCMl=6q~GDCZ|J&Il7@>3~qd3uu&KgtE>)vM)v`<2rIeIk}rR z#0ceFM=l^#@{CX=f`oa5hUMG2F`=S!l-WMY2o+oh7Z9rW?BLKOJ(12ih4K~LrhuU4 zvvY^C^NSD7Y|bfY#pfD+5-K|v3{6&6b_!^$L#Xr-Eez)1itmljZ` z0IfR^LgKm6@-PWFGdLtvave-YP;niCk`pAO9n7eJ#vW9w5mZ1&$M(@ljnpq(=r=oZ z0YS%4g4Q1p^!y|urGcNsq%`uA6e+9uNt%=6A>7m37H=@M|dVCt~bhqfHFVi1_JW`D3>75!9bkx0O?k)VKRdBWOMaAlVrMo zVoL&ajx_{?7#}ny148`2brn$O@`iwr;3qK{TuhMZCMRFOuHNn2ySZ*|j2Rj?6VA$Y z?1&?z*ZBfM122FJelV&) zyT^zm5*Ohbofs&x%ENQz0zy*>4h+Kx6897wxMV{>Xr68o5Aw$+xLV?sJNL;-$rF#*1Kcu)(ZVFQzq3xE^Y$EihP&GwE}^P(Xuv!#H^d}!!O0-f`2#}R5v}vg14p!`j%Y2tJ9E6F-)QHB2LH?s zrI$(*cJM-@e>=k@34LvE`01_!-5C^u{(#UaZkdp82`7XsIVQ;jxrV82r1?oX?dl-3 zF4B1kGXI^3yMK(N{$J>pK$x(oB-dbOXHW>6n_6RrpM(Z~2@YNSBsBV2f+e!Zshv!3 zx|gr1*x-pfw{(rJa5FCg^sLc$jivIK4!jtMed+qtn4r22V6 z!a~*`5N7c^0Mh<|Fq_{2h*akAJCOKffZu_{Cv!=kj6WdEBYj9^KIua$gQO3sEZ}zn zK)XL6EaXY(kJJ|NJ5ll35Wf=@pXEqDL|PY1KNI$W*l+4-b4+zW1oTM^B z<|LI-GAF5wkv?7ifG|$_kjiq>hg2p=A5vK%uB*cz5LSxoBDGcGx=8I9ab2XgT3i>Y z9V@Pj)YgdWBDJ;Rx=3vuKM76K2wX4T39bHsu%TFO^9O{D1n8ujkn#tFI`RP1wn zu}b=!Aod{*q|b@`Bs5QtdXji2j(T#jO5Ql7SS8&z@sp^z*kNOoqxyJyB z=Fi4Skaau+&>iI@;3GGwvc>dlx=HSnR?8&vsYj!D5T~UPnw5x;$~tx#c58Q6>{jlU zrY0o{-z2Cz9!ilPxuGCE=|mUI9THL(3{6rK=}9-adrW>7AUbuy^1&g}C6~+PQe{i% z0Xiw?r8P21neP!)I8UH2nZ%IZDVdN$IxR~6|MM>c8Aw8s#FViDpx`GFXZ&K}JFF>u zQ*em!=Qe1AMrg!N>?GrgJ)GE6_^$B1*gkWN{o*M6^e7*TxuB&*i;?qj1(pA}Cxu$Y!6;*Xg)idgO>IcV1nxBbO_tbM2b6~@5KVyb}Lpc$Rs7>3Ppv>mBf(?7hYN zW-VKLX6-w^2H$ml&VP~rPQIESetkN8mowTVzXnX#qN(=;&&w^iLu1f4cUgB4S#7ov+-X|>zlr4KB4)MWL0u`^469} z%Xux2wk~eHq4lx0wzliq{*juWnrts`=i9fnf7&7KnCN(*bD(o==cDPR>FYCuBwtOHWz)`LfL;@{v#MT|&fa+T^=E&1&bo7cbI!ld)t&pmxnFLLZ9R7DzVq1gmY(<9^JC{vod4kY-)(Ez zcJ8)kFECxO=7QTUc;`aXh1)Ou$M(y&KeYXei+V1)^`gIAJbv-D7r%Q++a){2|6aM| z^GlVNHeb5-(i<*4aGCS6xtCpX*@KsTc=_{}zkT^vSF~KQ{)(4=cGk~sxYB&(t5;dB znt#t6h28+7lbGKe{>s_}#e(N7@J#^b8x4n6L z>h{xazw`Dt@2I%r!aLshb>P=`+}V0p&0S-6eSY`KyPvxIt$XD6)ZerGp8M~~-`jWZ zvG+cIU+}(T?z{fJfBh!;n~~pK{+p+M^Y#74`#bO7c>k04e|-P9LbcE-{CZL|dG-$F zj!Sp!-toy!%g%*6x9oiRf%F5nKA3y(o(G?Q@RNsn9@_b^;o*4?pZ4(oKC<+Y9gn>G zsQJ-jAHC|)Zyu|Bto^Z#kL`QB=JBD&uY7#Zo)h-m|8&LE8=ijTnZz?EJ+u4S zx@U9Gp8V`9&-tI*@Z5`g4SRd`KKZ=m`NrorKmX2eYkqseZ-4&V4_+vHq49-PFI@V< zJ1=~{Z{xmQ`}V)6eew7gZ-4RSm#CNcmxf>ZbKKFMs$7`^sIfx?X+w)xZ9( z=XbyU-TSX;Upw}-$6rUUZ+!i+*S~#Z@Qu^nxZ#bb-uUKCFG&{yk_UAYeiJ zU?sedUlPZ2rdSC@Q)EPp0Fvm(#?i*2`e-bw&on!mvGVDspMDxJxB&1ucrTd24!xLH_D1=Z3^_x>1NF~y90VBNiCwt{m6)j1VT5Z;; z)mDv?Y|8ESs3V4`jneBXuuRXz+@6HNU{rg8RII)gCt^{(!C<87gV>{v#F5U1jcTbB z<*g%0OyS1il*83A9C!U}J;$BYBW)OLvO1CrqOOkBK94cb$uC%zzf9|C@h#}b?TioS zzeZ)YKq?gKsjEg~|Wus(c?)0*T+c$CASbJaXf)R6kAV#+5N-t^X z-Vng;4qtZ*Q)@G*#2tluLdI2%I;Xj^rIih^)n($A!n2}gzXw19-oiKdR{T5Af(M#m z4lIBLsd@7eg;1XYVL1W`hE*T|nN%WM1r#OjBb`+tsgxd3BAV`@`&*K=UcC-McP2Tf zWll8gZLV#$TXi12N2LHQ(v~T7eyt;j3F4v=8zw0AL|QS~Cg-TY1O({6v`Y{&BJ`v^ z;jOOrChYcjt>BeJylRVEY$|o7&>$MNNgkLX4%l@ca5)e8W6pg)%~1bBdS2cHNezz=?p z+hpYA3ca88NTu8q1`;L0DmsQ(qE$&Xg zCsJi`lJl3r3OGyT&!&_CPjh?JFGlGoHKovtEIHGR70*0F-rx&w!x#7?P=j=5r38ii zTEbO~6_j3QFv{F+-r$Z}>vaLQDcu}xn}rrfmyeBwO}3$l)uGvsE;cXQQ#|)?!w2{y z(2`LoGKx+r^R!ap0Z!Pc5BgIPYaOdGxdZx`HR>{;#iM(cnFC9P7kWagCx&dM@YvXL zGEyrpLlk}iD!`I5Rg{;hlnS|wrZ6glZX&p#UysNp5}t%H7S$(=GNa5RTjWoxGOmm& z%`-kfcC;FtHNCwxPD87qy`79&54+JCECm&KQckG^Qy2lFUn{IXxHSVnleMHK(_oetH`^vtiq|hHcvb!9d}D_!*3o{Duc42vBcUs2CVZX()sN z@CKL?vn_-k)#M@GI^$U`r2+scNY!duVelJ?q|(b4s*N3{xq~AkgJi|+@Heyqg@6KE z$_(V?1teIz6e9#^)(mteVywO$IsewyCcXu5I*bEF@L%eWT8_X!*-?A*_&Axx41iO3 zZ?Qk2mt+=zEPKWT2yqCf^4?kKExh+o6W$9L5`}MY051@^r8QMUBE}TLgfGI>8S{F* zPFhjzN4g4JI#Gn@$!74nXrvY6fV*=^JiesUT`Du?P^Y)HGh{Z0I%~b1Av1DyY?vDe z%-zt@v0-j7ICn!we5j4%+J@rsp*Dx3ZHVk72!O7^&7gsBDkwn|jrxG5=yQPrj3~TH zDj|?tHoZFyXgIZAE#lgxXJb)y1;xc8tvC@?qigc_T`Kp~MYP65*nzuRTU*h+WtQry zjv9welBdXgJOKJ5&VZjtI=v2yf{rAGBUmNsR&-If0w4^=RvVNkjQ%J&Tg6jB_ysv3 zB{?9gp!BSsFXP(d*0z{K&4yXF-eZvkq>e;iFxV5RamJF>OiRd)CLEb`o2Am~4A`_T zt43R6RfMGsV>0oL_Sz(GS5(389%U~dKigSpHhbWZY92c9C&YVL$=cQesMICe4mId|w z$6M?43)`~`7cVfGXU#KsV)n*G2EL4MNIQeG8tfWJ_zTr|Paqq!w#5B>eQ!E5(A3>% z3)-uq0bh;Zrmm^$@Y)i7E74+&g|ji>W>7*oG^G;dVrm4CT_B9kl_DDGtrGF%Es!9L zVJSs27-j*KsXz%zwOXT=DXRUF7#l-TbyUykU91{SH`c9ZB?3KHj?H zuSncKS6G7%;bsUzf2x;96jW7WOk+Y)n4<9(G2KBTT_Gc%3eZ5U64k#&Q~C`?a}fA_ zwO*F7S#%ne0)i+gSLpm`N|ulVLDV>M0E)t2D&tzIL_ERjSy?=e^x?rar>Apq)SYRn zs|;Ainp~-nxhB}^teaochU8@xGPMpZ%D)q?$)W}}IX@Cx)Z)-OBX&nPX$q#?t`@$! z)+6;bbvp-FwG}LO0>}EoH@FVJ2o8utbE-kB!4x(lT7vt40trn?2<1*mSg9ygi}KRR z1$i#+jJsW4Cjq4Eh%+sU2~mBC$Hfyqy{V!`gX=u$C9#HOoo;t#w7GkumDewB}~FHwGaK-8X?^xR3TNYT+zk?uQx;h*09r7`a1qQ>tE(u5(T~^|i#T+1{%rJ@{4Zu>dE22TpdeB> zi0ydql-?IhML2?M!ajiDdR0lCNM>iSxBkA4R6{(-*Hk-+xik|ZN9zqX>S&%vwDiNM zufW*uO%F$6i`$(hZ?vY`$7sE6bG+U;ZC)+wueR2Ej2WgrWoKI>HYVD}Fl`Zg{y__$ zs4>R_mKuM9&6@DlJXe>ETiM2bzoRL@DwI}tu!ippR#yko{+gi2s#J2pCaW{y*6BSB z4o)l+Xr(n^uc~5#R!hKMrM3qNl{gD4u^l&yRMMJiHX{kG)nH8FJ^(4AB|sBBn8K1D zQvK0{LUf4|YnWyrtvFFsvJz7SQUZnZFrADwbscBr^}`K(PrU^hi-hu>yEAGN2_+q| zTBDt)`$s6{guWkAimQ`Q3Wjz7I1NjGU=6qZH*1(!u@n)TO-)Vcw(;@&lJRlC&{en} zE)d64!q@`}giCsWRf=eg=?#*S2G&Ms2QLMTTX4TQWg+c^XHDq|M>OYBI?*6k(n@*B zB$rL;ZB$WJ=xVAb%7VBQRY_xD3tyvWaTU=kc1jS@!CZQYMDJqJt@+(3m0yZ<-}gTI zO!iyAkcOwx@o1$8iMkXISb`|P)QTC31}!QYKjs>Uv3ggG)u&M~|2hgj9S)xm4g-Qj z;cK*i=KL;6%;kzn(Ej{Vl*;c$w|@0)_L*mUzXuEs0Q3-k6s40RQJqK$QRC0L_7Y|=0_m5t5&I%e0DnVb<98)B=P{Wg1uRU1P+A#cKKtx)RO zkaORfHGrY6u%0T%!>}0E!rIhouLo1K9Vw|1HC8ES&%$y<_mv?4nFM6ygp}l~Qbj3O zfgBWa#d1)o@Cc!TEJ&r|7JE=Xf;Fp`kIfs%_O`brV!Y4ASk1}#br za&+891JYm=bt$RLQ)Ik)Vn3D+Q^}r;M&b$MVWUPHkH=!f-X^@6NON>^-`0sHN~vW+ z4wGFY$Cja3_Z&9X!SWqyl_liz^jI~{xpj$lhk{b+)pl>SB9hzGmEJrYi!9pI?eBG! z*ADu!TbDPstUCWZpRv3%R1&Sqb= z$>6EBxSD&NXB%8KmHyUlbI+Eg@#x~y`?}9q8q;YQovvZU_PGl#9FHCPi!N^QVx7Xk znSIf6a+b>g@U?g^$Uq7Hlvja>M@E8Zz=*~xMHd%wy|kcyxm>Q4E7fXsm6YhCQN(#z z8HXqe#hQ_)Z%Ka7a2EakvMY#k``&vpcX!3Y3XuwYVKdDF+njsceNRdQ> zmV&4@VqU~%vXV8qtYQipK{vQTc z7=4ic*5ItGF^4!kAn+Bw#h2lIB(E~%vRM^!8Y9#YM8LGe5>k(D;BDXde zWkKpN^%RXkLVCWy!Yuo@U#ycIg-D8cmw&sYsN!{ANptkqap)fiob>>9d z!i<9p*~;q&SI3*z&JS0zVb11l@flL9&Ly}bko^_j3uRy;_82kdr<{@$g$Uy*S}X>g zRt;sKVkHW_KdPP?IgJ!6e68=}AZ zWAicVT34Q(?mlOEv$3|(;p}LQ%wN-(Tst?^*m`n2e`{&?7mCm&IHdsrjaCp_n@VPh zgSco_9${mvIW?>1)KN97#usMt!(CnIc5)0+fBpfyH~%b37NH6^mTXkS#gm(|Xi(8KE1I?<_wB*`F1>@Oge4tZ9aW1ut;b==_~Y#kWmjcr z$?V0cT&2O&zo8qg&R;wCyk+&o=o7I_yw@slr#PiTO3`EjL|oumn!=)pFOrW&qZX|` zbySU_#Eh2db6sfLto(Z@JS+d#^YL@}33NmLxB27Iii`G_#%{!WK?3#^`DQwq1%&WY z3YA8cfTZX&AcL}Gxa;uVLz`NQ>!NhxsS2k23YrLX;(Ntp|69li$*hDhfg8f{LF zr(K?|(I!$#T2`Es?mlOtxozdyorI>*F->dchwBHAO*E~U7mf}dTjEml@Ls3@Gm$Xl z>lRF*6+qKd+=|$mEw~@RY*JT31yp!hslq@`bji%))Q5RImqYI0tOmvw&j$bWkv;0v z89g!UyLhjsZJ?H)+v?7Li_+#mGs8CXrkT(&LLISsZDu`H^lC^b2~BM&nI-8gad5&2 zIbs>;H&uIFR!eoAsjk}VkSUCQ*J0sboZC9(FzB#@exlnZS$H4Q37o z`k7p&k#m=T=k6M9W1OuMhauRzHL|?PYC1OUThq|AW?m#ZxF$j1ImPK$;k}>+8$?r~ zvS|s5XuJZZ*ljW^rAl;3>}61cT3y4E#UF;HOv_P6fs-em1Y>QJ^EY#T{rYDmh<;dv zsHeNpBg=n@q#{^@O$^h_6F-$20M8Zm26L*Kz>Hc7ghPRNFo>2QdaXD$r{-cTo_nb4 z5KiF>4sF60h#r+Wh41j~crTbp{EKK9$t)pMk*{QMKLVY$qD&?Q6EYEMbrEB@#9e~L zstu#fow=C4i|Iao-rxycwu~V*)D)e6Y#go3U)OW?cvH*7S!q&lICfqH5DbJ4iTM+R*Befr#N+$ zN-Dupil|K(Q6l#$x~$Y1wN_I_d_O2^OhhRy(U~ZULs6tf6CD#PI#0gu zl7BOc@HV{X`|tCw<)6YQ9cm)_6W)91A|!fV$zMP?VVYaYXhf6c)5LX8#6pQ3sX(RC zXb86?8z@eP20#CNR{krbn04U59Hhv9h4<$7p?Lo1`CAa5e-kZ3#}J-b1%OY(dqECd zijmQX`Z4&(L9UsGkD61XrJwz|KmWg7`7iO_{5fb#z9WASDbX%KKwKsBOHy2dfOv|D zuZehHi|QT;oq`xSEwQ=;@h#{Pt7q-#qr40Ac@DjE=;Z{S+nP9ZKjF?pg}2~U{4vPD zk+K7(5rwI-l5Wr{I%s7eQ>#UZVI)o}byPoeN+RK<${G)?Y$Q9i0ANc=68?m@R*N{a z8tv@Q_fI)%0YRkj7Ti5OHxSVv&Mg|GKbV_n1hJ?(($KKU+la4g{QjS03_q$ve-&xa zGbx=&rz{eY4oTCw6vhahIMby)DTTCF8`W|Y<=@-%T=I^)P#wB9zZxyd-$h<&FFcK& z6n)HYakT&F;UVZ0U|!25xMYVqxIavDf<;KV8t8xSXt8fD?`B#-wm zRRadL@D2Jq)_@xtU|DKdufqtJBN+-hF)gzpkkWmCKt>~(=)5J-%I+-T^dk}yiSEfN zkW^Z_fqt(CK_uj9@HVh^tEJkYsZuGxjoeCw&TpKSPX?nH7b5mqG-A-}bx}Pr-aHoRj0TOhrD>@SuiRb#BJi`08rg zSw?f=MrCVw1>T>3I@TVXH5N^b_xh7ubJkni-^}Tqbv3t`>l`{j;3<5AC0GM4qD@%L zN7+2xqL+uDwujg}t|M)pnR@YIo5$nMj5hVHw{#fhguI!k)mESJn8H4rv{U74%(xmy zyF5sm81MCUHtM|rCea_@XE(AHCPt&P)NxvWcAUVU#Fi6yKbRo|R~CU@?qE&jG$qv{ zpm3jg=Dh^><%*qbMaWNi3c9m$qD;dGEi0j>_NWe`gRLnY!4zfzNEwDY+F>{vC^8Zu2fVz?Z^5| zjS-Gky2A}-Upic4tM66@`o?03<$eB47_}bSVo6eVLo}L9>bN@d&E`6%&e`1W_4PM8 z2y_V60$2kM2tX>;VzZLyT%Qa{08Y2^Lt?Dg@9!Ip%d03~cfGZun$uTV>o_g)`7#lUCDK((IGP0jt-&9I5gJo*6{2t% zLd0cCQKD+lm6Z^uv}oM6Wo1YzZIKcy!3ajR*2SsSaz%|_WW2F@!Yzu1npCeRf?%Sj zXI{6xNw2S{)rTUNUyk00SB$RHREAY$eO*=Yd_bfz7Td7~oX`korYihCM>#E#nyN7k zBz|5qFqCqLltko4_Y`%I@I{93Iq_JuQ~hRQx8k;G@6=Cr%%x0j7lLq|tI^$PH5+sy zJvou{XnKlGSyofgqgMQ*WMzrx+MQe~7w;VBT52;(>ld$g`0Oj2-RY>!c8uHBRL4kE z?oh(QXF?`htVF{)JDTm;hY3sE~zgF!|drMiRlH5iv;skw}=RsVpb1Qc*c+ zCETtJ_v>^BbVi-gpsy&GOGy@rOri73X5gc!or*4Qw#mp=xwRU$rYc?IPc)<-)aZj1 z$_kT1hnsQglCxi8nu?_b}S_mg#n7n zwCJhb8`Ejzn)Um4k?NRR@&0@jvi&~)G9Z{;_!g=0eyAiGog5(`u60oZ6OmQYwOyPT z*3m}Qq9?QH=5)tqrx~ltR$it}=<4El|Do%xtW=VaD`TOlbyM?188I)VuvKf7G_hZc z2SiWwdC7=OiY1b^EKO8wF@kRba!(qiBjo6IPq*b#DvncYIXzb;S6Ggu7eYBwk#NMo zn87GU$Mn>^bW@`(7H}xi4Nc8Ubm>;+n6{2Nir%yM7MB`v!wU`G1e<>vaZ3m1b>{bA z#mULezU28#^Ze*E6>Go znrUaKqXMJa#$_3|C$p@fVI<>mXGXrUMKc~xhNLNFJf3vDP3i9&k0-|ac)o8u5g+gK zqcT3*$gqw5ynj|B%Qnpt^&UTN$C@9}dk8zUf<%Hxh+~8>WHE<`s51mw?IdB3Epo!6 z^rD%4a{pQHAv~i5&>z!#7Idtzr(2kn$@t<9m!oY_w=W|~&)S;CFh`fU>f*}IX#Oeu z-imNbAUj^481M5Zoy}RVufNHm=jv*1vV=ID$oqMmz#3v>!f2DL(Eu+-W;NsrFMcx^USwacWh(N@aKs+l0$GYAMw zg>O*?KMH2z12-cn2?`MZ2Z=@ErL=e&fY>@9x|2BKr`9_~PjZDA28a>skYx4hIW@^( zh$m1+YP7la2Cq%i)05t`3A?JTywpS~mGUx^+k{Sv3qm~qE2~*c6As)}_y(J?0xWP+ zQO#A=lw*vvVn&BqyrZY?ru1MPVZB6JVhp2_X~V=`d`!%=si#H9VW~$hrA1&AbzOx_ zLW2cai0m^u+@j1A^};E2S0vGxRQlzD`RUEJrm&|hU0qg5RofgVDUaKTBKiH3I(I#b zdh&BDNsJhCvZa&kMGNF_)+mae8ItE!bOaM&QS#VIL8=kcyrNW8tBq2hzS*_&fsQw^ zA|FTl4*iRaQVBrWumaRYzf8GOK}(4fLqby&Q4^-zBpR(+LxNbuFGCTB3>DQ9FJ2-l zGvc>9KWNyvq2Ys$Czt0M)9I$%a-udMW&Rti$hUm?=G}L{`Q_AH=yR-qN-|f4Qi>1z zW2PqpfJ&&;X>>$pYmLSPaRPB3k4(mCsiEuT^6Pt_f4+CB#EO?HD__cgn?LkoMa7GV zLQ=A$0*jSc0Xh;3P|1n!R7V`rqNBKtC_g2QGpf;tiO0=Y%!WybKtf`a)3aJ$Dbwh6 zCgVq4dv>r_=$s>CvRrB17?RMHyBGJH?|yE11*g-ezH zYh$?@nRG0!FRRi@QH5632nZGyw!jsX3@9+BbOf2_63QTs7m~J5ayyCnwy^me>ca0& z5&b>~;AL_3@l;fb5M5J7()9WOiA-yY7;MMl4n&vs^bXXXYB4yajSPN&hQc_aFqd>jE7{Dlj!5}zkpvguU2 z3L&WVTFe@?=-;L(s^~70A_*=QFEo8q7wox7KKEuF*I`)^dsDM0BFQ*2h;nTZ86?u+JCL zFn*Jvwzk$7x7i{~TNF~MRH3LZFPACg3VFoQ7^$mPGnE9pF*pN#f<3@MJ+!5gcA12t zz*bWsr!i$zlRx{_$4D{sn5wHPY1B;uV;C(j<&3pa{oy)~ORr_gCl6ZD#!nb!B)L*b zQkaVzPv%LuWA!Ar`6!L}`amb!XzX(Is5M%3udUC}=x{U|yKUW0u8VEfI`|q>z@gPT z0;U??p+z5f^qOwA$Jk)EH5z-Y8I4}A$ymE1EvdS0_APVBsnqCofuu)W zfcHW*$@nrL1eG)Tz59r1ya6w4|V`Cf&5 zfq^u!Y(Ykdd}5hpx>@}j~P zxKiYCG6Z zhvXhjXU2-joF)6k<95f23{qrSN2F5}RXbPdqk$ml?2$^*%|@d;+3R4N!nKuw?pZZq zPqoR-YnQF4ROxMOqPI3RR1=q594>WD*kv$#f;z6d$*Io26VCKjS5%rjbq1r?sH%9T zBF2R>e!aSesq&>OtUim?p^;+wtUggA!JAPT{vVM?MnsP7A(`_C77)gbmWm&M0s1jqh+g=qufJNF zhMVx_Wy_W=0}4Wge^XUcQQuiGB91!P+Y^t`GAZ#O03|^bNuZL-B+^wNQz9D6=v4|a z!FQ2@D1jq#lHfb1__a+}I@uHrduP?on)$7bN}&^%aCEr%=?l^#)6o)E;iL*S7PM!hFdENTz#*>munfA87zZ=~DNe8Kt6_qmD%kz&2D1p`_O5^$wR)*)=A5cyPZ z0nyM&Ko5&wQ%vVoAUzjjV;GY8^U&Ha1u^DJzQs8BfBzQaVe%~oeFU8+AO)*MN?#U6 zQn~2fmSU*{Zz1$f6MCmXA*U59%8(qS61jARsz~oDk=~Uey*D zjrhDXX`Untl4JMZXnrbPUrYqx^jv~iqi&AVqnifKU!F)TKYw7(HbU*&=5%dd9F62Q z_w<}P6p0L-I`=7S#HnixZfH98q}WrnzOeiJACNZ_TDZB7kac9}l&uNsa8)KRX{l$V!RsMQtafT0Ik&_!4e6jTyVtU`t*G%5xxfVeEt7*LdSDM+PlQyF|3Bv51U#~P-EDVc ztJ`u9cDung;4s=T7;Gm@3Gp>x2!tUd7eXKj5Qh7b8$t-VolAIp+yn?*Lkzs|?j?Ci z$R!Dv>$FPuTYH~Vb*fY)l?d;Bk9_&uQXSRVd+llMwbuXt(+R)UI4;Znb#mhIrND@YDm&esb)@|jN~W$iBj0POWu*I7UE8u z7KjI91&8KUV^T1vEtg}3s7G-OMWcNMAdn(YkxN1WO7I!oJrt&bm?cy|&=wUoHj%AQ zk2ZiNq9|PgNxIDABp6QHfvxc7#~g<|b%i~Jh}*-y>%a%Dz!nl|crjgxsUvrvU4;@U zDQxG+}I_2iMN6dqp}-Z4ig|@(7AE8n6ij`iV#|naF+=j312{3afSDL2U6dt3<>w z&oLQI&yquUptCyk#>bczX?aqQTOL9O5XX>>=DP7^+uOR`o166blWq(dVQ7ATm<8iV z*_@WTb@`EKm4{mTl;DsnKfMqeU+mMVtu@?2}%uck((CL@!+M-@lP=e9{N zaLtM|7ENM=hCq_M9i9^kEeJXTJO`q9=VlW@x5My(4FsKIu;BG$T);rkO_#OjzHn9w zgriP(a>!F6pD&fjw5;_zN^YNr)PEWG?;^QCo~Acg-T>4mgoUc*)&M6qCAJNI$F4>CB6KFCmh!k;XL?0bhd8brwN-4vqq zn^1yTn1^HV2phi#mxjVZ!x>TNJOP64w`7*jGx)25cO`|`mGeNH1XLVTqS}aTSLJJ< zDE1u}u`BjdqoV}os-v@`v)uO{A8Yj>`V8;e+p`xzTBbi+ssE`b$KosI^8Ne9K$ByK zI~(=SnoG;Fu9^RKj9g;YyT6nF7GTLzf+-2O+w|WOjcTeCBHF^{vfTHa$n!9*wo(+l zXa01(tsV@3$g{ly`80XXf;_{RK5kcdd3dyeH)BZ(=3gHp9g%0mC!-h5j-MG8k~Ja; z=x}3rnAEyL&&ER>dPc^3!k!5n?Ib+S&`y1b1?h89kP!65pdb=V{Uw&9E+dZu5Pc+RmyFz{$+G-t*`cIJ8f^) zu&zpT_xFjtyxisN_VP*@`6AlhAGkVsckcZ8mL?R=pZ7CPg*<(bBH*b8=&+|WS>q8!H(Kk6#&2C)tuY*l-QVDF*bw?-gn$w}G*>oZ{6bksX zen;M!H#_EP8_=Xt$e(J@l(hBr%fUn>?AE*vA+Pw-L;l!M#On<@g}my|wHP4n?05BP z{Zxv@2VHJgpQoQn(fA;8AJA8j`{*+egDSJgC`;kojW3+i2hr6kTu;V zix49*%)sJB9C>bd{$^i$)q`62XqQ%r#yowCu|_bem5>TD zsPgrW4I2omYIG==97y`T{f+hHXls-;q`{(boTQTN zIucE%m;IU+2xyw0$5?KM8?44F2or3ivzV=;0wC1~A;RrOxsO0jyPRIl8FU5HNy!%2 zA8N6*YjR&h-nsAPbnm|b2=AmfpdUPNOs{DewA(;Tol1pkHe5X-9?#}Q5AzYy4iaxI zN?UHX+v7IL!Q6J+Pys9R@&6EPH;w2|O&}j7->tuboU8v9d24;7zWe4a^7UsC%~z}c zQ|;Mj$q;#7{ln;B=Jw9eU!;Eq$8biCjfMtANt`A`#;e*fqJX#onDUnKmWDO_cto=7 z_A(Y#o5gDB(r|9rn@VDtn1s1*^TuXLgEi}H*`+zyCnzn~Ig)MM=ZY&YyKVFUK&E?k z^>l7%|CR4n@%X*3Io=JUnVBCM5Jnq!LXOm&5uOGI^uwY)*WX78#^_}tBe6;weiE(U z#80}M4XmGvNLUMk5)U6Mit_y0La~XY6mG|Jr}=Ip!p722h-ZT*P;NvPrE4apet{L# zGIYiwve03ujpd{~SXE1Mm9p3Jc5-`Ze*KM245yIOc5eP=6Uf!S^nG#1=W*65|h#dfUphd<2F(qvpz~U|1)By`C9mh@HE!d;67~N zJ#9n*NmQikpvrbC5>>p;@kj;))M3x0;?eM+-|OzPk2pp!M~uf-6A~(PJ^u}`=tmCn z0xUpMq1weG5IDY6c$&wU&~q*1DPhbm1c{+c4nG!c!t(qTtW+HtZsJYl7H|X)IJM(V znJ0ZX=JX?L3&q26r{rI`&&`mrY%T|(08{!z%kC$#LxquJkV{y&w?eigaX1?t>UW7j zDd<5;8r=5K$X2q!_O_EpOY`eHR>)^Zye!)x?>!te+qAe0AsEG(+`e~qYPzZvMiMcP zTM4NlMm}n6n(b7H?XBPCtM%OB?dRL;&Hr+E7c70iism)g)Yq+(-N7e&+vKtH$ulxc z;KZ@oLbXz!7%dL3jjT1N5^_Jb=jGZvbbwEM_yi-X2P~K#X5Ra{EF%_O`B(ZU#ts;U zF*u>?lz>f8&9g{hNq}Wc0&p_S6>-bPcEe&m8TV>x*cP^&KMtIp#%_4%6xHS~&b{F9 zA!cXQ%|Gp7gbC>I0C^Mn6gWWsgbkT;G747S!-a?5QF!>_ z;zJJ?9(uU=aAR)JFG3h{Fp0iFh={aUh{yVgEQxqA7B+CpMs7-qD-BExN(?GYe?)j*bA5Q~9%)iU$7SA;D|90+>c4!anUBF!DJGyeLq z(){{e`!LvSpZh>pAU38W5dAGY4Klph-WT}-efh@1c#_Akmz%4alOLSYE9UDr#xF+{EllzNu z*H%)F)fS!x6`UB+w-XRJVw+LW2~RN0jS0qQ*#ZXK#w#V_!V$Qg$yLe?@HUxeKA;uB zeFbx*+;3T89#w>$LrBalf^_xie(FhEMw1_9dd}SNBiMxfaFU8Q< zY}7dS40&Mmmf2WjW^?qbtE+z=FQ>go=I}*YHOU+vrZ?VPe@(bFA4A@O`ezW6u!q{9 ze+HAdvhsv*PnW0n1i{=v0mMrN-__(q#-B}O-HI(#K(sJ>b(46pkNUNgW<*aAU}9`1 z%0KKpI8dx*yq=j82#!chCbVPG>669b<;fv!C>z+kb$I<+txC2|rRGM0wWV@+WT+2G zgzE|wiYKQd1Nr$>cyc%*x$i$&J~b0TRxXa9eug2a7vMhq`ocUF)crtesR^W3RfYv) z>(fM2+ZdYK&e7ED2acwmt9HUuV-eR+hNs3o=SY}p+>MTctEM00o?5G2UZCGQM}CTC zS(yLnngwI8M>5MsX@31kW;xCxw^pkxAzRu~ZE->TDH;arF!$r{{|)nnUjdI~n_0eJ zAIUryd0@D8J>3CM=&#+sl*A2i+TBzYoR}Rp*a>Vl$0ZkWIQB2CKDM;_`O;!Pz}8$9 zEB(&hdivDH`ttFm#p)e%cXTqG_7g9(?s4ZM+48XioYx~6_*@q^Ry5}1*Nq)ahgazj zceJ@->3&C_V6&+^cG77db24MQxUty}u(h~YW#(Sg7xkrDb)mY@d6v3=Vq=>jgd>?Y zJ$G^LNG3dOMz5`_cp1*XtM#AlXfX%a1c$9LNBfA~&g%d7&(Th1TV269y0x)#X7$X8 zV~ZVky#AluWL=`;M>3((9lBxhE0gOmA$ZNXWbU&*e# zIHi?q$NFZrgKlcKlZ9jJ7re<5eOyRPEe{VbPsM1%$_|@%Sescurjwb;v1;Mu-4#)5 zWn);HiWY}lQ^N_5=9>=sIQhvx7S^UBk*W2(8OKL0)mz#QRv zYFWbm?bIW(+#2@(b|dPapT0v+ccmopKd=(oAMw9MENxtx?#xj#vm)gi(SE^T;&_JP zmnM+;dSaXsnGtdz6vQOtkmVYtTdb@cNF=cijFn?-w4Ilu9T)8H%*(+7X}xoETtbJf zH+~NC``lOKOe4q}l!Xb{(AV%jnM_c`NvlK#L6ngK7g+|3#0_&>$t8slBx=p&Br!LU zn)SoEk6^jy?oe-Cw2Yn%BQOQ0^bO;7no0NE z!F*m-@>BV#@lo6{JZ@z~9bxh7juE+zef%Bn6y4E#FL|zf_jNsX6hvbjIVvR&)3Bpo z$Yv;_M_j}PvSO33u|$cXOjO$hRb}_9HH@N*mz-R#rBL88s={<(dSWaQ3lDlVHE+vX z?!tYROi62`s$=IrH+OOFp5A-T5HY*2?y=+S_6%<|*hH+k7o=~(;#~~UFgmynxtGo5 z*I@1isYH+xi(};BNos3oMOfj#CY}^CH=B%r1n<L43A>c@{-9 zAZJ^{`-Y&EwU?IW*B@PG6FQ4+0HAw61c1L`brp7GWMQ)vQP2CnP*D`SVh=D7wc)3G zwX)X7XIgpLoI(GNf3tv`bMRGTemL;3ZVmtl*5a#C=l`aoTSMrjS(8oBfSh!OuZvB zOdkklvkU~7D+e$P*hY)-gIf!;iN5^$rJ1RnmEqj+?ed8ihV8RU4+id=z5Q~fbbI~n zk@9kGcy%hu2s2j8QTmZ`{^G^${IM5ojbxACQJ%Qtc=p)T(yMB#v18+tiCm=~%O0N` zicPKLP+}l5xr`&-6na$r*&R1$2`b&zHClHnhBARj64C&jiWJ2R5#1A_w? zH6O{P649Z7%3y_2lsNaX@R*Dm-4jS1$V-0Zfa^sEViR(z%PoSRkwwP9lY`crl2}7J z4f9mQ3T6zJGWL_ha!T#|C+sLZlmq1oI{^>lK_S1jqgmQ5v}cs~g5Yiq?*L|$)_cq- zwYQudad#fZ-eR0=hczAjWIVIc-kmZ^U7Ox(Myb8^#^H7T(DpaZtV6rd>;cawozgcz zZKRPTNx5Vrin4F&U`A;jwvL)nYVT0@+xg+s>*fJ#=5YEQa;D1?0)BoMjr|$(Nh|ts zmP~4%*G5KZt(j3;KQyD%*smMADNoq8+vJbuF3vsw&=EGz=0gV<1ULa3;F$#DB8f++A$w)r0-yA@ATtuY=XBYCxs zWxdFeWPaAvQDd9MIz^?5$PmD2aVQ(f8i_5{7AypXA!c;aV1aiJW(924~ zcXGuEq2Z zL`)5`i%tvmOoMnaZTXDz&#;e-QUc?#ZQV~G8fj&q!Mwsj3^W+H?!ZEGAMW+tm}uzt z(4#{=5@goF`%N6)!28>eSDdIu1%!bJ*j@8ClJOe@A2!I`F3$ghG%j4-NoWWqw_ z=bG^u(oP#6@zcV5Y+Lt9Vt63n_j+6on<~boxCbTm_}!>G8%VY_$A(3k8$Nm_^3cbMu#oGl#E~g6#J|y(eU6v!0+yJI+T=}(y-5s>r(e_{|5J7 z6CFBk9xh$`E*K-tZ$N4IRo;6?(obb6Ohg$$fcTSY{ABbu*?KF&tROnVvMgS;ma7yzssvBZrBO8plrgoHK zio4KhGQ4uHz{r}D&RChpCxyG`UO4`nn z1}GT|m-r8`#Zv~|lLd(B{|Qr|(}|-c3QmzkBjVZvvow7nw~iGb5<+ejJ~}Evy<Qww(2%!v^himP6IQDnX(GMIVnGVdy|YZ&$qNCj`9T^>vf=Hcu!izZs48 z`XX%ke7=A$plMnFIoBl4zQZM+kVnq%3pyyhH z@Uze2ycsG4G75PwSARk^v$OCC(7*-qCuAVwg&_atAp1(?@l1AnCQ!;udGSjkb8(IR zJ*xgB_Rcb{`7t;Kx9X=8aZ2bQkx9iyML921ki?BKg!qdxRLOjn3=?(40 ziShaB__2v&zI0}|fQ9r%4;c%K2{}W;=>3C?ecwkkPdlQa3(a91C8svAra|{h;mdJ z4-1bWP|PTa>wt~G&Xd=c=GW`z4gf+ll&P?|YxgVNkPjAhD$XL0Ui66B>UgZtYK%D; zBAG4BZ6m{(4y|ra?QjZBGLEf&f7e7#gIgYb;Ciuh?#99|Z`xUgQLIllBB`0QyZ>-g zk7#IW!(kN;wsxKStk3miZeFuiUp#`vWv;Vkv_F+>wEqC3cW!@YyML6o|95&YJomxt zZ|~Xm7!91&r<+P^qD&;fn?KjoZIxUb9v&_X7yPKahCF|VD6e6yY;WpoQr5?|B&-ll*oonhl4S`5H)6-o!J!3G^BE?bv&BUo%#j zvAjC>zI|)sy*IwP(fiJ$_BHHg%N)A>2pQC36nLY5t{o%85HiLP-F!`FVL=d>!UrNH1&G0v z$;zW)>?NCtXribD2@x^+()K&K5p9Yga;Ap)Nh1_*lPTudCDn|=GhPUJA8duF+>81+(x`9+z?DM-nbkv4;sL zOzWljv#p`^GAt26MqzWNcv9O0yWL17Ic-!?;F9XV+an6{l)F9(%?BACu=!WpdLol1 zFg}`|&CEtwtj6!-=s<@JQY3}<%qBi15JY82ytVsNJ?p`|7CyK(@-B?`5O!{GtSLKa1a?(BCE)a(gyIg zTL8W;C&1u9z~}CFhF#%?wJ~4YV(r$Ov(@mwYrQX8hQM#R4Yt-KEy6|p4r3&oW-}ee zklbtJ(OL_Wj6B*H8;$w7*_p|S(Z#XF_7Q2F{oO~TwKqo?oIkL3w%1{L$YKd|MQ|+k zPkBX@TUNwdYt7N1Ke}?IZ4@RBTo3z7!+x6Uq3l0`$=_4!)y~_@Bi`OS%hZ8`c!yGC zBEZ`ICD5i3jPgyIrbU?6Gg74ckfa;=f314K7$(45cl}&bH<*VDcmSfQA&g$yCR4*I zLIrsx(FjU-xn7JgfmvqQHl<}*VU2BQVx=NI)!Mr*4YUKjJrSQae;w+Qhak9wIP}BbT62 zRtZu79iGztMvo>ZMtq{I#A8TMZipe}co7*o(^!?ZX86Y{b_&xkP0^bIf07j?HGOY_ zntS`6-qu5c!6!nsxPDa83zsIc<)BZM)b-W3e*=eJq4W|GX%X2a*MF)1e zk;P+TdDHEG)2f}<0 zjgP9aNAI;5y=9gakvYdY%RsRal^}h|f%9u*WTZG!^cYhMd3<_Nv&U#z5A&)1#XVWH`{t*j?J36#ks|W z`TaAdm0_UQ8G}C6QKw0wcI3ISW=7zu^lAD0WlgskV3wsVcdhc;(hOYEp|p?nR5#Ho<1&gw1Q4PNJ&9 zB?mJXC<;S;BiFM&)%GV?0mA-{>0fsFvu!`zTsn$>qb&OmYt z_TGKOor-=B2V~cO)Wgs4Lf^>zA`jC=LN-5<)t!s*1V})MMDJBF`nF(J)OTTZlC+eT zV9KBg?Z<}4bN@>H;_52-fZ^9%+npm@^-t0p^*C8jlu zy8P1QBwA;3a+Q3bev#gIIJf%@vrabm@WT(+|K#28#ue0O=(NUgbb?%`RVJcB1XUDp zM_{=H1~9ZJw&MT%DYwlQX;tBDgt5%Jaf^EE;^OinkL*`)eF282{?ZU}rF+i;kRg`E zOyR8sg^2|!3D-duZIpsck@sz36TQVnteOUhMM48e*k@P8l$2s%3XHoVn4)_@?)GZ< zfP!1hPvCxL9Il1NjHW@y7zb3O5rh9 zC!5!EfDSuQ2D##*Ta3L8z*0SiOh#M_H{su2{RFSi5pHGitG&MhfI8EVXjRu;=uKTW z;on^TU6NppHdG}-0PrjuYcFOQkWgNDLLtaxNku-+2H6*mv*zw|s*329yljlI@{hH( z)wkVVOB zMoT&Rd@B35SC7}&XrP}*VSDdi=o{H=3c%@41sFlcCL=%gV&;XFbCFA;MAp}io zL`y7UO@OK4wynDXko867q;=*Lu5g7zLvJ~i%x$ke5?CqB9820)`^WFR<${il+3pYI zwqCqOUQmC>*`L2_s)+USn|qst=V}!QLk!O8XPrbM4kAiO|BL?>?{=zo0S&D%UjT1t zOPe;nCk+kp8qJ~DP%Ik3TGci}CalrqtE}v2w9G9{MIRA$sMq(&L$g`+ihJ(4`L!-O z(G>dj{)PNM?6e(3?GiHzL6{C9i$Ad1NQ4i8Agl{p8GlYgwHC7^p`|IQWbU8&LHpxY z)0ts}(RTCEy(jiI8P3cLAv{q+g9Aa43Z`_nfNF@G*_tgjCYnv4DVL2kVEg5=4IG*y zF&9ks=NgLH3EsF4ve|P6BQRm@LEN1eQEz555G{sE-f*|s0#mMA?D+on7w>-~o6%MJ zI7RIw4@Q7Ax63X{0#JHiO zZKF1DAnzpCFDJy1Cq1%uxvlWo1KIb7oJf@IhCQl zZZcwJQksV?rCg<~w5g=OxHP~1N~==3AZa`Aw2GzUj##BtHh-Mx`Ls+MPM_2u-QAQe zGsmeo9d>ixsIBuR;U}XwKtEn3?=mKe(Z5^vs!a7=h5#~6_7hQX6G=30hQ@T|tJDw? zS}|V>;Pbc~s=_A*it`y0Lul*vllbm?to>$<5Z>R`a{yXpC$ce$jD46n=e>^Nt8f%w zze?W4lH%EBFP|ePjI%zgr<^G7g+oX;kS4BK1G*x#3}33PAAet(U;h_tH`rS&QuoG8 zq&GkU8`e>RAQO=YA_CkQ!&akGLPmW!n`~1RE`x^V!_y$aP)OUW3&d_I`$&w4$Hu$!LP{S3Xa`$@XFn@m+lf{l9xuA9xhO}74W@O-^LzA57&H0ENfH3#=2$k&zU4(bZBq@L2RlFIg&%E3dz!9&5$s{4wVF|aHCH7-Mghj5PX!?8RSOu_ zZ&^WjSy`c5HnmAl?e(DBi>^wr7vl74rmE+&RsF4pFQc5c^CE4h7yfh#1^NKf8WKP; z)rKV8o$+q)GOq_?atx1VH1mwn3UruWguJ&Vw*pooW2~sn66n9Su1B=QdM8VmuV~*& z+DH0tjV8S1&^5{1xI1+CvSbws;vMvhSnG|kf*_GZfhaN)yFyuT)bSB{ZO8H^iu+*U zD;jALwvq{eVm>jIoPs#SF)c8h(O6xAKf$y|&H9We4NjZ7FcKpsFeHh5Q7Yb1AJ(Rq z&z3eGxnlx}wnuMWE^Fk=^;eSH>c3t8IMQq9Rxi)tf3vHXYqd}2mM4eI%`!5%oc$zI zk`c@2?w_sRf7?X)-2Iig`)`}z8NMG0e@8t~f@81+&(m*n5t~v-#8EPL!%1u)h&JJx zN)*McKyY9>stFoBetc|{!11l)TkEUU%ILANW4X*wDB#!n9X1rRZ7pXEn52F!jDDju zC(G?>=q95d8J@XoWq5e?uFBRc!$Yq)Q@ymDtsiF;e&KQ%Ho7O@rsS% zm2!h`C|X{j9}?nI%h}xV$r!cg*RRf2?>U*@-n!-X{4Eb0A6c7<_6?-`?#Ou38!Rkj zwr*dDSGS7AQ`JOb?v`S4s}lcygSL-X{$Cf~0Rs3Ti5@>5Ep8%U6eMs*7e+eVn&dnFl8%Xh-TdU@j`acl4{v25jkIu!B<(c2G$Z59vG>p+` zxCc2EYP~&j>PF^(EYdBn=G7S34cD7jmYdE+@XMw7_58}c{$)LKbyk&d{nY=7t}oU9 zfZATYuuO0!VT9&7yA2IM2F~iYc!{K#*C8&^(afc*s<6YtHg=p%i<`D)$R?8t4=Mu+ z3X1wVWYTj77;P9Y9Y5@5G&980-Dp7JlIc8ZWs7H;wpX}xh{!dw;> zV6uBtBQyx$(NN;XjQ(K2$%y{68gvU=`kkglS=;E_tR`*FH}^K!6#pRwBX-YHzZr30~(= zOBzJ1<1i>RSLoK%WHKHaNHKPI79&7B5hE52n!IQYIqp%KGfPC4UMO2-TS*!0@)!qsRZa$5;?u>0Z@smZN!=tV3}GBlhWO{dFafk;5JIRZl?vD`w= zmx~WaqmF^hpg-j8SDgd#(Zu>W?3X!GGE^J-EFx56(L)BSGM!09!Z{78_>I(z)a!VC z)~Jo}9%0DNuzbmLM;Nr`n8`5P(Crc+opRU@8#YxL&L(30E@f7oZ4qkddE_49eZ0N* z!82)Ijxv4(;(KT4BK;z4p_XKRq`yxTB%Kfi8Em(RifVKUQc*B9Iu+ErEhSXA^bFUR z(Sg@Si@8kJn@S=xMhiP_Q<=48;j#H@U7@W+wg228sx7|fC0*8HvSkh=7tfbFsMMX6 zu69|Pv#k?iY-KD&n}T&fAhLIce4ct>6YVoHj1XdJ$*|AnLH1#gM{b{Wx^;5x#If39 zsgO-)I@-sGV;s7mTMhJ)hJo_c=VyCbvi@2-^L+QZ5jE4H|!6vGq3)!*3s^D&o&5K!`ug%i57Ep( zq$qnFgO#O627;AN$x${k@T}SFA{WvAHc#Kzg>btO}x!aow7@Z4sERk}*u& zCDSym)g?=5YnM6dyZ-HA_BRp&k!PrF`_V{4ZQWY z85D~`8EA2ZY%xRmGaiI^pc^J|l8XICBEHi6dPWXLv;M$v)MK#%BQE2F62uzp9M++mUq8O@%t4*0Ltn%(Gv(>${u!H#4 zL3$fqMY-r+H%`wc_uvpLn7C(0gJzNO(S=+F!(s#TJOXyrMP*`_uY;o4E^!v57RE(G z*Z>QcyFber7`e6tC*C#wY+Fx7BLrq=m>yp?m53}v7h3rk5od7_A7gi`c3^3oIG{GN zJA30Bx?7dcp2wIT+q6CjqCzAhO4sGN7B)SjI`&qA>t9S(WnYJ7O9}Ntfo1=j%IG0T)qmj@^c%(TZ z*uu^u(jGB?c%Qsl3%^$PVH&hX#;xnJ2=D80yiyGeILB1Cj2R=bLmGn7j!*G%<4kva zEgFBYt;cXJ=0|dwL_AWA7F)*-_q7AZt~G1YVHjO4DTHo(k@VNB_Azzy5LF$72^?Dh z6{B{ja1KNg2+NTyY+}IK6wezRa5;;GY&sSlm>8Teb({$7y4h@O}E;CJ9MA0 z{BEV&yg=JES9t^yxZlRYO#c##nnXhY)4JypNW>#U&DD(w<1VY)NZ52()`F2h>AIrn z-}B^-$@fas43tQI?J`bW_d_iq)`462{qy1q2D5}3ZDF)FK%URe+rq}>4ROZwGEj*)xo z@0z{u)=9ketnQtqVQPa6Jj_Q%OSvc|F)sy5HwFhNtcBU{#FpO~E6{7%WKH3KupR=D zP$JSt`KMM@fo)wQ;L-Z~Y>FhBUF|dm7E*$2c6wTtt%G1t6AWwKz}1B z-00s~^I=r=2KF#fr8~GP(tVOECV3Od$q9Z!>Bu%lbI0tt2P{D+(qF z0wD~d!tSE%HqPfP)@B=JmL!2bbHbk>XE9Cq5c%tRh8F87@~z!3u|n-%qi1WC-H+CA z^kV>oE9JO4z0s&6-QmbzBTRF^8)bas=gH;zhsdwh-%swU-_CB_=g5c3qxCyj9iQ1p z8@TZPkI6G&WyOq$5bq3#{4{9Nun3)(J=yJcm)+&jJer0aCY5F{r_27BwU5MAs~A0G zfEi0K@tyPfZ1bH~8bIT%Ea7?RTM=p!v-b0IwNay!2J@iVPpns*(aTOks6sGr-iWCn zn@E@8o%lJn2 zo}>SPevvU!>H4D2%jz^ycupiJFTsocmzjb?gPWMQGvX0^^uEHlx|9;l?&zca<$+%?pfHnV|4kU3sdC_53Q6h ztmK8=n?iB*PI>n7;~O@gSiQPF?8}s6(X2iis^0x`TbqwxsVohzU8z>DtPSHC8Qt3? ze@DLuIXJ1WVpYcgL4tIQ2mui{WFjaA2O6vFhDP>cRoX)G*m!Ixtt0uew#LzO4|Z8~s@u}t35rpvAhf*@Y9IVFL4TE^RFEMw5|FLnTHK=_|a zsOKO_>(W+O-vCf#1!Np){)g<^yT;#Y99gKR$Nyy0WvAvo$Nz19B5iGN>(SAYN2^v! z$3~CkGN~l4U#;jVviaYKN2@`o+L-@V&J(SC5ci-k&|$>uZ|jYy(n!9TJFLBD&Ps+8 z6}~}lfCmOpWhHRtj!$_A1+o$Tl!r(_@J<~#bBFHZVIfW}FH4ja+J*TPiZ(x!cJQ=Z zG@b+gls?2CU;r!rIT+C;)ZN+E`@CN7fOkOiX8cJ;KGqJClo)`AzMvH*Sr=EyyV@b9 zsCn>Eja3tE(!XMLqCtqjdHq(A5CwN;L?*aO5WAnooRaaJ6JC* z6z;ia_f2NIZ`s=6g7EN#C8in5|?VZ*U{V{o9g z*}SN?Q?oN|Kqlha*Ma(ntiYzuJ-Nq%bwa;td+%Swr`Ze}f@^#-IR?BG2+lJWOE-QJ zfW^|;Y?DN4z_;m+EbtPzus&e?nxkQ?b4a)2B4pDiT-Y~#h*`Ct60)sRX!p$=;L$#d zXv%{0z{<2u;a$du_R>l&F?V*Nn4bDmCdj!m6^%}<H=qpn$j6~;0xMD#)X=?$c9Ucxte2B24N{F8pw(RzJG!nK4 z?0)n*H5(GNHcs2l-X{HKi<|jqM>o^F40d*&cqOIywnl3o(e2IqA>Y%IAj@XvyKzfw zZG2cSb$SRC#q1zXH1prW*0%2XN&5S@*4tMXr?GJly)k?Fv6E+?*eR2H^!slq?0&j* z`hM)M=`CUeaE=%Uy&pSWETn=W1-y?78xbOy9%7)=hp5=s{6J~`6**~ogJ`%K%NX+l zmZeRnO%d=4s5(S}jk@6lj&^&JUH^?g6OmimQ2#pK_ydE22=me`Y`|&;%tw)w+6*G_ zf196(=$%AzS%-acJUf@0i${mTg9CoAJ>$sW{Bzj`Ec35-Z;!s&Iz~OZdFGh)?%r8= z>jd=q^%_Qt0)8qBS@CG3nOJkqD=K;-B73AXzy8KUdB|9#=_`lOkeM7}hyodgMffG% zgS{9V&1#~oM27yqAj-^-NaA#PWHG;(h=m5c$Ui?U4LA7bo3N5zX~HU{`Sq6^l_d-n z)MH2H2s0JO-VS~kfHZPv1YNR#mGvMB;u9d)h^z?mbrt=6kjTBDC<~?_QD`s_h(`z0 zp>$v%FrWoAEr=ZCBoOfXWQA~PB2E%qDSHLMixrhvg)}{tB@g-ryc&sZaH*n%=1WJC z>!VLT^^_J2YVN@SVMK`qd{K4x)U(gh-&JG2aEiWQ_ca&_Cw0H31p=Dp2aq7K_apK{ z;Xy;QY#q+Q8}y%_BQ|xv9+k8Ks!e?YoM0E6_UD^IX8pwBU_MEclwge|hAv4iCS=yf zh0NFwu(fe=I7i^jEho=yoLgHtwzM$cNt(*d5=ABgr;}#rc^>c2(a zS|6$JzIls${aM^5zRUnfwP&9tL*#k&4}*wvLU`8Ppx-5)kWP5q9TX^LW-6?jluMMEa3!DIidf3#`UEyD zD%ot#gbFkeOP|9S`KQxMW1)EU%y?=wLKW4%v5-4g9Jqehu{(qD=Py++t>j33p23&~ zC-Vv0g0nckl3jUmN-Nin_04Pt-PCR;3&++kc#|dixR97y9v)tvicwx^Z;D?zY~EpQ zW+5IeEzeAjRSPHYu85kDUz>_>WYbv6yEGLo4!Nd=6CTYs9rP_s4CG^;e{A5Inux_P zr8LmbZU)ZTwt1a;h@3fL{0bZRu#eT*#8S z$ngxi+_bNlt>2j6z<=*SX?~sFI6wX5=GxpT|k(vQ*%L6aldH@xTr>9ypjcrHPG{(*92)f3fFU_wXMcbIv zv>gx)<;Axfx|obp9idPnNC@zyn1%uA38j-drmDL8oeooRk%8mN#?d4QC_kSo2bDId z#h+QKX8v5SW{{@r*=LEL`&o| z8>RkKHrqBEo(d%Mvv~wijR>u(sXN1=!kjyt@egJ3*lQ|pPOw>#Wy+gB2NZzb&MF#E zgcF$XrYg4yZ?-n!%`NZz57zgzD{nrkKeFG`5jPyfrV6S}K-EP>B+B(ZqN?^wV7Kp| zK)j&T#l0M(qSTb%Jht@ziu`74caJom)~&WV(xiHGs~x#2%-b1)+>5zJwu-G-dJe%x zBn8KlB2t-U1{Ud-s;XX<@xl7MZX1?+n45{eDTzTQjmb|&EpiQSXOnw3(3ER1@a!e# zvnY^Tc_`k1(Y1BDRVdih!gOJJVk{904|+8< zZ_9h#tYXh-UJs%TL^E2was=51-lsS9DBIA~$moYKa`WR_k$^~#0>uy`h3lYzYD4OD zSvC@JST=1Yn%!;!?ywt6KM>37^=PifqQVW1w9YWEbx^jfGw5rUfq6-Dg53N+Eu+Jk zC2(~5VG*7|qthou47t4#) z%1ADi2oJg^waI4d5!2q*`sO9FP2QwWXb77Wtex`pK5&-JWp}B^(G&Lm1^~WotQ`kd zsX6S5jN;TA0*3CNVBBjMrCTIh05(+;8E=bZ@^2cGaeH;vJR6bsmoE&wVSEb!{=!%d z4&*##YXOr_4feRDO=NUj6mTUvREN*&MtVW>i1KP>?Sk>$;br6G-F+Jpd1CBi006#a z++Y}ohCqP|@F*6ZQ$aMSj$6oRo%T)?xUJJ{do^Pn2G%Ldq{26w9Jt6FJEvE00*OGx zM;rB)48+oirL%eNb+^oKtZZo8K?SX>z0msV%5uxdo@5<2y>Y(hA!|lepV_zT9m*i$ zW(*=7_mjST6g*_x7=`u28ASN_-~5V6FM%;`^t#FO+oRk2`9Iov(i;QFfj!w5tM4~@ zvV157NMkqLxH@CTyl1X%6o|7!wA4y|lu->AvsQ|@f9@`5Qwv#Y<0Pzwg_g2I$ z+()J+^TXjmcS=h&cM#0u9k_#Z7^PQQCy)Q|p|Z^Cn{PaPyqerRyqD|xN~4zzJONXM zGU-=PE9x;q{|nylJ{UN=_QAY|dVzGUoOK30}a&yl~#^U%5xR>vc00H)CT!s9}RaEcj`oeV?~7EHIzpeO87A zlb7OY=!XQ1Vvc)=$SOZ***@9y4^)sPRlbI*4p`%{u<1~c+gDv8LJsdu%lbv69bK?Y{rl#Ds0A0ntl7$Gtl@G=Jv7laH%Zdnjbennt?BM=Uu z!=t&I>m7^3+RlSk;S&?*z7eO#3cl>9Rk}JlXIKCeYVz|hjUJxM20F{QPc)^LsXlBw+MIlTm z6Qi~KQZ{~R)EkAkJHf!Wn+Tnxmle!qvp7n|`XT1Ijn6PROfQ+wZR>uU8e>YMTEEMw zrfqE51{%xOdjPtF*bE!=cR+QRr$|>QM-z3~47#b*-P9|c}!JyygE^5W5kvd#04g&9xgw<5*9md$Q z0(Y0X4m4vls4_kbaoZ7%)w(8#LXyQmL z^r_zI4LG-~dIWL<boIC;HHCLABv42Jg{;u~ z#*rBKdE&!{lMsW?^C39hM9)_lV}T4wWYJ0zTRW*RV2u)nilrUCs=#Jrfd-2nRXp0f zce@n)w|QUETt$=X^IbO+64tr6_&TgCas?Urjic z6d`#W-lW!%9uJ|Zi9)h~DH)praT0IVgwODraJgeic(QtF1sUx>BP7bpnW+n&d1rBM zH9LEGHJ4qvtC~GA85Qb}3-Re?d*S5OisTmaYvo8e?;aXY`U;zO&sMIS%uhw8*YcPM z!PwvoeFwRnF^6VZY%mN!2%Kl-Ae0awrvMLKK@)6#&U`qX@XwHhsn-$&pbs*RbCunO zv3ML9-UH5Qc@VP+kk>+_DlXRLYpttx*;)^~p-vpO~%* zj9M<)N0C%8=uebBd;ZGg?GLT4K79M+mGggC|MtY`nMnG?rG@!RC(@CbTPEt?u9bfE z>dI>_&&^$a&C1nZE!Ap$wc9R_PhUSfF>&_#^!Vl5YJH6PU~{iX6VwKAQ*YiG4cG(% z{m8Je5#~P%#*fA+F+d5x5JLcpmystsj0bpBHtR)_{BuMum>(l^SId)n-0~2xuONhN zJ89#~wzqY=H#h0=C*6t?E+E}IW}1+N-B4J+we+a%dLWug0?V?=p^&=jar*akXCTvYUWNHxyYA z4DiR0k*p?w!w-OBy%|P!p(>#Q(h_sdlNQo;?IXv}Q2UEGXS;94SDGPTtWT3K)@t>S zH2B)d12`$S_b$-)vbl@(^A(g>i?ExvhgMQI1_AAJrEHJ?! zX}avsbgcO&`ee-9f!Qqevu$jGPp*+wV!b(V_x_*7ylG!XE!I+B|5t-Ye(K7Vf3y_kwyGFB|I^++_9C7`jv)Ak zZTL0Z!%VhFL$WTcC#;_{9!bM9Tr;29)_nj$zejWT+s)`K>Uv@Ox@Z{KYQMjqfc@bs zS9V|Dscx3<8_3zIK@^h6IPF9zB66rB(zh{ZFi*Y1mE{C3ITecm#FDXOA|4&`c|ZeA z3nlEfV4>WdT@s7yx4YfX-&i}~PJZ(*%vr{`IbEP3A|BfUWWz=1Is+Dp(iK)zjwkKX zCa}PEUtgcrr}?}Z-gXBIq$S{ih9sw(ckTLKjeN;+$KE}SI}$RLU0{Aa)<(?fmC1pi zfMIUSOW8)#EHqvrTjg?jraUt}H9i_03iy(2UiHdS#@hAc-hKG`b2WObcMtyNcbPRK zdl#4&KLOKNTNoJ<1q8!xFk%<9rNNH5hNf(|Y?G4&CZ{K-r^;AMr^+xvCeURI_UyAO z(`EmUdv@6$ui1O|*Wb;@OWV7^e0BjGs1RVDg}C%gyco+$05C6IHZmVLMtB4^oOE}M z2+TwO;MJ?bXwyHx!2EMOpH}qaF`}}~#W;EJD&NBLq^c$n3qT}nX2NhuvxCEK^4y*tSxeFQxXLMCE`%CVUcWk85G`V zOFIM}+d{v&5B~l=Y=^BK{7&D-+F;rPd7H=e603ys_1kUo!4v_ShnXW+DNFlILfu&6 zRqtpMEO`5BCzIe_VsZntv_(Ty(t*SP&9(&hnS{K%G{62g`%Hp$Vt?Ll5nin!I)t~d znA{-pfDI0K`&@Qe5m9pt9D-dyA>V5@8Bu(A(PUsM^cgX#iN_Htu~~#M(fPqW3o-Ef zO+|iv?&4hihn-C|g}C^ab~Kh?*y`&>OHb;ng9Cn#=9DFoY_Mh$*g^llwrNup0Xfwe zJWVp%>SN$sT;g5Y+QF1#a~J3SYQHHT#%4aa&zOii-@8C>W5@y*>SSPiz=Cz>N0M1r zX;!Ht5TXmz9rvGBsJqmFx-h|2_Q-+-6h)y`jgGNQ5B`>(M?!{ZhmFPlHH;lM z55t*Hz#08iG(rVRHf%%!DoE&`*m)a_`!M581yeL)bTpMBFgh_hF+P?mrAi~Y!Jt=j z*bsTn;eTd zDY&LzHO36=Y9FW9a~Y$Dh3Y2HUfTdVd3b1y4dBVO<>O0>)ymZ5=&7+&?E~50pb#*l z9X`dPEnwDObnpEUhWEJxjML-5le@ZDj;%AMfs4745k1QkiK&1tZ9{Ag_h8FjW~#ZO zN434W%&um*W)UlRfob33cR5fm5kwWWWUioV!U6)VTE41^UyU^ycAMn|HnSFFy38(O zsJwc-)=*mIt2DoNfno2sR**IJ&|0Q&uv8Fke9g;q7qyz(Ytci~-XFYr_5Ft@yN%ri zv3FhD%@78M$pm$3_r8p_y%swxjg7bb!;{yTO}fB%rv@Q{ygH_{&LP^30+khdL=r~a zj5`p5Wor%6srARM&Mn^aznOaz@JO!eZ1~<=-Cey%-Cf;Xy>Hc3z3;o$R!eH_Ju{kp zG~?MvBX2Wau~}>bu?>#d5@QI2B|=CYZ$F5C&osNIt@53|}C|7#lFFZ9JpW z|D0RZt(IoSHkkkUf5TWFsnk_iSK>c15WHodl=Doy!O7`;W!551TM zqrc-j;HiNlLBA!7oEo%ZXl1GpOxdFp)yU0sXPqLM5 z{KeIi%C3t@CoRs5WG-td%$ZK^plk`|&NUR`MYa|R}nH6Y4uk^nh#ciVj zAt?e4=p8mozae2vD1!lMh>mnpG@|yo5moyQ;B2+*Fq5vB629&Q%!b%P#N z1#(s(3OpTmV0!CVb|x?UCdar~)Y zjEyP3#k5}XZ!wJWTTNm>w^B_Kp&3*%V~|L}#{hw85Wu;0NXKzdw`^z2yjZQ@#JMLu z#YwtpLp_52=kvpgu-DvL}*1xyu4r=mj59gZjTzcurlb6EEf_FGaN1-21 zmwj5u&@h0x!ceeU5I|_CeXRT0O^rX*VJY{F&R?t#5q*b^ci8<&H}~%?u)#+)8UpZUZI(!n?tzpo6rHIwb5m z;V__oE|6s6%3PTjxsTm;+xV@w{t>>mfxj)s8}eHbM#;5X@HGsJ?9khZR#!rGoZ&Vt zW^{@a6sz1rfo`da2i(JsD9N1u0~K=gJ|Nqz+>6RSed4y;=pEsn!r19Ce3N|J*y%C( z|00a`V341<7g>9%?2v7-2-K=z2hAg>MiLt;(P-7|5o|WWZN~d!l}gMO z_L$9{Fhn-v2;n;r#DVH4X}~PwgL*B?=(H4Ld7*$$J;}q@@!|I1mZ4+xAB0$xTYE-h zApb$T_YI?M=s3C&-HfhiUiuo$U<$=TofttY2COwrvtKQ5|n)ULD z?Te!$$pr7f=&DmEZd|_cz|!LJ?Z;=PMz)P^D;E>P$>C7I5$EG31F~bgjgqK(4{c_u z5!Rd6#4qym^(t>A#@yU>OpCD#<9`j+6K;2+9tzcxE?2S^g4zvyz0UOzkTq*-#-0`;Wykd{P&2U7=9=I5R;-S zBhid@R4gu0bV5OR=qPGqwBDXlYXU~xrpa^!l>k8Pe)o7`w&3;^XR`U3g42HCC&c{PzQ4iM-n`rF3m)j@id z`9-c$KFjhVSHWk!*dr}1EiE-I!9XGwC zmF?E8!vzzlW1UX6=iMOy-?$HTcm>v&IFxc*y#g1^d6N~dx03W^!-;B^7m_@m3Ojfq z<$$l>wD~2@CIxIFS0uA)U|^w!}@-&!)YQ%>MCW29*rtF682_B z#JPj8IPHG(a10jbOe!)Ai!%+2GviUelJ_Z#^OdiNMf|Wh15rK-i&L~aB0jn}?UEOc zcPO^@G5jGsw%L9!uG{b3o9wp{l727Ke(%1p`OeoB^PL+&7)93Z!A3lVY>>;+Vg~Zl z3?i5zD@dbRT+nHOoplHyw4G9GY{({ZJjby{Pg=`E6lP|`DjdGNU!R z(ymH_)PZ3Y1A>*pSab5ADP?AOftM`deArb;c*|u^BJ5&=8c$*{IydJ}6?rk|>%-c` z_+Td7XRx|Lu29CrIrL$z)5W#Qp>)8;n*6~~e+FSBu6+z2#x0Zw9S}fPH3_JNVhAQo z@2F4;)Z%*Lmd;%y4CRJavr&)oIM34gTW_uw6U8bO{(u8Hs2?c&3x`_4|G?NTy$?Ht zoUhp0-g3FdX1PF|PmNfDw(SLBAmuucuX{7YyYnf3pO-hs!(t*KM66!BG31E^B3vNh znsTs%F>k_ep+0%-9()Xsy@*d~V_P!#P+!Rrl|lD#hZj{-0{iM5a6>+l5i$-~Wo z9-q9~87m`14c~6m-r)0$?sW8b@p+ysn3cm@v$J4UsLz{8Mus!)4|dIp;`1tjB6WGM zpe}F6mY~E(i#K&#UB|k>9C+96!3XfzMxRH=dAs8Cj9s7ScpiKnws(Bq+Q;w;9-}^Q z?gf0_V%O*GMjL#dkyqdT_wspW^7}hIhv>J4x?WH4C|)n-Jx6uVK!+IkL2RN1wx|NxCt1IBsekJHpR=~~$i<>hjVGno~2zw$9JA^$5qr}=B zL`QB%!{~;l%W3a7Y8af&cs&{oGgvMljZOpFg%D|qz~{l}G>f%5o%X8E8G_>Qlr%r9 z1L721g>Hq5w6|UGnx&@6R`w*~wh14|UX_(@t)S8lMy&)`w^J2mR>-iF5eoG!am)=cIFMAu&}BfNq|rmybSqfeCV~rMRmiyokPg|UK zLjM+&NmGe}QK-+Ll1#IP_Ec+Pyg62{mI|W8**RAUkOrz)-QcSlsD|28t8W`jKGVy)^~0HF3vh{#t7wfB7DguSX?biU>AG z%FopXoQXuzQsrOWQoNGYkU-@bkOYCn2?B1SlX`w%m4 zU^NVJ*o|;L#wU53i9wvz!u0i{zGb~m%RoVy8Ta>(_O}c9TsD)2K01=vQAJf=5)RJr zkJU*RL0qhs<7JniG_epAuoD1Jh1(-)>+t`mt6UdE!Bws&|2%N>6(<&sVdG&SjU2(I zW9{Y3ZwkEoV{e2O9B=$M`Sj5 zrqc4iP#v8TV>Xou12}|7(m-^u)LA2iKVpR=$ffaa%OXy8R!|INU z^>VCQ73*&{RCZrCd-#pvI#(PR3DozEr}TJ-P5umn3wHS@eZ`6Gx!~Avi5ub??cK@I z%XSW#ueI%C=56?WgIDY-?U{;*gI&|tWEy>Wb8diHXA_%7V7CqL$Tx$^2xzb`5FNBRg+_rOEgmVdQtAT}; zszkGPkx`BzF__gD1dW2So$h_L#}+W%Kr)ih=~Pd< z)Z0XB%H?aM&7uP$p4qkMah5!$XizotqMKn50}wg^?JouqW(7bb8lFWUJPQXoi(ZF( z*r#P7Fr$q#fosimJf4}byu)dSkX*-e4dzRIA#MYd27L-Q)`4K^C`@P<tPc~w=N3tGIR&bEkIz1U*5-d$f(TP$ZP@0HJ6Q$rM{RPRvOGUr> z6~?`WKSXXP52HS%<5&@EQMixQXnfHuwBT+WMNlgS7Bn$&rKma^P= z5nQXb_lub8aFU7 z8A4-Aq-B<&N{iA~Man6lyH3JwzYjWE`9#0ya@wqV9r9wYo`ptZ>h9}-0|egbv`2I- zFH~bOT$(x@aEg~L3?H3}#ix!A4IP_`%R7R5N~JwPye+iXnF+bYLZ(x_zi?vkov|$b zZZ3ZFO^F;}VEMJPOr3lOX^|VvqAQ!1nE+X>V`Qvh0~*JAL%>g1y_TMWO@IvmhHEme z^l4$%4H%t72Bc>VdO!`RjDhYj=qXL<+Fp-NH#}G=K~p$U@XUH=b#9#-Km-@CsOmH& zVDE(zs$~wp^t1EHF4X_pf7`Bg`htDdh~JjQkG!-qwXciY;~TSCT-9+FQ`QQA#k=G? zUfOvZkb|@MFuoh*p$7RpvW=CcVmU{$hrkWq9({~)-5_NBcC zgEDJpnMv{;6h~Qf5Un&%r0q7wfZCYRFJPA0gLQ1FNVFgsX+U}grW;&4OPFQEBAu4i zt#sg=2Gsi~nm<#Tc0PwdF?42ptT8fB%N@)gRNF!n`9>wGZGodhr} zpnzefwU_cL5YJ}U&N4OCCJdpi=omWC+(+%gK!WIvgxUfYYysp!S(9oDj9?3lNN+H9 zY=ObhX{V{v9X_~w=fd3hSTP?8bj?8j#mxXkSbk58;o9yjU(;(C$W6a5-VV^i3z>^^ zFAtW0T*TU0yn^4R;xgrCp_7YHx<9Qz=@89HsF{e!MpTCV{}h$E>gBz@7NytDGQ;FM zD2vKyH@XbnjP7kZi+&%&XkrQw%aWawL~qony7B{^rH61IhLyL{v+^iPyFu%3eIfdq zHL%9LtM`RIV*MAFnjwr{{mQFPpFDBN{`UOPKsX4rXA1jfaTcV@>=!ar5G9|7`YMJ^ zK@oq?HGbwi^EH+}4>mr~-3a8ZFK6xJ@j^17;?MD>QH3zKMY#Aj6lLoZ9^^8V;OMf>JtVexV-?swiFcZNL zt{99aLpMR(fd25EQzu5(UwiqbM-J`THQlO|HYbarZTL$_7XJa}@?Ty&->g}m$#=h; znIv;Bn73a2KYyr6q}lsvyob)>O-)lz_FgIE6wgoM6NCvq-pS>A0hLU4u0mR*Lt5SP zddi<*OvOdPR}#E!smWg;;m^LLIeaMz{}&!O@S9-8Kq*m+;*`a+8}JYYV_lS2SPOcs zMyuC=E~!?Jdu%%NR-&!AI@Wy(wRi8@xnuicdw!xhP|Ib4{uGeLm5}*m*$pKX-dbNy zUwk>sNj^(c>g&Goxv}hPtY9yN5#m9w9 zhfiGDS3a-?kFL=z>VF{Pz<($n}d8j+eWdN+M5~5%r?J4>A?+(v?Mzj`|5yItL*K@)kxM^#6n~n$MI%2Ue@)XY<0>xX z;65#E!r#P`FT&Yn`7|hwwD8-pX#gbP)}C8CM|P8k5QB90GQi=AV;9zwa%%OMqLceFoixPrmqPLwaO<_?fF|X2OIJekbEZdL)9x1}&e*2!m!QLl6V`03RgqZ1i>Q zKz(LJMl`*7=7x#87nXM7Q}Tb3Z=HJ*4?)bBMfa22NXOc=n&S&uk5;46;(4Raz-Smu zG~_ra*`UK1dVu@2ZJ-5Ww2=tN+ZA$@Nwt-(^-iG_T~#G*Dh&c+X7zQc1)+!D!v>j$ z0vW+;GI=BEfHahFx>JJ@Us~{*j2Ejlfc~ z$0(G>(%N#D-PuDQi60~70$=AjbHwBglO$6vIBO28Io#(J2sx7<>oXK|`et_SgT?8g5T5Vv;cpC zuobJ>CPwN1B6`*jrT5(okHRfb(mogZF21Ti5pc)CA*;=$3!7pAXCxeUIK2AcMZS+) z7H7Y;-)xYq@YSS$r`e(Y-PLdHH|h~aJJDABI{XN-LpGTq1kLvM5zP$72=rtTS=ND! zKeHR!(`gQBp^fGijss?|-3l*YFV|g=wV;3EkfN%KJO5@PGPvui*gO7iJTkcBRP62e z4Xj393*!t%gOj7gZNx6>dI`0v|Ivh9~5I#*OcM zNB)=5!9hIn-ifPDwf<6>r%`<9HIw4?g-R9)l0||7GjcRTJ+;1cB-M z4)tjUG}43z)CO-i0;)jNkv=?s$l$#~2H$?r!h|(AvnRzG& zq^ZVf2#WQGkzPNtpwkd2iR?GAw2L}uag8$VL;|BkB~i|2!$D~E!$E&uMT|=a#7c;j zF=TxyDVwIP=KU)|#BfUxPn2oiJ7mSd9TmZ!$4O*79EOfW1%e5E49#FuXOs zmpq0-up-TvAr_1QgjIzXrWNd!c2et#4RajF$D^DT65DpMTJBK76$=25OC1|0o|v8G zv(p7%A?`PXxJERb4VbaE^$m@^ED-uU#GRJu%T%l_6 zCPTrLuOFX2-I|?sW?R|JWY+2P+v6B|251Ii_h)I*h*u>0J`8mWe(+kLCqM-K3f`O%k`2IdET|7oTq1|p$ zsZ=dhE#{MncuaY%D5qqyyRXpc2y@v(G>mk0_y9d`(^}^9l$2A^y?Waj$$&QgF20wp=BB)BN&a$j?7GsmkNM@ z_ol0=OVKGqRVI`pur#kFUcFnJ1HhCbNrTf`btulX4h1`;Xsdl^CuL(R%G z)eSvpU}>*RBW<6p{so5YFbH@}K|WahPq2XX4ZlqH%S`82mHl$z-&|@smyaJgeCXiP z-mUGSfl4VOadxQ>%C@N<8Eqim8EsH(qds0$ZwoR&E>x(Z9bRZ$;kiI&tw;S0id{ff z3`*3(I#)=t=bLkLtRor>r+s}EyN!gyTP05+>hh;cPHARP5(np^&1+)8eMjA;geR1* zxniwyFj8-c;Ym-wgNu!2t0MvSh8v>Zeh+VDJdDxA7R&e*wSl=bXZ1Coc_Vx12y@t0zMt9 zCy1b32oW2Rs6J7-S=gjbq{kr2E(r$N3utOYMT6>O!$Qkw2 zTy2)b3-ho?y659r)b5;&y>1EWwKtrJI}@gqqOd_`GZ7naN(7ToqIIBD-9IjQ5@oMD z6}BhFwj~nV#uD(HflAyp6|OWxLZcK6m&d~4u~JC>q(4*l`f6FfH$4yx)KlIsY{<%m zXihGMr|}ATMCGNIn)wbE+{J)l)Q)%P>4J6xK@TE?-yb}GS)_D)e;4@sJxJ-4C43hD zh{RDIlpgaPJt(9UikiCmc}WxeFn57ZDMoRv%<&g)7}Nim0WYhuy;MY7lYtyYP-qgqS!npgt6D zN(LRALhw8TtcI}#Eu{ZPY1*d`_1SEkO=obY1%?r687v$JN#c*+H1nyMcfM)-P4Arf z6#jsGh#2HH{s;K8`Ygi8yp|>=Vn8MoX@-m}Rg6BJohey@Q;Y3)(38q&&W`T7^+f|>)e5Y0<69( zmjMTN9{)%_h2JFK3q-1c0U`~2rt$^wypaF+5Plow$;X-^!iXW50XRm9iD<^Or^;yq z_M(=YZQ9f?TIHmDQII zlzNck7XX75hB>7$Z3glIsQbe(%;gthm;)>K8A8YzlmT6()Jv#XqbrG~duM@u1tD@M z==ai!wG7UH1{~hZj_<4`rDUyE7kGiK)v&LyyCKCV_LtkQ3gvvqhN8`a&zoyV`JLV- zHuRZU&Vl#JkCwb`{CQzyXQ{fU5t$#0l!iUoW-L0I@uXt9ejrOagjgiA{?qhYxgFRY3@Kr7-c0X00%Ww_f@ZqVMBSYSXJw02E zjc!e1UVduecsrACAFslHr?!qp5kX#rh@G5ykqQRT-`8kHH&rlzv8;mbFVrIQQGvrZ z${)nn=J)NBKZ?B%jN*soTH}Fp_y}TX48#)&L6`6pL><j&0FpJZlWx3#kC8{{ z=$DkW}P=_^Gvt_Ai*-)Da@YeB?N35J(Z0X3A!p;j8{&?19l)a+?gw+<_>Z|CY<=KM?f-ZHnhufO zs~;n0R^LmG!XLQ9+H?34BEmd3{WeUA7O;@1rX?bzLfTP2!suOT8Z`8*;CRe7EM=>Ix_40E>k`q6o zYOrbaHu9ge{yfz5cX;fonxpy>CS>T6iFP#0p|+_40;U#4P2E)OoKw2v8ezxJT8G_QH%aMykR)y z(Sw>xfwD8P*~?pt*Z523M6Tqn?x_2P;q7@(rI<8VEtT=vNaN&u5<82>wiYIw5=Bn8j!=(hj{+Pe$%NN?-z0$!{#`yTw4sVByM zNF@1tI3j=Kp@;Dj!e~1}=p9s_+1|9$HoS_|Do2}Y!hCLTwa6o@F*O$ZE|HLyt^@UM zWAC*-&?_EL#o+w2p4T30jJto7E_ARR4xSm_klbc!A# zcwHv?sj&ktV`lzXwSIg)Jz2SY_3UMpF}y!elpN8Kb}ZE%jLcJ?7{(L$ z3i1f8>U%@;{90z;`pTmOgKkN)pn(!)$Kt+bK;<5+{|LN3B@+1=>OR%t zg21tG2&FR*$FNOT0E2l{xen2*mYN(wTLD73!z$?YCT)bAT z(u!VnCE#~SR}MwT^4|E^mUwN^v2`l3Gvm%4tChD_eY?4tdH-NO=!j%JxkEb&8R*fS z9EsU%hJ0&BIG7E@gY|Y!{^#o)_T9cdZ!+jj1v#s()4S6G$A}DgP`ka%k>lTxzS$Um{PA&oul#p-o4kcc^4<8#)kiz` zn4|VI*z{>(eSqF8L>QpflSAP9sS$;C1WH}PU5x^M!&nXft-PH`@*KWTK?WiSVIzLW zhKg(rqq((1A6~D>_R%wTw<4Q`GxiHsWM|H=$W9@I-%P%W92czrZmIR(s_rO4$blSD zTK}yGV0P=jHBkTkX8DtE)JL-g2NxAXE;F8LG#X^8FW|E^&Ai8H!K+uPV}&8^qrL~~ zPc*hC*cgXi)xBLW=1|FzAN3Hcaa*)I~pU!De zpx_48O{a4`!0kPB`U^D#oEp1yE}33f85vudPox)4%1?#|7mKCE!C-i3TcNZ#7}Dgo zo~YKA+quHF6Xp7eEm`bLFOEiIW80GH#Zf6XwoS3RX%Zwhmw z#qVIHZ0Ozsc4r(+j-Z%bRfFO}*DN(%ZWl(P;7YsGkdreRkP|!CJH05OwslK8o=7HA630t@kn>Yn7m!7z$qF3|LvOC4H=^y>S+xWxNN9S3VxVL&nBdib{v*LpG)8!p@P8W7LJyy#}=|K-ZLtW zZi|fUEYkFYgMqQmteqnj5=T*}&$U{JmV_v|`Ml*)Rseq(+bWQZY>8+>VD-Lql(HK- zZ{3r?DVOTBbXUak_A5qC&Zm;|%Om?v2a5hfLxrvNU}ShPcXG$ApRTnR3tN|~_2cdA zL{%u|qK(B=c5zhPx1%8c0-n)}5I%t4hP24lbaZ=fsq~y)f|*)hf1K9WV-!M&7%2m* zM~#MJJfliwzQL7-U>b|~ujJR`r{s6F$s5O3hZK8p7GH<&qH)Y%v(~FlfDshJ0x^V2 z26e-f$R=$9_Wvzyg40?2ofkp(W^`x~ zC{S_Cgw~p$FD*p!@z#0>J#%#+!|xx=%$5V|A#^zqR6=O@`Xofq$@W!KS3(5cNR&rY z+peD*o{o<1dooahNE_<=CS$RQvZ5S;C-8M@j5*M(_Rh`voIo@44UAF=A>?s69eqYLgoiqACr(SRRBUylXiJ9?r(=}_F%IN+ zG!nWL36y72vGIa0JhH12i5$Din;j7*4%zeO{P2`i-ZLi6w4|Y=Gtt^_aHmJ3F>fjE zc1Y!*P>I@yo6S&Jatx(&zI4zUtj?xJw{fgc7!k5FC7*g~3sJ4wBwB77k~{}2vEEY~ zZJ15L;~Dit27pWV)YkiBpkJxSwoc$~MfB7Lk)1suvIf_AaXVM$n03A%^*H!D!Q+E! zgQfDsiEyiBh!+QZsaDY&tjr|6Lq(A}S{UBYSt*8h`3j<=6D>HzJS+%QK!{k#S5XEu zft>CatQm6S0Bh5}JeSA*Rt)uNG$&CiYB9?}&u5{U6wu^CrwXZTZ=S z|G42vBCS69;Sb|)Jg@9VEE5Ttkq@Pt2~f@@3|e-dpP61PszJS#)^S2uE96l>98GPG)8E?n3c$Y{YSx23o}rpo8ZD#M zFt>C9?K0gd=rG)-irOA`JR0!3^Papr5drE$RAE*sv4*pjQf&|H}v=?}83fS%Qlx zm#Uu#QuSbs_fOwBbYKWRUFk6bvt?fU4gOPdW)s3rxr{VZBq<0xdjW(!;+#s?#v{gQ zOW~5O`DJCN|3=QBAWBnZc3`;^7Iuk}-B{2AQpFqw zrlOBgAjNbz&2tICWi>$4#)h_D7rKlUQQ$<@%!o8ur8qR5BN_>MdA$W+_NDyRdMGro zB`5##F=Jn}zNJEbC{;wx8mUFU)WGKG_{v=;?vuaftF#M+cFj-jxaBQhdhPIpGhPja zDluOEK0NaQgqUBEGsuZV;BRO#qsNG4&@yPUdlx_o8y{2$-tCHnU7}k|2yo)H8d;x0 zqAzm-=-hU8y3q5yq+fpf)D%87^_A|^{scQZkNFjRK>jc}BYzEN*PnB==K(RbXYV0r zkPFWK77FrEMF=fISc_KRDODD}`jB>Ls%VcutH-EP(x%e<1=>)~$@3!FJF!qb9G&_M zamYW39jhI?y!E}^bCH1jd2&aiA^+AJI&t|=l(8X)n0FusS>f&&6Qrl@EMeeog{FE8 z)+_@h(o5-)J_ZuTHfYrYLldu;nXpTWcO z|Cav*Z;?T!17VmEa;TGM0w9RW&r#C7mJ)B_ohkR8vvIVN!QOk9_x0QWziGpV)7d6> z(KqUc_y))p2%6(zG7q=D6*QWaMx}5A8|ScUS*5i-1JVv023*KBGm`lV{>Pzdd0TUe zdB;I+b%GpR9U?ndKe7G>chQbG3eH3mZWwkjUEf_Im2cKY9h-@`^~aW_t%b;m5Xz>P{41IpP&EkH|FIvS1Of# zb!#h54`Ra>j7x1uDrN%1u8*--cbjM2d?tTWaLvl>9*C_J>nQw15^X;RV?@TzYWWE7! zykO=VQsE7P=?Q__R&p#{n@!4phxbHBQm$HIbY|KnWWDmwvB8%Y9r6vo_GZI2E|l_o zDlu8~ku%})xKLYi+KyGd#i&dEl`~qz|1Cf7l=5C*K?D`={WKPXzDb}{zKMqf($ma@b->QTSdVpDtXrm4PhQ|TYqdUY zn|COtiQ_mU8%W#1GJ(;yLuyk|pJK#c{MX{=Zr^hIXSaX->Fr;A+m^R|bvwQq?}53Z ze^fICrb>A`hNpJwB8atDL97*@-$AS)@Zzut?M2HNmpSrPc{M4oPS0WWR z`e|}T_TtAOE>K4CPCAO4BP_5dop!ptqu1NJl-#NIErn&i-nEpfpqwRNAP;XwWQBFU z)CHJaFN(;%@?vcq9vIOBm?ORYUm-bNm}NG_ZXGR=iY)Li&_Ch9yeRn3K`vU_e>>?&q8 zk4;9BGe-w|M6%{yy|0KbZNB!zn5vFd*>zcM_{yEdt}s?}(r~zF+>yAfZ0>;jBJk-_1Y_^a;u))=+ z-o=|0d%X){kg)b0@-K`Ac~BU|ffe14F^LOduLc|=ZHRz0NON0HBLVQ4XdCC{+|;8- z*98$3n1JQQI#h+m;-XFmnoW4e^flYkscqNHOix|4C7IfCdTM(5idWruYWnI|-*mdE z$!)!|HF;_=uRU@^n_oON*}8ITPP6=B!_B8oy+*Hp&8gEjL&cRAA#xqvyTIYtz_sWG z1IqEpX0w5C2y}(PBEyIn@A~nNx5!Up!bsrpR@8gC|> zF&EY#4b&!f`r)o9VT>Y=7Ue}wjgM&70*c$J)p9pw{Q2qW*skHmo~nDAi#KwE2i(*K zRjpQWZ2!PN-&38>@h+RP*O@u`4$)==B=$DHK<^0>;xYOP%BwJQtF|d@nZ_2n`PDZe zcc^2-{4F_yEYxzch`o&>0A8hXYQyMo9IbHcj*mJ<%r)npoW_kiAL(L$rg3pgtE<4CoqRn4H_7b zgRG8FYv=d-L;jF0AtVGV?YrJ{Y!U10PlCBJcVOzHmEEHeaddb2r&H>qjHW({e>vUz zG^3qIk>5bRusW>9*ah`@Am&q#2{d%-5TWRRBm}y8F7^x;x&H-k4znFxd!GC$c?hLY zvpGujohZhrXy9Omz&VuC1cY^rQB`;HxF9FjXGAHS0(B?wavhAZE>s0o)Uc}vZ6>&p zUs@Qp4cRIqXF+|?t1;+OkwF}oijC>2#Q6)l3h44 zFkC!1m+21{#7JxJ*ooIRTeq$>Y1FxPmiY*I7gqpgGWf&I;hwy^ir^YZ=VjQqgDt9IvVM{nD@K+P38BW`dGEXT|aY*adz{ym*U9i6bM2hgx zVj;03ymczEEA3uBeC%ouXYd9vkxu2SOD=;UG8dcOZx?b#AX7w!QZ93UerkI-m~EXt z`jmf!@w$@vQY9f6c*E{~^GFdyVqrdL^i4Z!TA-Vc#Z0gcgaEM)XbMUPQ?;e0cY)TP ztL_3C!gu3I{ibLfTB!9#1t0y#(pXSpdeiKo>Rh8LkEU#UOy-(kk_iQ+fS9oJ!{X9 z_meXygl_G_8O?(>h9!jIilh=Hr6va zUB62&``@LJJJ1>5USyzK@8C_&|Z+v^@ahJgjh5afmyc$>kK-8 zs4W+I>6q*78K_QIF?4kD=oO>Gvy0N$Qf2nqz<_JlfHa!%TzRBe+<9POq_mYM*QWA& zwvX;M8;{QBw+@C!E2&hGkJW^k?PKG^^?E$4?i+F!b2qXe4|rbQN+5HmhmI2XRzwhV zM_Pg1t{@gZZ5ttwd3M-s9I_ybWQ!O;#YT}$FH;6{tqx~<1urBvvZdA9Lef@$%#|M0 z$p6^E`k1>5gM)>Bx6Kp{ocnqY@CRD0YiCK0Rx=6B;JWvu*-;3>BM{cRI0xX9b~7W! zm1z_?@hru{`__T-smF*BknhP3CJt^A-h6QF8R8{BL|&9Z%S{u77U#Vlf@T#pdb=ui z(&Yh5v;_>XF!_%D5zRl*tpPv0;IAw#-51LxqSWGm;JMmXgBI_?2Cvs$>s6kVIe_Q) zt@MX387c1?6(Y?8gV((>I(1^~FZ$&_ac9Tk@v*G?&|gnvK`$bkYV0hwqc2HF#gJMbO^?Lc4g zFX%hv7(Uz%1)V%b@n|p+O8C8ez!|V}z?y|vt5fXLS*#-Gf{h;&MczeYdiXEA#h(}L z2AkiWDY=pZ!r8}?g+%Iq{XH+b&BgRT5Q9U^`D~Kl)AzLs;Yy4rhQ})jv2yRvt-gp| z8u%xK0R_Z&5<|C#1hvBcO;#9!J^|l(b`m%6*X1-Zzzo~g4ikYGkX6YaY_tvjg^jj> zg9YWHw!zu44Ghi4tlI{ijJ|bkxP%h|NW2R zcU^zeoBfCYSF78HuNmt+~gVx!!}}17i@CXn+H&ACg-%fI$fHhzFpN4y6guMi-?=)XS_L zYOuws$cpy(6?dFyow#G+&p*E9t*2X8y>-jS{+t+|eDcXB&&j`f>Zzxm!u{uK6v2;gmZb&4)wvd}W}TO^FGoS6!{E#DEN&vLF77XFuMC z>-962@p;A7yL+BT*@xfl)B_Vt zl=BV2TCxmqm%o#FpmVQiY;|UwEAwUiy7m{o(f-Hz$;lQmoRfd`v!4;e-A{l-TI?QifUQCg0qQmXOJ&reMJZQ`EE*8j$bSD(dyB7YGN%2$JJ zQAXn#TD=S&N|nWe44uCxLr1eO-n1P^$ZFdEZCIL|lpmd(#EI{(KKu03ilqWe0lmoW z3S!!+i=|6i;Rj2b_`&B{1oQcA$CEGCblmvj9mkb7eVhPg1h8l|n1o*V1Hy)^sF+T^yD4%qDg*ISkOLzgNi)%zF@ADzJEeS7-ZQZrYK?|Zj@0%~ zL?dH+XHrutLujxlYWkx2nsKr$f0lf2xj33#I9912n@^8O!wZR2dnm$-dGGuD1rZ`Z zm_seGp(xaU`F)$}zvxubcaW6UAR91ml`^=g{wp4vIx;kW+CSmkwyEumDK$719Xv7} z$GZBlxzyy~=0-E%cGC;TV5Ra1;V*RN53++D2fBIw=nBQ=iBI8sK83$BJd7~1tVM{C z+WvS`QhH|d7-TuP*8iD)@ZRxX zSwce8nRVZ3Hd>;Mf>O7?`u=z&-0wyVim#=~Ysn)jy4`A80NHjS9VSMa_*FRRR;1>8 zBk&ACVE$MYB)n{qD{{n8W=n@mDK+Gmo=&BLxTf{XVTh-4+t4wo!5XQ78*CzH3 z%SVVoF2N3c^!>0xpu*yAI?JH(4P90hbL~TIyU2?aw-l64Nh;1UETUOAT3C-!>Zjg~|9^UOzv|^*zjbN4W=l~F%52WSS zFe>o5dxuxwzW&+D*bvw~BuryS56y=oM8lp=?IHMHmEhyUZ5!uyavqz9;}T(-5AWu} zsmhqW6Ckf$BQ*{i1u?8XJET5^5{ukJpTY$QK@Y0!SERuXDcFkD;&fPCRu={PT^sLT zztFw^Ve@@E_k`H*S^NyKqZq`_UJn6rK7ucRXp73Z5RNa@O9uTe9xD8ddcY?)^ebp| z0qq{GYcu)P%nhDOUo=y2MJLMwBmV{)w86q;BD2qz_nvHz9-S1W$s>mGQI}hC^#PZ* z9-Sx!lSN;t1tkQPqwO4w(%LiRv$V5D3SFuIXkk4>`#LQFEL-v9B4FA0Fj!)GXiThM z0_Cah62coyd399NCueWb)Z}6F+|CQE=BT5?ML~TCf?YQ zuPu#<(eZti(vDF{vu9%BU6-^I;~DpnE%8Rig{9h3Ba)muG1NFd9TUg)*PbATABIny z4%W96j$ak5Z-o;Th%J1O?lmv)PoVKS4FEe-&~DgfwOYMaPlV&RIPBt1$5{x2L{`LA z1>Sa+KUQdXvtzOQC$G6}3!b>1j|Xk_>{rbTW8z5Kz548#GZ_E7*%x!?2B>d<^VB0K zg0iTHZf^D!3k2&R*+Du=UJ@Nl2F6+DmgiVimS$D)MQK_hkp(y<2J zvWYP=P`0Mhj`Vt(0}^4CX%6=(AZ|Ks&}%dZrK{;`F)xImOQ=3&NcG^(<{sRc>4N>h zD!t&FKR9$?=)~aR>3DqV$iU#?Rt(D%j8K`3c}l5>VYn|dH2vp{07VY1a)=?XI&|pJ zq1Bty3&#fPN9WS%`6D&Gl}XK10%o_!TLXE~j#H_rlHXsNhCW`*+5%z7BPfeL)U?FC zgdqk@nTr@oMxBfMnlTn@^;l!jYL;ml9D!K37Y>M256@5c76V1KApa)yTx~#vF_4uF zzeV|)K3Ftb9rPXSeDbDi>19hxO>;U)y)Pe+O2D?!DqxS&010Fp6qrY0CaRSKG(vUq zgz=;Y!{H%5(jRr$MXzxn14S5EET>4MCs-I41znLQB)4(?m><(pCY zELkk?-CO>7YwNXF!A@0BlSdGP3~1_;3LLJyEwAJvyMer7xk0D87cHmAmXEZT?t`N| z4ORg!r#QBMI!axt}m3B9IG#-l76}ckOj30DvOR zCrMc9WFWiXw-Ot7z;D`U2q#C5Oi1G7kbBm&sN=ZOs!f!!JKYZwh?ptUfgHa?6cy=PqhpID)kz+w2uruq+ zi4JqPD3;n~?`dNqmXoA%-WhOm29wjD48=#{j(9i`44T|g5AU^G^nLDdPMF=L%rE*A zI=?JxD--JiW^pG+0l@+AIel=5;t>JxOJP!XzrWP9!M5+&=Ag+2u@R7{+n~o`Sbdh< zaN-2DFbI7^wKXQFhhrICuVn$(rB@=j7hq`H)!Y@sl{t3kz|fs7b@RUwZiNt8d-K`? z`ZKB&Mh)&TK9zU$Agl#43oU?OPwV&zaQ_jb!y3ZCo>wk{vmM{}$jy*y3HZ{~O)W$-DTI-N2&(By!0TKS_rU4Rwgo9lv1tb~oJiN^%=J zG1y_(DPblg+~~(nRFkk1^6hd|tx`@Ec1pi{kiQ7PL_k00)!FY$#|lD1Z)xbu4QA4$ zteAE>L%eO<o%0*uC^^Q0heXz-k}ILA>p28(i!0hk#Ki0Lmf*|mn>byiCa7$ zbskR2(pkK16P;=0%7i-vo7E2XKVwvCz_M1*_KHva#x>7|xB`)g#d%pV`pwr+RoUQC zm1y(N=}WlNv%Ba`gx*r;=A>7xL04^Lfoa==GCD-~jhCmKH>_Wf0rS%<+Cp6W!AD3! z51f@X%&{OOSqlQf5o*FiXSC5Ns?Kz$f(v`^ReVhsyA zlG3C1$=;}wW80k3wnJn@d{WmWYiBsLJMOezF&*Q~&^mU`1tG>nrkpj{wL4tZQ-_K} z{^Z#_o!+%sB2jMd+M846tTeh()k%Hc|iW$NEn_X z})MvNf8ri*AzvBi+<6-gutgOro1_j01}Yk zd=F9QN%cy0KZiKbnJu4ew%vE`z4sm}zi`Xe3l8ntnfBIOY2D15hi*3W4vn1KP)r)Kquu-_eZOnfSmaD~pzvR#|*;bYpiJyE|OscR-ObRnfk1qlK~jWZB>v{Q zLxcQ;VWQEwii&W=o2k0GEmTdsSDQlDZ4f8RT(=-jHo5K)+#yx2J2c2o7@iB6=iU!T z_fVbvtzkwWJ5;9tsJjiOhyKQOM+Uj0LfePw_fFMMG|q`so0z&|&@Xa|>y9-kk+-|< zIAlgWd3Mq48;bL1%q&gmliN2XJ#9c*N`F0N^h>!gr?fQX!rak?zT!gP4JmzQ<&>6Y z&Cb8xS5Pv$*q4)+np-rhZ@-j_bEXv(rHr06JEx!^r#L^QPrm2OnlURUzrgjDU6fax zKcgt++&R9&8*>Ws^Kw%9%=8r$6lE1p_usO9Q|9KE&P>VnmH3LU^W~+STU1z@GB#(H zFQrFzPJwT3&JEr<+c#rQK~AyK=_j+FCC5)qKR4PytV2`WP*U92huY*$@D-Qj7Zs*t zq^6~%%{U{av~+sToYJD1`Gut^eXbjjIXCGa&IUuNa;T}<-C;sxhefGOX=ZJ+TV=}XQK$SaRZ8xj~SSWQly{{a?uwl zNJkn5APp(#@4w1GKcwJ7zkC_h-4!voIU^xE?+fpaio~3?Fik zhg9UE2(!@FhITP>FbxGLLJCG>7G@&{1t>s{rAq0^Z*VsYGi)sRD5w`&Hj0qvrbk0O z7jxi4A#Svx<|7X|Hq4opDvdP@#hBiRuK<-Pn2UUrVkT0M4IfHudar{Ic{YY36x!Sv ziyX{?4=Lz@Y#W~sbCH7^8eD5AGcdBO+M9j(R58#A1$e!hof8b zMq85BoE$gbORTE|{oOj5Z&Oi<8!#I_TT;2UK5CiGvaRI?q}p~?Xlr!7+t#$*=GmI9 zd_dc?*6eBaep7j(`RV1V)|x`huoP-dacYOQ9iN}OXdY-w(!0)^K3s2Ge4&kBV|D73 zwq0$hL+XW)QYS4QjZNpghNR)QEdLz}yf%>@^maZj@N>FA{*1;9OS4j}d8NEmbJxjd zO>3a$cqHj6zEA<+eM~y>ou8pzOu5UY|BPv#kE$pG)9fKIER}m?V3{>o|a6mn---;X-l=TxfHW86sO@dx0Yy*=2%Xy zu}-(?QmN#~Q+?0j1D+&P`5p+PY1w?KZNHkzbN%vdoQzMV!9|ugX|4rA9#ba-tw;4GkxCc+rvy<}H(rmL99)MS%j>*+2$tVk zKhMQ*Tw?1?sg-_p^QFYCi?eN+rdqzHT87q{88{6W;arS4s&~}RV!@Y@?zrkgeg_!+ zT0{s!?bjD0a5~!HO+@M!z!8I3#33FDXbYWTk%VNlM+bC7Cv-*^bVWCG#|cQmiRgio z&=bATTjyb*FHXU!=!gDD#c5WrOGgGWF%W|=7(*}=XJ8oq4`<>mWMMc);B1_OkvJFU zVH8H=d|ZGrxDaD;5iZ6h$i_Hait(6$iMR}tFd3I)3a-GFn2M{AV?yu;{1iXKTlfXG z;8xs&JMmjQg~v@O?l57v1rMMSdvG^?iQ7#$)?hat#h+1aB1{`pnMl-_DEuDJ;$QeD zmf<-p$28<(HSR?oK71?`~uBMymZcZ>M=0wxOoMd{M zUf75IrnfoS^f7(SDdtqu&-6E`<}{OL2AFh{VKU7?bGjL12Ad&fs5!$7GyiAKG-sJC zGu(_YXPa}(NOP_^4`o&j z$xJqvn);%<}P!$ zxySt6+-vSL_nQaIgXSUg3-e3!u=$mF#QfU)#{AYiY8IH^na9lU%^%F;=8xu2<_Ytp zdCL6RJZ+va&zk4V^X3KfqFHGEVqP*Yn^(-M__cY>yl&nwi_DwmE%Ubdt9i$~Yu+<| zGw++fn}3*pn#JZ{<^%Jg`N({1{%t-nOU$R{GxNFm!hC7IGE2=ev)rsOE6pk_#9#0V zUd8)(2`}UCxEb%^Hav}g;BEZXtTt=RTC>i4ZOY7gv%zdMo6Kgj#cVa(%yzTG>@>Tu z*OZ$Iv)fdfJ*LW3n;P7O1!k|=XZD*~bHE%l-RL+oL@_%xsoF!Q@ zTt>**a*m9YbLBi4C8Onhxj@Fqg)&wyl8faM$(C_)sf?EiGEpv*Nitb3mnm|ETq#rK zD#?*)k}G-Qlj$-;W=g(XE!Rka%#uPWlG$>t6ibPe${e{)=F0VQgWM=TkRQsAWS;z3 zej+!?&2o$URDLG6%58GH%$GalPPt3&mV4yqa#)34K2tkDh(g&ykF?NKQ`!R&n-dyD5O_4ptUNmz~;f$Q(IkO6K=9I=31z&|{ zJLD8Qpr zmD*G2rCRQ#TJGbWa-ZXr`*=5PbKJCzchWY;p2Ef#=NHZho1@3r@xdvJofCW&G2X2o zbDVSZ!~mVqbA#NIg4{O*+~Jd*6yIo1QIq|(E9yqSGi+S$%(*#E>dww|&ja1_>F#-u zdmikbhq&kA?s+W7X{pr!}F#U%qY&e&SzuENIN$&$Ga0ZJiqWdUva4~&t|;i zVZea6oI1B7M|%DveV!|BWF0SYzB-qYqdk9-`JO9obR92o`E@QMFY^3F7J06?i|TlZ zE2?uDneF+DEcRS+*>$|c71z0p9Pjyyoa4FT#@F!@H>b{}&5-l~PPwKJaLP4(fK#sN z14e|E_-jYHTk07@oLZ7G-0__;;_S$C@`_5Q`3j2WDr2&a$UMJml;1Veb488y*T1Mj zzcVu1dmdTrca8JAO8l-%{jO5a6+Y3{fbhA_X`-zq;dAXNa$;V-uh>_TUlKXj@6yKL zP^xXgajB4TTqVvKan=79iLi~8)&Y6q*2y}N+Z!5NSdMy) zv)BIU!tKrU&y%K? zn^DdkjXJ(0|N7uZZS-0n#HzzjOz1fpdZ~sR<TsSk$k*=9(XFKn?+&MGt9QWFL&(T>j z(;S^8bAZ!j$QAy^v!gtVOr(@H~s-$xL$Z}I0M{p(%o><-Eh*~aMClJ_|qME zkeTji4Vmd~xan@X(p~z}-E^h9=}LFgmF~u$?#7?)#-HxSpW()z=AB(S(p);yTsj80 z=QNj|G?$(M?)3nd9#_g`4sheoaKp=R!^?2P$#CDxaKp)P)0N?dli{W-!%bI)o30Em zTsK`AZn`qubY-~d%5>9{>BgVw#-HiNpXtV*>BgVw#-HiNpXtV*>BgVw#-HiNpXtV* z>BgVw#-HiNKhTYTpd0@{H~xWc`~%(i2fFbObmJfB#y`-Ff1n%xKsWw@Zu|q?_y@Z2 zyE=8It5atVapNE2#y`Tn9x=eq8Zac{?F@h@bVolJ9SBAngsPR1v`@@6zGA)S%rY># zudcOAMs+HKk$&pev<=M;y({$o__EO7g#JEsN!Tf2X<_ri9uJ=oUK;+3@Mpr`3ttsp z8GbM#HDYjlS$tW<*oZ0d_eRW%xj!K$;>n0N;>+4x8apN-rp>g3nD`}a?rQT& z$cH1}h+G`GBC0UvhfzynKZ+V0H6f}nDle)~@5KBtsx)d|)K8=Ci25MvwWtrGmPCCO zwJK^;)Q+gigwvxAMt4sb7Ckur-k@J?%>D7T&MzS*@QZ#WAts@F^!qUq`%z54m@8v` zsPDww9CKI9{mw5TCg$OU80XE{x8rN$%i`|{{>OY4+a~su*kSfJB6dvdnAi!iQ(~vb z&W^n<_BAJ_*tcUpieF-XW$y16v7g2NB6eB)y!fhw?g`!Ff0__uL%lb?*1CQX|4jVC z`1j*K&|HZxi{BEzE56G9YU67YkPxnPCv;CpOGryNJz-eFh=ef-lM}8=xG~|ugnuMd zwC&t>RNL&fGuz(W_VKo5iER=K6Yok~nD|=a+llWd?nu*Y3%7Zztc= zZdJRoq?DwwNw+86lk`PWP13>SsN~C%?@4|z`Mu-~?Ni%NX@5ui$J_tAeMN^69e&s` zy<>WZM>@RJVOz(Tj_Dl-cf7jegPjsOF6{Vb$2A?RI)!&i=#(>6c%&aooOu4BQosk%3ZHbW*Epd`?So`4#(j&-b z*iTX=&Dsh*OW_%ErVMv2f@54epkoD`EIE?rxAv)}Z??7asZCGqc|VhTtmW=O`K4Ov z5Qm{$gJG<~WNtL=SZVIydI{qe3Fiih<`zk0nY80ZN#a&XW|?&6*D{D@b{~og{rVzn z(3Ryd_z5c!jiLM)!_Wqkxzh~cY6)Ytgmb4vbGamPtF+^4N#+*m%r$6_SXLvMyU>L- zn9NEn;!e~e3I}nL$!3+gomCRX8VToaiR5mHW2MA%mn5=Ul3694Sta^C+VQNAS*(y- zxI-3jkKKW}2JNtj+fa)WaS)wNHuss^Z3^F&5Y|W%m&qWmmNWSW8O66GhgFi#r80~A zWHvWT3HQl-*2tZ#lKWVVNVI1qI&cR%ax*&dD|F@8(wmzll`AEaJLPn4Lq8-j63JYO z_AEySZbL_|M<@Okn&K`jM|ZBrWbVNteu7#g;~-K^Hp|WJTxss$tL83llMt?R(_JNz z+#zw?A@O`e5-r^i2c^AS2JuNblfRZxTqxtYTdrc2gq!6S z?veQ{lRNp9+{bmYfHjCf9Cx8BH)AN5VHkHIiz`uL%W5;)Ac5P_mAf#MOOVB-DB(8T z$ZEXDYH7zc2*XfrKo+;6gca`HJqUB(S%oZaKnd4NJMKU@61dyem!VvVEPjm=mPuH|Mt#VvT1Yp{rmP>Yjr5Q9w@es214lgZ{* zb35Oc5H5B3O^w8HizIQOWN@Dh;vW&_55ar8A2*>bLRf`l?#5(pMFDr=TJFLku176; z;vmj4UAWw2bA!u?c1k$6NgQ|EmYA&jy098;@Cd8%6j$L@zJ+zHMlCwyATmuNt4%*H zMhITzKGY&bTRTGW2y3v2HCV?QlgJu$Kv!2)u$gyp9OG zfs;^+3vm!v;}CkAFhn2(XK*>jqPq!$et~Q(+L|zQg25x)4{@Jn+3PBMtVOh~CvmJq z62C$(x77~gR%EftP2C35g*(jc+>KBSb2mD$5*@h_o%kDc<~DTaDv9T-2uFKXqa!z<6DyRTNpDt2 zD$8&JhH?>xaU;fJ0w(h_OyMRx!qr&Budt4*v6o*Pu-1g(N|VUdrX9aBL-@YQ=GW$S zu8!lmlO9t1;ATGCjrb;=G zq;d=55yzc~=T;Gnrg9*wI-3ZW(bT~%{|hNyCunnwafCLbr{B- z$g+H>98*}1M_3_YmUAh`+AbNaMGWFtg?R2mPg^?cZThpUoZXKptkgOy;jEQ*+$kA6 zhzPXj4mWp|C#g*MN_t!VxZ0N0Zd)Fc%n<$)24m3|#th+3{R{_sAq#ym9362kVlW0V zxDYY82r(#VA(c0#;!>t8f|j;t|$j5%*{=U^lBY zCnSYc(w9{-kX15>wP=GloQ!xxBMYZtINBly?aeC)H?JeytVX)dkwy>1qqF)jtC3;p z)pY{O?Ud80E5Z!nkL;5%{_EEv$U>-D4V|mK1QAHEykQErO9(%ZFz&ECAlgdhO_IoM zlElBd{B@^v<~HfV&C<=5gVum|Z45fQ`d-ATWH8gA^T{8vddgVLLq3xDI!<6UQdo`N zT#P>YO)wZ_!r*imjO3R%kL4J}3XEns&bPT%flFA8Y*u3&%W)~IF`gBez-mn7eoW#% zOy+)E&RSbbuHXS&$t@^=K_SacJ{bH42ET>D zqcB(igWtj6_b_;YUt$rz#)n*tkGU92xEP;_P&)7%>BuVS!~@cqHPV&eNH^}16jn$NekmvM8|le!t0ej@`}A%pn34CXg7g!^PDzmYR|z?R~PFqVUB?bq~ZOHj#D)COYgKBPE?j3;bDuXmh;knA!mtq+ABa5rFoJ|+5wJD8er6jV# z>XjW?EuFbVy78b4Vih70!ZQ7O43fA6y;zB1tTA1tvINPt zkFf`xxCEWK30+u)?kqf4encpQ}+Rm)}<>FFryqo8Mkus6>2O2Jx>*L$A6W{ct=8()yUyH(}$?Qf??!-`jfnnT)EG~2NWw{&c21(>j zN#bTn<_=d&S}omJDTBBJZ4kokNaA)|+lTUit!<0A(RATTb31Enz1gha#ERLIy#5EXdb)~PhM{877RzKDzm&^ZEthkx)!T37S4c!W-$YL? zLl$3_aePC@vrI1IJ90S}%ayFLam=)F?2&o=Qf}cgtL@L{0l80igXLmbz!iu_PwtUX ztdt4dFIVw^`CKVivqENbi#*Dmh>-DIDOd7<%;IL5$8x!a+vHZ3 z%L4Az^?a5`>_8Tm%RKIuTUj9sSczD~a~*nev+DOUiq$fXU&#cP%Vn&!vE|zoYpHxD zH*ufb%BB9isde+_fL!k8kCxw^tVN`ZVwH@u`C99i>Q=dl2jmtT#txfcy?d?SFvMHQP>n3Ew;?Gdp~^8O z$JWJn#wpCR?9=lk_b$6~E$V+{oQ5=N4{Y4a@lLoZEs!J|1w=%h&i9zQ`r~cikK~R_;@8`%7sAWK)7O0C`xSdKog)RG=LV;(>h~%Cx8T%JKF?Lko&Fc$NO(TamHZ@-en+1D zFM*3x|FbF9d1Cl(@qyzF)n-_Jykzb70sM&X@C%Ppr!8=)YJ07P?}MIfwSo<;mE!Lg zoOJV9F5|o3FUngNe3zB{x^=^J&=PIN%X=>6>bf+18yuNsDi8S#KjBND8?(m-Q zX}6F54j1b^Pabna>$Ua6gRgNnm+?t{$mg_0;js4d00QO9H*Kny+Ipem39B_-!Fmio zv^L}QT*I~8$@N^swRU`J1^?;thuwUNYq*_T_%{D;?Z@xCt^H$u<>kiV;7T&BkJYRR zj=AOFhx}u}H~$`R|8L{ya`V3lftvo`j>gNnb!FN25nRfbzK?Xb9$M0;{ci*-xm&-k z)i}7Lv9X_kRQJ%BuOmfp33xq2uW$ID<4}&|{a?oaLJn|iV4Su-xQwrINkc8wvv4(! z#%3ZMIk>_03$<^!S>NVrZsz9ZG{>f(dM&^=_%}YQ`YN=q__Z@5BB%vcavyiIlC|7p z^?(12iKbg6SMqN*e5ZfBjcd4!oAi$s_wTuhUvmc+d8r7F(d&UZ)*XGqH(AbQe3@JL z8Mp8w{*3?PJHdRVAzYn)2iNle4>Wv!>^MH5wjOM+Vn3?`<=S#^e{+6WeXQwkK8~gk zs5^%TH}h+*lm9cF7FP?~(j3C~Mc)8IO9 z%pkx4Jg|maxRtePCsE1lNruL?Y7gG*Oeb7!vn^Wt&-&l!`Dz-rl{%xknxnPB`i5Gh z>|Hy@qA^Fn%9r@Ij!Lw&h4OQL!A*fN4c69=B^bOLItKI*SMzTB&*R;^%i-6|3HBKPH*+=D zaub*6J&*HphtuzET8`TCX|gQ2Nyl~qt;@!7+~)@dNl(pd9dQVn0bU>coVPl*W=oyb zAh@G}G(4bOzcYAHSluA}{mz5^_ZLYUUTuuoDA3eAuZGZKy4-dY< zhn=Tf$QSLn;Re3W*Z4f2=QI2>pXIZBhWGOx-opp@G#>=`B>$|l(7BM09dWuKyli(;0^P+~XjuvZYtWJ;C+f#?hp<+4}I}Z>sJGperVt1OMhp z8t!3@yCUKdwb*0Rp_^$l&z>9B`%W7r1po*EH$eu2h}cEk9k&RnC1LhiML~sRicI@O7QR;;o6~PL~r}{oT=0oPN9Z@>@2X=tYxjI`!}XJ94+dm;kyQ> zh43zZ$R}8-S538ciR#RvX6FAStwndu@*{FmtV@ zu2$k$z4!?K$rrd^L$ZCpMl=_V&mUKdd-%Ez)qBf3H>Pbg1&^wR@HFHAEcMj^o09ES zG?JSC9W*b8Sjj3@^FjWT54jew7ME{Jz<;tr!{tuykhf{E}#%VRD?Oe~YU~N?GqugRO^tHBCed*XzTYyuL zj_&pRrPRA_ef0K%v@JkWR-Xnx91V+i@B=>S)`3>BTzF6m0r$IQzt24%#Txp$nqUBK z9q{Xfs%vvcK%e7V&B=mq0}g%v88pua9B?5kgI75zt1auD#E1n{68Ek2~x*XpLHR zxjZ2M`9@>!x)jdmhkTky8g_sfH1fzAtR zGDR%cS%kcY@9;6JyB#P zaaxSmJ8T`eb~;;!S?ivgw9_<%tpkm$G-^!7xLm^@gSNQF-mMS*liPyVku{bJ?uyhs zR!eX3N}OZwXK{aH)HIDiPcqORng$=>>c%>g#iyu3X!ZXW2FemBuD2e^^tT;kbd6|A;7u#sGkEz1F!bgN3eb1Xkpht=*||- zEO2M`knUVu2Rd^haF1mz9sO5$df9gq4cCg<8468WRsPe~*W)3tjtu{K3Yx>Q*ShA$ z430l9`?kTyxzw`{cryRHh2u>XpX4(C{LiD-Ucb-a6I|!5qH0|Pk3N2T2Bc zHqB$}XEu(*>2u!|sC4Ha1ADXn?{PwI;wyH}zq5YTt|jHprpH{l*3%kWqI-B2=I<)B z-t!r5IMNwjEk|qgjE*O49Z(C2ojc;zf$dH2V$L;Q+YZQ`!{fVN2Nbq96g1Phxlyrz zRrOn#Ra?)xaD1RU^9Abw&CU1=$^riv<@Xg%y7?$qdTT&~bK-CaNceB7pV$(rjuu?T zg}Tzn8B=igE&n+1ot4JG#h$gKCH%9w5v%_!oLTgIj8E}*mXa`CmC@WfIKJR<4R5~v z@dLlKE1KLjUdIc3nzg|;f#!7GK)R2_TJ~K9SMpbG`KwfT+aAm7uRE>_9Yc2Rcv7(` z1V&uHi_le=tm0$*)LUVAB&DkP(6m;_Pq{vL)RG(2Keux;R~%7HO{^UchWg|7ztpks19t&EZDi6;1Apgk6 zy>)|n$CGu3LtqZc;cHiG!CAXne;l(l!HxVS7jnJ3cagWE*WJshHE{ej=i`B+(ZN(x z)Lrb32R+9R4a=vwUeWP@r(1hA zOVxM27k2bK-^&3H&2i%IDpapN8vYT`LA*SypCjKsg8K-KA+S52hoJuQR#qL$d?fDU zTBp_PG1yYU-2u(8zTKoHwyFSBPpuz9T{KqJ@E51Ov14o6=H>f_t&0W=Oi!Wa2KV{M;_d_Ny?wM&G zT6b%sA;k^v90^({M;oaFhuMkcc!6(nk+q8t$_@_vlO$wH3S6c<1Jz{#em4 z2U_~RhvxM1V7XKu$Gd;j+VHfn027Y)BU=&ZT? zPlA8fwQM|K$Ira)DB7=aG!NZRjVrww!Yx5V9^0Hg_-!DtkBEokM^!@}+ag)e===di z>)6K{YJd&tY%Merm;dW!M}vlP>}b$1y~jpXQ~3X_pmA_p!~SJ3nwZgKcXIt6K`;m* z2mug=Fc`E!8wjEiix9*k9^q(<6hxpGvd{q|F%=oeLmtMW5QVr1voRYN<3`+wOE3@f zkd0e0ALDQ*?!-jgjeBqz?#1sg8NbK7xCVd2$G8)pUwpfQLMrm{0{3- zi9evqw81MT$|T@JlW2P2Gt<*#W4*c5OfZRNs>wIW=BMU%lVa{LcbZ=2ZgY=0+1zVh zFn!Hm%p2x>^NxAfWSdoHmATZcF>B0tQ!6kNBt#<26%r|tW|~Axw8@n?i8FbUAPL4N ziPG6jm#)&y6v+vaVy=}Q($kbkZ|P^QlT=AHKazCGF!SVe$uU2XT)ERcBX`Sv=1X}< z7MK+<2$Nq!Z24!{qk-T=z|G-MgdrReXoE;ZAsR7=MI7RhfVODsuQiG2h2A(Beb5)D z;8gTOKlDc`PP48w3_u#vk%@sg9fL3!LogIQ(9Zw*G*8xwI3Mq(t+#d#Qo zQ5cQ0FcIhD0*t|h7>kQ=F)l$iPV&E<#;9R zMql@*Dbimb^h28e2c%)3`x}BYFb-!1{YD@QBix^+$oXAr(=^)s0i$uD`?~~Z;S%)1 znKpLscrvowKdeiSeJ~ub$G#ZR;D0J62K|AF=!bLM|48(!^Y4$5_CFG-I2XWaI4|h$ zT=&B$|9=#ET6Y>oyMIlAQjw1H{r?PHQ0JeCG5-HRT-fM;5H7+HTw?1+Hio+YG{CyE z>y?*xSJSFFrW7bmM+2o+Db%+o<8lB~&9g0iZKyW zQHc4Nj}qLBn^9`{uwMTd^Dzh4VJ@!64ff6tFdsj}k1!8E#!qk)ZnJl9!_AnFoACqt z{7wMZ;}+bCTk%u;47cHS>+3Gd$A6A{aUbr-19$)r+T#Ow$o_wUU*cgrgkRz3_WsZD z2p+&Ac*s5n?!~Wh4}OE+x~X^skKj=o#>033x8fe$fdw!Kk>4U3KZddXGzXO)y_$o3 z0I`04sk~5mW+JXe8g4*4T!-u2(62!f1XGc1^U^zqxL3}#J`2S-3_uvt5pH>P0d90d zNX9gDKznpR4%%ZHa*>N^xDt~v2^}yA?J)@*k%!61L<9z+4NkXj{=j{|F0>@ICdAm1 ztc$t!ayGivy$wL@PtT4Ui1epO>qy|2?f(JU80Y@NF%{F0T<6!p|I-vXzfLwy-V>k$ zCcD2jm}Yf>WJ`m0%tiU0&{ekwDGNo=Ra_jx|PKc#U zpKF-fo}54Y?n#*H{wLvD>#k3g#vbr>6*|`Wha%7aABV|}{=*P~aI~>?<8)-W|4ZF+ z()2cjlTJZ0B9UxqIvOaoN}-hiHz!@5FQwD_E0uwq&$Se2`kZvMvBbn6 z2ICQhSoi24)^e+cwXh{9M#)k0&m8}+Bc|BMx?_sfY4mCWfFbs7DNe9=hT;sQU>I^S z1^!e_=)}LyL#seSL$40bvWgdQAow3 zFaP5oQ&5V*c?J11kX4XBBM0Xe6waB2F-3aJF43o#mCVYW zjVnt^(gq-}q$Dlf$}8na8ka$YJ%-z(_8^Rn(ICva9e-NujMaAA<0F%1erTSQOHG;d zmP_RxHyrJ8T!y|9DZS-%$&`4Bl{85eBPYly(oPbjlSIhL(ocp;sC1B%q^I21)3O9_VAfK?u&rh31ewUuXOS;n4vX+M|$=kBLM-q<=+esWdwlg4c1_^`_W>|qz zMj3@NN*RUHa-A^C3J}aJs|8xhhVu1;wqMIgS&{zdTv^5m@b`QEUwPznbkDixp7ZW? z0|)?G1YkkaI@r~*Y{jw*fE@S$0Q?<&O9uai&JBQvwgNmE>KI&>y1o7SOMpD|GXSQ2 z$zWOKuRpk00KlsNU~FRZ_}1o2F5d!>zY9S2+{E!a_+);*3V_!Dz*FnCuHW49(KZi& zt`(rbxPJV&tpK0_JhTA-6zeygxbC+jExQ4{C4hI{v0-X_l6|cDBmgV{fcStQ>$eJ@1nM#>mT4}+D z+(5688(=rcrOO0D&;SOX=?a5ykRgx(kO#?L0Jt#Q;+s$jUjY!6oM8|-U~T}C z=>vXcZuzYzZa)r^z<AQ3VGxw&__Cf@Cvz z$uKmLK4_4xT?4gff)Ks}O?UFo( z%+(OUtAS_E1|Pi_-vE9N2NVx-oB)^9-VW~Ebwuzpk7xdi+zw6&KNLrEU(|p>!jUHP zC2D|>m%%xYABv*|Uwjp6$p1*!+9h03e9*4!6Wr=203b= zLF!Xlr8Kjkg(smhcTIvJ9jElX8=Mk;C|oFwQMl1F{HK=E{|<0|Ukmp^oiz4e&?lYq zpAx-lP?LETKFK_Zn#||$N#;Y;fEGRhf?9~cCt#;|B40osehewfQ}9XV9Qu`b%MB^% z+X;P?*1xyi0xhHuSZo7U!ZGCq%8LuzWto4HVwfeLK_6KPDGC1+{*(^pT3iDj+Gm%6 zzDVJ*b1%p$0yL20RPu@D!-Qv!Ma+12-N3Kdy&<;)MqGSSZCw z@Zu!Y;~U_TWZ_w0#T&qlyPybv1}?lol7%j;2Pc(}cnR3&=lvW!^YeZVb`q8JrJb-) z&J2TxJpp`-4V;990CqtWy9bt%uc3@7f<_6JE5XNH4Pm+_a|e`Cxy@V&A^KeAI`A{U z1cB~{*#o8YIV1sQvIXSi72rt#cw&Gg8OwYo$@Wh{Ngjk!>;nb<7HaWNFo4fN9G`<` zVuvEK35tmeiplX%%#=Vea~u>ii=miwLO0dN^qE8hCGc}UctA-E&`se&?uC%l zIzUhNL!#gzKY|o#11nh!-4q_AACznx6yiQmGna!x!dnM)lWO3|0Jup#ovBN(K8-3SV@94d$n+VNM=O4fpw>J7#U9R3naWEr%QrO-;`&`K(S zBX>b7Sq!Zb?>9j!IUZW64#E#XFY(U(z)LnsAGG4Xz{4n^l_`_f(9?VIV`wEVFp+Pd zg>Yb=*RjKyukhEiN3u4P;vX-@Ehn8fmW9Bhnq+SWI%q;-$7@Q6qq`(ax7=S@I6&{2q;BQD!jV>(5 z7sC&|;~O-9XVnV&GXF%L2aSSwr3u3;}>XY2)b zkG;*l(mr9|Y(Lw6nf-qIL-ya<|6>2t{w2@w2ELfL^Df@Ym-DrJE5DULkw2gRIe!y> z3x6Ab2Y3Or@;r0s@vqshIq9rC zc)$yTuoP~9hhP@|jtpv0zzU3GH}*?sIEWwNzwj%9gqb_TEP0yz@rW}3Tf$bb7qg;0 z-|n`z+DGhb?VIeU+b^}>XMfQCjQs=qC-yIR!s~epU&8a!8ET|6?BGx5f6o8nd(SZF zTse0Jt;^^tnm@y&bOxYj$h@EVAoG{Z-I)(Ej{{_$$vg{?c`@@6K<1^)%bDM29?v|Q zxj1uNW;%0B=Ge@p^b47?^csNl0f6+X^yd`O=w1GuC*OJEod@4};GO&4nW4VS+yDLchi||2_M312`RzZx{mR=< zzy0gCuXy{iH_GzLxv#h{kMh9ok-VSBq`$8&@Pxkmp>wkHa-Rda4*X-j_y7O71%CM- z7daF5z&UU(oCoK_1@I%d2ws2};br(e`~hBpSK&4I6TA*@z?<+E+=~PmWKjlt;m`0q z{1JW(FTsTuq>FTubz~#yA-&`n(ngLY zEo2j3gcsvG_#S?MAL4)Ee@i}1*4d?g^1=_!d%`)7_=i5(I~ia>1{}yi2`b2k0w@GE zP-|5OdN6o%hYF~KC{#fV z;*bCZR6`BaLLJmY12jStB%v8n&;qT{2JO%RozMl{&;z}&2o}Q<=!1Sq@+^gAupCyv z5Ddcztb|pt8b)CajKMgp1&}at30wx(zzuK<{0eS|JK#6)Yq%3;U_b1GyWnoP5AK2c z;kWQ0JPZ%PBk(93fG6M}%)*oS02~KXunvyFhu}oG4Yt81d=pN9WAPAN3^(GZumk^% zU%&>~g&*TT@bCB|{0uh3ZhQ+wcpT1wN!Ws);2?gEe}ic_6(0r$&V>u$di0gehJTD59Hw=@c=%GU*k9UAe@Bv;&1U0I3Ioj=fUN0DO?Fx!B61|xE8Jh zfSgDD z8xo0U{C))}U}8d8YjrwB7#5*LXx#@0En}&$h#`?5TNf5dh@a%e1AQXv9ogr{yq30! zHj!%^a*B*+cwps_Q*c`M4)J1N-;h&G4qJJ#n)a%PhxwW8?D0v_-#6r(`^AgpbiAC- zJkU49ujBXb9p}ZozM(NIFY!O2g~$kwKKIzo4B&F+By6=h>>6Cx9E@*>y5 z@8$Q37@R4Wc|_LRKQz{79UmAT5{8|_yqFvu5;16{N1Jy{sep4H z_R7$axX8<{f?2e^aJ%U48=^PQ zA8p}H`ILf$)IL=n(>CO^3eMqxGb|Q_W(a8$C&ydEVqr+cF`gImTe|7Fcrjl{4T}Zz z*T4`j76_@~u&564qDBGAEh zZ)k=RvdDT;d-w9vV*^e>#PM9;njNRN5YM<+7;p}Y`7Iq{K}*M&NRC9+4#|ct3@b;RBG?ojE)P6=LfB> z;jm~3&44}_7LB19q^&75LuhLb%`mjJgl1UU7KLVHv@H(JaJ03CX5_Rj3C$>IYYWXN zXn7+5f9njhSj9SklQ^v(}%&kou{AQlAwAI|3p&44`^ z7WvQ&($*Q8A+&XcW*FKEp&6F8?$C^kww}-oM_X@bMowE_XhuO>e`rQY+fazFm)Iv9 z;>Seo7~dj@I7VqMCOy&Xb_FwPIH zwNl9{r1r%TjfOy2tPY7_5;a0fWIZD5k*0~tmf+Ohh`{spd#l4@&5=|1NOmoe6;gC2 zFOE^6k?bGZPk4s6?k8TRcsNA`siKA7D@e12_A!xdIhr5GcoBnHy+K;WCIyjc8K3MM z5=qOrRb*Pms31G~o^gTaMb;~{k5^j-QPI*a5|5~8k)ATff8Rp{`V>KATgE67WS((R z_MKHl);mr$k+ccV*koT;RDS!c;jmbng9Fd=qRcx72cf>7eY>|#k$v1}+N|pj&&qsvnxns13 zW)!R^MQL54^BiRUGZA-uA4&bc&@F{96;bsl7utu?m3}&>Ef^LD=p5P^q;qIz zDV;+*%R>7Bpg9;8mxpNTkM>rC_G9+iP-s79uMN|ANJmHLJgK*m&Xanp=sc;nnm)57 z7#2tAGihfHeJ1UU(Pz@mIGxiT42x^&9NL+nb7*Ih&Y_(tXzgwo9k)3e8|$cEX9-E}d{v zwo50R9GZdp`Snhbeo5=?&UWeaQ?p$<{j|^w)@LW2p6${JXJor{!kM8NXqaE`Ea{iD z-kxliPCq-_rPI#|&0s@z!nxTlop4^ZODCKk+OK3u&R9(aMa7iJxcheH)O48Y&>pd5 zU}y&MqT$~HO773r8IY&$0qBSdG6>Kg$@~#^F6duSsz$Is7%D@b0Q}-n4hyGxob;gb7^$&^3^M+=a$<`S!{q40qVyosel zbjtAX@NhDJ72C(wD?(hcT$UfW4>Mq!e4Ve%Od)5#pmT**Ab z{F7C&0^7u%#~zUBWIJTP=Jebt+|T3=`Cj=x`Iic{qDHYqal7&|<-t5h-sZg9^8Tno z)pFIDs%uowsQ#UA%b2fR|TsIZYnrfkS=r;t}MKuaDU-jYEYM`8`V?lJ?d*U zR?UwzuW2`GpV8&%uF<`sJFH)-KSO_~q0q40aFfwuywZ5k#GBTb9yfhxwwf24&o%Ee ze_=6LMl3g2Zm>LE6e#*tv9@@5@tIbewZr;u$!N*xB{!BlWb3tUvfXL>$R4x5ZvWJ= z%5k&f0AImx;P2)Caxk@o`c3%=8Q z5Bk3F*ZTMPf8~G4f4H=)^yJb%1>%8A1D^$V2R{g5Xj|z1FoqY0e;$4%Vvn3wmRI(Z za(DR~6+0@Om2XDRiyo?)ta>dr5IZq;Y3%;khwVk_L{+(M`~lW zzpC@s{krax`tJIl)&IF+W5Xj2hZ=v{_+}GnI7|8oc5aZ$$$ovF^-x)ygm)qQsNUwbaUszPQ zXlT)Oi#}Xjz4(H~`xn2lqBrkz#j&S z2RjCL58gibm!-y~155WT{cxFk*^ibTT<%(a?(!R#f4XA(iWi2$Lq8uj4DTBL>F_rr z$E@sHdHu>iuBu&i`l>&#E?#~9>Q6@3kG`_ziLqP8t>fpfjjVlTLOwA#apuH}ldY3~ zpNdb3>(uLRSg%-r)B4Xg9Jk?#jSU;m-T3@5iemY9fO)EA% zySZxfEz_@TNo~1rYhvq9x9PUsyIsG1di%lS+&g?b&fDqVdCu`o$6s{9&a;tzIxKhCp~&{^~o2XQglk!DJPzC-zi`1UbFk)skNtyr>RftJMFR4EvIih z{i8E_&Uo+4)n~qVmh!B%XFYM&U-oGCOze5~?EJGgpMBXmOU}9eoWti{Kq{A>2Id%O1T-TT4?>I)_=xa&gZ!hs8K`%&~q*IbmiX!@cDejNVsbwB><;yoAN zck$s%MlX3;`uF!s6_=J?y7JNsFMaqja#{Oj+b_H0vR8k?{N(+gd~tcf{nzeaZ~XP&elz)-Cx7$KotiuA z?>zR-dqqwh5Vwmj%~a29pSfk`%YBXe#`j&i@6mmS_FMM1?BBZo;r$=%|LQKwT`hOr za<}^K3-A7)d$!+m(>+h$3-?yvJ9h7H?&I$}?f#bgueg8T{V)Eu{I@^-?UxV49vFS# z*$3+$yzs$$AN=g0AyA3bJzZ0fPIA3ONC?(xdUw?2N?;~yL>IM{J;`@x?deESLEiIFGnpEb{p z&%XU+$&>4z{KJ#!r>svM_tdLT7d^f6>4%>F`!lW2T=UF*&wTOh@UvGw`;X`J&uw|` zn&+NG!Yvq2do4|8VUq>?_M(+5c+ZtIJ-!{59saz-zs)ZGP>h*JxCnzzP6( zg8U8`kV7b0$|54H27vk=AcR>hLxyQ!dRZ2Lm9uhA1`IG-PH7A#v{9`*7B#Mzo}NC8 zFQ&^6pMO3ONaE+{Aumbmxsy&A!!mS5f&h*9ee39BQDZa~H6}+(NAdGF-gx5;Am9NY z*OFPVf&;pe?HaY5L5?MaK{Az(d3p6cg$e?oTwS0dN@Y{e+%`)}N*pB)yUki$WHFnJ z2E9%@_t9vTwjc`fs8Ns$3F#Y)Cg?XRm%g%uASc&e;N5do*+}^%Wg`{a_IP(+QZ`b4 zarsEauJj@AC0@Mix}}dj_Sj=fuUmZZ;K74`yY4z*K*(H7dYLk)fNE%hlal5j%Ge47 zS$)iIvv3>-W<-wd?h*6*hLQrXG8sD!1d(i!BYSLBuxfwI-dw%Gk4j zAldT+bB2@Z#)d?^ED{cBwN`^dX$fM4@fpo_#%L%ca-$IQdVL8yW2S9{iB&a{L@a7F znaoU;*Jq5!(O@#iI1Udhg-F7tkFThAdRvC0Rh?(XqpCo4i<>LpVoR#5uExR2s^;my zs`jR2Tl(#~`i5HK$TJ(&dMb->?$%g**!}C{KoC2#gg86eAL*n;H>ofMHrG3E~=% zpc1WcIxHqPt2EM+3NFrQu#>st3NGoa(aLzNDnjOt8?7{%@v}T{w1MwvF@{nhdc@L> z(Rlxr4bg&%=HAj&r?s*(LJ#S08%=bc6d?{(k*TmMQtT|!tE9ul7gv}o%Ek(Kt3DF8 zx~-;s>1b8`iIRv5WZ=#mA}^B{K@T3Nfgb3Gk>rXciwT4M$a17xi9~@QBd{K1Am?QA z^}sOFky?9H$Z_nNJY?BUwzsa<=QSD-TAFKn>Ut{5yfwZWht1$IdQ?i#qds402SEeshhw$f?u2iV71Ry|bt= zZORSgCf3BgbRaiPj*D?T``=Y3_AKa=4gPc18UN2jJH0U?2(A+2O8gpy=YVL`qsPpOcz z48eTppvnz;jYtoW@FmQ?s61hoo8>-vU$|Yb7tw6ehYBQ>Cr9*H&q2v3GRP z-BrNDxSc3K1-_)4lM#j>AOll?$gT#KZIa-l0+pn8>e6Jk`w;r1;PTeeK# zkB3e?ap=So0ihvtJ=~D3g1AeDfL&QNp<|E$kS#E$j2kE+YUxF?XTi1MqzV8y;Ivv+ zX$qRDJ~PU@Eba+meEmr$t*1L~fOl{Mwg3b6q!sAR%VHRTXov;dijnA6yR!FMJm zq`LsFg42Pa*w4+!h9j^~Pt>sT^wa56tN`Q`GMk-GsinRLfNp!i0}uryr=*Kc!v7+( zhil0!5Qt_DktkUPdhmfQSxocF3=%3NVUD@{e!rWg>djC{a;!voNG=J!tZ0i?HWCu` zwXIGhMq7Qp*3m>_b(?Ri(HC<#V?LwN7jrsdJ|lWkTl&M{{w=B0mi|bje@iOd9k5WwC4Y3Ljvu$Ex0$1l3o7C$qJTFiC>GSBHf0H&Sg>W*U zM?f9LayQMJ6NL4W5yobXFaRipQhRAgrZfkml(`xiNmLXPxv!C#mn?;h+-dX|x*IEm z#LxR_Rw@PoT4@#;WHXf|-x1%_Rl>DyQ986lxGW zwIPQp&noyWlp6TVX8eXEp%SW-F}FY%wy=O8A>AMYmXWdRbHJgy#ub#v*3h#p@wuID zPbsG?4tlbNiKMAbCP`C!1tB)qad8U|fZH5ZZiCRgs-|~`&|>MWO?C7ww%S`dlhNp6 zb6a6~Lx;DbzmC^ABY)!@k$R!5CvJ;X_Id)<)wQYRP37g`P-&0FXHyqPQhs|pWCH@G z%o#*Y>L3papf;H(kcuaOo&gD-#UTsq9+|{-%VbChj54&wVKG3y3i2RNtJP`cN=r}{ zbH*^LjT!|bMzz?L{v9sw85&Bz@WN@=uf_Y*U6a=%gKBzuN9I_euqSL695Ws*!X$az+_Fo7} z$p(-MjZ7k*a2lQRcpPn&%bEmV+h}~zNqnkgsIsxo=&rDNQ^s+W=NBq;MqHWx+^wy_ z23P&k%GgkotF5jnP}SRHuMiAQp7qyvdxxi|9@Cqsmr$NLM5@TMz(W<(C9Cy1!jK|l zWuzMzkg<%666%~Xjqgnzt_21nnJ-9y%z^+3=z&B2?aa{v4h?om&}A*YLP7$i?W?L{t6P00A!I784WtJA{=t?& zUBD7{8MYLaMvJXcpQXr8TfZg!mB|$_8iOvA!5Oqzf=>PK%9m8zowa>sj(CvI({-0c zIx32a$~z)uJvx;$951qkd5xA2mz0DZS{)z4Zj0MeP*CKtn1rH&!Xh^iaAnpJFR7F0 zqA^)lgfdpIBZMK{035P1V5#BD5ZQOB`)Jaj)iGvc&$Vk zQw`rzhH+S;3_O}LuhHI)B;0-l?;jR3lPMdMo-LXOkynkEXHo^>bj<@ z3lQouALBasow`4@c2STKq1nveUY~)zeig=o~?d!E4j4TJ>gCpDnM*6>(U+#RcjjUQ^N7 zVlL~B3ei$Wfy!+6m%MrEsg!;~nQ6vMR>BAz1NS7Yeq?1nWLO90F>AC$mA42LxEPfR zuDeIn^bI8w`3NAFft)f+PNC+hn7s9%0Hs1X0V)-)p=MQQHc}vUX`~?bzqpgEq2!dk z5fD4EcR1-l*tmXTe4wwVtGOu=3k5ua&1%#as9*#~3cl4cEH$|#CuUAMnap#_CI><4 zT2lKfCzi6m;|cS(o{v5rkHx%H&>Ia@_2W(5=d5dB@(iv@q1a_m65DW9_hM(P#TjT+ z=UF2{XTO1mPZ*jdp;Vjf}_DZ+GVyw3m`|7)0n@m2twzRI< z+;P%yv|`1sj@DfxRYq;dU`R~v9b9q2SoH8AP1xdPbl!*%$p=E;;Um|OS&%~>1e1Ox zvJx4xK#(Qtq;MIH-ZWsZLZQf04$>v`V@UfSgKZK?e>9P<^7o1?psqLzxU$gJf7Uj1-}3fL@;G1AM8+8F9L) zuOaCZr`9Q12%Owxl5~h*r1(MUFEtm*sX|>}IQ?s!_S6T=v5JO{593v3}r%-;|& zCD)%txsXEi7BUO@P(-~o>f_G^HW>z~*vk4dCWBrJ`Ji&jl*V9GJFkNDl+Xn&gk7Cd};ghf)>_r2+#(-TCLvi@jK;8YtS*TJ#lR}=7V_5nCL>iT686p`6S<=zzw30KZjcPH9C@^wk-&S0FO8T$p-~G?c-ru*B%=)G)|7!P8%&@}I_YA&$?V~4sTbG>z?dX{ ziX?+dmKp-sO}$hCcq(0?zDGvcKMS{f$k%CgI!b;{Eh8`#33`20OK$#s;~%!}`uO8r zm`U%(v(iXr(~EIm7Os?c?v$w8p0vt<0AhDGoWNx9tJTr%S%P}H9%`dn;lS1*ykgsG z{4AYMX48O~!*!JVh0NFFIr6L&S@0)4--cbKSRb1uU<9|T*piK~%9Mtn?5Ggx(Ka`p z(7Su2qH5*t?%v(Q7133@)35M#ORM68wRXO4FdAQ4>yR}}o!Q!P=44&dx-(ij&YY;j z4V9yv!EpDg^62W0V7PO2PBtwkvrq_Ds!!;9F@(V>VA(ktMSai)(hFcM(yE~l3jIz_ zX`-B*bN>XRB%36?EA(NYyua4zs9sWj;C_p*M5E(NP5a5Lzj-hi9&Gmg8%GT8a+|$e z&@X_E8OkWn+pR{1kz5xUBV(CUbFNEk4~=!g7-g+C=q<9t^2SBbTv%rBfX{SC0b~A*`NrfyM)8L|x z1{bX)iURI_^_3ISAB?5nC$op2BsEeL4}m5J%@QuWNkOYoaWcX&)IcK0NHQxMztZZo zdYy(wgD`4NL>aw4iUPw37}e{s_m~w!8&5pu&6CrA9@}&FSo+T=y>$$E{9pe{A54Eu zS`XJ^WBM^Nd-y?=QE1WBR4)g) zRx9ZUGYwj4qsGBsG&J~`{Ncm54AY&_$Zc0n_hm)xd~B1ZdZjo&3U~$XKPlZi7q|t4 zNam05()_c5ssriSlJokVXH)$ji)tec4ZrXYlab+XKBH@tVj0m$^yi!5CR>vwGKmK1 z&{+&2h&vXBw`VwL)$5}ai>0%xo>+C|)mVmCrZ-}B`YC!#UFKT6Q;IixrPcng(Qdk! zIp#Fh;f@I@;$23T!%O6KV89~XT|ha3<_dObXr@4Vc+@N}+gQ_1UY|Arfs)K2Qb-Ko zgE)*OR~wNq21HVTa*QA=_aMjG5jd_JSUD$Wxl;i_&Z1n3>C*gWM~@OY4%WzMD!UVU zOZ^Cy<^FhS+{N2UEG8-H=R;qf(hxMyYbKL9n;w$;;?YWz(P%ImsT}tDd>luG?*d=z zci!eQD__@N;pw!c8Uy`7*VN`syKEY>iWgW$Sa0)p7>p%N_PU$#c84Ct9(DxwOU=U1H?y{zzU;`5N+i`uWP* zaL+`%dTm!=)K=ak2+bAtRM}p$r$mb1@|i=#L<}HM`=P{olyB1^#eygrJDFae-*cpI zv(WyfNwBP@n}jr}`q$Lf2#^{l0EcV-Tee)2llpb{?00=v*HSPNK&D>e{dNVoNf3o??+cG|Nr zr*#H^*wLe)W;3i|zHh8m}vJ9Os{6F!GzrubeAYbt-E^}YoMA&or{^gVE5WYVxlJ)>Kc#b z8|6ZEsYzwD>#TJ>m~dA6OeSBolh#H6;2GotFhfl;u0n?7Bhrv6!${^pdykBUswEe; zsYi|+*T7MKzzk-s-XmzW3T1In61cG{DkHM)7-uw61u)j$KC*~!EU~Cd^}f<`&cWN3 z8OOJ3)dR}>+Jt3UdW96#b&@DCfE#Myv}9p0;3{BcT#<#aK)QRx;=ZAzOQIyIFFJa% z6hhM&Z9TxU5>qrYy;kaG!>ikp}fAF zR~4f&?1eq*Qpzi) zr|s(-Dw@1%^mMlAoMCJFY4Updsd&9myC^8hTmTRy4JB1-(UPaEvZV^Usb?;r@jZc9 z>dHw`>FMcdqB{IJ89(tvAekR!n&BSuI%vTNlgT`m*4`i>#W1a>ps{CGvPl}LsB5A} zgEf@$nrSw=2vD+PCXSj$dWVxnoen`~)EN!>e3gO&Eo$YG4x2+!5-_(w8SEQtXXJn&x&V*?#i@ z0G(D(tv;tuE~$z{RIbP0+`3|V`k%X=ef3`h*OS-N6`4P$U!p6wWWK;M@;a!gt*1Z) z8labKGYOq!42a~<3sO2rPvu%P7vS{9TBhw*m90QyNfp;Lk=GADWOFKH%T)!9HFLXW z)=Hc-kW`kKvwB0jD^Z!)yTEPaI{Y^sbY|P z`cC+dK0U3mSs1X!aN|U~*V{4C&@j*&s#)PT-rb;BWq}ogbHk_z=#?;6k5&Mia&|N zj2dp-`uIr7<7!;CLZ~S<6$R@B zW5jRg@_1h)uf9C}Gjrw*Y`UW3$ip&OwLs0kCTbqe>ER;)BF!02nyHoH_u9)H2foPzRdRz*r`iDAkIn-vI z{is%-b@sV=j!aZmnsGyN!Z^Lox}q|#K!$gaL^OSXsCLGisni8?<`BM23=o1uvZ@#v zVr2=<8UQl$ioYW(gK1nqB6NF+#iZaMgrRKkYF@lnri8-pgdD^)9aH6~4g zqM%qPbM~wN1WV=%oFex^5v}7a(i4ux|7qZZCN0ToRw8-eI2g-T1PC-JZFFU0#@V1T zbq#3|uu;%Tr6CENGIj@wBZ8r=ZF>85;xL;7dDgt5!jdqL9n0>xV_Eu*k|K>vs-HSU zVnhX2*p}5=sv;F3sFNx?tkN%b?$=z^pMeTisx1kDG1rzA5mkBs ze{=YAs%u4JkG*x%O>aF$pQHf#Kk=wQO`lYl$B}R2 zFY}K905zx$Is?_jdb2q}Lq3AfCzlI)=9JTw%F~W}wOx{K9nIxqc9m8F%T8?GLvqVf<{RVH0&&egqx_@le0AiozX?(Yi3G7jUy1(>PqN-!-k7$^>!ammF>2dKjSp)yYHebVTvKew)8@-{ zvOVO2ceL)pLbvwg;Q}qP7J*%yuQw{c)T^X;Pk-iAxRa6p=XyZu!S#=x$(;Yq2^8ZM znRnsK+!>1V2_xnCScXOBR4Exxq%%n2>-jTieHJMJrH^Gp6?PIea-30X;ArhvtSU~c zUSbtz$#h)4R%IyG$j?fsH5xU!U|6O9QfbuZFJ=Wx`WtP*@W|I6B#ndED;2^Ah;>5(+EytuEs>t|IxWxBq>uRG!)p&-9;h4 z&t$M_xTXR})LR_(`wRw)TGseixj*348ntSjhOpj%ix&JD=>MrpV0q>nI7pt()r!o& zG(p3+-&Svak5x`H7zv{gJ2*W(jnAda@kROq1rR9BoJSnwY;Zw1>;EB?`b(@PofZ|@ zprMRbtBvO>t~#hA+sRO}ae>Qf)Rs`Pk;RUv`j>mXK5Zi-Wm%0!K+;kv+UTyXhT!+Z*+XvN=txtZDA{D_F`3cg?#&V(o*koI7#|uqS9Fk zd1utAoyL=Fi4f1>fQ&Dz1%#^1zwp1wv(N|w$t4B(1W3S1I9Vb{6kHtT3bq?$EXT^Y zQyFS)(=wrj8AgRds#cJ%0lBA#@7U6+>8MdKnJBAB z=I^|Lo~?|N>W95PA<<{>IpUqAwHt&w%VKXJp06`1@3|f^P-*b!yv>5%W3d+1+04OE z$Wq*FE3S_rZo-rNi$m^YxwX2Y)fOCH>aVe+b%9h1soKC42C{!y{3YBt6Y_wcn zC`x)htt&=>@p>IXTsbS z=+J2S_OeA9tJfH;s|yC}@ME=BtL`XkFKehTZx6Jpbvkuxpu?Q7HAFhf-m{e2wapb3 zO-Vqo&Ap3bp(imRf|@1NK~f;dk*cb79MZZVnuyLrrLvv|0UFp|i`i(Pv20p8sZr6_ zZ|KW6RL##7MEitTR+r&hi*^WCUA66sE1Wx*JaY2E*^}|?u0~teRabR6>btO+2Gc2L z3}j9PQIcJ9YHdihNXU>WT7m?)EXQyN-&c-A`HgX*<5%=A5C~^}iSLnT zp&6D!XR@sbt4m#ub%iCoB|mF?|Y?Dd8GKA)Uc zyi#(^)-2D5D`*WnrCv$y&B>x~ljSDqbr#N(dkKKjuGhzL_<+tBXzF!&n`5N~9em1d z@Y;2{5|?&#bD=_8;;iW|4J0dsf@PX|!Qd&;)CN60^V( zQNYR-4vopCQ*bf`B?;&t>v1W0MUs4#k{tHYYIuZYR1o88>D4d5@56-@O`m)3t7Fx& zRb>72^z<|^5YBwb6whUC7r`27)ummX@fa)TsJ9P{3>jJ_#mOlGc@fGZ-YQ=eZ!fW$jas!z2_E$1 zsTRJ5^gWq~?@vVhqB!W(nf!5QmAACCByKNm@9h~h8?;4M28-I%MWKQMtxxYQ^Wbu= zz0^_^v}-jcPpQEWi}Z9JUxZz($zbH2jXHInCaB~roetSBNN@RZZtMp+kxqsye$Bo>X$TrlLXo79Th-ZNeJV{z@2zwZ$ zZ|5zemN!k#5$P?7`MLDw4Fj;7DUv(o>#ljh+X;2om>-@jw=Dt*U-J%ZK~kc5pA zwU1UHr;x(c9N}byCXJ|#wH{bdDp=)IJ}Q8dDYz+BmgZFw&F4upUsFwKzNw))S(8k} zV^z`0fPW#~)51Q=djE;;=Uyd{()of>NMx0ZV8k2y&zr2So;Uh0kQ1EIV3tgYc&y4tQ#zq|X&@F0l*U`~^Ye5HwJbkh zrdDXl3I15jABtDE78Yvq^EobGQ&`B+@|7m=;}ygW45*4MEF`xg#oR zY3y-MT&h`h?yaS{S8ns@E4MMHQ9rLfqyLAwHvy0As?J5%-e;^yQq85BRD)_zl}b}- zDouSft0nc|p$D~FJy`B;H#VX@;Kasm0^JM=4+60rW=Jkv2oQp~1agxb2!&H zEge##12WhVrpU6l=#8~>^e6p&nLux$XVRIMBZZ07(PN>mUQcQGJLGlQi9({q;_`*P z;Y7mOrv|*OSf1D6mR$qw)7Yvgc@=rFP=G%8wC0WyQHl^j>>^Y^Toy%yto8V5En3;6 zM3I4GFYurT#=_QNHMH`KZI7oevZoMjyVrN^`oKk4MLrETfkZ6S?sm4dSXJmFeG1zG ztANuAjHTjg8pSZ&0r;asC+#W0-H{I!rjF11{ZohAf(d8WsI%L9x<5J5-QHK|8;$fG zBCpD4`Yb-Tqa)nWF&U0Jye&%DKNyKQJ92?!K~=`Hk$i+@Cabw>KeKE*Av{&>s-&tj zBgJ1>DqW=~eVaJ;N4C4^6171T9_Dcphex3V!fuBk5=K}JdZcj zd5q*t%c~)+gHibk=q75TG7&JG+B$b>X)_bNi&g7BJ%Y_sE z&6vw?jb$jcrh10M`2owl)K&?Wutan++~>{3J^A+X_ZaT_8G4-6oCG0?6=}Gx=uHce zB_dE+xS}cu)M6E%WHlObIRgxnmtc2@!Qo=u%W83)NoS8Rf-aX+mQzV*G5OT1iF@JP z`1#?rsl-`-*HCnEl@!Lu$rm5Fap%?)$(H|`WJyw68_SGm{gf=w(`U+mz)peh!&}JX zd*7@Ph&_4N_wlwzz_&dMKY##);B{;+-L35G1`@)Giefo z>GgJoT8)3n$!KvVm7Xm|qs7^DYNir23SBP7WE1cMIK*w3RMVPizUF0$@oxmXoQ7qy_w>Wh589`duykP{>|5a&@(adwRdm*-xU=1 zjCuAhYFjT%U;Iz+FMq9q?Iy1WfO|XJpl4Bc^B*NfYw_@?$xy(6Okc|o>iNx zD1m&jrl~*D8)dwl*=LE^=~uvoyNHhXG=V+QgzpAXjI+R8#WsET?66p)F+@0uckD>e(2K%|m*8K@x8 z6D;0j#lo*6xg0=lA~!K!Lf5aS(4E)McDu#TC(Q&I-Fd#J7~+1%EM{AxeFsyR&bxmRNt%-&^myWP3fM*>CRNSX^yiF`0+SQ{KC91d=gvx`#oMAp{6jU)N_V8S{HMk`Gc9slP*E~KUd%>x zvxzV0VOdjx`3n|eVZLCzQgoF>cwER>r#qe#dD5nK+!O^buLt$q_Ax;F8w}jbV%vH0 zhvX+FJR9Z$aMQu7$@L0~jU_k81)d&mgl9um1Y}m=xoo4rjM2PI2}2lHCTk4jqdwYG@+dAY;h@Z~l-QbeMOy4MHqJ$CQ-i4*1)(D?cD;X{XTtt9AqGEJWc z8G>xzX_X~W5V^zetT_Dqixc`cy-fdfZ69)QR9oTLHLD&*xB?c%P9?BNS8R>oY<8Qf zraR*u;h@jsY_;X=Iiq8ax(Q{W_7>_**5_F2I{R^dA`)(Mx~;;LwY{su7mq|-E}u;} zWD9oJjDW-8bhJ3zh?>qsTiRM$T&+}2XFCwFMDHfAq0d7Hl-P*$;L#|a!gw$`$5#+W zah}Q)MD+7Q?X2k*S%ePKftg#p=p$PW&;0CYuXnc=UTM-QQMZ;i>UQdaMQx6cwL&DD zY87Mz`?Doej~Q%jwb@j))zylD@)lc5)q3paLAFsnWLh_(Z5Tl{Subs2(Nv>FeC7Bc zfw67gB9N>^QIU;E1sPQNO2cLa{Hhua`xAkL*WFrKO*V6r1feEiVjw(+2GezIjPz%+ z{r%ZY|7oY+?{o$NH4Pp~Vss^wS@bwtecm>w2lvV>U4s9?D!%;C&*nLeb>>)Tas>oJ zgi|`GMcDK{+clbLKlEt?(kYj3Bc1J_rwBzM;`f4vh6I-pZKqP< zk_Fd}h-bEO!NiP*w5||Inv_=C+S*)g2Ju*%)e_EQ4Zrb!LrEn`oC0}2`EL1Lq`Ukj za$h<1FONJ*zWfP#YvXepf4TAOvm`}gWtQoTZ_m5YyZL8$W-@jHv-b>@3<^Hrl|k&LhGb+3DnlW7;YuU=yqYk$_wR z1yqZoUIJN`))_gTomec4U1?HWRaH!-t8Ufp!o!#`JDG?H9XkI3))SdW<+Eo`oV{#n zQv!F$t!bl4K*0k5pBA2GZOUk!imX>@0KH*`cLPWw!^I#G9V@IY`jz9?ep~llgr_UB z3qNJEt6+tUM0m-^jxSR%3M^E=EHhF(eyv0IMsVtYZvQ&~39#?7BIcJdSvC1OJyu+4 z8+QthU;E>#gP~6cdd>i(Ri6bLBF;rZRY?(af(Hc8aUhjG<~G%4HIKE$7yD9-EexrL zfdw8^ZJ|0Yo28MljN|0cP#rq^&2MJ-Y%+c)8L5S6f9cM@W*BY03O*t{iFH1>zw1a- z3sFE473m77vXzQN6|Znalny?%SyRbaG}P{Ox3yTiY+ab$#^bOGMirWR6*^4y$z6O4 zGlW%$HSsf$aq_41PlTs=gbV%Qe2x+Z-y}#=WzY+oO`X#>$ zDRXeU!$CH(=a^!zZ##K%sdV)bGu*TxQkU(FSN4YM8YBJ`df?E5c3i(}Hfp-6 zt~Mp81{qBPna-ZQO!WI_Pn`Yby=Rym zQ!o6Fy(gGJ2`-R#kS{#_bvjGAVkKhzG-pn|Tb^_ZE_I z2tg?8&LXUu=vgmJ?I_6#sg=(^f`qe#0br!TbcXOkP5N82{lmqxPaG~BO$HvD=^sLD zefQBsd-+PRowy1^2&pHZ4Yrs6**6eIoISmD_uy+65LoYZCodLXvxHcCucx#8&YqJ= z^2YYU(t2OdiDdaDHb-IkES^COSuH#b?TDJwdL!ZLZi&UdSg8!aP#z3t9ST;F*0@tP zMq1;s-vDhrakaG26mcyKG2AF`5AK2ytYR|lfmoEx3#T!wgQO{v81TE=Y*sNMMXLK> zW9;{vmP%J2+JXOOyWF2N1%X$_2Y0s^BI#@Qww+Bo1NI% zF5N9$Y}zzIA1S^<<8VluFt1Pa#wS*gK36^uvOF*AYctFMWNO?JZ?-lYHuQUEPn>+B1L`#L@4 zA0rxK`zO>+zW{@{uDS_9J`jo=p6v2z?4AJPd7YVSu$c0uk2C1FbP`BC8iP=# zDi55#nJ7Q#oXod-I{U*OcdqCR#hu|yyX|VMbgZXqu^4G>Pq^ofbgy0>J5O4py|GAd z%z00L)*ts;yz#uRY@=#!sTlF+CsM)wY*=>QyEJ@!C`3TeG2G8H4EGq^uU#E0Q9*46 z{N|0J57t$^A5rY&S;b zKJDI7@^c-OvC_|VP%xl-fI+!;sdV)qgVM@k!R9fUgiYie$ zs?ibjM{hrVWMye#Mw=WTIXQZ=(Xcsx)+N?FkbQuWe8VnY>p_OM*)34i?eQ=5oofoN zYcJc!i0k9rYHJZJ7Ioc9YWFV(A8I=v>hbXrHrV4+<5QCpBV!|DjV-k8XB}!Ia&Ulw z9XWgA?12W5g~BW2#rL!sI0`S<9^c1!*}x*$EEW4~Ay%t;zHZa69kjVww9n<^eNTCz^uV2N*zWef;|%qq)2zRL)nv@T=4Vhv0TthX=GxKcPa{*Crqr zij6E0$ud7)91vwm!U}GSL@ZZYhz%s!CS9@;N;#5vamArhEJ0Ru^Sk4YX^p@g>vycL zomySiZlAurG}6yJ+dsVK>ZM!RmyC$HRhXgwIedt&mQg$$wP6GFH!7ULWbj-JWo zuB8W)&cX31+O_C$Q$-=|Bf*K4ws49b5keeK9Hf<@wptxATVD}rR=T^=z4_&h5!FNo z5$W&rOcbNJko~quu+8o0Z&j_uoG0Gi^7X`6m*1Z&B^WFBEaNAc!rVYlp^_UI&~pP* z`^XI}9wawV`|zH*fkizxkk6*{+(2zrnW2YJM;FM+HEMGM|FfDJ$c>(zPB!IH@!xmY z-ykh;o7j8!{9t2lmEk3&vyu`JboP+v8GA@CGI#g(P$DxD5rn)LBqFjrg-IVXlL!)E zECFK@DRkF!iPTbAV9c!{mk0~H?VC>|gYMmaI7P^ZH+`nQ3D60>u&gcO-7^uVqJUkK zK@eF%GV&fETpcJ*Id)P(>RGayN=ag>H`SZ(iiG^$R)^Rrb-FMNyfZ4-uy-X4H=f1m_&8kXvAUn|0ja!VXP06Sk7Ugaj zxog0=k-ToE; zu`o-uB6|$8Q$%U+_(DZdtcumgK;ODE?{*fQK5k>tO~ZJ8lYg_Y{eA47ZXGs^5h#LO zRo}v;e29_tOiH`ubPTTy+wVAg;_Rn3_4#_M-UCQ(|ADY8&uEky?vmXiaq*8JgnN+TDS zy3#YJi(?l}*x8A5PZqmwFMl+U8;vCxp~GlAK9&p6cjPiBPMypwyyR$CYG$q2 ze|kDy%ne`eA1e$E4Te*F&K6E3}<|S?5IA|IbY3h@wX=*OBWt{1{aI*?+#8D z^3lqfhwa{xbHY3_sG0CL90mXu5HpVY?gUoSHU$ zzd5J+*6YXC$vxX|99KrujemD`q1Iv+@k9o-l4z17<-CO`$_~@PoYNAgLOe*$slG$a zFY$Yu*H?B~Gy5>RsU}NEKfTBF{TVY(^V$qcH&st-J?FGo%{eXo%sHp}F~KAH)qBpc zel!~sYy7)&fNREb2fc7-a8j1(&fSjo&GWX5Nu8;!~c4Bd>( zP~7`h>+9=3CQp*LKlD)f-48zasne$`w&Z~zq@WKob*)&mnCt3HilWp`C>4>bT+d5! z)*(G#wM19LA%H?YlnSRH2*Ip7t6Kbdzd1KmtYob+$_S?*(FTs9R2yLNUBsUftf z&^g8oLL1XFoYh8uWKHuDh=gl-Z7@gRN0t#2V9Q`wLV{6@KR4pGxrSSEGkzQTcP#H^ z^i_ZkxXJs9SSN_IQi1vi5wNSqZzTOUIufm&IY*pK2#N2=1sUO8OamhZsKX{PHIOO& z89b0GkF04PNel+O$lznMsA7lI;X-vjersvoSu(R!y88PKn0)v)-mJUkd6gjnzry?K z(k~=2uARiYYx<=`+u1LFPCZtYNGRa>aMW%VD-^RVm)<)encK_x* z7xY=?HaX-S%{H|9byVVB`}&)E}azu0Ij^nJ4FP*9z{2sv^C zs3qqkM67Zcv6T80V`O5r{sxhe7nzLEM{dMqgtv-@Y(`&SDqU^BXe9I_`V-lD^K_iv zVr;!7ZP-CXAwnb(l}UwVz?`$eVX?@w`$*NLbJJzANvE3;=nw<2Sz(&v5>>Kdz!2y- zL4no2`IZMBaLd52>GBaWa%r`vD^T7R-u}Z-_rS4x`a89O zNGbb1XCmZ`3}|?+aNeiCWFr@bIc>T+ZgknAsDdPMv7ZJ5*xv5-wujrpp`bV54R~-k zt<8p0FI;Olq|;|loNY9uNTONA2He!Ey(hGiQCW?F6sGFdKpY0kylV@*E#_)!8)byw zH99d-lC3F~&MhodvMs2)G7Mwzkale!v1~o|kJXgwI;bjFc;-aZs6`9sB`Xj7^RR#O zfIspG{A}sVq4+_9{c|K+37PKAOHC&c`Cp582*ZLl%V$OHdf>E=;;&-R;4A%r%*;nY>cABUp<=7CM zlEce-ie4aY#=)vHsNi*-+z^q!4o(>Y06>osXl=2oqJUhgNcP9L3hEm2j=DELS^Kuy z9NiMUO#8*Xt)_*jU=>uWkpj8bMl2R{cCI%2!LxG<^V5gM$3~V$ml|c}>SOl%rZcba z?*XzN$7+Y>AXc?nJBk#P?K!3e}7{()mfE)W&Gn*?&{v1cEAw^X=$j{#6XD?8GqkrImcrHEGj$f%wdDyp& z;rS5Wo?}e*y)cFP)p0_F7$LNsC}fz3iiOBxPT~wQ29>=8(oJJWK@2M2M)1Togj@Uj z#zy<5`lq~}&QvyUu>|#Ar2S35RzBM8`Ik7(qrZC zR~hZGmqPiYI}@r{e(Wns5{%{kR!JhThEp`vqz#amlnY6fR8X>pj8?}w zDy_zNfiBOciPQEC4!176d9 z!DxTuF@G0t|9{}v)Oz$??wGK+`IPB zZzDrR@BTF0(i?lqxRI@g9s&Xb^a?!9tb3oz9_ZN(Y|twYJ!G1#BxEo~QBiV0AvOjp zVKm=t+o}(+<9Fvv2B8Hu>X z6KJ{(r9EsL!m8h7rea@J-33OEs%!0$%!w1@_a3|V3;S9hPaQfGK7W4eyL+vVMu=6T z;qb7>IGfzOiD!8e==1E`vG>MaCiB&$FRRAAuiwsi@Aa>)^uFfE=U2oK*JL{tQbiE}CXF{E2!MED;EfFP`fK89Y`+Q(c(@v_uk zg?j1#zX&K)l6fh89#Sv{ALdb-mhODgAu85Hn1aHTWK6%XRFq`05)ovSPiI;xQ!8M# z>d7Cwg(?c1S8eb%!31c>9NdMEE)>>eO?bo`f>h2 zym?mfCO$tZOX4lwn>>Kp%+;%#Gc)^DocZ0kv9Y;wn$vYR6P>BxDsM6*sisYWY#|Df zl}kHeq)aXad8sC0)our{x7u4<92GDrMk~x24m&_7=<~F-+9QrgWt=g? zY98nM+ogHTf2H>NSQ-Cs)!q%ORVb)EGzoWUr}dez8%?$8Q*v3)e$|!`>DjLWn~m|Y z;laM%?#aSr{fyMEg61<)7a!RF?7Y3Uzx$i1%Qb^hMH(Zv`scbL(A6@}&gqTHgna6u zhw5gbch~i>qloM0xgLrKSPxe>_BY65=phm~zCFh@hJA?FB7~5`3ZnodaC3L~H~{#- zhwyQq7vbY6=wW^$b7J%*rQeHtxv0kNO3^uK73)QkpNfUoSg?(K30+8GFdQU~q+dnK zyFEC{x?g8T%KwmibL4RoDxG`SFZ^!?%xW~LTx~~E+$`z=Y=UhP66g^Sq_fc8M5K&SH5k;LFK}P0y z&W(WeiF4KZ#Cf9YQKy|Kj$}j#Y9dWFHvvPJ`XBf$o5c5!r#294hjx{zMo&9V2Uv6< z4;s8l^XmN>=$U!B2}Kv3=j49=5v|R?5HkV zZr`75xlnhC?kQvbT|879J1(SvOAxiu{{K8EUihnMDNrY6T$##eUg^dTW#)kEaEOvrq{t4`kz@1*U3 zhBZ|?&Igt8qlapS-fV3-^fBwK4HOGe3G$L~J2MMbpd*cN%z0SNWHPx-&ZV0elK-Uk z-hr^t`zhFnsw(Ti3b3lS!@TD6mYufKZ+^bkZkl{% zO^c5)yBV7to17TmX*0FV0sFNX^r;SNC-#j4n}(am;X1eT^xgD1kf8u)wKczws#1o? zib4cgSVnoE!=Qp9tI8#vpc0kG*`Cc<1BCMyA_(&<2y&T5G511uKG&5^B}45VmldhE zWF!#r<)xA2P|>Tn_cj%>>W`gIerAuO>MxI+K7E7~c0H(=Vsakdw*CKNm5SEEyTf@l zFX3Sn#TN56ii$7q=WU$B_p|S>THCikW@p`RX>NANsg_s=vR(2a;*x=VNI)(Exr~D` zwE`9kr<7h?u@hAl&fC~Xfub-pH{+NdtosPogs{&sea$8xThror_5tiX{div-7GIty zMQ?Iwq{`B;Px~X6u=j}rZdCMJI2~KggC2mo2l{5=N#=nLYenWsh^$sz1k@~`M531! zjKWPARq$2cvxcQfaweT|raT&VepB~&9(kbrwrkhOWr3qOZ{HdtrSc!sTjjqZUHEoG zJaDOe>+Y(OqKhz$g46E3kh6bdjg?KH+`?DzP6 zUT}k(k$~fWEvQJtB1e2+cqA!4LHe+ z^{Q9l`f1ZuU^{Sb{9FZACZa+FRTOY5V3`F57&Pg@;(y*`o5d0_6g;^mY$cRsRC=4V zVFv~_AANMEKI~ZxPW^!{5lgqf3_waOcbUZd3Q8VhVcZpvMGK`M(<_Y13jM`NtaAqF zhy(*j?q^lSq?Bav2aLcX{GoXX?eS~ME+w*z?rLh9AV}x2 z@Jk1E{6||kv#IXZN(6*7<8q|iD5n<@ZnA2UoR$G}*@2>318`w4#>56-swhKtBCfO> z_a49Y9534urkEPV_CElS7N%xVtKB=n0W5oI_r|?5n_nPV)@WVd!U+J|Y_7eSYe3R_ z;f6wx^OA~uo^|>zoM*SI#jYx%SMsts##%tu);izz__fhmr;1HxosUY9ISjtb=8(O+ z@>Z@9`Vya%JSHJ>aUSr`b zI(dZSP5lGM3fGMKhmm5XpkfRtM7QUdwsH%&kdvkQy;WU4tcPQzdXuo)+KObIF0a#z zQfqZ@LT~OB{R7AHo4NGZ=}lh1ft_Iy2Ko)uGiK2-_%xe8<=_@p^d7(Vq7A;%SdR1f z_7CYZ^cD!-5;O6sFADXH{bTEbA#Pj^FFgZ zO@52niozIpUZYv&v=N55r+%>M_N%w28M4d?0a(+VNZl_|!4USwm;(xXqfRqBxOGWyJjj`(w;Koo z(ExSm_yZ{B-AbS;D%Zn=3mWe)6O=B zRm5_x8fO@Ft|wMh)ajmFK^vW>tBL}EY?!SrcAG`_X8!YE(*LLYB-t$ADnCpXANaCfr;8fr7;jwC=AA7TRTQMU)&K)s zvHED43c`*SwY4HCCiiu*MY`WUVv<7t9yaKg4LNk)7_%rkSN={?8`zM&lB=x~qRXxx zP-)$^4P0rRX9OnMo@YUA4g*Jt>2c)Y!aA~ZIM|Z{f+;Pc#p!aPcq~f@JB!Y^mpq24 z-p8+zCm65Q{q)w>J2!xG4R>~4yP=@v@SE*~5(l1&dfAq)6wjEomW0(*(&=K0FEdh9 z>NMSv4*Wlxb=?Kq9~n1e`az;Hrb3_vD>VM#i+Fw z6Zeu7vy~rTBTwiy!aB%$m}e^WGWd|OvXzKJ8<9l)j%D22_{tSU=>ka7lJQ~ykIP|G z6>bzt)hLAej^o>}n|sb$A$+8+?*I({DH!v}*pbFJ{gIt(n*_Rs$^Iry#*3j@XQB6 zCL$3;?&AR=^qgL$A)`K?MYgC4mx03p#N#9G#iRcCHS)xt-NiaUZsQ8Bv)ex==jij$ z3U0*5s)UFZf|8jiUue98ITVa`Ziymiw7bpiNhRBu1+*|D)WvbIa9j0fE?clFyn zRaw^b(3#Qb$<31;FO7z55l35KCRjQ|N~y_Fa$EVwrHP~8s-G!jYZbtOh-oZZv54#v ziYwy=cBb)nU_S-x1d(_3XA+gl8=W88HG z2*HbZ$iha52<{g4q7eQh89%M@2mHLx=suyJSOKD=G6fqA{2kD`8}gcF!Ar8!#T2-a zzPaXxY~23H(WTPWmu&X-1p0Du%jP}N2j_byk}Z6_G{Elad(ubPp45hH)^-IC|Jt(* z+lj=!rh@|jiIf{|N zlq+qxjk-m`-f73LXWzxL@zeCZ^cDo*xYibsP#TX*ISFFL>E=Yzctfp#t)_+5kmd#v z1X0+i{vB4=elL}BIeDS8VMXSI%J9(8r>~tPuYVxiHd<6j{7An1iR?^Y5Tn$bcN(KP$U8l%4FSjm#X>Mf$8KXR zk4(>_b3ad6#H7kQU5S`rg;Owyxu?HLvTxa&*LP}R;e}7`&FX7l=urg~TRx_Z zQ~=czm>$+)7mUXM+rD(5w$}s1-$t@e?}-n;xv;SHpn(cE{%wd3H`uUU}x}szt3*WxHMIIHSYk-w%oV_(*Z>&}i|@hxcAiPT%HD-{uRK z_g+yHQuHL5*W*#To|1%nJl-!JcDtw{AEP((tlkQAyKW+ymUA$1MiFJ_NT3f~yDo7g zmKu$O@rwE_rGB=*qc`CLd#+91#;tu2j3CC~r{Vy84lC6$*5D_SC=f+va$YE|j!H!$ zuS%I)LHQ!A?8QNvgw;eGpgR{IObkK{Vwldzrkt#t!W$n#l(11*5~cnjL-|Hxyb3za zuO~{yfpXH>J2snIdHi&L@yz3gQ?sQWC;3wOoup9yi}LRb-d>8v#%>=NyrUHD7`tO* z<7Q+a_4q0)l7}E~!LOjEV{yrq`52~btz%fa-Xrk`C~(~{HEJp}^OE7L2B^P|HBtw+nIJ0k4?rp(?=x@&7f zeSTDIjZ(kIqr{^E2Ytv)on2=2^NjUbm$^5H4@vjf-Amc7rMpXuo3X@;mr55Fx&&HY z7ed{oxW79UR_=A%-p$9?{qpf-4_b?O{ddZPv|cyyoMY{@dVpxypX_q z3`TR>h#(mNJf77;ffyZ9p@@`a`b04i3;0B@=ye7YE)}8G2*-2A_47h;Co@Se15Z+8SS!`zxQwdM$ULs zeW6fari4Fsbn~as8j9=u!3Gjzv?$Q;i>|iJv3v~ z1N;2s)Kcl{tTkPnj4jT3yJxzGPff&;ZsN8#PZk~h)2m%GOQC_Ko}pudq3ry*k)_9a zgphBu{7bfWU&~-mFy8LAIbuDteZxol{r$Zc9I=qQrx5B4`Rpwn-Q&5z+eX4Y383KL z{t@|ewx;{gI&n=$i70fal!^*LrFtW{W4Palt;JLtBM(c&!a=)L?34Pcf(_MM&S2Wq zB?YN!@hoJ0mr3hV>FU)(PZYX)&-V3~w7LF;ZcoR^a(?`Bw)gPuxspAUj}09e2t2@o zK;f?RLL!+?#-lDrAeM_}r}Dne#LQSS-R5g^sE%N=H@boMum1cKYMbe28` z$BC$g@fCQBV!=I0_T$YJde$C;{aflVjL4m8IcYWZpRjBh(9^s?)0B z)b!wos6wvq`%@?;*jw`{czn;7Y2Edo0Mx{|r_l%L>e||x<~+K(v@km}(ASm8xH}Wb zno>(9oNlsfFyyP*QfrBY|Fudi+`am`Qj>k8SZBPQQ+M{YH=r55Q|Rk%vag)2x8&mC zfuNA75Dx`5h-j#`#?&N@ae#L8b)cy7^^zSXLR&rdPQD ziZZPj(_6sLP`Q43n|}yrx2NVq)!A+KDJ@_B0RRP*%H*0p$LH2DKYM7hvnS>5OdwWb z=e!z)c;bQ)ZExhy7t;lFP>;j8J$V)xxLPxFmXrk*k{cftWZ6in;ngO zpG5?71qi(VeOC7>$b6lt?r}iAn}?#`QE#35JtOsfwq}Dhbrt;(vC%PU-e)~nWKsd6 z=r!XgA=`Yuf0H{aZ{62EYk*PqyU(_4&(hQM79`<+X)S(zYfTarFqUgQep>6QZmlZW z#G)rgBY?oB$AHOj32SY1!OUEiV0-}XcrY<_3x#>U3hI}4R9jX+>~mRzF02Ltd& zS|A>x3Qahus-y`~aXT9zmWp_79#n;ZdJPn0m0=Rjd_0A9>;@~mvRnX*W!i$f8IDmm zene5p^?iK?+2iUS2e5$U9^eTvYP<0-m=?@U;C3{yHiRIS!@vh4{;c4~K_ z*H=fayL)nee)GWxX@}pRv-+K-M5EK=4yiOs7Ek>4Z=WdtO}M>HI;DD~>H$Ha6@ad> z`l1%b8*OkZh?oH-M7Kfi>^q&#T4z7$WOMrs-OGRG+Yfw)F6)4^^8em?C*9aUPcg9l zWAYy6`$o8DFNhI8RT%dThPLX)iiIywrGAO5vf=V3T?oFyYqx;mh90_eq{!i=($y*N zaxU1D^q9tlIknT)_LguVW*!GT8^ZwfGOPOQ($W$kC<9ICB`g(VFb1ZvH7Q`f@xM0K z2qqHB`du7K4#nx^Z-4&t4}AXf-=WKN<7=bk-zBS~U)#WMZ{PkgxlDf#;&}gyhp3g1 zWtC71Ay&$A1Sr9as~lyl4k6$jE^rWIM(6LPuI zbJlmmDnh*DADF!hE#R)%SEC7-)Y;mh#1+M>5~aFoBThaFp#kuNpRR_21cr)zJ^3!w zD-D)HrK+SI;w~CX+BGluZ6I{_$S$?DO$G4ivrWo^YnV{S;X^uWWQ7D319tcm=Rd75 z5p;o7bx@gD(3yv86U2(MBAqv%3swb8giKnhdF-dw7#oT@GmjASy&6qI8Md3oaeQUV=eV zDVA)pD>Af`c4UHWY$r%a(7+T^1Gt;*baGAFs#dg z@wvd%mmxrjYZqzLqmf`fl&`K^Y-8j3*pUtT#T_z+byeNX=jl5&Ssyb$aRJ`G&lyWr zco{gyLCvh`43i-(XUtl|r}@n353gw*xDxZZbZ4w1T!<8EXAgI@-DaYN9P@4v9 zKCADn8K8li4{zz7($ip0f)UipYH642Kw9k-A=pT z!Tbzgo-`47YOGmFI_kxo+ICF6uu`wt^ul+Wt63WSz0b4$6yZ1ZIqy$WS;`swz5Pk5 z>OblHy&0pki0)!kT2r+ozBYrzx5psyZTbn$lY-Q=RdSNH|bzFB&6e z$D2~K5!;2-_rKQ<+o?tjzi+A^xGk+I+pnQj%2j6LxZie!n9eK~{E52IEZcK00LzRL zh{qz~>iWiNh{o$1Md2}H+F)H<^wePU1^rQ;wye%;2s$7MujBLD7LV-U8aIAb$2A_r zimj>I#a!8f^@5(WC9tqPLq9}s zK_|{kfC!WT){pBjwN<<2cp+V))g~z7Jz2&#`-?f-WFLZKy zjt)^9B;kfJJ2py5#6^M9#uQzztcT0-qmIoD{LV)9vy)6-y{jMv8tVqbNoHNKtUR zizF!sNm6vX$rC&bd*6#roxb|$i~jay<*!`0`Kk-$uRQkE7wPDUlmGg!<&wTa0@BQj$&?mM4 zP_8W8iug;E@)dU%7q(e%?iUW(NP&@*76YI%0j{RfVdyxa>lgX zl(?KXp&`-sC~r<9uI-b0tFX=-N8*i4W4Vp_Q6j^FEK5YN$f|%fbe9xL8PthkoE#2| z1;EkfXlre;*ewW&V6w|rlk76qRU>^^WoUl??1{5A<8qd@{NmC1 z@@tP`7mPkyz=16Bh-d&-de7)V@#cVdY@Ngq!zH}5&uX=tsv=Q=rjcIlR z+drkx(&r!n1&nfd+^m`znW{yCdM%v7d2U4^Sha#@!#u2ZCh;G9=UY}>zi%gz*w zXC7b7FPD;Hc~wYH9F@i{{?dF)NbNgbin(HiP(C}`7aZGo<X;KN6SqKK8&Yc_Xhpi?NO>*wLZE?x-k`yh24mT&6@>N)d4}#QnYc=hPj~ zY4N(Rsyvb+A~}rTx3{ODLq}7nN0HDYU$k%s#oZXifdE>by zun#x>B1{uU`+8l@@lx+>-)vW=Gl>h>+2iVA_TPfXuuh9yv41mb(OxvOLb8Fyl&|lf zc2-YB8N0IeKn%2qIQ*gTkMtI}AONprDUgr52nDhn`nU@<2kO+wBgx15S6!o515fRS#O07%+~$ zxE8d$RlY`^sE3EgIqDB<+NNolsbF{^1aDwyUZ3q}bVIF{iUY2F$98#O= zV1>%=-eua;dE}+>#}o`L`Ft)H0bj_6uCCwZb$P3BXHI=u-SHXvoskgnUfxlM5#PG~ z8hOIl-f48}TZljqVvjz$^=_lDv)j|;8+u<;@LJ6kB{J? z=rd^^PTk55vrePC%|C%X4Pif%aRg!1_L7&@H|S-m4u?oa>-t;1U`8c2>iDB3m?F1f z@!iaZ!*Ge4t1aNBK+uv|lwbcz02bwE_AH5%!Ab$>x-9Tg&yW_-f6cLMW-HaKxZs(A zhISe#F%UILp|j3Ne~$yS>g|;Lg$b#}tX259K7$?b%UWy5M&aT6?wMU{H1^(;RI~#@)2}OA~=B^(Mb3JhKjU5904g<>n3l@#=F~S+Fo4Kq0|F9KBFCXg}BiC~Gu)TkmcJ zlw(!*GxSgBa}b3AR5F$rQ3p@~BU0CakXIUVxpTs5HWleXg!)cm)D}GmRgV-Pm-+{e z&b{PVe(+ikuq4}=Pv44t<-#IvZ$5=Eren)Zm&asY9sfEb!pfYp!W7^^? z?-@UI`4zKskKa8d1u;BDzKLb@h2^t-#r4H}VQF1wc^#u3*6x&sRg&~(9d|KLh-Oof ztQT**2Wa(3|G?tdI;y&FOiperrlX_B`g5IQe-y}-;;ha*SBj&yqR!#kvwUs{6&4YE z)OUJuz|ziSaegJO^@dPqQLiiKmE@9(-U18wAX$5-#S0Eu=b=ADP6_L(glr1Js?{2c zMnYDf)r)?!(}IUw#b0RbFVnA?Z+=@3G;$)1t8ZiHkyX8mZ>h9(RXbe04P!tYeJ4g1 z#4g}0@oqF3qj|>v{@I%UP4ne(>uRIsS8ma_MlZbL@NGBNi{zfsbF=9(WaiId9>nl{ zEs%i;avOI-eb|YfLdq{v=md&n3{fH&{%-ZJO3hz2f8}H5Kaj(QZ<}D6mbjVly4yo5 zc8en56;`#00tX~=m%0lSRBWPL1+(@OwEhF=%MR}G0T%Q?qI*O@s+Fw9)Q*qotZ3|& z7&E~(;u{-&0s5|yuB^>EIFOy_nn=VVs9Wf^W^5U>L5C$^vcZG+tn{tssXc(RYRvb6 zoYX3ZrT{stzr{G2$4zCS6KQ)6M&pYB4qi#JA6mpGmr7Uf+=CU7#n?W(D=A`?KU07# zOu`$u8b)tV+9}FPB)lhe?}Z&?yt`5N?tFSp3+B2caj4ienVXDv1OrSNBP(Sq${1C+ z*nUY1k1v(3zU`o#g(rQRTk!)k78>e%zYbmqKqp3;{0>X@7x^TH2Gisf zZlAM-v^~PL)0{2Nj^NN$`-6|X)amy-oq>RmQ)7Nl#Ikkl*=Ol9)`%yRR4#8_M;$ft zg2&nF^R_uXAVGNhN3=zFLRVE>fZO3$wAYLhi`q;lPgw@lqTVn>PrwdV!CukIyV6Q* zHs+pi;u5Zr*1}<44qm>nwAhs;aCCL?_NCjg4tA{6NHVXDC1ea#T|>n*WZPxfu3@uk z8p4c}CK=KL$miX=RJ!^n^-0r%i0J(n-{!aL)2RT$_BR29-(YcdH~3&hTSBatmq(qs zYz~MPLA+!o7EmOM!dQ3p5VR!8>nJ!kDX)4w9-oJ?+T(vNEX2YRG{wLk#=Y^Oq>>~~ zfle=#uKs|0xBM>BUH%feubldqM;;|#{sis~e~Ng*jc1=FDH1Dx9oY=Fe692HZ|Bz zTTml~oL3!OGUwE(`8i2Eb@9~2^}CKAojW;ya&jEO&z*^AIN)n_h_lkHtF3`3&hYRE z${NW^X1G{^`{7cl!2P&fYl|>~CV?3{_B_H(DuBP|F)Q#Ebev*ixAn)TgH)8{L!(`{ z<&#(LJG35*-#syT&q9XK@(Cea7>oJxoniHyqi1rtYw5wHb8vi$b}f3`*rWE5;KWK> zI7N>LA?~*YDTk>T;(J!BBWCL>c0?BDy1UZ7`Q?of)vF{&yL>ip)D?>KcX}p@(Ok%W zTO`=#cJ#NZ)?&^RZ*Tc}1sqtxAwLBnNW%aO!(nY2J;U4;Rlqaky|a8F*}_e+V7#?xTtJ@|9paaTSKp*(RS2wwM3eHxNb-{BujCtMu00 zgRfm!eC5Wt*PXmre9aR2;9gH>`JFu{ljM!%k?zD*PAm@A+U z!clEyfPlP12Oay3vKB^P7gtmUKKm^3;MqW5vFW?H>BDPM8=U z9cgrg@G7aF8( z-Xu%iM5#BKPS+X3BmU&1E0zzocgI|l0){E8HgO~uF(iCDvNa06{md@XOu_dia-`Bz zSZ9I!iWC|P_|`S!9d+-0f6cq<^?QFwd!m_NA}`yBMHN(waJ}AwT8OGz&x6%!HlzP9 zMSSb}d;qgLT{}Dnv91esBZ;Wr5uMG#jb18S&1NWYDs~ln3-OLnyW6Q|Em?OPRy!Dt+lSB#3F>XW zbN^B=yhFdSFR2%ub#Fv?3Y-vu+qGl3S|lLSb)Xmvq;LfkP%WslAj^6p5X-ua`UZ^c zxgxGem__SR9j>a2jawY4GcUJ!Mh@2+&|jP8<)Ya@wx}^ZRRta=48SB@(AN8UsUnl* zO2d)WK~^mCCA{jh3bLscP*wf@4~oJGY?s8II|I z=q!_a>*LZpxp?Y&vOhMSU3;=4#_rKA>-3&1LC+HpC02xF<7B8W+7q22T(h;hf?hFUjcD3CZ>_l&)y>g%n%}GW` zTDQ_SH>Vk42losA(wt@l1n2{U-$nr+)}XSsi_m7HHKe=-0V*#EEIQq8cN-&U)b|HO zN9x3WNOkjBy>;KHAsb;0`d|&$h`|Pg{z4M^;7;wfD3Miu{IY$s>Nlt$OR9Vc6=Ha{ z#HJu)x5W0)zMgcaE9pvNRhQSamp1Ylb|Va$tu>kQzcn4-+J*7%=EKZ%Rv3$r6JogX zgI+3$yo)jrxn@yRxl@7ljX+1ZJ-`H%Tdb-mfRi|}PObiYsGESlsO`qf&GS%WiWh)wP!=^D@_AZY)VL*Hx7Q*im?0^EP|>0jYw6D$JM2y{ zi|#%j+Yf>TTbP8`^F)wKZ)V(0MIlHiSGunLQr3T|*V6~NtHGhii29@#6wGEX(bbR^ z2U)Zi?uf8 z+c|r+OJcj}Bvx@}PAI^C<}+x^N2n}y8W^N}gsS>a`kZAe{WN*v*waHR7$z1k7?`4v z)?0bhKqKw=NF55P0|zLZMg&W!-S2Z1+=c2OHQGdW!yl1s?NHs-XrgPD;nuO;<~z8Z zXUs6j@3X2Mo*;spAd(O#qGZUFp?66DX|-5U9SepscBXkl(ExxGP&jOyCf>wNe*luE z0Mc%K;6Nl4oS5qe2cw{1JWYAVmx3G=w`<4ZM3xdZD#}(yyNfC0DlNV&8@>e6QDC9$ zlF@I}3agU-?9fffREtG+W2E>p_S>=_J_^>|=k`ZNfwz_IJY8daZ!LIVsOc7NPgPlO z6G<9Uq#*8)S&#xWjL)aQidl+ie!!64bgg^eCFq1AG))_KFHfzCxS8TKU}u^Z?l6AJHQ9>`~i} zH9|&h`_g}`wmm(yfmspq9wC$;iTd)L5#_w2cXBy5xv`i@FWfWUF`R9uasL0BfdBFaQK41jrG<16Xhh z7H|HeGRz?#@fgV(iclT^`ckH6pt4&tR={JS4qXO9f-6W?4(9+M1go+vtFr21x_-#n zNs4YkpfBBeHxbUh{=fafi4!O216%JT-zZ0b07}7qnLY=3IktOWBTMNHLB(V`xR^w!7&hwLugf_fC)PBpJCk&|6K#qT%A;I^agbNeah`p1CTBJ;7f$#$V=lifmLb&E**g^O z9#HS4w(^%>KQ=-Z%D<2#=LFgr>htE}o_u@xdz_Jio}pIoBVMtUh@_2xNS75^5OkbT zSf>{yY(fFR5B?P6;82xd9%;ill}nB2g7Yu#KT31=MnkqJ(_9!iL_SbHMLuxxV)>sd zf(v8}&FuL0EPWqSl)`%b4PL7mM=yupPmtwy9a%9L;SE{Gc*!(b4QWwEt_|d3qi2QH zHO(iANZ{}Hifv-6f^6vm6C{&{ir!R1JOW8lS~mfpr_L%B5QIg3EurUSEBcdIxJuSh>m-=E{v$3Mc^&I~nZjulB!$S5e6i89 z*v{5KAP@?Kd?*;whU{qZnle=*=YYY{0G z$Z~}mpQ~Q!5;y?pQK*W{m#cyW2}4D%N#o+^#=q+F7O{sODu2mTKU~!jMQxRPKjCg+ zFXEB{5d<*7I%m{GTnOiU)ulT_THO41#s;f|T>Atz9*oX~Sy?@L4ooYKNmoegI7QP~m)*{gp`vuL?lJ623)e_=7oB+L zZ_n4!&Eo8kdre`7^4B-WZ<~V+TZ7C>4c5ycD8Y-hmLUQ{h)@U;LXnRR0Rl1Hv~h2p z!%|ps9tfFd2$pI~Bc_(tKZ>n&4G#~OhD)O(#r}9lz}LwPeBUIetTR72(50vRR~xkB zKv$j@KF7wxV2SL8K6t6t8YBV@iL|QafddjZ2zM8&DjtlEoV)96?xKtj2S-N1&WETQc}Hhc-N3j|0AEXx<~La1M;fd!WGu?xHOgvGW- z-|xKl&S)f8;9q`U_?fXsqdWJ$<(%_A=Q+QV9#WW!EFR@e7GdJJN z1y|2VlCm8~eB_QNeGaPT>U$>6YL(XLg{jq2pRcvfz8Yz`ZA4=(`y1Hh&`F5Lg_%w? zagENLT8$K;T=5+Bp82^;4^hwDeDgOibA)QBF}#ro#D+Mp%}R+1MGurzg|#?%emkqg z69sF4%Q)63dtfn}m=?n&A`F=3gQ?3XFl3K*j?&LuPJe+KPTHF^7}nm2UaL{4fZd6z zZ&In?IP4ONU2}S2%EBZVIeMQrDwcb0-2Wf~$&Atlo*^lHq`l zZsT!QeCJ&=W<#Mdaa6AU^hsjFgo|l?0M|cVO+%9+_P>V zQC(qWh;C)|9eT1*)gq1~sVl7dusX4|Q6+#?n3wlq>pzN?%y2~|20Y2EQDXRYLx};8 zH>kw0G6Y|sI;O;MwYzIlVYt@aHGTBjceh5f;k^yb2Knyr6i|^*0cWJ~O5);FVz)+0 z<-x$xIu?Pg54~cI&(=e)%lyvOP6g2>5(!3Iw6e+^**HHhlSOJQo`=u zAt0I7OlvM1N{7<%sLNpybQ%(bpj5?Lr~X}$N5bk_Td$Wqa(rHUJ$#Xxy>Zq+){l;) z5mVG5om-{h7n{TwFPYDl#(a_~eG4I|!RYfiY-UqSTAywl+pw;C%>;$z9y4`3psl#d3c@*_Bn#Dp@+1?j+8_y1>g9Pp+@wsoZuVLviKZ-@ zy0MYLYHv5HO=c#ulk2C@*bv=V#nc)^Z&iZ|bmeEi{)zq8RYvBzrX0GiFl^F!o^@}> z+}xzJBe034+`Ut(WJ6S&wZ^j&EVrQ?9xodGJ!h+C^e#tEIJMlg&Mn+9k}d=@xD~>r%;iuIDe@o z9Y;g%VrRE}s+1JQ-pCZjTC15B9lg5JnpSferL}@%Rc7ruJYO_xtbK`{Ei@}WYNam_ zD{&&~=5)}js;liM%otikv+c_2Y6ZvTrPXdY+BteTUA2!$chXRoOCal{uBfI4iHo#I zc%_zdgy$AD&BAJ04Iza%|^W@p-o5wfw?^oEr3lFAbLd~+>ly>d#>VV){NWk zE4Y(pt-2!Sy>)6#+gO=)1W~KBQ~_$mB2g;&eUcI_o)-JjpfU((fSa=0P$WAR3Hm)Q zThU&`QP$Oai}cY7SFl(lA@f)quJ}xsm9+!aRi5v1lQMXP$3$gF@_lN7A;J;=)w69@M!-^rs)!zf%0C;@4`n4%zX5MjVRim4_QQ3(R} z4!7_Hn^>y6#U>sP(HCyL`(?KfAf50t@*euHL`8-^f~^%X^u@LbW~2ubdWvN{2tXei z1c7meA82}SwyIn66&0~mu<>K~74S3m6-+DhLGl=R`IWyz29AVUq$lj+ z@z7m&z5M<=3B_@MaW)Qm#6wz?RAM+21*T>W@=8=9>7!FTPYAE)*Y(eq2d2<8KHpm% zBR{Q~7vOMV+c!z6fDM>U`T>1l&HJ-e+ZAp^8ool)C@!oH zCA$%1+dK#x*l1qmK2R%x%;C4PL2cZ}n)k1GAMy~(_rXT`Al?TXZZ_luNMz+6c$mXj zEmKVr3Q9V|q1Hc9B6S53J{2gb67%5oqzyvL4pd?j3PQmq3V-*&14qxEy&v`+f^)U5 zL$!C|brUQ1z?(UqSdc+M6r4seqXbSRNyPDh0&p7q28BX1rv;5dgWq5wtipr+hXtjM zx}?AKO-$1N@dqAY-*@)x{mb*G=V5#8eeH7V3j%~$T2?2F$HgdXp;+C5!2e&cO zl^!S-R#LL40i_Ojm6C7j;VWp39P)HcY6GW0rtX3L(^K7D@tDmDg_(bul{ye`f(WF_L~HsO|Q54 z;DP#&>#yNf{9VCk*X!-Ri=O}&sEf7#to<4ubtKAxKso7fB=I%j=rp=QW=q&*s6;Ix zm!W2_|DgWC&Tgkuxk(J#B&lWuRS-R>&lYXKu~J3It8a~YzQa+iAC z%79cCB{l{j3Q86Tz#c~3oKs8@(xM|;q7?+Q!0Vi8OGzwM3Tz9<3#FI7|Jz(o&-dN| z5A7SccwungyB;M#Jn$Mg%wV#Gt2CK_`fU!y=J;P^b`PXBX>rN^D#hqH_SI zfJ7r=*ynXS%}9PqKthd!BQH#>)vtH8La;)`i+x3 z0Y_iS(5)~DM(#hK_83z1Ef%rO7brxn@o?JdO+>AJi`H#*4vqF(2N$(1I6@J41>DbN zh?nHax2rm%fpXLaN)9E}&>Q;+N0bUqxmZt`NrT0-+Yhjg@49PzYL0!%aE(t%*D_w? zQ+Taw-O?=OfWb1g8?D?t>*Ja)7ejIGj>ioL|>*81Bb$-L(JEOm@l< zH+G5TDm4v?(f+La346jX2>yh_k?;#T$Sj(ZVUc!zY;h zXbR9IIP}QWfrsE0E<=>WRkhc{7`7JX=#(IsIGrO6VkyLlp!+rK`RyeA>0s>;VgR_m z?%*;cKni38^9(**VK9M-VpfKvRI=r?2U+#?c}XM^xm-l0bIT8oyA6x`SIwe|x7+!q zKFbJyt=)wxxWn7pCr0{n?vm(BdovwgZzbbR24d|)W`ERTjrjzNKWec=edbS_TtSmD z=r$Q$K|w52l_wW6Tf;ebyw#vf1YAk4$>>YC{3)HG;5WKV8javI%CAqiSoA!vx3u7^ zmr&w|SHRt?Ytjas(uib$)io(~T3tlOHGASUo60jOugNQaYL1a;q&0cvPaR;NlGfyv zKZVyqh6drN@=CXK`88=_9vy{CR(HCbr>n?4ml-Ho%u&CmwLiM)!2C>Z+L17JiKPKB z4vEpetosQ^Tw0R2G;vA3&0mV!=Xc(Gn;6VG+(SJMk1f`ITJLChCzIfJ=yC6dS000> zVRF6Y-n?qLXVzJ6EegK>iI#guymtZ(cQnyA9*#|RN5A4KFvIPTUJC?BXyyHogw4c^ zF*UQ*6NDoaIJ!s_ip`TMB{Ch6rMLw(8i<*gMZqQryw;Ug+Az#BaAJu8x&kEsdrsvF zgbe0b&^9a#41j|djJhGgW`^23FwP3DydTcMW+GxdDVSJzjaw8M0&Fn2Ib^wP;qa?O zBD&)lrPh&l6#Hle*@}|B25KAIG2B4q|AH-O2)2oi*0{4Zo9h+QDqprIx^a^y(Q55T z{A6pQCmS|s1iR1X4U0mX+G#V6bO$qjv&vj_4KM}c$KV8PCOOQec|oB>HIXgX8gr~0?I zMEPnl+qZed;piJTxx+%TL&(^6wuwC%S3aBX@a6k=q!M{sI^Ycidp&-=&B*&4C0{`B zr<`I|!*?fqX`g|4;g$Ep%`kZlFT9y~;VtXDu-3^U>Px-w*8S*&_rLp5oI%gZW3T{| z*YAbdw6Y1FxvUq~TGN&5^ukV0PV&N*KIVl*!CUvjKYPk!NPWyAw)q2vh&3KcJABDY zoG>NPmB-*LY$RTiLw)lmAH3fAN@K)K-VB-Y`(hDa&YxpGPU}oZujS*IHVLESot0eN z{7i1jkuY?J%LCBt;;K2>!F8a2JFx4_ZQ)?f;U4U*8xx-pZe`vLO$l~Jdq3O)lWV;j z8{;jKchfe!Tgz|IyMbn~HqX4<%42W`OkUHwZEkqC8B+IdTDSbj{~vp|Xv4YX4Z3*4 zx%pB$V|#!(HM7%bbTTLRl;qs3EiGmPkL~G*f8{ZF8Jq1q&UTY`yTpgAS*2?t8m%*3 z`GdSiHM;4*p_y!x_lQLLv+noH^IZ2HpOWJldA^zRz<8$NJOq<89E!SItMS-C-lMa+jls-- z@%B>yfDLo~gwScm=c`nUL_t_{0~G*vpp=SaWRf$=t@NtVJ0KHJ{!gp%rm>-5L8!}1 zVRyfqw{M4U)!q!*+Vf}5+`Nf$^Ix4iwdrO8B){@2_$hskRLP<00euT4G!>$1zLKU| zbs02T#RTD1Y89`(hXbMqg_0;1TJVIe;*~0v-$s8mjBN*dQCWZ~ifzzLRr`B;y1R<) zt=Ui%8<0ffCWFS8wlt{s^>El`wL1znk^P@a3XV}Z4aXfjG|G+w5u#XJ%nzF!f%1lA z*AcPXxiOY1yG&2LO~XC(26ZxSjhbTvq9y9|xVn9gbSC3;5BS{qlKQ4IO6?(dm#-%r zspdT$ZNsr_Iq9qThTNVZaVVu!nKkOI1|ufRG@H`X@gc8^5G9Ec!WHN_xhGMKBvBPU z1{!UgDS(;vI!+@P)f@p0Suh!R4lF7>egR!*0j(CB_Anw6_J(4Wo&F|W2y=bDOjeWw zlK>krF51L8kW(r+7$%}D#6@MHB*qJID2ZHQ`}XZ~pZ>~ejO})Q?(<9Am!E#y;4Vnc zyy+*A2;38b2eu9V;upX8#o)G~m6clUueNR5Hk7UXuOvQEoDjt(dX9uhjHF49w2_0= zeJK1M0|Gv1A>4$9S8&u~(&Bj)4x0rXM{HIj*P`4JvBS|{o3s1ysg4GAyz7hm9x6a_A{dgUL)=_rrOJ{%!W!-0|8gcGu|SyM=BL@Mq?Pwh1kZ0?=1jWW5v)D_r9>#8TXpFfBmE> zX+H%YdDL&Z11_o!d}OdAsjdAQw%eoaUW0MSV%s+qj1WrtSAGxE^hc6nTD3Lo5A_u8Wcf7gaUVNeW@v^o9Os886+D>rLex{7eY+bUW&bR`y#?ho(ug(wV#J+)EBrP6IDL+^kUXxAJSa(^g;ywerJqrk3FU!D z(Pykd1|B3nxLQF8aVw{i(PTt0n+0ig6a=xvi*cJM6dX}RIMAXqVa&$)5~;XM9TUX> z>Bbw!$9l%bj}6yqrkp$PNL0E<%F!`zQ0NHey~%Q6xESno(Q~yI&b{qz=OFfX+gdEH z7L!IF&ty|}OW9zx8%$b#G?C7mvF$MFgLl#|(|;j6v0`jvHMVdn0>}ylqLRv_IJ|j| zb5HVkhO7SzrtmSCsgf2tGru8a^CQ8?zVUs)L-5A&4c!~Yj}6m%zxTay+PJy@D{9av ziLbmw2dI^}iHP~ske@0QPUNX_ltq9<$t_?7BGb1J8AX8Yxd=>oJwSp1kLVR0cC$&X zB5rW2d29&S@X`%{CuFnREnyXJ3zcFqD2&eee39eRJ@aF+_}Iaop7{;&+N^I=HoM6O zMc?K?#upItnTdnt3QA^AAMScXI02teMQ*(%n!#VoF?4udM?_VpU2IVzu~Gx%Fwqb-uTkSkp2>Hp_MxuW zh-%91QmMK-i|v_IGA@Q(6$Z>()*tWjSc?`OC0?&_ti7v&yC3`Z zCZ*luYcYkq<{>zb$6d}EOu4Uq;7v5Jba?sTpoAj~G92NZwfoYER;}IA;>Y8#*H=Fd z2Zcb=8Cg9JV{f7ha032@(1#>13}Y3QnoOzMvA|fgTWvB4Gq$!a-E+ zG8wdLl7~FcvkrXMJpk-ne;p61yuODa97(R6=Uz>}O+=C;yU3~P@pz095KL4_B6jSLGAyX40L%rQy z9mV$4uJkS$f@wi1r>jCR99uBaKVX3*4gP%C-Wqjgv)OJ_O6ARTMJ6}86FEyc{*4bc zRuBC8Iu{IdCVH|VgT~B&p0JQdpl7rznDJXw=7MXW_KVdOb$vq)BnX{w6a6-cVx4Ur zt)hxL1CH5>5JSbHBAl3$-qfaRbF)D*F#mwR;xE+*Zk|%9ztVxxmyN^l4MrS zb2rQOp@U43y=1<+zhNWFF{;+0#(-oOc(e-Rg%QYdG0RyZIUNtvYi|wcau+6 zL&buhYqFrgV;4~VhGDAKswT>y8k0(TJL;>AKnvhvTWnfv3_op_xolc{o@yEGaPxw_ z+9g&O?QAswPAw`?J?+vBnx3fd1_tyXK)i z6VIbB40r>9Ua!w!Gcag4C%$bwp-2dbXxp&FfXA_x2!QE+Nbp}t4oNY1KB3#eNb@jRxZfI*8!tJ5@+ zwta}I)K8y4&MX~W+&4F~ZDgoaSf9W(;LKhJbo?jJ=oiCX*TkMptF!rmKXx|h7|S9T zqt-+y?etudMPB~5|0kvqGwBsrV6%94Ro9eBmkNNzOB3pp0EPK_Ufr#l@?Z_Uly)ad zq9RJw!fN`R0x+Rn^p6xa%~oxfNxt*fH+PtPzZUF&tzjcd7CY^yFEE6wlT2bRt2)k6 zs^UcpBM~Tpj1jd`p;RmGL9?!gCbN!}?5t^D-N28KDM2u^%x_Ag@yYS>pI|ejeDuuf z8v5oRyM}6?Vma+qXZXi&c-X=6;+RqIgIn0>bx2FZB()ntrV}ceAXUI7y@jyFjLho; zGClhdOt|xnl!Tmce=}Z~635C*R7;;DBB`)SHlUmnfa*aBT)h!0vLP5bG}I&(6CqR4 z2$0rnq!O+8Ja(&2gI%(5QLQFT?T&Jh=^~&aKc2$t%~0#i7fjFmciXm}P;z8fdtur{ z!5V4zM@KEa;?eF?w&v9fPrS%o;V7CvsM|Z6FeV z>!SzXbhxz3nJA+YwZ)Mr`Q6#D1^e6(LXZ3@3NS}x1(=VoRe%YuyqA82)n5gwUM2D$ zA7IQgCXMXI)rn9fh93}W2#<(xzV`iNo9P=j-$)mh2k55`99SM;Sy@6TPtOrO#x^=2 zoEA&YHAvyX?5uQAM9CNk@1avxK{P3NXBt8_2giCjSh!LMF4R8u)E8i}=KA(m;j8qN z;(YD5iUU*N1kV@&QUxP?6^>kkGt1l3sG?Jahru{IO9-s|cI7-hK|hZ*g&*RONfieN zw9wA#@;|rIM@q{Qv-UUS&2aa%uZ@|H-rc`>^{er@HH5&IIXh7ku^ObvQ^HjTsF%x8 z!XeV{!K9j*J*>)pEtb>x7iN2{rL+ct7_=UncC<>D=LrFWQ@SxH7$>Hyv{8bS^RL z4|KPBU76mvHQ=&oEV-o7?=Tu2eu&F|G1>x7i&|rG2B^X444KU#r_tM5jYRtM9%R^= zd=7p6-?jfXID_VBNoxx`oMF3GYY#geVVlu ztX($&j=&;8kYk5j{?5@&k!UoG%ghpEAeuxaa#-v#$W~}C$M`ZlgZrBb0QJH^6=HCgLEiWOH@e0UT`s;B-Ks z6?jzyl)MNEC2Jjm83BX`h>AlUY^8$Vf!t@vSc6UfHfRWt ztt17ngcV{zog$7>vO(WM6=Q%YLdp@kpaM>z;AXH%qhd}83QjRC2uQ58nD7BCg^C07 z6zoqNQ&1Ig>&FH%#o-&14?k7S6b6qb-vAHX<(wbiIDV(|;5h44UM30nGg>7a(IPVu zmCjU31y43yqUeKr3l+0?8{@`<#EL8F}Pb#KFAZg60NED(N90QsK%!Q&0U~ZsLk`gz}AL54M z5!R6?dNvwyigxW^{^iNnog5tnd!|1r_PHH{`BcT`G=zQ#oRTvpOqnRqS6G4xn{x(* zs_@T@Iy&6$H?{a84$W3|%d2>Y)1lJv#i$moteX({KK&8#;fiblj_LsrfR$A)MkU;p zb^dFJYzu;5i$(<#=BzF2yL#h8F|Q_w`$tFJ#mV;0ouRB_DB_MeTfltsZ%@KwGq&Vp zmnb^6THWkkYZPx4?`Gxq^bYzX(n^ZeHlpSTrzY6vksUck+33P%jm8U~Tjcu!a)0&Z@>1@fI?4|NfJsqsQip8w)O# z-lEr7g%%_5YE@qvp0vdSmXWfa4d{%2?=g3NC{a72wV8DaEFP3r&bL{Y^)goLnp>!X zW-SzSNPktZ_-J&J=yVLp?wQo^jD@amQL-hYRa4fKDUnE&6Xmwncq|%WBOHkeQii%| zh#O0Tk+|yvjjM-2fVft00``xN+A~#LA?}Uk((XvkJ{0!ET{z_H?p-d-TRlf9Fp!-cj)Obo52ZE@dd z)uab{u%nlfrPSnV<@(&p8%N5tIo8f{!C~N_zJ+jDIIeR5C)^!%X!q?q`4=ZgN1fS$ zM5N1II#rx5xKu3`15Q1daCOv1(f=7mqdjQX@qKCdm?a*tSjC)MbIIl!ShFZ*ap_Q{ z+Uc^XG%BMjU}|A|ZRI6ynEse7lJio(M`5#z0$r@QIUSUNsJICadrz_EJ-I`9E8#e1 zbVet&*x{GXX?WH!mgsb39}3&C3Pbs?jBJdyvTOC%n8KX=OIqx3UjN6Hu28M4`DL~X z$LhZ-sT^JYyJu&s_J#TV`}WSw?$|ih)zO|$MFd;81#8cnge;|fijlq)K1gwr!_VPi zfCW<(d!6|im&h@guWO?3qWP30`?z8IM8e$~wvLYS=Aft2+F~*(v+>CgCROd>j6E|^ z@`XAllfi+Wk}bV=k2UT$J7TTQ^hldKTp5k{MtyptB{iJy8V+femVypPQs-%izvQbi zQz_<1iEia^(4iK*R)orJ34yye<<{Dw!aJw$d~ah?f+qc}XIxp?M`MGh`+)*$FwABE;)%2wd^%H3C-- zWN8R>8lyM?y3|O)D+JP>H{A5#Yu}qF7(JrpT{Imm4un00bV&1+XPyCTN5U$)jD#b( zmH(zGdXAm*CeaH7jF;tA_cRXJ8_3j#(Y~Hydn)0yN3foJ^>ED`RwMalRq=jqJ-Zs# zWtC|vIl8A?j@|!yRp{~uXfpR*iHBYqW#@bx2{8+Aa(yR+*%PwCwXcB^1uQwYI%)tyy zI3rHI-W7G)MVH>-!djs)RNxN!f{Y?(tEoDQTxXYa7#hvjN#-GCoqUI_oiImVhrA)u?pH~ z(CjoD)jDUi7|Zm<%`tI%i_5AH1}$!@NuzT`@}XpZ+8*%`z+FV1plQO%)dU$Bo9Z>bp1&gww{u#g2WPHnZ{+yf?;-|&r_-t~H_TMk0Hem@5Si(H*IBiKSedDwozkIdb*bx?O$E$|dDB`R|luR$ij7rRUZ&^LtjA`5V?T z^D$1SdkR^#L83j?aV6L@dDB!pwdwTOYSYA?fxGKdl70Hb%4LhVe~wXJE( z=MFswzlY~*S$KXYt~Jlf1vm_ECkez!nh@x#fXb4cV05VUiGV)@Oukkn7if`0?#D{5 zH6-%k(SGX?tK;<13=>t>Z`vW6e5Ph|Af z>nvF*TDcOkh4^wA#P*qfF+MU^nZ7eP=-t^KD8_8INSik{WIYIci$QI+!S33N5up?Q zCET;E9lH#V^z^3-)<_}XZx^lMfFjW|5t}`+@M((;=VEZ>BAudX;v$i12-P1l?Bv6a z5+ynX#A-3L@G9a0mr{)kn9H_^7;Wu~84vmT=SMdj>h;c>Vtq5g(oh84wg26@Fqz3s zA1dSDBg3Ttp~OQ7_0w}#sZ%&i0I+L?LeaafP5}*O2^F%jyx0Z>0e03t1N)|S?yNog zt;Y|-$7t9?qfTrp9!723;y|A$-{n(!BfiTnbjYow(Xn>6rh-%ts2+VSR#ye`5Mc&qYXm zXUjSOW`&wbOK>80=E;v7dvWGPnywvycPxL6rX>%kDARM22h^!Kq}NQKKp>?(lh~qT z)dLD<0X-l{v{=apD$3ux_0!MX^8I_?`+>VY{9f$YMGecprstM_K>hfK05PuoH=Jbi z8mM~BOwxeh!ez3jgwi6NirT`Q+L2~eolPq?9yfGF6Rj?OUZ34DzNvhp+TzTQ=W%WJ zADKvma7U;K;a3aMRMv#pC}pLlYnW`1vQ{L(5%#KmUB~C$*nH_Z*nP#WV#j&<>g- zaYPFJK8+fWnmB!oeau2a251zysbnG^K}RB&@74Lnc${nI8AsxiCq}m3=G)j3NoH-W zqpePFVI*bGr6MicjHSWJNdM946u8^xH?|FxOU{r*6E2U0W25CD0@nFJJ|whnS;Vo_ z5<&|!EoB7i`YVW{Htzs6QJWh(z$TWsTOWPw#E<5GK-0Bff~oeF|M@H&CO}3BAs=Q6 z<(8^Rl2c}a0La*~v)LRyd6K@c9Ft?OZ__kUvQ;2|8{LZnAJXh8iBb@7*I}#~!fDIV zbS=A+00|R9)ig~s$WmHWF|23jG8oA)_be@00SB}Kp;E{OAzLU6OSQMaw`*^KBQ^IF zymIGM?T($ScIE=S4Bo}6l{>5D=GqyeVkHra^&*;j3?GKIl{08^>ipzYUhGxsF0Zq4 z1_XaG?wFrFBh_6FHcEm0CX=KJU}B{+gp$K$1U2OL}T zle@q++gaQ-7y}Y0C!Nk@B@n12oz7GRzJ_n7x7<8&_$^0@{hh<9wtLQGi_z+i=bWhu zDi%1MiHbkak#Z7BLMt!PBDE4LiIP`WHBp;cuRu*r3GQ(+K|9=@V^YIuP9=4+)$mKx1S*IaZu<~n^@a&EfGKp0xi;NVq zy;`n-tGs(K8maCm^zL_`JmJ}KlXXkG*p+lR)7@fW(xy$1&v$gpkEeU`bITXz@)eja zR0Hh;p-8pW+m&Ut$_2QazQ9&wSGCf-A|-x8V=6=F%^BCo%l(N<@_I{wCs--)?3vpm z!K}kGgw=akoxUnmVG{gyJ=67k34X=2DBH=cRZBhREr1dtKvhb`ge2P)Ko)`uSqO6e zdkn?B$UYuVkg{^uC7(btGt=5+rj+SW3WT(^#-k)ig3)L~#NOMXk_?c^kY>HCR!Wi! z@p7ruC||@V=M}*N9kGE{Pqc4ys&&jd*q7Rp4!0iZK6T4kTTibuA9I>~QJXk9l}TY| z`D9A1od#^8!s4>33K*^jOLI2H+A-3j_suP}=pN8Fsw!%%dKd0&1E8tG)N*EL* z;oWO$q!pavY@Ii}S|jaQTO-Zm+4yQT(gSjhv{vFavl{6%A@DT)!kTZZ6O>WWclFz( zFsf0JEy-@KR%BNS0z6%N<*U`vT$|O?k@LgS{QNweZ}EA|hkc@-F8`H07x06+|G@ea z1u}(YX{O91c3H_`2u?IagR}yihSf^D33zkuIpAu`G`;i9TmJ)fE>%mq#MekrKW#6e3OAne~j5lU0q&Y1S(g%6ihz$FMiadNy?? zLTke0FGG@flvN~Emcup0Jt7M)-1F2cetu@tge zRaTpUgO^R+ySvb~>z?V|uSw17!mT~g;?_>Tzhi4DIa-eJs4bvqyWu8f@8PqfBlpes zY#A9dry|bm_}+Z$o{6llwKsGK1gn|$-!xOeyAQ6s#J!&WnA||#E1iA}{Q&d^taw!_ zS?8dpH*~;yx?mCl)o?DGyU;PZh3vmP&B+RuELA6ZgrM?gPS5fo6?Q!0j{Epw3oJ$DEeBHkt%5bIPBqqe2sOh zslZOpY?w+CGcKA4@oG;x+9ap7uFAN=>UBlc{uwb|z6elbHS=cocOK-Vl;_zD*i+vaq-z&w$pKHX#sNz*&F>wS6a6gL- zbEKnMYMznRnIJ?#=Ick55M3+jfLu0~V!4WJQ6nb0mTFN$(g8kGj|$go7NNFTU9pI= zNM#d?hFq94KujE=CH z4u!)zj@u(yNB=fqgQ?IrDi(KDqhkYNN5YobuvfEbWYnAtJB+@ByR&PqSaHQY`bv0{ zE8#KvOJk{?jYd^C-y6zLw7cYUSAnU-Cdooole7sSpSzr!cUHX;XtVZQr9!ZTh3a^& z>T41kNAeZxJXPOYvxpExMURVEiPe%2d5zP<^u$4SwCZhz_T?CiI8%P19x<4_F*}<%LTH$Ni6l{( z2hYe@Oe)tPv!k)3%+t%1d6FdQPiB%fG+YsTdxDkL zNXw`;J2YGF+|lI^mWCtQzPJDfMh{PSI!*pqG2T`cJVE2QJ`wYVI;XSwkwV;TOQhTU z^MoQQ$8av5XjukH>hg4$Z4_lAiLKQTp71P8b)*ZHf<=sryoE2Qf4Akuqt&1Ge|X;~ zFj4o=L-6;{p*6=-f|jOYzH}Ak$A;0rP|M(a(bW z&nqRMSi&%Z6f}qQE{5YC>1TxCPiCunsn?(-Y79dQx2Q6Y(;ypZBBN?IJ_~}w)t?ed@#0sMz7nQbyq{| zpivnS@s)8f3Hc}1sZok9+zc@FAjhIXencE^>uChH@jV40Ajn-^beN}507VT^)B;!_ zgt#YBi`@fPR1@W;EHvudqjlbT`jdNR_Tbf}E-kp;v@0*dJLx%MUW1u4jw8$UL?q0d zzYJy`6^7Eeichm-DjvFFSM_Brj?ln?Djco7Y0HCqi)cECdgb@rkLWq#B~iw#L+(4} zSx*gCBQU8(B#PUI^hFP%GLf(^>W|ulM95~+V1v>=u2KoDcAE?dB5&Zts9bGqQ-_Li zzfOQRJeAwr6%KW6%GI8KN~4SR?dqq$Dpe|_Cl65n&Ue4!+1ii1iun9g8tJ_<+gN%L*1KlwXfDby+prWu2jlT(sQ*RfPeM2 zV5Ii+fu2ga?PT?VCSx9_MT;@=>{m z2}ex$?EsXh0o$|U4^cow!GU4{$&hYFjP!7rj4)#}Bi@t7wn|*VQs6-3kR(@t!y7t} zE>Ha1eKoM%_g^zhOV~)Mri5(mvD)jQSo=IZhwG4iYdt%J&<}GojBu}Hq+5Ju#=95H zQVoNp`CC5I^ab#iH5Zqj=pEb}SqH^rHHNGUf^8JpGXXh^(#TTdUHk&GU^OXu7p8A` z4mBMFz{gM??HqkOoSj{&o!z&D4epoUMqSHY)VTbs)hBod>l`E@ODs*smJnhG9#mKm z1SGCk8W;Uc{d!L{U5XO@%J1n3?qPzRk|(Ph^jfSD;D7*~;6bTUo<&uD1yv~)5fo!J z7-YX%s!&IuAsFy^Tuxiq9yS_UbZQmivD$j2x}9kX0b`XIIIMvzNJO@RO7&rD$*eIX z&B45_wtUAYKXmJPdoo)%HNJ}ubtdCwXq zeLX`sliOA%=?PYaB36Tlh&>=}Bm%(gl{floC5olMwhz;r*mfE^m%ef0>+~GhAKHnN&f!m6Xksgup1TC3JdH7?FH6hMrJcoBQ zCvJmhZn_mM;HN(gR%okzslMWGqvwc;xR8}ZC{Ze?Bz=PsH=0?6g6%gCH)R%_cEM$K zB|?IUB{Oi3t?vGYW!ehMwVS`yy16?P?AqK~`!I~+w*MMEH~);Mys=Q&RQ4X|E0y|x zf|h=W5V|B;VUoH^M%vBJ)Ob@KG8GI4Q^903lnX@|rg&*a8czT=JON-%T8ftGlGwdD zTYCadMtf3@Qd{rX8KWy=`{@tuF|VoikuTarkFl8eXnMHSMb8Bb1EJz>yLn%$J>fTh zOYp_v179(DVvbyQeb08XnZ67+2uDq(6H54JgB!%~&rm~^i*~MdX{xvM!3v*cLbxB$ zb5d_N9jK5mg|=Cx1l0noYjPu{S*i3Wr)*Zq1POwm<$Y-jS|Bva7EC@eJ0x=AufKcW zClB0y@R^r?@1^_x`Sk6l|M^}x1v_fbqZZhz#XyrJ*(1)$?9mmlXt#t#Oa8l#MPs0~ z28(|5`M$57zWrxEyB$_)FN3o+pyz5E;UCbyOE&K8R2UnuIc|=r&?YtYy`^uF zd*0%5UhR0x;;IYu3-r15SZipNy>uB~)q1RTJzElPzh=uB<#qI%k)HYuY(IOd&ibjg zv4>e+8*_xnHsM%x=ChZ@R+OcN04a9#3yR4DC&z~191hCebK1@G%g*-JI zVwR^4%X#Y6bmt|2sjP=3=4S8P(on(bxS`V*?!BSCN%?B>?p^J0qKbcW#XvP`FZ?(=6C2hVnr+1>~&V% z4AT>5t7p}1C$9-iyIqvGr=t=f8>{#5u&?56Vx^3lTq>K@0TXX{YkcbT_{p&o6S2Sg^OGk( z{Na1 zV3!#Vyo2>pv7mgL1@3+E4I`37IwJz}UtC z3T)lO1khQ(<3%Y1k(NNzCJJ(FBVeilsqUpxp^=S!|LN1giJrdgCC8E>SWdK!SeR`I z>GjdU+2V5_%vFzwTmJ}`*e&TH&?s|fE`D$6CrdwJTUzq;k5IP$ zwyjKX-=*h>k=a9@@DH#Pyjv=ES~EI=!0OW2_%KV){$J#7yZD`@pPc^p(>E@zUYZRQ zWxL~BvX@6>OOokWz?6sNLL$T}Wi4wDA5hmhGQ!wH#o2*qbYN$D?c&#A z?9T=VhpT@^&#e%D=M9yPnNB}lSiU&c)3bqa7~OJOX0woUhTakg^JDVtD3x?Cj}=`W zI%PC^TsDi*Y&4q_A(I*nNb~Um2Qpf}i>*r!6=$o_=)jIbZJCZOEr0wnxAE+9_W^bv zQY1XW?!&>NGdY-NK@QT4_SPRi5n}6P%{Nyr`>jitexvklKpZRQ>6_^1NQzXez1VqA zfmuq*AZ3(R!gC=nRFsOeHAlCfoz1rGx=&?K^(IPzj88B2ZqCld zCpyDAcP7|9yrXa7-sjPZzz)+_p2Lwdd%$+W#88X>+=A;DPC_56%_f$epi_4)5>k-9IQs zhxW^LjL5aaPUwYdUWu()FhPT-M;vv=Cv!_x9xQ^Xw=qu%0?#|rA&i$SGM^bEnmU=K z0MEYm-S@s9nXsX*EqU-Qz1xurT1@_=^HI>(egmGCWVsqiZSIXOchN)UP}c3vgpe3a zyeltJ1GSPkDU!6)$<7ET<$-Dh&>f}(;G7k!B_tIgZ*@1E?^BBvqRlX2>Gk*u-;$EsTMK1ks&0aR4VpiVm^ZG zSMhS6;CYYqF~UAITh*Dvk%%Ze5ewp!b({n_X;RaVQc(=^g81~~G*|nt@b2QV+fE*< zb_d-F>#;j$r%oYg@`BHQ=S?SWweQvG9(?Uk?R%1ih2JssM1#H&WF&(_!JPC^0x_T6Cyd9FkJngjuqPV2vjtOr>g7Q-J02WUCvp)q9%K_Xs`H zd)hYLx2r8Xdv^O#)N;)fJ3Pfr9bpwzYtN{nJzLs5U8St?9Vp9MT|7ICf$WZ9rrjFu zoQTh5H}{Gd$>PeuI@}@p+|{asScuJTI=osPgca9#b5c!Ty^e2HmoL{`#s|OE#tOZ` zu_0S#FjL;q6H1QlEpK^KZ$aNSFqItK;A!8GD{U%z5+i#n8}7`}fX-z%6m#y7%c9c< zb3^&^#x_S=>wbOEW65Pb5s$sa5Xf|=id!n)T$oT|UYVd@lp_t+KY=6M7NSzsF;AXy zgw%JLAP6qO#k4nVK@IOoR|+!bDKPvT7~;vBP5!pHPiKNR96wUCEW-Dn((-0^&^k|p zv+q3nEXFubJ_#;LZrXhBfl(&`VqLiazogHR3}!zwpipXnQ`oGOX)7oQM-?14-DAn7 zHG>)n#iE%o&c8*%4jXL=8YIUxnK#ycAr?D4zOdBMF*qF?+EbpmDLUoeQ1G`$Y&*78 zdq$^w^0{#*J(bJtnCaYM((M{)+uRwf6ec1mA&~J@hIW_pnM@cZN0`NW2lp`169@WT zi-97OQH^aE;4Gm8y9O=dewPpik8*0Yi8;{|eb^kgG$+`~OX!`%pDExVe~I6w@WZf3qTRQ0d=PL`#_@GXo1yG^h%%+SDzacTNQ zK?E-YqV;u*dg&?n)vNyTj>-`UlExD)p`>l)C0d|ACQgz;?lZ?MhSNb&CV>H<4JvH} zrV^P%lo<_KAiP07#r854$0djM!O^XT;B2{VrY{m5+TZiCm%r-454F_ZV~>}Dfl|z7 zkC%hNV$??Wns(oiNX3Wulq++?vG=_5eIE-X_tZ{Dd$TTQswX0LryTZV2jP&v3>T@6 zVP#>==c)mzL_E|%GYqGZ8snW**UJ(-Fy(QZ1t6h-JM0Nd_?b~pOklzYNh)%YT3@Kd zkl?6;`;EWAythrXhLhRC{!O*t|5qp;6kqXrF&P*ClIpBt-V+`X^aF*FNviwTsOU?) z?z`DQAoC^yWS9_mE7djnA~4J8U1vElI19mBe|j9Y!-s2AREMijSed7T>^T_*uUxZ- zy_1*hVTa&gd)RJTvxjYL4@U)&SE+cx=L|XowE(k&`)hwT2WMZS*9V;Y6u!QNjc={p zaPg5xF2dIR`_2RjMaEO3JGmS^vteG>m0VmU*+j?`_7-2?k{ZjP)?z!V%eADw{>IbS z)m&Pt72xbtM{J~AEm$>FNswuYJqZ*>e*WQ_Tg2uwvnqL^DXe^Q!I(*0(k0XqfNg>GYF zn2&|GwTj(oXKSjn&sW@#Uh1nPC$nuYi$?S1c&OYCUkwJ$p|(J#U!@tZM7qVm;4mT7M0G^7E_2|$a^~QJ&~n4^+V5wNzYR_;zX*%9w@@9S@|9j-w)5bV zvgwos4*6lv8L*mOM|lkB)BV`e|D> z)5iU{ezWw2p1!`GL?Dn@{->t;mDA)>c z-|b)c&Rzeb?fCH|)v<*@buVB%p<1~BKc_k(Fx$;>%maI+f*?7eWD^7%JL}4+Mp5#& zDu2Rj(Fibm;x&3hux+fchdO$WZGY?Xi}3gR7w(@9qLv05@6+}BR!faRkyA`4+_Uz^ zQC%B7M3fcm$aH1c_2{W%f6@8SvD4pz_T?90N9_VAYmcD?lCG^~6}{+pWbrA?g?XED zVX~f=rNH?0BBt9v`19k(e}4QpbbopI#qWMsvSw&ax~O$MBFxskgy}`rv2QQ28iq^R zx7llT=tgR4xr~C=^6RDTx!H5V1*(&(M(aT`F8w+d#&otqOmRa9!G+`BI}RU($7?r8 zD}E(SXBc-kiQL_2M9r<^?$Uh-UwWIkyAgB%ery|t++8omz6`S!FY_6hyBqY|lJ;ba z76ptjohDh;SezAKVU#2};&{`Up11iqIMKh~d-8yPUr%}0U^Lt}vqS8ZSU9#^!mrW> z<2h|lzV=!A{k^RnsQ%qKKc3#}Z?9s54zI}@wZGb#@|z_FEVWZB5iv&ade+rPv592Q z5aFiciD+aE?%Z5+A@y-V;4c^(JJh%37T=AQYCP1La=Ox;L2Dx9QXO~SxvlrmSR7Q9 zgA?ho?)5ENx+gP}j4x>+1fH+Y9Kx7&_j<|9ArSECcbBWP(D<$kWjSByWImhDg#=ZlC;a9xu$v4L1sG-y>=&n;KgHCzB8 z#7K-*vz5t7I~*0Mt}f1FW!>HPX*Bnq`P8S+yj-Js`I%3Dit0Wj2p_7QuU+^Dlj$Eo z38?=+yfRM*m_1>6Sx{`nEhd>(tW1WMhuGHx;P1%9mx3Grt!x16~@BI!w@XQE620y1Vx;Kd^djX>2H~ zgzuH3WXvcN!h)W9%^f;cxn!5M7?C1kK}ZA{=d^B3L=lgGmU=i0u7%i0DG(?Q$DV&H zsP@NO+ri2&V=9%-K90B##uVt83=DD3Rj~rMfjFZvM95iofmVy# zY4KP+$Z9bm$Yd$3X0$~-ImPSuFnoMpY^2EU;q&mR6DQ8&P3)q&C+c@Wb;~c#%6Gxy z5%?;*3kOM6<4t(8R}$5d0cVrZZZ$eg4hFhA)_#9w^}FTgABjHy`B=VPJka#L_3y;k z?{}0^8%bc??Dbq3brz*F93EDf_rsQbGU}Xwge2|XggT3*0)rTuLFX4^BVAejHf=DL zvigcCkMe*2SmjBU0f@srS4R#*0$88Qa5(Qu6Ei#i@ z+g9wDSoekX9CGQ|{U;CY+;!L$ef#7L=^i?K)~pvs4jDG`!gI4nm;sqNgU;wVs^A>W zm(;FbztGk?*0K)dwwx-XkGe)c>wB)3D>*{T0*F?w+Kb9=WvT=m*( zCjN;tdvxomt;OkWtw1Wy!r8bvJNoQ2F`+tSA^Oo%T}tBQa*&b}s$U0kXZ5-rFx}_a zPRO*pW z7vvB5UfzhVVvbxHlyX-84z14W(k}d}l$*x{rJOlHR{$gj$qZc*fB2_ojh@!Of8K>> z^%|AiH##Xyr$I+0bx24#=R(uJv9-NQ^sxCxF32`)ecBq&03gK|43C&l3;l-mz7q4EOJY!g|Aw3eJx(`cFX_GX%b+1&@;(`&ayZ1k1pJb1|_;HfU)T=FJE9+u18?_D~@5?NobNYe(2h_?HuJ4vAaJ9+P%H|lU~(MzEx1w@@=gz zM@9}T9Hs^snb4~E$O>zO(N$mjB--QTu`v=PT{=r+=IhRm`P#?HJD!n}+_sHfxaM+l zzXilM4@37dwcoALi5RB$5QkTvJ9bvenCR55JrYv;_DBxhxGAJv&%W(@T#`6Gy7xIF zB6?jot)DKBIxjOL>5P^Ut-5EmAKS5C_oOp>_UdqUY6~sh)~qp~N+NpcR|}I(kfa2Q z&Oy_9bF;?JA^eX#y?Wp$6yP+`HG=Q_}kk z%s#)*h+c_j^dEiJIn#TbJu2tSfzc^vrS`ojqs?`ZJ-dzQ)VW*djvW$W+N7S@p~sN3 zT6O6(Y*6QJ@vY)x!ef#z3f~{r%|`_ zP3}upE08q~I(r#vPr%8CwlE<^8*V+nTFF}@DAWW?P;i0gNkb8Bu}KLD1_?mPuDhaR zI`+9BQzo|S)H(Sk*AVhvQqLhhdk*QD=-ETA>ejVe_eYe*^PzL+qU?<7sZI{IuRE=} zUEOKbDcPM69%91BYx(=;Uf1(9DLbLj>DP8@yI*BiBZx0C=NB!Tb(52h?{(a|tVp_R z66Q+O`|tbc-@JK}OS$0zz{-FWT=i|I)S|O_HX}VNr$zCF7Z$Hx-Dc*n%P%TEa>0m; zht)b9`QL+wmE|7UT7O@x}DP)}n?MkshzAZEk)WWCUVxL3Xr$Ni|p%Ie2s>*qqa$ z6JPH(MQXIZC@0YoHh+c3(ZU4Rr3*-5Z2*Ocz(QXdM;VqGhXCYp~drIJ{rGGtAUF zrqb_+NJw(l*{%WOrhXY=K`(nYQ>PDaHjB;(&_293d(2rCbd^ezI`=)NNttKPLAkn8Pe zsjhX1j!a_yAHeiAYdmx3jgKp$?&A zTD0h>pLWz$4VkJ_IhH3~nw`{n*?sqXdE?I(%vt`^2d)_vY~DWdgqeC|Sn#MXbOK=; zqqEB#yrPp9tjc-Bd9K?a zRo1y~L9Bkn(E16&-9ar}cW{885WEodsCz#YslgYz?l9y8U+cQVF+KP#*Bueyjtp)U zqO&WMhA5mLG0=5KqgTYut~WG7nw?uzlv`Su+N02OX3vHPoCo8r0`Kd*@<;AJJ zr>Ex4D=kXxJva4&)ZTfiy)RGg;Wug~SaS?J+Zv9?_Jd8py3Q%f~^X&Vx+~?VtjY8aj0u-SPvr&oyI zkcv*ovGEmPE^;xi!F4Lep#ZZ`h+!x}5%O)gGcdi;$0qz@+iayA)e$Gd#&5Lpr+w18_MV_sx8cuJ_MXG(bH}dTD zu)^0{ux3sHttTPMmVeyZcQz;sVK)h%tnDNt2|pvwbZl@7GWOJZ0jqw^}NvL zk={*3zOC=d9ki8eeV=CUH!*;de?cg05@1Z zP;BGZSe;s>En3^}zGwYQ8C7$wvw1qS*2+<)rFYd1^W4SnjI1 zJ`E)Cv)DMKR`B&ZR9td9{{^zUBB<>NPI!U5DO08)Lc4 z7u1i^uHkA;^i!l^X_-0vU*(4Sb0mPKxd7#sGUck8FHW1&I5ZbD-!zUqmnx@zXzfuM zp&|Qgnue_LE9LrzJ}t7Lt8`MDGzYXCR2mgp`u!y~3nlhWDrTU-$|t2qTQ({|uCo%SF>18MIs8;<*PPPuv}E$!v?w)7Tbh;F<(Q2@ zI2&iXwM26?*UA!&b-GQL$|^_7>U$0!@Z_6HeSa8DOYF;R`_)vA@JYRKHkNYRc2&ZA zHCszUYq93G!#U=-?OFN1SEI*a6viMG7hB$>x#kafOq~$49@UpcDqr-U8bDdycs*)z zaXoS^uk-RDP^xSF9D$*@)Yh4DEC1@|OPO02XWKGOvwTf;53MsZa5gT+2#h(Qcj|KX z`g(ybL9$vu_zE%{S6#@j)pn-4vLV=hX)z4_5RN}1LcjHmXv82Eafn9?B%mb{k%U%g zjW%eDWTc=S+M@%`Kq@+-6FQ>{x}uw|XhTn&iL=lPy^)5qtumN_Ok|-i`eOhFVi3;3 zV0;fla4xbj6vJ>H&c|?!zy%nIQ5cO2F$Nc5EH1_+xD+`Uhs!V?6EG2%V-hCg3QWP3 zxC&EoHF8Z5ev2RB$9M}r!)DxudvO;Y#WQ%)1mjK^6?=GuoxfU6MTe^@h@z_bbN*-_%~j} z4D81J_!6Jv3(Uke?7$tk28Fm5vrvR${2C>=&N8qv%)wHW<9f`+R@{IaF%RFz&A17# z;|cs9=Hmyr1>3O`Z<;6*ZDO#}#F{v)HSsu%Bc_E(FfFmlB!c+bz$BSgrnPBf+L~mO zV%nMZrh_@dq?(SVlj&@_n6B851E!nlZhDxW=1g;z>1BGGG;_8|H+@Wo$uwD}ujyy{ zn*nB^8D!2egU$EM5Oc1{Hbc!YbDlZh3^yap1*pI}Gt!JQqs@h8jJe2+H5Z#p%%vvB zj5C*+@n!AW9~ISHTRkO%>(8^^N@Mi{LK8^JYs%f7MNd}UztbEW9D)5 zYx9Kpjrpy4()`Z+-aKWVHqV$pm}kv%=6UmidC~mQykr)dKbe=!E9O=68h&YBH*c6X z%_8$>^Okwr{KdRu-Zk%;znb^W-^}05Kg?qDPxFEK(0pV*Hvcl8m?h@l=2P>T`P_VA zzBEhCGPB&QFe}X}EX1GiDqh3;cp0zYZ}=hJ!%y%m{*Jft7qi-|F<+Ur=4(@7)|vHY zgV|^{nayU4*=n|#?PiDBiG605*=_ciO0(BgnQBvmyYaZ$XZD)|rq&!Zhs1ZgRWk|eF9 zwX~78k}N6GPTETcIYUyVqjZwa(nY#TH|Z`tq^F!IXGt&VEopMLq)Q*kkW9&vzS2+n z%K#ZDgXA0;EZ>tMa;{{{P#GrY$@wx|M#u#+Qbx&WxlqQ)MKV?{mP_PP$&qn#nT(eS zGEpvDU~uQmpO91 z%#|Btp4=$kmz(5fnJ@n*KagAGhjOd@NPaB0$xq~VxkK)hyX0=UNA8uM%6)RbJRlFs zL-MfvOnxqp$S-7p{8D};kIG~6xcpk4kl)B}gFG8NcKnzzVRMQL z)6<8hyXW&mXXWOVmK4X%E+{Q5$HRG!}*d0u`=d2XK46q)C9hMu37TUt^anr}}L_L!Dir1wipa?3;W z?I~=yOF@B4!ElFy0(*)a?h7umz~>Ab?$TA@oI{5@F%{TT)CGRZqGtHrkr(&^h@9bb zMqiLuGHX_@Lw!_$J9^s?f>TQ7-+3&N*_Fj~p2_S_-d;8tsoF>Kea0Jiny8sGzLun&=Ayh>O0q&c%$< zf`a0r+~WMgywEYZd2`AOLW}GvdQ70dqJWFgF-`^+*;DYC{F3tEqWqHb(6P?@#m@U< z173+P4!8&%>%3p=6hLwA?2@wb(vsOT3nKl_py9_DUY2|A>z@0$=lRLT`Hv{@T(QIJc!@2ja~Uzp^A}O*xnf7v z@e*5D=Q84A&tF7|=Zd|!j+fYyI+qbSp1+7v&lQ_f$4hK!oy&;vp1+7Wo-1~I9WSwS z>Rj3k$>`&hYepZZTr>JO<(koFSV)<#c4WAvo;lE|C7DAV-&vlv4RqnY$C)yeiI@dW(w6!F3 zu02Ie%r7h`EhsB2iyz0xBT9!q3iAqP<(6I>QBYQ1I4ifjAU|9~oLN|! z-@?&u0<@us^0_7UQCW;?LO#7HqNKRM5<0VmJq5lKZ9{RMmPKi*U3aXy{b5AgoOhqa z*$e-}kn;<#rEJU*=~FT(1S_HtNSSzfHY^an9PNtkFOAFU)!)az^P^@VzUxgO5b!z6uD zWS@-D>&Y6q*2y}N+Z!5NNUnN~wb#DrLha3r;EObXv1w&_ajM`35U-{05IaJ>T&!_k zrvZgrpvR!RspY{Jq?P5ha7rlP%}D2tMjcmHcthZ$aJ|+CG3xLU6MVjgUasLrI(5y` zov$~-wSwto@KB}W67@Mp9|Vuo>r2zh@+{ZQN_V7dR=Oiyv(gMlkS$!Poo7KmWzFAH+Owa1$#^1*a*9*@L zr;i&>h8s?X8%~BBPDZ8^e}*FuvN9a4AuGcTH^WU=hD%?Do30EuT^Vk=GTitx-1sxx z_%q!2Gu`;py|YV4x=Tm8OGh8~obJ+-?$Xo8z3$`E<4U=#K5qP(Zg`n)c$scEneKa; zZaA54x-#8xGTn4#y6MVv)0OFk>!vHyO;@Iyu1q&wS#El=-1xKH__N&jv)uTz-1xKH z__N&jv)uTz-1xKH__N&jv)uTz-1xKH__N&j`?~S>b>r{r#^2YCzpopAUpM}~Zv1`S z`1`u?_jTj%>&D;LjlZuOe_uC#SEtT$b?U5vZu|q?_=maI!}{3S2!=$Qommix4(J7= z!^a5M{YC-OJ~7u8l99BBD#9;| z8518JJ}o{vZb|sv;jcyvj>w64B;w78#Stqai=%IfToUt9TPBP-+kMIMUk5I;C-K-_%+zuM>r;%c2=e6;@; z^=f={e21v_qb25}=w8uRMc<_FME@}Q?&t@cUwm}*Bk|GBn=x<4)y7rC-5L0g{xl{$ z=FFJE_BSkMOw5>=2{BV*rpL^VxjyD~C#IOUV?K&oVt*Cx?`JWe#{Dd2S={`%s`w7^ z9pZizA8kXuFRs?Qeirv!+`_o`<37+_iK~d)9Je#B%KmEOYU2?fs&vP9h)<7CkM9>h zIDT0CnE1)@SI6HN|4{tj<9D}6ZZWb&PK%i>e%Rv478MEM3B?I_CoD{OJ>l(y_Y-y| z*0fA)c~#4qEw69+bj!Ds?rpiMWkq6Y;@HI76Yov@Jh3M6P*P;ltU^LYLn3>qxFK;FSp*>Cb~^Vn*nXEY4cFq_%;jM{JG7VHdSpy z+s3zzZ`-PEdfQ=bFKIiWZBg5WFh=L0gz8Qs);8@~rjKru?$p2ZzFptZCuz_0Kq9>e4K zHJ-q4@D!fLGx#GG;XV8lAL3&y!Ke5PUtlR#U^UiYEh?}c8?hN%u^l_G6T7e*dr*lg z>_aUM=~N~YV!}+MT8Py?Y!Xb0wf&}=PNu81_x3brncn7X)5m1G7T$qs$2FtOh2|2I zqZV0{Z>F1>=110&dZ%kcec1fmwV6I@9yh-=zjLjm&zl#`tL6=B|6FEPnXP7*sTD|& zgjic*ghWZK#2?juc!qQeuo?D}G)cF%LeElojtr5Zu0?Q+YX@|!fRiOx@_p7mwe-!l zRz9`qsXgzh4Ewi{=Zsm4)oO|`Fhpa(MEaFzwq9YC=+2nA)x!tDlT?t~1ByySb z=V}?k-^xh7CAqAULN1kA+%L1aNy@li?$GbivP$k}H6qZ8m1xcFXv0lt%P-N6UrRS` zk~FTAEbfqg+=^aEWCW796s@=mt+^F#xDIXkC^W?>+=UKYhsoTFMf?P{NWvkcnH=si zw{xYrldqY(xmAL=)=hVnL~y&ra=XOwO-ZnHKN67kUDBUV%MkujMslHy=N`G5Rg%k9 zQpk5?7B|RjzAUAzlrnCTTe(;6V1?YpFXeu&mB(3wFvM~v+Hn&GaTx}4C$hN`Wwxv~ zAsq4ChIZVEL0p1tE=3u);zm~EJyuIgu0aR}aXqrR1!dgr-rb83_nlS9=6aNIowVe3 zolnO-w!RGFN@VkElyR4|fi?nENrM-nU1 zmhT~%JJ5kO=)|ok;1=A-&3J-)@E$jtU0iP8-C^HVTDI8KWpgdcxJ+7dD}rn}w&Qk5 z;|_#l5I@m!kx=e+YyNI&$+eQiU6Rc8h*VlIn3b5!gP6htCWVX5Kvqd84{AJ;$OF=! z2N8^CcmS{Q01hG6wB!MFLlCzjid9JD%Sd7kT5%m(a}C;XIofg|lDQ7;xWcBWD|cct zzrqx*z%$&5*SHLe_%GBV4u{a*q;QqV;U;rCUo*9=Fo#)Tj<7<4SRo;-kWf}g6n9Ik zZ7JI%k#|TEw@Mps)s#qku9r;imHvDRL0E!V)S@j8p&ud<#0^N~U(l9+!5~&!-mr+< zO$t9Yw{yQF@;T|xHxY?vSb^908`R<~9Kt};i*K0$+-YjL%pBx8bC}D_5&jz;5yUl! z;$|drA(FTZt+*Afxdm-lfwue;lDP~i+=BMDL|36Jm)I6Eh5J#&O}LJm@C-NOHLk%T zEctMYHLR@7O)13ScA2!F$t_eYqaAw4C1Sp%;jbv z-!?g{kq~Z_P%f1SR!S8ADGB^cTJkeV;%Ab~Ph<>2WSnjF8|8AoEm!bEna_XAt=u5D zaiu)QcjR$yMi^d2EZ#sE-b82A;vyWvH8_H9CIn#!!Z}=yvFKnzpkEvtixwsX`fbn! zJOFW@X4~s3d#pv2ttYXpL?XXLSGUy;<`!hL%1zyRlfv!hcJ4ti25~wR;)%FuD6n@9XClg?v^xG;0z4nA`IpRjKu^@=BJp#jab0dSi~=}maDOkUmLL2 zgy1TZz}2QDzcd5+zRBU&=60@-ATE;-E|pL&mnbfiSgw`?ekv{bktEs@`M0#;MoH$! zlEQV;p6eu&Yo$MzTRu~z97xi*8F7f^4#aT_61fFkScyUW8iV;cvMo)uSj$?Iz*;j9 z#;oREX~{j3Xv5lRdC*!6<_=_AKC}x{xC;xoTS6@7QjWDvGFgjg#Ij1i%!@9zbk^DQ zXInXY08?10byh-ID=oQ0GICak(BNp8ehbUy@Yz##UHZrjiC*Ka35k-GMMSmy<8Vq zJ!LHBqY#OF181-rsjNmfE{3i-&>d>BV9*Z+!}$d+;4X~hZj9nCjJCP98<(;gIjqJw z?!slP#(3_=1Xg1r4`34aV=@om3f9_MawQMqDsDy*42oHS>tHaSyYUk)#_e2;JGdBk zaWU@UV%*EcxE}_;f`P6!cnk)Q!{FC2_zevH$S<&nU*khA#>ZTYC0vZpVDJSDmcn2K z47S5yCk%GOpi(#ffHA2srW1_m3S+u)m&xG~GY!V%bFrBTW1fLA@36wW%iZQ6tIQ!* z>CyoK4~u>aCYXnHKO-w~!+2O?VI-c1C4q+}iHD>$4@(}0GLZXa5D&{aJZMW% z_g7L5uC-s&qb)%tOGN{zr#|{17;$_LUAO|-Tx9OCJTIGDVQfoOIZ&s)+Yps6s%+H| z^!p_$`Sf_e-sxGs_NSjz(@fd`aV*gK9CTFYvcJeJl-8|H3%tg!lem85Ymf>i!U zB3DU&>bKh>x!7{h-Dtzl(U#lMj;o{_cSsu7AQW%F;7zneEr#I`rs4?N=~kAAc6m${ z25~8}`ISlylft!THTO#t4@d&{N)jt2nLDLFYY>Sz?sK)V3X{SmW;OTue6`^rtJOO` zgSgph@`+sMY9q?|YOG{h#2v0Ysqx99J@w?#W>+3nV^M%S5|d(e>>7k1*1oeF+1w@F z^!vozpo_Dtw(<{j$n%sunMnn6Bh9c)S?{@ zp_fVF3e$^~s%eYJP{K&?l{Q@o3^%%_k$hNty>8!0oscN)=lx~+GR=Sja zV(aQq-7iynh$e-*ZRyvb3v0X{fJx!M+#0ao)u@!q@2`^=AEB$wZ!a%YBEBO1`4=Q0 zh+7cHkI{vzF^JC~n-8FfpJEo5;5vSa8~GA$<`R>_*UTz@VpempMDa<9`wLo1I}zm8xjmA`N?XG#(Z%+FKEPleL^fArGWTEs_gh_jHLE3r`z4f>lF5U% zFSFH3=rZn=2v$iPcdMqw9Z2NAG(Sy>l_xtTk#|aezHf6X8*xZvHQL#H--5xmU!{HX zgC>Q4G6Q+QthT-3T1oKrIlh!69+dvJ_Z`P7SEu+gpx%9CDU7mOt5ffixe2id2rS;`+W);_))wYK3 zlPE5>eS-upktBX1$$T3zws#iGjY#Ag46?e?*V>~ss>>yCpCs~0TQ}QqpCogi+6}A( z-;XFHvPOn*pN!-l$>n}2WVOuVL7B}hQp$r;#shK}Yvg|JN4QJ#24u5B#_H8$sJt&c>lnKFcr z$Vi(HU&&Rhm8-cya`~VX@^zWTf5>b;ETw!=%J@r}&)4M^zAd-%6}gRX$sJrEckw>C zpAXC9d`UG`%QY*I&1xCKS7anBWDIx8IDRD)xKgg*8XHR?SIRZqEwi~<9^(##$#|}m zt9Vdmag)sFF1eLkk;$GH!oh_gImJF>Z4=5vqS#@+HbD-nY@u0>xf$wkA_t650{IiVYVq4R%=5ER5Kc$dw$}D~=v$;r0 zSs`V%$9+I<;U2k_tK>FT$sLx?w{2^PKrHtn(eg!YxtbS;WHvvrxqgRjRl6ZiT%zMT zzj^Gb75Fu70a(GWxq<7shHLD3IXBjwiT>XXE=2^ukN7d);!f_s0Dk%3p62@CpZUE1 z9$&HbVi8~B^W4jwe4abFnJZb%ZQR9bZe=Ckmds{S+X_TS-G0C#hj|IT*-T*N*6Bj4bs`~!C>^?b=s zHLj9UXkJ{@q<%h&lQzQiT`SKS;qS+IhC(lGdMdtAeR z@t^!aj{slyLg(w;r}6S5erEl-bZ`Y<;aA+wo!rZpxR=|x&U@!nf(!X8Cp_+D6@TA& z*j&Y>T*kHapVDrP;J*J4fbVlzeLu$!e=P(2wLo3m%x&Dl&D?zap*9Zg zE>&&sRN=dzCtIyx{i#avcMDFs`8=2L-R~CVrxtvdmHhhDhUuU=+KiX?T*}pTY4|2M zGAmRb@;QFOm$_GCY^eMHcf;))zQkAg0+(|sdhm}YoZ`?Ee$$21H-uWQeBe%3PP-cX zsfXK}uL`tv{C|8Ga4LG?4)`^f^5Wea~lnw1fu?1&4*)y;vcxevk|eP`ELh8 zOWl#Jf#8b3D?2h#tvLyByZ408x_$I_xLEIb@|f#SU0Xjo_&WD+8K35dd_h~3-Non_ z@Ru+DY*W3|)(ag^Sgq*_)MNOewHdGD8h*tcT*pQH%8pO1;6Ggcu!qlZ4YzSK-{#+} z{rG*iwSUYnz1%n&TuG+&v6?l3F*hIlkiYZ$=HLA8|81ODZvHpHU(^5F(Rf*(T3Pm8 z1efyV?;_o&4$bM){x^b^+ynhqN~7TR#>Rg9Qr$yizK$1xCE)c8y}sdpjzc+;_kS7x z3pv0o{&Cv+;4;3(B@MMy&%$+VG&U3A_`&tIU#NYNf*mK&@dv)$HYTelTWO9BsW zxSLqPY9A+T=4?^5wFZtg)Xnk0@(6_TC;PYa#Qn0NA)Hy&yp#9yCwz&|B91R`1D|Qc z=Qd3@E0ym$nxvvGJ@vuuyx;m-Xpev6vwV#&^KBiKXl@JTXZ)NS{bL%etshGucn@?8 z=wYtrJ@%i^dw93QubCU@(+_UqYJSCyT%z|p&dcpizqe^QYRjj|vgAe`+wr$98^>v% z9~dA#HLrEVAz%i0eeg5h=GdAobykDm_6E}MpmG84-Nq#EcNey&Q_Wq+ke3Iz$Lc2A ztQPIlFq*EDjkl6O{qT69(y0DBN8<$w{=L5MhOj-VgWPRL{Cv9CsR4Jny|$f7C9Am8 zN|OUN*H1}YP6-4aJ-8!nfAOx54!+4poTpsKm+ZLVdcMKe`66HBbNmCJ=kt7y5Aa^z z%Ln-^9|HI^|DdzbxsXpBbvF77T*wc6A-~0E_%dJOBD;#^WxmH}`RviD^24s%@XcxG z1AG|ZQ{Hoj3pusGsU42KsAJmpZ|CFlMOaG)ch{9~4pctS+%lRH5uDiZ?Y%n zw-YwjbM-VvMSxCt+UH?<r!Q+Mqu zrMom-`@YV$@P*MdtVZd#%96uZzjgtr5f8t>u?M)t1 zn*2vA^S1kEIcjTex-{+lz}>u;@A9|G>v-_gwm81a3gxhN#kRYW$Fs6F7g{g<^4Aa6 zYL8W~U42-4!D_?U5+H>Zai8tc`Dd=x)YVEHs}~pWAN(T^Xh^p2*NEn#@%iFvb`M|I zp?Yt5=f<>+rr=T45T1tYho!#SZ&R|pibhiNzk_4TAy%@A)qIHm;KQy3tl8z;9Pl69 zt>JP9_i>-g57sp2O+U1x8>7nBNkAVSMW8mS_EB!O8v0kZRej;uQk#J@k%12N{H4~rKK1D41!-G=rmQ{PBd;)9e>uQ32xOKp%6RNJw?S6fZZyie(d=qf!`_JIme82%0 zvNCX$Q^WUofE(@1jjyd0zTS$cqob+z*F2mYCqMR>k<|K|_JNO}=WtHWc&5Wyg&@$iw zM=N8kdp;39a1@#D=KyeIgYx}d0kS~n1vQx>?$TL=yqE9r39GvuJQ~kAG4LH$=uE^q zI$^yv2gib@zA>uoNN#T4y!>Hp>U> z{3pu?{@$3D+Bp8R`|~uGb9G_o41f>wGrsDy7_WDDYT(-GY#nB;dv4NB(-5`}G_umD zF&X1>4POk};u?FmKKKuA4O~aoST49LQukUdz1b^qPQIVT1C3GBH2ghDe|u;ee2}Xf z=aeUl=F81fi2&QOop;$Z_?5Mc?{)Z-JKnyl{y2c$qim;_x5vlL{XNrfCmQAeH*go1 zc=lKYt8EVK;9jn`{eou8GrLO9H{ar$f+KY;<*r@eSehB%;{HI(f5RQ0Sj(;cHtm61G?gJ!*SPv&EJYT;Ip?k4nD(OfqIHxn)u=N9JecHZhjp& zwmd$)Xi5|EU^VHlxt5=Mqy48Et`^XUL~kDat-3C(T(+}{8q*A#4_0zFH*y_U@qpUP zoBw8W;b;#^?}?$Qyz^U$PaNFJ4|QdkD-G?qG;8YDbMCWq2i$UOPTlh3Kiv|J1xFhC za=@8?x7(Rn=7*~fxHAj`<;Jn`&2z%z2k(P#9{Q;Tm+NfYx?wiPXHPATM<;Yjm3Qz1 z{$AJ7oa!+nMg1H&5qPz)J_79nCknd;LU*=sW`R4ihji!SI?$O5{(G!w?&!b5)62e{ zXt-9)&QNI5s`8(t{BOqv>3|#D4OPa$! zk2PZTpM^7vo=@-@{@PL!qN_5FwGNJd^tgsM-~RN0U)U8*?i#Pt1wPB#K%2m^bX|YC zkH=c}Z3S2I7jF5hRCwDSchz5aTo*cq?A-CBVpH&sxPBXy&UjxEKdAwh3eHO z!aw{vh?j@;bL5*xU>~6|_;=^?5YS)V!m5**kHr1_%4zj_475~mk6$yaZ#QXL4K_}={n_fJnfh}?Vez|-=}_ge4q2KqgD8I&*s64w_$$x+mAv+ zZ>k<^PwH5`T_%KN`-MY6^UbFL~dAZVdc$;4U5f1)t+z_!OVB`*%IZm-(Xe&7&*RZGFG+~BPNJQ^C8M@>WHugh_o3y8mwbv( z+FdXg_}}Le|JWIS;J>fXT_~Gg|D^L|Je*$L>QvMOYjL!icc6|P$o~V~iW5sy{ZLL8 z+8;SVO5A;by|+(Ps{AM67&YPfu{<7d*R8TDXsfdqano&?;HcXKH|8d$^qcIO_QX`;4bmm2SUET}*3ZkPkjec!{e^zuNtR3E3ie{`zh zX<>deymLG_**f5$q3k<3s{Z$I^3wEJAq3j1+*0#><*1=`n{&F`y!kOxJSPwqYavn>*DB~Rrj%| z>-R*^a9sCT6rF1D)24eKe7|8kaKPow*#+v`54$6i`yIQ+&`=sW+?yY81$XMs{B_&q z@xaefjt6zyUBlRqS4JOerDnr;a3NpHJATM@Nc@7jR)=cnfDz<`!$YZ zL-$kTN^gd6bI_2-9!nqmCg9&k#KY;Msv(bUmMmy={($1t*vA@bfDP$9RcItG-`C4d z1P$fbiJ)P6PmZdl@c&yubn2k$tBW}c{n2-6$!ELw$<8T-5!bIGIdvQ7L z!>=(Jzrnk>7JtRZxC@_P34Vr8u@sMBIac5?til@n8f#IB-=fNd<5d%B;_;zLFrDzJ z>0)xQ&Rk|Dm;^J`6q+RSBXhe+HFui3OjmP{xz}_z_nAMMp5{;HO*7iOW8O76W|diG zE;DP)8Z+M13d{rvk}z|nL`a00CQ%Y)@+4MbO}@lSyeW_bNjB4^owPS4a)zXu>!g!( zF=f(CdYS7bP14NGk|CL9zVwq^^8?9~yUcTPkKAv*kcZ`QvjPSo@=J&<|4e%{5Of6G z91cbZLJ@{=L?9ATh(-)z5r=rRKnq{3NkCV0LwEE*Pn?Of&BvA9 z`l28DV*mzX5IUiy@BJY-7ugt!VK@&HaXyA)I7Z+CjKoNc!nv4;(YO#}a1qAhVqAht zk%P{@w-bFXKiUEa_Fwvt+7-myEf-9M~Lk3BFHu*aSl z*5H2@CIejwuC7(}_T-RSNa( z$+!Z*6!ZWv)XlSzHeH@CrPKQ>m0k&GzA6QpJ|`WQT4I6`jMiv_5clXu+Xl6;c}M{) zl_!GpFdP@y{}^0p1GoxPF&-0eHGp;ioNvnN_<0_Hd<;ebreio}U?vK24S;J=1fV@8 z0=OJgG1Y!$Vit-q5#PfYlmIxxC2lq*Syw8qLn$U=DvEIj?m!uSh##Wd@?pLHKiq*i zxE^zH1LoN~-^U%e2{&Ut{trLEE%=GO`xE>Sci@NkzI}cdfE#ctZo_T(5q^xH;CAcl zZp+7iiu-Us9>9Zm5D(eogLv5fe}1v;HUQfPq6?GVgVku&w=~!OWccJ;ZZjg z3$Or>*)Sf#gSZX%;!ZpcgCKbnQTRU?>rZn~>Cvk>C8$uGMp*32eHFD7k(~yTeOv6=} zgh^kEA*s%^Av;ypLs=d-X{(lZy1^j_lmNKPoD)Q?6^-hqbOrL9*+Mb+0eC|n@>i#F;I_s`a zmB#M(bv4@5`3EE4_aBGJjs8OrhERmty3r4r?*B5koHV@+;iOZLga{;Anoa~ttx~8m zHN|qK>6RyW`R1g{^QClpf2Go&^Lds6O`nsFa7#=yqA?zkh;fe&Vl206SPPqjQk0!A z|IGFM+F*)}tOKT4okp)F02pZRmg5Y2XAsUoDh4ADQ}8`>#1Jc8&b5BDOp-9g`pd=? zbhPEs+G<}a-xX6Z!`48c6Q*FY^`+=+zwI;9x)tXG=;B@tvuEYbD*MmF`M4az0W05u z3+(-y0L-*{2Ha34;%0Qid;r~1fGcq&df-fq!f5Nh5{AsN-R@-fbk4(C`$viEWnF{G9m&v_uINIa596cpMx=BCDk~oQx zbV(Bukn()O|3m%8dFaZ-W$<~dl#7Kn1NSyWtq?@Ek zx@1W|H?83?7>RJSLI-rgnMg-J48|}7Nq2RuE|?DG)hFdO{>hG9i*A zArMKHP}}Poj*%FPOE4an;|g3EkTZjjEd6aBWCY|wqO_KFzMMG6=0%jvjU;I!$o`GqXPtyNYpwdXW9B;5NznW1Q%dpU0Q8T zNtM3RN>Ze!WJ-w5*+^T~N6+0zh;))pwtWm2=Zj)Wi<1wqy&8AmpWBcTl+u*$* z0Zu;#0Nr~JjFk6&?5djq@DKnToIX2s{x7W!+X2`I0odfpsfF{;JqHHB>9+xZdGgGi zC%*E^FTWE&`~cv{2T#pR9d~Z}&SwGO>i|$cb!ujckK#7~FaUtwQ)d_N$OOp_0Q?{T z!kKf^Q%}9}v0nq={{R3#K09^CdHBEa2mr37_RLM4o%#OSrw#%fe+&SB_x!nq#Xl@0 z<^WDy3m~ol>Kg*Qzx(^gZ;q`0M{pR>=gXa6{OS0R=b+W3Uz~@G$g2ALO76DX2mpTm@G_AEcoQ z?T~?S7>C{PPWTQy0e=L)4G+RY@LISUUIVXzjr!XUr{Ey$g6p9SCHN}513m*)I1JYV zz~cbW2L*`3P5@{?0UEHk^)0|rYB5ycDEtV%37g;z@Fctr-VXP}d3XeV85+-Bg!jT{ z;7#yx_&xYN_z+COPB;deA%MSt>*1^LRk#P<2oJ$6a2W1~?8-N@@_i8A4A%h=e(7IF z6DGJ33?1qKjyb}+m65#n8|mks)9~u~2DCzYbU^}P_&7|!de{J)U^83+J76nJ!U5P0 zJ7E{>hEdoDgK!n>fs=3ww!s$I2n|>Zb+`_$hP`kQIv@*OFazDt1E*mQa*&5!C_oWP z&hld3D?3p=mY~e2#}z_1Pg3%zy%L{h(Hu#5QhW= z5JD1C&<5?0h74Q}hv5de5e~u2;0W9dM_~$%!89C)6EF+6z!^9T=ioft3iGf4i*OrU zfZO2?xD)Pzy8%!(0YD!lWLie3JsuW9#IB?K^kv9^E&1)t-~5wr$zi zSX;mD>b(a$vRyOXJ*Ve#`QAdY)Ym^yT{AR1QX4B*_TO~PmDjH8G`Nt;v~0)q{75tw zPXu8y)z+TQTz~k68<%VPKmVD8SK%&vhV5YAHr5!gGM?dO{!szqxICgd)YB$6AF~cy zAG7235&P}-cb#r$i*wj{yYp%1d+w;a!#(f5$NiSq>HUs>jsKUC6Oj)^uZsRo{Eqnd z6E`M4ns_!agA2iv;c$3M_?~1kc|Q3^scTce(pGPKdwbBnt^Kv_UrXoGx1^s=e=n2E z9Lszz^DiA{N6@jc<3z`sI=+>yXHR6`mi=z$Z*|?+_50n&x}WL!cJ5&A2l*!p#ll|{ z_Z9Cgex`JP>D_%DeSLk^zN39_>R;18*Z=guz`&~pzB72sn&g^q4EaObhTcBhIsCEV zAB=R25Y=XogNO0I;O&rtF@QooS1Oj29K>9416J!3SWad!kfm}eIf3Q+2CNnbF(G(@l}w4VF2t|t|QFnf(a~F2eDRZ)}IRGAa6FW(o;@` z`0&#A+w=MMSM2lsk9ywzd)o7PmGB;5>=(U6!o$Ez;H!Gu7uyS&bUIULUu^Gv!cQdp zMY<5yWuO4>#;@Wm7@)v`2qYi{8OT9D48a)GU>$6LD_}e9ftSHqxD{@LJK^Q`_dxSchc8}wh+Rv6+Lq6^;Y52rzw}!K zC!Fwuz~8d+%5vbJFTM5S_SK)X=lfpivXt~a`Sv|DQhVC-?+^SvRN@{#m|m4Boz@il zAiNyki?0R+5$J|tsKZ9s3oipmvcCvzLH zTF&C~{U>Fw7W1z&JkRhV`r7WKGIqY*Y0ul4oFCY2PMeK^_t|thlTNqUsSYdOZnx*H zjvha-+MPBl;iH?T&wIN&Uf=y0)uEWf@Wm}Q{Xv{T(VtO`R#L+}1v-AfE z({aqi2Cf*BMt{T-QmH;4qmG$OnhqZB9U19uPi#-5OPP*XyJAK(nzzyxH_UkEZS93Z z``e6kVtb>Jpph#L zV|^3W8yooqmOC-k$)xge7)wNvlq~s}OeGscvgkI9B@H?sm5-?wx|A-VjYgx&N_wrD z%c7n-VNl+Hm2&lT)C z%N-R-r=IlM9UF~*(s-mt+#8_L_txl?kGN^i^Srd{J!HqW7oy0lh@Ezv&TLwB46pGl z?z&DolY3pXIBI*PuFj%ojTQYuPcj~$SxBcF>2y|OTC*76chg`%1s=yQ;V(lT2B8Mf zsI_JVYoWv-J|C4zwdw@X*Gnkzxa`N# z;WCnzlVPe_BoZlULRTr2OodIFsp)5JBjUzfyKK+tOMBoeA|J{Ru2I5k6iao_UB9Ne z0_+>wfb*1bmM)C)oubQ8VS2?zqv&}gaeXtKdj!!^0 zjKDg$681J%RlVQIA#- zGjAD5OOv5-6HYM4O>~u0Ci}V}gYLI@=KXI+G^6>r=dq<9e)A)~Pk++%KjNEG$M&tU zLMbEv@~lh`cwv9Ux9x6Es2MjB>G1rH41Q&T$o>XP_`a~#6Nq)cat%R`k75FEy(5TF`}!Vm_yc)X`+FlvBwps+^Kx(CVztz5%PM+Nf{B zFlYiMm8-?7RNiBc_vf3ox=$?iq&qC_U|)8WNSW^aI3=-?{RyEOf&wk{kHayHnp!(L7B-h~L4# z0U!Ed695)hLAh2e)EiRCEGAQxTD883Xlu&He6Cok3t1|T(D z!FNnfZkakdxpnKdBU5XJEx&WqO*TXCn)4FJ*X>K>dJ_A;wVp-yV=icmI)g(S9TkSs z+X#?=D%9{#@fk=$Cloc$uoZU00k{dK;WRA3-S7)q_IxM27oMPg(gaqud{_wxmumS& zSgF-nwN8_pX8ViX2Uw|Ct2XN8R5DO6k!R)I-WM-p<#|u8RIE0UJ5ci9s5yr(7w(SE zcl9DOyaWBeo@YZ|-1FksdU4l{U$-h;k4vQ_T?#tYd%+cBtFo_t6-$|A zV>poNPA0pvH*VfMG`xAPXJn)&H!^ak?^k_4zw`&Oyl)AtNOQ>+mep%JmL=Qe(hr5O zEU(S694DUOuk}soBX;=G!n-B!b!^+|bsXb|lFK$}S&mh(9Rm|oQR+=p&*tHwdq;B3 z%BCWI2cj=cOGM5J%jvZ(+mUT@>0gEAxNY=$BF=G*Ulo>buNWr!_*l-nGjZfm6!G$*HhCWyW>tHV&f>Xq;VKv{ABYIZpDc6kFdP#_1 zDu)5VI@g+A*i-9K`BEj-pg)x_rSeS*pVA9mYkGvGO0}dHghn})Bx0W{h51?~tjj>t zoocC=Q~0F6^t;lE;2!_tZ%NCNbm@;qWBtBu`!-gWK7-XCM*`1}coE+VeE;rYDW$EH z74=NZvRubDhjW4}Q-~SIvMkkRxvpsn5fws6U*ZE1OD=uI_c3SrmgQR*jm4rC6~FY4 z7av?dG&D4{zCS9d2+LHRG?P43f^!jArtev%WgW=5ZN3sh`ASL|44hEI(pB%}i;O zl;?kCe`0@V7rQ*i3D!nX9{um3qtrT6C7sbzH0;2O_y)KhPQxAWAV7k+73v|$DEg1q z$RHUeDLNs_El3hs(MX*yRZG=ktyraXv{)+Ui-Rmj%nrRc!9)ZHaR6mrk#2^-I)W*^ zNE02amWq{?6}w)mmWqdLWqJx3Lo^Uc%tC{6fn4yor^0o+3(Vt!8z@}HxWPHM4?oQX zLu6=}$~Kg+Cb*(^45qjhjpA%tvPN=ZfT1lpH<`g0-{L7V>UuFtz1&x(seCtPDx7DA z$An~tXRtsRo}r>%3^_(D+oqMvHiACeh?)^4c+!xJBjbu$rea8vmL(WoeV8Lk?sh9z znC`ok>3Y#P~pm(qPQsh>MPWV|QZdP3R-u z5Ji_oZlvH%h<{u}R+K7lC6~V7M2n0uWLQL=i$rnMi7dU2;RqL)V@qE!lxdhbL>x5) z=CtZwKszMyyZCMJH4iun699$W3U@&?&S;HmxuI7pErO8pgR~f0xLeKSBTf<9_4Fk1 zUI!+|$0y!1K5-%O=R^np-1k@ABY*BEw@x0N+R|dS@B(mMwmY9&Ww-1!@Thk;zZIXs zuRs?J0u<_{1_>)#Dbs~SBZCzvkYuwFQ;kxpq>@tMC|XnPZLXhKj3qy;D_-O(Dh<1@{w9Z6M|Zb{f2co3|%jJEEW%xyk)Fpq1o7DTeiJt zZ4jm&3*)y4nMg#ZBc2x|k48#Xo7uR^v25q6wTUoAWAILR3(n#ZP!I(uH0sF+%3`T? zZ=l@froC-m+YKLZ)1LlqciTMreW3LNgzvx~Uo0yMd=Ci|rR!8R;wV9>HmYyJ8^ zFidM;jcJ+Yh6zA;0)7pT;0cnR3ON~Sp@dlThD;^PG~sC=G(t!c8;Mpn>P5U-Ijl2C zcKTMtw0Tr?7+htAFNEj}+AI0o7)SeGEfr+C!gkN(uFXY-&#|H7+r7o-4?h&f?C39XkvT*CaI?|a^wHJ<1DgR8=5tnro~cxwiIubIj70pYjd zJvfXnBZwjqw4kN(+kn*)_FC2vC2y9(;I@q~6LPzV%6*&(`>nR1d4cdCyc+Mp_rMx@ zUtIzXwTtA-y2es1U#|vE9?wRZQOOso?Wv)N;|OK)LB_bbhWo;GBjY{2J1V1B3bYgo z7RwD+3;k_LBkFiutYO?X*KqE-5u>}OQQ5I+gn)$b5d0I)W17Y`v5FC_{K_+?ZJYXn zX*+7$QCqkDweU7Pg^OfKZB)V_Nm_5suMc9aS|l~7)(-urJ+^P}R(5Q+?b~}|_CM@a zwyk#CDt;9Ou8J!v4j5bwhwwM?L*NjNNUUc6^I?$NK(Z_m(;5kDS=253=N&UMJGP%V zk=)b0hYH(c`4$E6LnpR3AN}D~vDj6%Z#V0*eO;FUuYtSq6?iK+kbx3ulC%_{r3WJ4 zmswPDStLF62CU}MT(6X64h|A>cYe%`#az04N{EjM@#zW6G|j;^rfHcEHy_Z`zoKU! z)8qYudROCLBfMPErl`h2q}nT&)jM&i?5wUBbE|5eTWQs2S1J~ymB&BB_rNfW!z5e{ z$1mxtdY08vr486aAg;WK{whdlbsw#2O^wy1Wvv-1wU(3Bld4|Afk%d#S}b%BO+S}# z5`5`@2-6f;WR4SL$C4)d5>tuJN4#s!3(FGcegE}zf4%Rw;$Iu^((d4Z>wDhdpy&DS zz@VG<_6}Hqlu<9@r`>P}KWo|6cV)WY3;I3Zw7c4nSwdP7f82D<4t?1%;HABR0oV1s zfdS8R-2qA<+`9yyKCSaQ4Yva%R?kOGsu&R}(ld6go{TBd^VLc{VN1JLB1|QD^~JP+ zEwe~ctNNOtdtUhaF^1V7%=#*-Ea8icA%9yQqTBg5$^fzWcuZCs(cXgvrZwrpZuaoyM;wkXoAZunE0ZERbK=Ybn!WTpIht zfk%ciP0&Pg2|H9v|I_oZq&niAV<}~P5mnInh%m4DJpzTkJm{P9!Ic;#VQszO+`88i zXiN%e{?|1bKkE6BwA(g-pG$wI(G~XlzVNy%;h|{4U?M_ANNb!fmTMAD^}{~=6#fPb zw6q!ej~*+aDQI}Ef5L2JA7IMBip>t}|hN@0@p4?4V}6H;M{B1D4dF>b%-P&BizcWC3G^U8L2xiOOzE~XCWTo-@k(8hfC z-k|-^J@2rUXAJkOHN3c^EOkyev|M;be@}(G@wjKq2{#579E3yo9{i0KuU~~Na24DD zr{GMJYhBT5*XpF%Sk^F-wo0p*vKSOE=?a_b51mPCpHylkS4nHDNd63zByn+Be-aQk z+(_Ytv2ELrjg4*FF*3%s4&E_1FhG|-uq>NJr4Z7zxzVgz8{emgpLInz8TS^(~ zPNnWtcaV)hh`11M5F(~4w}jZ)7w>DX+q>XOdNJ^w(tQ8w|ETGMqaL{7R=u-XYle__MHm{fI7!8xy&Vm^a1-NBu%loWKHQ6lXmbP6G;Fj@BWAGPCvmS# z8y1Vl4c~AL1HgsrVGQ4eUx3|k2Rs5FhA+W);a@R^{kR$Tid+ym zq+%@<>y3IcMYt~O#2cz0S$<$-2W}e~WutDwWD#sP5z%i$L1TteD$WtHK`I7;46(u( zv)g^LrQo`OVa9$)x+Fs;C1o&>aWo=4#<@g;BzzVLe1_;G!gh)x`X<}SjDC-bCnbQg z17=vlAbo&Qp&VMTA}kd(5UUJXIASAXo@{ebMG;HL(6M4JGR($|Fm512Uzu@f(7PKj zSW6WrTwRiDgp!$PjFEarr*M|`Ec|`pv(Rvo?O`tyYydOSWE5k`V`C%3lUG(;H_ly5 zrI4XX-AC;9BW^$qW4r7qPBBKcHadJ}M7Zo9-nuQx6ms9lScr@>0u@aKiD4okQM780 z3c-=FjznlvFOgxgM_y}?=1EB5INTvss0I_VxIuO3HZv4xSaI7j88Vw8is24qj5EbW zZ%Ao~PO{X@jL42Mwp#;VWr8HbPOJnpNa-3CXrM4Kg3L3vQ}NP~R%X)b7HiDZ8qPCe z)E0+vHW`aLZWJsiLm9t-f2w_b$jfIftcT4o2|Gx7O{r2?sipFTB58{1DNzn%fh?tJ zr6F>)$YOm0wHY`JR5FVx^24abs-lrnsYXhPhESziKE#dpM(%xE<^o&#vCAb#<(kiZ z|ND67(vP_0f-uWq-?K4f!VpU*Umm^phxbPAUHW^5%2>?ox*>V!uIZz9rI~|Da*kBrKnq`sfJF^!zd(BPQ*zA2dyj2jB2xA{==5I>YWG?PiEH{L{kT@p%g2>%Oy5+aa< zA`HO>nABbr#Z8Qqv?EBi*HQ$-O07W_j~Aqpmgj}3Whs=?cI6F@X*#=VZSuY~BgqGk znTE34CvR{}i|iR<%Nu+1=g# zruCWSM8~|8cu{yVI(mh2nmL{BuE@sqv^GfiDtrJp;eJpMLKX&~to>}8=C)NPIvS*w z4Nh~@EyJCBu|y@Y&5b%vw5%7xsF1Qp$H%291jXG_Gfpd^elD<1FSt@EQ%K1zQ?6Z| zAfj%W;*Mx$5K-BZ*WLjS;~d@s4kWam=8}C%7K!I7*Q>O8Yb#U)C5FA#YHy)hHOKq= z#|NHbT&WFGD!IYtUG$xzz9a{>opJ6mR!j>HAmux9;0N zw(+LHbR^oQoG#x}TA=vcw>cP*MA)y+YcOgC^@h7n1^8&pTc{pyKKj{DdN~~V$3p*3EMKJ+5gx{kE?aZcAVX- z!W)s>OP0ayC8h2D*TW%vFTPj%wUKWV^pdnzP6jKZUMl95Zwz9o=^Bwr5>KPZ$U?pl zv_@*90BQve*$o<%#zri*44t^`wbRqDoj!Bd_1E8ZeFeFcDomynyWZlodWjKFAhVca zj60^_oP`17%n-_Aj=`8<4Z(ND+G4S`L&vD3uU&uF!Gm`h$Po?3Y{|G3M!-}sq(Z42 zZZHGo663Vc5&0`EVhx9lA-o$|F#ele;7}XL| z6R29MYXW0Uny?A$%-KbSb)!u|H zx!?s6Y}#ry|3~a!%YjO}BO;Jbxahyx;D*s-7&rGzDa`w%5`VcWd|94n?;|qXf3wcd zjhp+0Nf@9$x+*MJ$fYb_r0ytJ3ERBS6hibLF^q2Gf36Dil^mKb#i76e zFG2@YVFsX3YkGN+K_k=?B-P2a3b;VLZmiY*T8vm>>O)fKv1m42n-Ix)jYLTecCs{T z`Docwte(V+W5u>uM|;>gwq-}viQ94MlljebV?9eB65L`;#058{aO~~?AGbMfSd&he zG1rU-ZhD~5AxvSD1-z>*NQGV5&Q90MH6*j*U;bd)_Dr+){oQ0xlZjveH_=1A6Kb5n4^JvU|;-2Km%G&%Y|wAIcH*P>D0rmR zE|9liORe9iH?#ym<3@dN!lcz>vPk3HRn=Otu&Z7x6ni~4)z;CO%V#@NN%EgeraH6v zTxZ9q<2_rws#vJicNL1Y7d&oDxt`~Yc64fe6cL$=3}6CI!f7}M3jlFyPORyq5R$%L zyT@-rt+Q`7Hc!@BYIYWN@KT60&os`xS1AyB=OluJZhhf zgvriW5FWA)*as}UXgiVTU_9d3QP+OdH@KY5WH;KjW!iS!w`|+;5^3LaY$ww3u9!W# zrfU-hvYjOonT>_aEeYE-P4Ce}dsmpWe=VC@`h~OlLm)Gt0Xy-}@FEPt2G|3j-S!4s zSBA>Z=lC8c~SnX0YqJZO0eCZ4C+#`_EuGtA&|Zm=1FhK_P0Zg3qfbi|*H zclci7*@Wl!j^>`tjp_?#;sT8s#tq77ponwBIBsw(3|AUh_L+9C;(V3 z+VYh4qRT)Rq(VK34DMwqXWvkJ-2t0|yP5A!t)^EKl|o{JYrOHo;2zV@2qeZzVf&q^(m208xYV@prRVz@ar zXshp$KJI(UHkZB~k7GxCF#b$D{!AP{6eGu-*n?4ePM3E#6RxAwnC8{?!d`p=p8yXs z&`)beYfnnEF-6tfp>iokTVh&!G?Z@Ha*W!eY-*6LR)=D?!p+K#EiH%e30pSs`b*|1wD$(Pc+svXxx@}6I~j)SgS#? zW_y%v+p*`h=)`ghJ`;<^bojdFEd~Y@U?*P0ryv0(?N^~!M{>7pav?qCRI>K(Ov8&p zs-?N+oWe(&ld2h)3LkBzFU>X6b^N{p%_eRZXz3Tf*h_PjTg}@qHWSTe7EKe6!clw- zAJZ~HN^7mP{8uWc6lthaxl)5P^0?*xBS-E(@>q~~g}JsbjK9KMi;o?lv`+ICiJ))o z)7HIo(`)5s*o;r()8IoE07-r*HA<;Ql01$I8!@F)B~_GUR4d{`_E`Q{U-1_c18W~C zPZ&#oy*jqm#>C`E-pceQ9_Sme%j4G`%30}^h%?#bv3lTs{A;`i3NQqqH)ISGg=iYx zD`8L>tI(zj+5uH=)U?uswBC@?s(B|Uz1eJ-7zt6x2y-g4v{g-r7q$tpjB&*3QclDJY( zH5_gHXz(DVe-l23ZCIf6O&ET&@#8_-@5^8l9K%oHJGAE#BvO^IC)UVoAJ1h%S0oMb zpBF!}^t*F&UM%L}9=g6SYvU^`pF`}7yGzee%IDm8smas50p5-0@$jWG^EE27wYyML z2rBbi!LbjHkK4X)e~>N*T@xoWXCG?w?T09S*7jpf-+?FLSMfT$Rzs^es9iGhITAxi zTy6@Q0byblcl)WyZp$(R7ZdBrEwgJ&gbUZfxZiDBhOvG<+1tC6aCW=y&LnVn9Xy0D z$2-7-WRvC=VFWmVd(h~RrLxzC5u3qFOlVh)^CDSK3T1lgFK!xj3*7_$tO+M zHR z;`^SA$PC{4`EOdExAf=ppG>FEZrvIJgY$3~z7t;ylC)}=%7^({zOh_>*kl{Xn?!3* z(0cXQd&eG7>H%8_KkJ(BHQlT)g#CcRJMKDv{+GmErtcl5jve-V^RAZe?h$xBF5<1= zLK@1X!J)yW4FO@GmiJC*kG+z5DVLzJBRxG^j`ZYmrE5B}+3fyoN5{Hu(%SWOD`A@5 z-NcM__eiPK>wEG;BU^g9M~8DC%4YkDUD<4BslVgO9x0{l=@EinqQ$3&vP)p_%kV~A zz_aj5co+b4DxV`y+orRrmI}jSslI_M=0%OCVUUtai%r_$w34jQwx{OCr%JgImK#a( zprVJ=Epn?&$&fs%w7Y4wLFqjo(%rQ~98``6>wzgcG)=@X0pkX!^;5@v=Cj=hv>bEsef-;tS1(b zRgGL*>qdoOEmiC7mQJ8ltZB7YONOG1x{fYQ{r;>a9JOvce`2)o95BX=X9*5Z-{&L0 zk>fuzZe&^#RHi8*9SVeFyN6xd5y2sYGaP=LGZMWXCkc#k9lLZ}m5BctBTIkJO~DL< z2@@MR@>w1vac$}E+lUcw!)Qx>8+DXY${A(EGg&LAbTs#AllSEaG+;vSGt9>-VZPQw z+XG^>MWClvQ6cS~tJGq(d|1%QJt1WiwR~t$j(n|0Rcd*P=R;N~6y}y5ohuaPaBgl_ zVF?Nae5$v1>CxU^e5&y1+;cF8aPg_9uy^MiKDzXEowIkYP$=~F_VzCA>h0|X^(lH#v)0c@mftlla5?EnrfSRBPCl( zoK7R83B9o?7?W>#7V|XOsHl97D0@rCP%YNT{7sw7w9=tSTv#%!f7%j?8#J^uA5BSK z-3B>>8|0BqhCEUW8zw4qP??g(m60Pka>L|GND4;D-bt^}(+F8jIZZ!|P~`J8XD!!M zuCzHhQ**~aW-wux!m_z(2xf5Rnui71Ov%6~$<9bKR48V#@o^Ica>fisymWP3=$6sG zJ82naZIUU&u?#M?zV|cmMQq?Gokfx$JxM1EE945=f>6-O!WM{#FD3W{1dnBqX|kw6 zMk%#QkP7SHRwk*gIMQwd(mRqjIAWBO>-_2-6G3YB83zS9OByJ3Pnbl5W`H$5ZW<=1 zjxc3Zb;k(woEegO;xZGZp%h4X6Z{6=jyFLEY=#rC0KW;Jrk%Wb^5CSgy-c;0Ow}r( z-Z-#o*jpGwYA;&m8udoC-rReztotKk-qbQ{uL)AEBuPzCYAL587|4*Ac0#|FPOZ_T z?pm8g9vCm$no6iy=oQ=zXpNwCVWlbcPa?A|lau9vMx9HcEUqvbA^U>Cq#$ZeMqF*y z)v80vIM&2Gp$KKjX)UHKW|&e&X;>IWI5#CjZs7R{p`=olZJNT8T=)cLL?(o#gy4*m z?b(prR7y5Y(cBQ+pkdbLdxJ1g&w(%c%I1bzMq*k#gqnEGkYO>!sRKxMTy9%>#AzyU z!(f|igpa(W;Mg4&$|$yGqmz77NN zU@8{zV#&5xG#bO9R==76UGCS~2MD0euAm|S8q8uOS`$F2tApL$gQLB@ns)vkd=dBH zEbN5&pWjSx1S%v~A##SHrK7Qt)$~Rh;^T>Ps+0+W$;&Nz47M?vq0sV8-X=(&<^(` zL+isOv`9e&g(z#Ox{+1tw1JuS<7iqV$H+QC{!TvwP+vogB26xB$JA~)1{aKx%MDo^ z3{(^#=7lCQ5tQav7{-4P(SPt>&`cwDE+kg{)Me z-1StT^miGT>$G>MNs?Q*OcjMmGBmfg7m;^WCx*#D1w`6Oj-@dz>jk7*s^-b7a4a{% z)?-a?froay0!S>O!jwF+j9ClSWRDCn1hr(e-?#hlZz(-{gZO1#+@gA(_f;CK#Hu zjB~^h!Gu9xPs~QWHW2dZb&S{=ZlC7-G{+;<8$u6iy=Hn0kx_2NQPcEV%4lj(8=8e`K(wA1A@Ok< zi_uWjJx>`VyHlBlbTOr6wOBq!87VP`S9yWw1zug>cKf#F`(pb-7q+*u zzL}!7^>W`Lg_HIBtz`ed>1_X17w7wvx)PzUJN0#eJElbk=19x3OvFFcsaNVkeE()0 zyFy;di)6fHgrM`MxhF8VH;elwXC$;D1xLdqsiEXdfU^6raniN zYAIE!HNxdBKPgp9g(Fx?ub#MWV&a!3x*W+B<6RT$xBc4oi4I3f!Fb06-aW?o(6C{Q33bdALpNCDt2ky@ zhlaR0ZC;z3%-=PzFFzTRw!~QOrY*TGZ_G{Ra+7i4N*2%M`ajmcKeshXv1kq$9D@cv zf$!4iIzXXDnktz^A6F>}hxI9C`C1iUy`xgy5l?r8-${10zi(~n!N1*D*}1c_(dbO< zN_KW8cLmw|OC1|FbTsW2n_&?@iPu0%pVBv~cVG^)TCuT_YwQb1lA@z6G%u~U=BgB7 zuih<$?BE7JWh;|;`GKvy_iR_nO8J|<-zLkGJIXOP>Q}ekc>UjW6gxVK9g7tw?W5}$ z@y>LB#u3{^Kkb%pP07AKFB-Lr>)|Fis?YPgL!a4K zjI=hJ6-)VCZIF%S!$Ayl5e)NTgf+K#F;ec66p%`$^dT#ia=p@Mc7!~^ljK6wsM03x zx+-l#RZ7w^BVDY~iK$|$l%kEsL8>&&ODVO9;j`SjaY#sMeYxjq%{S}S4iPgwLKup% za$lMYWu~1-%Hh#rhlEFlLoq{0!?a@2tGF<(Q%pTH^da*zclCexf3>xB-e5&C3{!Tu z2p?HD`%5fB^jr$lFzy_E+2A&O*kaKgrjo`nr<>}cPqj~(0%NQ~$5dq9SjsUr#HDRw zJi>)(MK;{XQ-*2s9XH+0Z)t=F4)$1X+{+f(-ZgF4ddY_;8;4{uPu`=R7q`^J&A+gT zj@v}|3wRIi$0HEabBmZ`W7h zA`W3(+Yd?=WP=AUl93d?3g5;d%uqU}@|2F51~9k>?#27@0Z>3^ye)epd|-c(~v^+)!?NuUnZYnP--3bMWR8| zO00M3)~ZF^bk7Yp+;iw=jSAPd$Kvhn@mRaPG3@T`ZyR$n_?8>)IdtfrPwc5T_UviY zPc)ymA4wT<-J{A2Qst=-Wz+u5x$DPOyq>A>a<{JYp zr#I|U1})CGe0i7Ofy^HKdh7{D`et-*Rm16icm(gnTeSUmjO>@FBzgW4i%zF!$Wm2f z6z$Y#VHCMPtf+VhrHEMTgYb+NO5vUBthlw#if3B)Q#m*3Aw$=6qMj*ihcTIw$}?oF z0|m2qlrzIuwqYhX4;+lQ-rLf;zcS%!ltAC!NjSk|yR?~1tRGtU4ittZqJnMZ$=1I7 zEF6UI;Nwsvjch^=8q{!_0~1V(IfU68a6N8B+R;o%--zjREy&l2<^>&+(Wsy0Jg#J{ z4db2}A=O*7=*GF3LTpbZdWIrgBKM?`F+`YECXae3q_0do%ERcbUWmw}13t4lf8Aw7bn5GvL?@ly@tG9ZM8!@F1Da4X#TbBBajKCGolvT2JI@mhq~ z#TE|yT!Dm&q)8bSmScKm$l5qJEY5w|{;L{ieh%O}Y}kg=mhX4aP*$ulvVN^AO@l?( z53~?WLKe2+v-pV?ei2+>_kRMi`h+cVd)FJlQk~=}`Tr@jKOuw?ye)`z5t`chL@KTR z-yebd3?5beC-14ND7RzlU%N13140Jg4qw27#8ov)mn_cu=n;JqhBnN8VcptjG!j|2 zE)r2{T`d}waams{<1+Fmx$ z=xDU@lGWhYXgRv&WiMHo_Jzv8FXOd%90F*E>PunPztM~rM}+!MY}|{Eo%?S!m_r8U z@!j|u2w()N`n1j$qqnJ-rWHS1XD+-HEqMP=-^U@PpPGsAvb z2)x)_{y9S>{vxyWlRrmD-SNVC`QQF6;4yth%iVZ4gpeZ}UnQkaD$W%LSy%9eJT7!uAD&NycL_*I(x|eBaED zZPWC7T9!;yu|(Jxi{*C+D{d;+Ul-9ma^Wq_oi>2rKwB%!Ktj0{HlPHrX@xmB@Mo>C z00;iA6_(&2d5R*p03oTV4}}@H(A!Ek;A&Xc3Uf%p6Rog-Bz(CQmXL%W!6}&4`k5g( z31{F=I1i_2Pr#|!6SG4n&)j+b)B;@oWI1sgoP#-7)c1KfssDLI8HQmLx?vo;U!vgV zvoegr5L97EhsMZ7dE2?U#ck*2PtJ6ghex}|yH_=!d%U|mI#eAhkB&9qCCa_L!3SYR z|I>(B-NtSh)9r$TGxH0x=jOV{hDZN><&Y*|)khEFWuJSr{zY3)kj#h@6`E+FjSjl# zA?<#PVhrP$zyL!`VhY=^9n+Y>4kW>%3%jugbC}0oEMO5!*oXZ%fP=UOhxDHGQ5?fE zRC@jyrHC?!w)874E^SaWC$J9PYW?9%$b?_ z1)u&^&iPa4=4KX#&dyG&lT&AB&QBe;FC`miXQ$|HZM)Z{ZW(c`m}|F-#= zp_x0*Pt6^7=Vz!*Lknl8&YW?YW$CbaY-;-S?Njr|Wiy9)c6M&|?Cf1L=Gmz`bRf1I zSgEV+`0T=R@yBjkTs$||swMrx2h-=yoS8bmFyl0#F|@FF?!4CuH*2()W4FyM2j^yP zxAl}cac=&$vk@IUbMEB1R+FbLOf62$4~<#p&rD6v5YUWc=kBnk&z(Jc+uZEpozBVm zsbeij$c34y`RP-MRV`a?(sDDJ!^Nl19iNfSqRpxK`E$1~44qmIT#(HabNbxb^Yb$c z3$h7TXQc&0V{&?Se)`OetC8mXx!JkJnR)O0ncEhI7H++5YJO(uoLV?DdwgboK{gZI zsWY=D=Z2; z?!-AUb!KLMk)Jwuc1Fz1&!3w&7iJb0XXj2Xh{gG-g;VaiW4FvqFAklYKX==CHhq?# zUAS=4I6iZdoxg*h9a^|mogE@1KkiOVPtTm0nb+;G&QHxR&Q711S&$db-7#}!fuA`y zeOg_ZU6?&~W=5PncYNlII&p5E5O8@|%T1sU9iM9jZadExXV1>Ki}O=+3+JciXXd8w zRJYBYy=`&kIKORSX5OL6Gjx7tZhH2N(8=P$xidqf`Z}hsWqqyaYgN(HJBCJE_p#Q! z+`3m<_o}sUipFi`jzuwjYG(R$lUU+&&jHialNMm|F(k^0V8GpgKz?yeI;-jHXEyx$ M=PASL|84cZ0V;b)cmMzZ literal 0 HcmV?d00001 diff --git a/scripts/system/html/img/loader-red-countdown-ring.gif b/unpublishedScripts/marketplace/record/html/img/loader-red-countdown-ring.gif similarity index 100% rename from scripts/system/html/img/loader-red-countdown-ring.gif rename to unpublishedScripts/marketplace/record/html/img/loader-red-countdown-ring.gif From fd92afff8cedf0c9b0d0095671b867eeeb9b669e Mon Sep 17 00:00:00 2001 From: Zach Fox Date: Wed, 31 May 2017 11:00:43 -0700 Subject: [PATCH 154/357] Ensure old snaps don't accidentally get shared for_url --- scripts/system/html/js/SnapshotReview.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/system/html/js/SnapshotReview.js b/scripts/system/html/js/SnapshotReview.js index 2a4d535fee..5fd884fba7 100644 --- a/scripts/system/html/js/SnapshotReview.js +++ b/scripts/system/html/js/SnapshotReview.js @@ -301,7 +301,7 @@ function addImage(image_data, isLoggedIn, canShare, isGifLoading, isShowingPrevi if (!isGifLoading) { appendShareBar(id, isLoggedIn, canShare, isGif, blastButtonDisabled, hifiButtonDisabled, canBlast); } - if (!isGifLoading || (isShowingPreviousImages && !image_data.story_id)) { + if ((!isGifLoading && !isShowingPreviousImages) || (isShowingPreviousImages && !image_data.story_id)) { shareForUrl(id); } if (isShowingPreviousImages && isLoggedIn && image_data.story_id) { From 70fdb4a168372855c9f218711c7a43496252630a Mon Sep 17 00:00:00 2001 From: Zach Fox Date: Wed, 31 May 2017 12:00:44 -0700 Subject: [PATCH 155/357] Fix incorrectly sharing old snapshots --- scripts/system/snapshot.js | 57 +++++++++++++++++++++++++++++--------- 1 file changed, 44 insertions(+), 13 deletions(-) diff --git a/scripts/system/snapshot.js b/scripts/system/snapshot.js index 1c257cfed5..a1ea8e81af 100644 --- a/scripts/system/snapshot.js +++ b/scripts/system/snapshot.js @@ -36,6 +36,8 @@ var shareAfterLogin = false; var snapshotToShareAfterLogin = []; var METAVERSE_BASE = location.metaverseServerUrl; var isLoggedIn; +var numGifSnapshotUploadsPending = 0; +var numStillSnapshotUploadsPending = 0; // It's totally unnecessary to return to C++ to perform many of these requests, such as DELETEing an old story, // POSTING a new one, PUTTING a new audience, or GETTING story data. It's far more efficient to do all of that within JS @@ -139,6 +141,12 @@ function onMessage(message) { if (isLoggedIn) { print('Sharing snapshot with audience "for_url":', message.data); Window.shareSnapshot(message.data, Settings.getValue("previousSnapshotHref")); + var isGif = message.data.split('.').pop().toLowerCase() === "gif"; + if (isGif) { + numGifSnapshotUploadsPending++; + } else { + numStillSnapshotUploadsPending++; + } } else { shareAfterLogin = true; snapshotToShareAfterLogin.push({ path: message.data, href: Settings.getValue("previousSnapshotHref") }); @@ -307,22 +315,39 @@ function onButtonClicked() { function snapshotUploaded(isError, reply) { if (!isError) { - var replyJson = JSON.parse(reply); - var storyID = replyJson.user_story.id; + var replyJson = JSON.parse(reply), + storyID = replyJson.user_story.id, + imageURL = replyJson.user_story.details.image_url, + isGif = imageURL.split('.').pop().toLowerCase() === "gif", + ignoreGifSnapshotData = false, + ignoreStillSnapshotData = false; storyIDsToMaybeDelete.push(storyID); - var imageURL = replyJson.user_story.details.image_url; - var isGif = imageURL.split('.').pop().toLowerCase() === "gif"; - print('SUCCESS: Snapshot uploaded! Story with audience:for_url created! ID:', storyID); - tablet.emitScriptEvent(JSON.stringify({ - type: "snapshot", - action: "snapshotUploadComplete", - story_id: storyID, - image_url: imageURL, - })); if (isGif) { - Settings.setValue("previousAnimatedSnapStoryID", storyID); + numGifSnapshotUploadsPending--; + if (numGifSnapshotUploadsPending !== 0) { + ignoreGifSnapshotData = true; + } } else { - Settings.setValue("previousStillSnapStoryID", storyID); + numStillSnapshotUploadsPending--; + if (numStillSnapshotUploadsPending !== 0) { + ignoreStillSnapshotData = true; + } + } + if ((isGif && !ignoreGifSnapshotData) || (!isGif && !ignoreStillSnapshotData)) { + print('SUCCESS: Snapshot uploaded! Story with audience:for_url created! ID:', storyID); + tablet.emitScriptEvent(JSON.stringify({ + type: "snapshot", + action: "snapshotUploadComplete", + story_id: storyID, + image_url: imageURL, + })); + if (isGif) { + Settings.setValue("previousAnimatedSnapStoryID", storyID); + } else { + Settings.setValue("previousStillSnapStoryID", storyID); + } + } else { + print('Ignoring snapshotUploaded() callback for stale ' + (isGif ? 'GIF' : 'Still' ) + ' snapshot. Stale story ID:', storyID); } } else { print(reply); @@ -568,6 +593,12 @@ function onUsernameChanged() { snapshotToShareAfterLogin.forEach(function (element) { print('Uploading snapshot after login:', element.path); Window.shareSnapshot(element.path, element.href); + var isGif = element.path.split('.').pop().toLowerCase() === "gif"; + if (isGif) { + numGifSnapshotUploadsPending++; + } else { + numStillSnapshotUploadsPending++; + } }); } }); From 8bcaacbe4079669a9b05337bc944fe398e215720 Mon Sep 17 00:00:00 2001 From: Liv Date: Wed, 31 May 2017 15:46:35 -0700 Subject: [PATCH 156/357] Removing incomplete torus function --- libraries/render-utils/src/GeometryCache.cpp | 48 +------------------- 1 file changed, 1 insertion(+), 47 deletions(-) diff --git a/libraries/render-utils/src/GeometryCache.cpp b/libraries/render-utils/src/GeometryCache.cpp index e59046c14a..3fef5d15d1 100644 --- a/libraries/render-utils/src/GeometryCache.cpp +++ b/libraries/render-utils/src/GeometryCache.cpp @@ -365,52 +365,6 @@ void drawCircle(GeometryCache::ShapeData& shapeData, gpu::BufferPointer& vertexB shapeData.setupIndices(indexBuffer, solidIndices, wireIndices); } -template -void drawTorus(GeometryCache::ShapeData& shapeData, gpu::BufferPointer& vertexBuffer, gpu::BufferPointer& indexBuffer) { - using namespace geometry; - Index baseVertex = (Index)(vertexBuffer->getSize() / SHAPE_VERTEX_STRIDE); - VertexVector vertices; - IndexVector solidIndices, wireIndices; - - float MAJOR_RADIUS = 0.75f; - float MINOR_RADIUS = 0.25f; - - // Minor segments - for (uint32_t j = 0; j < sMinor; j++) { - // Major segments - for (uint32_t i = 0; i < sMajor; i++) { - float_t u = float_t(i) / float_t(sMajor) * M_PI * 2; - float_t v = float_t(j + u) / float_t(sMinor) * M_PI * 2; - - vec3 vertex((MAJOR_RADIUS + MINOR_RADIUS * glm::cos(v)) * glm::cos(u), - (MAJOR_RADIUS + MINOR_RADIUS * glm::cos(v)) * glm::sin(u), - MINOR_RADIUS * glm::sin(v)); - - vertices.push_back(vertex); - } - } - - for (uint32_t x = 1; x <= sMinor; x++) { - for (uint32_t y = 1; y <= sMajor; y++) { - uint32_t a = (sMajor) * x + y - 1; - uint32_t b = (sMajor) * (x - 1) + y - 1; - uint32_t c = (sMajor) * (x - 1) + y; - uint32_t d = (sMajor) * x + y; - - solidIndices.push_back(a); - solidIndices.push_back(b); - solidIndices.push_back(d); - solidIndices.push_back(b); - solidIndices.push_back(c); - solidIndices.push_back(d); - - } - } - - shapeData.setupVertices(vertexBuffer, vertices); - shapeData.setupIndices(indexBuffer, solidIndices, wireIndices); -} - // FIXME solids need per-face vertices, but smooth shaded // components do not. Find a way to support using draw elements // or draw arrays as appropriate @@ -469,7 +423,7 @@ void GeometryCache::buildShapes() { //Quad, //Circle, //Torus, - drawTorus<6, 4>(_shapes[Torus], _shapeVertices, _shapeIndices); + } gpu::Stream::FormatPointer& getSolidStreamFormat() { From cca0fa66004464713641aef86bd73a75ba4963bd Mon Sep 17 00:00:00 2001 From: Dante Ruiz Date: Thu, 1 Jun 2017 00:23:37 +0100 Subject: [PATCH 157/357] fixed some input recorder design issue --- .../controllers/src/controllers/Actions.h | 4 +- .../src/controllers/InputRecorder.cpp | 120 +++++++++++++----- .../src/controllers/InputRecorder.h | 20 +-- .../impl/endpoints/ActionEndpoint.cpp | 14 +- 4 files changed, 111 insertions(+), 47 deletions(-) diff --git a/libraries/controllers/src/controllers/Actions.h b/libraries/controllers/src/controllers/Actions.h index 5727d4906e..2cb500c42a 100644 --- a/libraries/controllers/src/controllers/Actions.h +++ b/libraries/controllers/src/controllers/Actions.h @@ -42,8 +42,6 @@ enum class Action { LEFT_HAND = NUM_COMBINED_AXES, RIGHT_HAND, - LEFT_ARM, - RIGHT_ARM, LEFT_FOOT, RIGHT_FOOT, HIPS, @@ -103,6 +101,8 @@ enum class Action { // Bisected aliases for TRANSLATE_CAMERA_Z BOOM_IN, BOOM_OUT, + LEFT_ARM, + RIGHT_ARM, NUM_ACTIONS, diff --git a/libraries/controllers/src/controllers/InputRecorder.cpp b/libraries/controllers/src/controllers/InputRecorder.cpp index 60ff592144..a5bd58196d 100644 --- a/libraries/controllers/src/controllers/InputRecorder.cpp +++ b/libraries/controllers/src/controllers/InputRecorder.cpp @@ -9,7 +9,6 @@ #include "InputRecorder.h" #include -#include #include #include #include @@ -19,9 +18,12 @@ #include #include #include +#include #include #include +#include +#include "UserInputMapper.h" QString SAVE_DIRECTORY = QStandardPaths::writableLocation(QStandardPaths::AppLocalDataLocation) + "/" + BuildInfo::MODIFIED_ORGANIZATION + "/" + BuildInfo::INTERFACE_NAME + "/hifi-input-recordings/"; QString FILE_PREFIX_NAME = "input-recording-"; @@ -108,6 +110,7 @@ namespace controller { QJsonDocument saveData(object); QByteArray compressedData = qCompress(saveData.toJson(QJsonDocument::Compact)); saveFile.write(compressedData); + saveFile.close(); } QJsonObject openFile(const QString& file, bool& status) { @@ -122,6 +125,7 @@ namespace controller { QJsonDocument jsonDoc = QJsonDocument::fromJson(compressedData); object = jsonDoc.object(); status = true; + openFile.close(); return object; } @@ -146,31 +150,43 @@ namespace controller { _actionStateList.clear(); } - void InputRecorder::saveRecording() { + QJsonObject InputRecorder::recordDataToJson() { QJsonObject data; data["frameCount"] = _framesRecorded; - + data["version"] = "1.0"; + QJsonArray actionArrayList; QJsonArray poseArrayList; for(const ActionStates actionState: _actionStateList) { QJsonArray actionArray; - for (const float value: actionState) { - actionArray.append(value); + for (const auto action: actionState) { + QJsonObject actionJson; + actionJson["name"] = action.first; + actionJson["value"] = action.second; + actionArray.append(actionJson); } actionArrayList.append(actionArray); } for (const PoseStates poseState: _poseStateList) { QJsonArray poseArray; - for (const Pose pose: poseState) { - poseArray.append(poseToJsonObject(pose)); + for (const auto pose: poseState) { + QJsonObject poseJson; + poseJson["name"] = pose.first; + poseJson["pose"] = poseToJsonObject(pose.second); + poseArray.append(poseJson); } poseArrayList.append(poseArray); } data["actionList"] = actionArrayList; data["poseList"] = poseArrayList; - exportToFile(data); + + return data; + } + + void InputRecorder::saveRecording() { + exportToFile(recordDataToJson()); } void InputRecorder::loadRecording(const QString& path) { @@ -181,8 +197,8 @@ namespace controller { resetFrame(); _poseStateList.clear(); _actionStateList.clear(); - QString filePath = path; - filePath.remove(0,8); + QUrl urlPath(path); + QString filePath = urlPath.toLocalFile(); QFileInfo info(filePath); QString extension = info.suffix(); if (extension != "gz") { @@ -190,8 +206,9 @@ namespace controller { return; } bool success = false; - QJsonObject data = openFile(info.absoluteFilePath(), success); - if (success) { + QJsonObject data = openFile(filePath, success); + auto keyValue = data.find("version"); + if (success && keyValue != data.end()) { _framesRecorded = data["frameCount"].toInt(); QJsonArray actionArrayList = data["actionList"].toArray(); QJsonArray poseArrayList = data["poseList"].toArray(); @@ -199,25 +216,71 @@ namespace controller { for (int actionIndex = 0; actionIndex < actionArrayList.size(); actionIndex++) { QJsonArray actionState = actionArrayList[actionIndex].toArray(); for (int index = 0; index < actionState.size(); index++) { - _currentFrameActions[index] = actionState[index].toDouble(); + QJsonObject actionObject = actionState[index].toObject();; + _currentFrameActions[actionObject["name"].toString()] = actionObject["value"].toDouble(); } _actionStateList.push_back(_currentFrameActions); - _currentFrameActions = ActionStates(toInt(Action::NUM_ACTIONS)); + _currentFrameActions.clear(); } for (int poseIndex = 0; poseIndex < poseArrayList.size(); poseIndex++) { QJsonArray poseState = poseArrayList[poseIndex].toArray(); for (int index = 0; index < poseState.size(); index++) { - _currentFramePoses[index] = jsonObjectToPose(poseState[index].toObject()); + QJsonObject poseObject = poseState[index].toObject(); + _currentFramePoses[poseObject["name"].toString()] = jsonObjectToPose(poseObject["pose"].toObject()); } _poseStateList.push_back(_currentFramePoses); - _currentFramePoses = PoseStates(toInt(Action::NUM_ACTIONS)); + _currentFramePoses.clear(); } + } else if (success) { + //convert recording to new reacording standard and rewrite file + auto userInputMapper = DependencyManager::get(); + _framesRecorded = data["frameCount"].toInt(); + QJsonArray actionArrayList = data["actionList"].toArray(); + QJsonArray poseArrayList = data["poseList"].toArray(); + + for (int actionIndex = 0; actionIndex < actionArrayList.size(); actionIndex++) { + QJsonArray actionState = actionArrayList[actionIndex].toArray(); + for (int index = 0; index < actionState.size(); index++) { + QString actionName = userInputMapper->getActionName(Action(index)); + _currentFrameActions[actionName] = actionState[index].toDouble(); + } + _actionStateList.push_back(_currentFrameActions); + _currentFrameActions.clear(); + } + + for (int poseIndex = 0; poseIndex < poseArrayList.size(); poseIndex++) { + QJsonArray poseState = poseArrayList[poseIndex].toArray(); + for (int index = 0; index < poseState.size(); index++) { + QString actionName = userInputMapper->getActionName(Action(index)); + _currentFramePoses[actionName] = jsonObjectToPose(poseState[index].toObject()); + } + _poseStateList.push_back(_currentFramePoses); + _currentFramePoses.clear(); + } + + convertFile(filePath); } _loading = false; } + void InputRecorder::convertFile(const QString& path) { + if (!QDir(SAVE_DIRECTORY).exists()) { + QDir().mkdir(SAVE_DIRECTORY); + } + + QJsonObject data = recordDataToJson(); + QFile saveFile (path); + if (!saveFile.open(QIODevice::WriteOnly | QIODevice::Truncate)) { + qWarning() << "could not open file: " << path; + return; + } + QJsonDocument saveData(data); + QByteArray compressedData = qCompress(saveData.toJson(QJsonDocument::Compact)); + saveFile.write(compressedData); + } + void InputRecorder::stopRecording() { _recording = false; _framesRecorded = (int)_actionStateList.size(); @@ -234,41 +297,36 @@ namespace controller { _playCount = 0; } - void InputRecorder::setActionState(controller::Action action, float value) { + void InputRecorder::setActionState(const QString& action, float value) { if (_recording) { - _currentFrameActions[toInt(action)] += value; + _currentFrameActions[action] += value; } } - void InputRecorder::setActionState(controller::Action action, const controller::Pose pose) { + void InputRecorder::setActionState(const QString& action, const controller::Pose& pose) { if (_recording) { - _currentFramePoses[toInt(action)] = pose; + _currentFramePoses[action] = pose; } } void InputRecorder::resetFrame() { if (_recording) { - for(auto& channel : _currentFramePoses) { - channel = Pose(); - } - - for(auto& channel : _currentFrameActions) { - channel = 0.0f; - } + _currentFramePoses.clear(); + _currentFrameActions.clear(); } } - float InputRecorder::getActionState(controller::Action action) { + float InputRecorder::getActionState(const QString& action) { if (_actionStateList.size() > 0 ) { - return _actionStateList[_playCount][toInt(action)]; + return _actionStateList[_playCount][action]; } return 0.0f; } - controller::Pose InputRecorder::getPoseState(controller::Action action) { + controller::Pose InputRecorder::getPoseState(const QString& action) { if (_poseStateList.size() > 0) { - return _poseStateList[_playCount][toInt(action)]; + return _poseStateList[_playCount][action]; } return Pose(); diff --git a/libraries/controllers/src/controllers/InputRecorder.h b/libraries/controllers/src/controllers/InputRecorder.h index d1cc9a32eb..a8dd12724a 100644 --- a/libraries/controllers/src/controllers/InputRecorder.h +++ b/libraries/controllers/src/controllers/InputRecorder.h @@ -12,8 +12,10 @@ #include #include #include +#include #include +#include #include "Pose.h" #include "Actions.h" @@ -21,8 +23,8 @@ namespace controller { class InputRecorder { public: - using PoseStates = std::vector; - using ActionStates = std::vector; + using PoseStates = std::map; + using ActionStates = std::map; InputRecorder(); ~InputRecorder(); @@ -31,6 +33,7 @@ namespace controller { void saveRecording(); void loadRecording(const QString& path); + void convertFile(const QString& path); void startRecording(); void startPlayback(); void stopPlayback(); @@ -40,20 +43,21 @@ namespace controller { void resetFrame(); bool isRecording() { return _recording; } bool isPlayingback() { return (_playback && !_loading); } - void setActionState(controller::Action action, float value); - void setActionState(controller::Action action, const controller::Pose pose); - float getActionState(controller::Action action); - controller::Pose getPoseState(controller::Action action); + void setActionState(const QString& action, float value); + void setActionState(const QString& action, const controller::Pose& pose); + float getActionState(const QString& action); + controller::Pose getPoseState(const QString& action); QString getSaveDirectory(); void frameTick(); private: + QJsonObject recordDataToJson(); bool _recording { false }; bool _playback { false }; bool _loading { false }; std::vector _poseStateList = std::vector(); std::vector _actionStateList = std::vector(); - PoseStates _currentFramePoses = PoseStates(toInt(Action::NUM_ACTIONS)); - ActionStates _currentFrameActions = ActionStates(toInt(Action::NUM_ACTIONS)); + PoseStates _currentFramePoses; + ActionStates _currentFrameActions; int _framesRecorded { 0 }; int _playCount { 0 }; diff --git a/libraries/controllers/src/controllers/impl/endpoints/ActionEndpoint.cpp b/libraries/controllers/src/controllers/impl/endpoints/ActionEndpoint.cpp index 6c14533f02..eb834a0bf2 100644 --- a/libraries/controllers/src/controllers/impl/endpoints/ActionEndpoint.cpp +++ b/libraries/controllers/src/controllers/impl/endpoints/ActionEndpoint.cpp @@ -17,31 +17,33 @@ using namespace controller; void ActionEndpoint::apply(float newValue, const Pointer& source) { InputRecorder* inputRecorder = InputRecorder::getInstance(); + auto userInputMapper = DependencyManager::get(); + QString actionName = userInputMapper->getActionName(Action(_input.getChannel())); if(inputRecorder->isPlayingback()) { - newValue = inputRecorder->getActionState(Action(_input.getChannel())); + newValue = inputRecorder->getActionState(actionName); } _currentValue += newValue; if (_input != Input::INVALID_INPUT) { - auto userInputMapper = DependencyManager::get(); userInputMapper->deltaActionState(Action(_input.getChannel()), newValue); } - inputRecorder->setActionState(Action(_input.getChannel()), newValue); + inputRecorder->setActionState(actionName, newValue); } void ActionEndpoint::apply(const Pose& value, const Pointer& source) { _currentPose = value; InputRecorder* inputRecorder = InputRecorder::getInstance(); - inputRecorder->setActionState(Action(_input.getChannel()), _currentPose); + auto userInputMapper = DependencyManager::get(); + QString actionName = userInputMapper->getActionName(Action(_input.getChannel())); + inputRecorder->setActionState(actionName, _currentPose); if (inputRecorder->isPlayingback()) { - _currentPose = inputRecorder->getPoseState(Action(_input.getChannel())); + _currentPose = inputRecorder->getPoseState(actionName); } if (!_currentPose.isValid()) { return; } if (_input != Input::INVALID_INPUT) { - auto userInputMapper = DependencyManager::get(); userInputMapper->setActionState(Action(_input.getChannel()), _currentPose); } } From 27d4edd2d0990a34ce7cf64272849a5545cfa838 Mon Sep 17 00:00:00 2001 From: Liv Date: Wed, 31 May 2017 16:25:11 -0700 Subject: [PATCH 158/357] Add circle and cone to entity shape list --- scripts/system/html/entityProperties.html | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/system/html/entityProperties.html b/scripts/system/html/entityProperties.html index a740306c92..bf65bdad32 100644 --- a/scripts/system/html/entityProperties.html +++ b/scripts/system/html/entityProperties.html @@ -53,6 +53,7 @@ +

    From 53701371abf335782d542aa418af626a411519d6 Mon Sep 17 00:00:00 2001 From: Zach Fox Date: Wed, 31 May 2017 16:43:21 -0700 Subject: [PATCH 159/357] Fix some bugs :( --- scripts/system/html/js/SnapshotReview.js | 23 +++++++++++++---------- scripts/system/snapshot.js | 10 +++++++--- 2 files changed, 20 insertions(+), 13 deletions(-) diff --git a/scripts/system/html/js/SnapshotReview.js b/scripts/system/html/js/SnapshotReview.js index 5fd884fba7..36f7124f93 100644 --- a/scripts/system/html/js/SnapshotReview.js +++ b/scripts/system/html/js/SnapshotReview.js @@ -21,6 +21,11 @@ var blastShareText = "Blast to my Connections", hifiAlreadySharedText = "Already Shared to Snaps Feed", facebookShareText = "Share to Facebook", twitterShareText = "Share to Twitter"; + +function fileExtensionMatches(filePath, extension) { + return filePath.split('.').pop().toLowerCase() === extension; +} + function showSetupInstructions() { var snapshotImagesDiv = document.getElementById("snapshot-images"); snapshotImagesDiv.className = "snapshotInstructions"; @@ -276,10 +281,10 @@ function addImage(image_data, isLoggedIn, canShare, isGifLoading, isShowingPrevi if (!image_data.localPath) { return; } - var id = "p" + (idCounter++), - imageContainer = document.createElement("DIV"), + var imageContainer = document.createElement("DIV"), img = document.createElement("IMG"), - isGif; + isGif = fileExtensionMatches(image_data.localPath, "gif"), + id = "p" + (isGif ? "1" : "0"); imageContainer.id = id; imageContainer.style.width = "95%"; imageContainer.style.height = "240px"; @@ -290,18 +295,17 @@ function addImage(image_data, isLoggedIn, canShare, isGifLoading, isShowingPrevi imageContainer.style.position = "relative"; img.id = id + "img"; img.src = image_data.localPath; - isGif = img.src.split('.').pop().toLowerCase() === "gif"; imageContainer.appendChild(img); document.getElementById("snapshot-images").appendChild(imageContainer); + paths.push(image_data.localPath); img.onload = function () { - paths.push(image_data.localPath); if (isGif) { imageContainer.innerHTML += 'GIF'; } if (!isGifLoading) { appendShareBar(id, isLoggedIn, canShare, isGif, blastButtonDisabled, hifiButtonDisabled, canBlast); } - if ((!isGifLoading && !isShowingPreviousImages) || (isShowingPreviousImages && !image_data.story_id)) { + if ((!isShowingPreviousImages && ((isGif && !isGifLoading) || !isGif)) || (isShowingPreviousImages && !image_data.story_id)) { shareForUrl(id); } if (isShowingPreviousImages && isLoggedIn && image_data.story_id) { @@ -638,9 +642,8 @@ window.onload = function () { // The last element of the message contents list contains a bunch of options, // including whether or not we can share stuff // The other elements of the list contain image paths. - - if (messageOptions.containsGif) { - if (messageOptions.processingGif) { + if (messageOptions.containsGif === true) { + if (messageOptions.processingGif === true) { imageCount = message.image_data.length + 1; // "+1" for the GIF that'll finish processing soon message.image_data.push({ localPath: messageOptions.loadingGifPath }); message.image_data.forEach(function (element, idx) { @@ -669,7 +672,7 @@ window.onload = function () { handleCaptureSetting(message.setting); break; case 'snapshotUploadComplete': - var isGif = message.image_url.split('.').pop().toLowerCase() === "gif"; + var isGif = fileExtensionMatches(message.image_url, "gif"); updateShareInfo(isGif ? "p1" : "p0", message.story_id); break; default: diff --git a/scripts/system/snapshot.js b/scripts/system/snapshot.js index a1ea8e81af..494ab245b1 100644 --- a/scripts/system/snapshot.js +++ b/scripts/system/snapshot.js @@ -58,6 +58,10 @@ function removeFromStoryIDsToMaybeDelete(story_id) { print('storyIDsToMaybeDelete[] now:', JSON.stringify(storyIDsToMaybeDelete)); } +function fileExtensionMatches(filePath, extension) { + return filePath.split('.').pop().toLowerCase() === extension; +} + function onMessage(message) { // Receives message from the html dialog via the qwebchannel EventBridge. This is complicated by the following: // 1. Although we can send POJOs, we cannot receive a toplevel object. (Arrays of POJOs are fine, though.) @@ -141,7 +145,7 @@ function onMessage(message) { if (isLoggedIn) { print('Sharing snapshot with audience "for_url":', message.data); Window.shareSnapshot(message.data, Settings.getValue("previousSnapshotHref")); - var isGif = message.data.split('.').pop().toLowerCase() === "gif"; + var isGif = fileExtensionMatches(message.data, "gif"); if (isGif) { numGifSnapshotUploadsPending++; } else { @@ -318,7 +322,7 @@ function snapshotUploaded(isError, reply) { var replyJson = JSON.parse(reply), storyID = replyJson.user_story.id, imageURL = replyJson.user_story.details.image_url, - isGif = imageURL.split('.').pop().toLowerCase() === "gif", + isGif = fileExtensionMatches(imageURL, "gif"), ignoreGifSnapshotData = false, ignoreStillSnapshotData = false; storyIDsToMaybeDelete.push(storyID); @@ -593,7 +597,7 @@ function onUsernameChanged() { snapshotToShareAfterLogin.forEach(function (element) { print('Uploading snapshot after login:', element.path); Window.shareSnapshot(element.path, element.href); - var isGif = element.path.split('.').pop().toLowerCase() === "gif"; + var isGif = fileExtensionMatches(element.path, "gif"); if (isGif) { numGifSnapshotUploadsPending++; } else { From 82d348a2efd87c39d321592ce7d66c184c5c4af1 Mon Sep 17 00:00:00 2001 From: samcake Date: Wed, 31 May 2017 16:46:20 -0700 Subject: [PATCH 160/357] Stencil rejection is working, and more cleaning --- libraries/gpu/src/gpu/StandardShaderLib.cpp | 13 +- libraries/gpu/src/gpu/StandardShaderLib.h | 4 + libraries/model/src/model/Skybox.cpp | 2 +- .../src/procedural/ProceduralSkybox.cpp | 2 +- .../src/DeferredLightingEffect.cpp | 6 +- .../render-utils/src/RenderDeferredTask.cpp | 145 +----------------- .../render-utils/src/RenderDeferredTask.h | 48 ------ .../render-utils/src/RenderPipelines.cpp | 2 +- .../render-utils/src/StencilMaskPass.cpp | 123 +++++++++++++++ libraries/render-utils/src/StencilMaskPass.h | 50 ++++++ .../render-utils/src/SurfaceGeometryPass.cpp | 4 +- .../render-utils/src/drawOpaqueStencil.slf | 16 -- 12 files changed, 198 insertions(+), 217 deletions(-) create mode 100644 libraries/render-utils/src/StencilMaskPass.cpp create mode 100644 libraries/render-utils/src/StencilMaskPass.h delete mode 100644 libraries/render-utils/src/drawOpaqueStencil.slf diff --git a/libraries/gpu/src/gpu/StandardShaderLib.cpp b/libraries/gpu/src/gpu/StandardShaderLib.cpp index 36ad548cfa..756070ff68 100755 --- a/libraries/gpu/src/gpu/StandardShaderLib.cpp +++ b/libraries/gpu/src/gpu/StandardShaderLib.cpp @@ -18,6 +18,9 @@ #include "DrawViewportQuadTransformTexcoord_vert.h" #include "DrawVertexPosition_vert.h" #include "DrawTransformVertexPosition_vert.h" + +const char DrawNada_frag[] = "void main(void) {}"; // DrawNada is really simple... + #include "DrawWhite_frag.h" #include "DrawTexture_frag.h" #include "DrawTextureOpaque_frag.h" @@ -31,6 +34,7 @@ ShaderPointer StandardShaderLib::_drawTexcoordRectTransformUnitQuadVS; ShaderPointer StandardShaderLib::_drawViewportQuadTransformTexcoordVS; ShaderPointer StandardShaderLib::_drawVertexPositionVS; ShaderPointer StandardShaderLib::_drawTransformVertexPositionVS; +ShaderPointer StandardShaderLib::_drawNadaPS; ShaderPointer StandardShaderLib::_drawWhitePS; ShaderPointer StandardShaderLib::_drawTexturePS; ShaderPointer StandardShaderLib::_drawTextureOpaquePS; @@ -105,6 +109,13 @@ ShaderPointer StandardShaderLib::getDrawTransformVertexPositionVS() { return _drawTransformVertexPositionVS; } +ShaderPointer StandardShaderLib::getDrawNadaPS() { + if (!_drawNadaPS) { + _drawNadaPS = gpu::Shader::createPixel(std::string(DrawNada_frag)); + } + return _drawNadaPS; +} + ShaderPointer StandardShaderLib::getDrawWhitePS() { if (!_drawWhitePS) { _drawWhitePS = gpu::Shader::createPixel(std::string(DrawWhite_frag)); @@ -126,8 +137,6 @@ ShaderPointer StandardShaderLib::getDrawTextureOpaquePS() { return _drawTextureOpaquePS; } - - ShaderPointer StandardShaderLib::getDrawColoredTexturePS() { if (!_drawColoredTexturePS) { _drawColoredTexturePS = gpu::Shader::createPixel(std::string(DrawColoredTexture_frag)); diff --git a/libraries/gpu/src/gpu/StandardShaderLib.h b/libraries/gpu/src/gpu/StandardShaderLib.h index 485e5bbbf9..a21d4dea9a 100755 --- a/libraries/gpu/src/gpu/StandardShaderLib.h +++ b/libraries/gpu/src/gpu/StandardShaderLib.h @@ -42,6 +42,9 @@ public: static ShaderPointer getDrawVertexPositionVS(); static ShaderPointer getDrawTransformVertexPositionVS(); + // PShader does nothing, no really nothing, but still needed for defining a program triggering rasterization + static ShaderPointer getDrawNadaPS(); + static ShaderPointer getDrawWhitePS(); static ShaderPointer getDrawTexturePS(); static ShaderPointer getDrawTextureOpaquePS(); @@ -61,6 +64,7 @@ protected: static ShaderPointer _drawVertexPositionVS; static ShaderPointer _drawTransformVertexPositionVS; + static ShaderPointer _drawNadaPS; static ShaderPointer _drawWhitePS; static ShaderPointer _drawTexturePS; static ShaderPointer _drawTextureOpaquePS; diff --git a/libraries/model/src/model/Skybox.cpp b/libraries/model/src/model/Skybox.cpp index 4901a3c61b..d327593573 100755 --- a/libraries/model/src/model/Skybox.cpp +++ b/libraries/model/src/model/Skybox.cpp @@ -97,7 +97,7 @@ void Skybox::render(gpu::Batch& batch, const ViewFrustum& viewFrustum, const Sky } auto skyState = std::make_shared(); - skyState->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)); + skyState->setStencilTest(true, 0xFF, gpu::State::StencilTest(1, 0xFF, gpu::EQUAL, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP)); thePipeline = gpu::Pipeline::create(skyShader, skyState); } diff --git a/libraries/procedural/src/procedural/ProceduralSkybox.cpp b/libraries/procedural/src/procedural/ProceduralSkybox.cpp index 0275a875ec..f5feb434fa 100644 --- a/libraries/procedural/src/procedural/ProceduralSkybox.cpp +++ b/libraries/procedural/src/procedural/ProceduralSkybox.cpp @@ -23,7 +23,7 @@ ProceduralSkybox::ProceduralSkybox() : model::Skybox() { _procedural._fragmentSource = skybox_frag; // Adjust the pipeline state for background using the stencil test _procedural.setDoesFade(false); - _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)); + _procedural._opaqueState->setStencilTest(true, 0xFF, gpu::State::StencilTest(1, 0xFF, gpu::EQUAL, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP)); } bool ProceduralSkybox::empty() { diff --git a/libraries/render-utils/src/DeferredLightingEffect.cpp b/libraries/render-utils/src/DeferredLightingEffect.cpp index 025274e66d..04255fbb87 100644 --- a/libraries/render-utils/src/DeferredLightingEffect.cpp +++ b/libraries/render-utils/src/DeferredLightingEffect.cpp @@ -242,7 +242,7 @@ static void loadLightProgram(const char* vertSource, const char* fragSource, boo state->setColorWriteMask(true, true, true, false); if (lightVolume) { - state->setStencilTest(true, 0x00, gpu::State::StencilTest(1, 0xFF, gpu::LESS_EQUAL, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP)); + state->setStencilTest(true, 0x00, gpu::State::StencilTest(0, 0xFF, gpu::EQUAL, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP)); state->setCullMode(gpu::State::CULL_BACK); // state->setCullMode(gpu::State::CULL_FRONT); @@ -255,7 +255,7 @@ static void loadLightProgram(const char* vertSource, const char* fragSource, boo } else { // Stencil test all the light passes for objects pixels only, not the background - state->setStencilTest(true, 0x00, gpu::State::StencilTest(0, 0x01, gpu::NOT_EQUAL, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP)); + state->setStencilTest(true, 0x00, gpu::State::StencilTest(0, 0xFF, gpu::EQUAL, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP)); state->setCullMode(gpu::State::CULL_BACK); // additive blending @@ -477,7 +477,7 @@ void PrepareDeferred::run(const RenderContextPointer& renderContext, const Input gpu::Framebuffer::BUFFER_COLOR0 | gpu::Framebuffer::BUFFER_COLOR1 | gpu::Framebuffer::BUFFER_COLOR2 | gpu::Framebuffer::BUFFER_COLOR3 | gpu::Framebuffer::BUFFER_DEPTH | gpu::Framebuffer::BUFFER_STENCIL, - vec4(vec3(0), 0), 1.0, 0, true); + vec4(vec3(0), 0), 1.0, 1, true); // For the rest of the rendering, bind the lighting model batch.setUniformBuffer(LIGHTING_MODEL_BUFFER_SLOT, lightingModel->getParametersBuffer()); diff --git a/libraries/render-utils/src/RenderDeferredTask.cpp b/libraries/render-utils/src/RenderDeferredTask.cpp index 0fbe35025d..89b4b72944 100644 --- a/libraries/render-utils/src/RenderDeferredTask.cpp +++ b/libraries/render-utils/src/RenderDeferredTask.cpp @@ -27,6 +27,7 @@ #include #include "LightingModel.h" +#include "StencilMaskPass.h" #include "DebugDeferredBuffer.h" #include "DeferredFramebuffer.h" #include "DeferredLightingEffect.h" @@ -43,8 +44,6 @@ #include -#include "drawOpaqueStencil_frag.h" - using namespace render; extern void initOverlay3DPipelines(render::ShapePlumber& plumber); @@ -93,7 +92,7 @@ void RenderDeferredTask::build(JobModel& task, const render::Varying& input, ren task.addJob("DrawOpaqueDeferred", opaqueInputs, shapePlumber); // Once opaque is all rendered create stencil background - task.addJob("DrawOpaqueStencil", deferredFramebuffer); + task.addJob("DrawOpaqueStencil", primaryFramebuffer); task.addJob("OpaqueRangeTimer", opaqueRangeTimer); @@ -390,146 +389,6 @@ void DrawOverlay3D::run(const RenderContextPointer& renderContext, const Inputs& } } - -gpu::PipelinePointer DrawStencilDeferred::getOpaquePipeline() { - if (!_opaquePipeline) { - const gpu::int8 STENCIL_OPAQUE = 1; - auto vs = gpu::StandardShaderLib::getDrawUnitQuadTexcoordVS(); - auto ps = gpu::Shader::createPixel(std::string(drawOpaqueStencil_frag)); - auto program = gpu::Shader::createProgram(vs, ps); - gpu::Shader::makeProgram((*program)); - - auto state = std::make_shared(); - state->setDepthTest(true, false, gpu::LESS_EQUAL); - state->setStencilTest(true, 0xFF, gpu::State::StencilTest(STENCIL_OPAQUE, 0xFF, gpu::ALWAYS, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP)); - state->setColorWriteMask(0); - - _opaquePipeline = gpu::Pipeline::create(program, state); - } - return _opaquePipeline; -} - -void DrawStencilDeferred::run(const RenderContextPointer& renderContext, const DeferredFramebufferPointer& deferredFramebuffer) { - // return; - assert(renderContext->args); - assert(renderContext->args->hasViewFrustum()); - - // from the touched pixel generate the stencil buffer - RenderArgs* args = renderContext->args; - doInBatch(args->_context, [&](gpu::Batch& batch) { - args->_batch = &batch; - - auto deferredFboColorDepthStencil = deferredFramebuffer->getDeferredFramebufferDepthColor(); - - - batch.enableStereo(false); - - batch.setFramebuffer(deferredFboColorDepthStencil); - batch.setViewportTransform(args->_viewport); - batch.setStateScissorRect(args->_viewport); - - batch.setPipeline(getOpaquePipeline()); - - batch.draw(gpu::TRIANGLE_STRIP, 4); - batch.setResourceTexture(0, nullptr); - - }); - args->_batch = nullptr; -} - -void DrawBackgroundDeferred::run(const RenderContextPointer& renderContext, const Inputs& inputs) { - assert(renderContext->args); - assert(renderContext->args->hasViewFrustum()); - - const auto& inItems = inputs.get0(); - const auto& lightingModel = inputs.get1(); - if (!lightingModel->isBackgroundEnabled()) { - return; - } - - RenderArgs* args = renderContext->args; - doInBatch(args->_context, [&](gpu::Batch& batch) { - args->_batch = &batch; - // _gpuTimer.begin(batch); - - batch.enableSkybox(true); - - batch.setViewportTransform(args->_viewport); - batch.setStateScissorRect(args->_viewport); - - glm::mat4 projMat; - Transform viewMat; - args->getViewFrustum().evalProjectionMatrix(projMat); - args->getViewFrustum().evalViewTransform(viewMat); - - batch.setProjectionTransform(projMat); - batch.setViewTransform(viewMat); - - renderItems(renderContext, inItems); - // _gpuTimer.end(batch); - }); - args->_batch = nullptr; - - // std::static_pointer_cast(renderContext->jobConfig)->gpuTime = _gpuTimer.getAverage(); -} - -gpu::PipelinePointer PrepareStencil::getDrawStencilPipeline() { - if (!_drawStencilPipeline) { - auto vs = gpu::StandardShaderLib::getDrawVertexPositionVS(); - auto ps = gpu::StandardShaderLib::getDrawWhitePS(); - auto program = gpu::Shader::createProgram(vs, ps); - gpu::Shader::makeProgram((*program)); - - auto state = std::make_shared(); - state->setStencilTest(true, 0xFF, gpu::State::StencilTest(STENCIL_MASK, 0xFF, gpu::ALWAYS, gpu::State::STENCIL_OP_REPLACE, gpu::State::STENCIL_OP_REPLACE, gpu::State::STENCIL_OP_REPLACE)); - // state->setColorWriteMask(0); - - _drawStencilPipeline = gpu::Pipeline::create(program, state); - } - return _drawStencilPipeline; -} - -model::MeshPointer PrepareStencil::getMesh() { - if (!_mesh) { - - std::vector vertices { - { -1.0f, -1.0f, 0.0f }, { -1.0f, 0.0f, 0.0f }, - { -1.0f, 1.0f, 0.0f }, { 0.0f, 1.0f, 0.0f }, - { 1.0f, 1.0f, 0.0f }, { 1.0f, 0.0f, 0.0f }, - { 1.0f, -1.0f, 0.0f }, { 0.0f, -1.0f, 0.0f } }; - - std::vector indices { 0, 7, 1, 1, 3, 2, 3, 5, 4, 5, 7, 6 }; - _mesh = model::Mesh::createIndexedTriangles_P3F((uint32_t) vertices.size(), (uint32_t) indices.size(), vertices.data(), indices.data()); - } - return _mesh; -} - - -void PrepareStencil::run(const RenderContextPointer& renderContext, const gpu::FramebufferPointer& srcFramebuffer) { - assert(renderContext->args); - assert(renderContext->args->_context); - - RenderArgs* args = renderContext->args; - doInBatch(args->_context, [&](gpu::Batch& batch) { - args->_batch = &batch; - batch.enableStereo(false); - - batch.setViewportTransform(args->_viewport); - - batch.setPipeline(getDrawStencilPipeline()); - - auto mesh = getMesh(); - batch.setIndexBuffer(mesh->getIndexBuffer()); - batch.setInputFormat((mesh->getVertexFormat())); - batch.setInputStream(0, mesh->getVertexStream()); - - // Draw - auto part = mesh->getPartBuffer().get(0); - batch.drawIndexed(gpu::TRIANGLES, part._numIndices, part._startIndex); - }); - args->_batch = nullptr; -} - void Blit::run(const RenderContextPointer& renderContext, const gpu::FramebufferPointer& srcFramebuffer) { assert(renderContext->args); assert(renderContext->args->_context); diff --git a/libraries/render-utils/src/RenderDeferredTask.h b/libraries/render-utils/src/RenderDeferredTask.h index c978a5f9a3..fd7c5eb23b 100644 --- a/libraries/render-utils/src/RenderDeferredTask.h +++ b/libraries/render-utils/src/RenderDeferredTask.h @@ -13,7 +13,6 @@ #define hifi_RenderDeferredTask_h #include -#include #include #include "LightingModel.h" @@ -121,35 +120,6 @@ protected: bool _stateSort; }; -class DeferredFramebuffer; -class DrawStencilDeferred { -public: - using JobModel = render::Job::ModelI>; - - void run(const render::RenderContextPointer& renderContext, const std::shared_ptr& deferredFramebuffer); - -protected: - gpu::PipelinePointer _opaquePipeline; - - gpu::PipelinePointer getOpaquePipeline(); -}; - -using DrawBackgroundDeferredConfig = render::GPUJobConfig; - -class DrawBackgroundDeferred { -public: - using Inputs = render::VaryingSet2 ; - - using Config = DrawBackgroundDeferredConfig; - using JobModel = render::Job::ModelI; - - void configure(const Config& config) {} - void run(const render::RenderContextPointer& renderContext, const Inputs& inputs); - -protected: - gpu::RangeTimerPointer _gpuTimer; -}; - class DrawOverlay3DConfig : public render::Job::Config { Q_OBJECT Q_PROPERTY(int numDrawn READ getNumDrawn NOTIFY numDrawnChanged) @@ -186,24 +156,6 @@ protected: bool _opaquePass{ true }; }; -class PrepareStencil { -public: - using JobModel = render::Job::ModelI; - - void run(const render::RenderContextPointer& renderContext, const gpu::FramebufferPointer& dstFramebuffer); - - static const gpu::int8 STENCIL_MASK = 64; - -private: - gpu::PipelinePointer _drawStencilPipeline; - gpu::PipelinePointer getDrawStencilPipeline(); - - model::MeshPointer _mesh; - model::MeshPointer getMesh(); - -}; - - class Blit { public: using JobModel = render::Job::ModelI; diff --git a/libraries/render-utils/src/RenderPipelines.cpp b/libraries/render-utils/src/RenderPipelines.cpp index c83e5c5f34..9ca9187df8 100644 --- a/libraries/render-utils/src/RenderPipelines.cpp +++ b/libraries/render-utils/src/RenderPipelines.cpp @@ -330,7 +330,7 @@ void addPlumberPipeline(ShapePlumber& plumber, bool isWireframed = (i & 4); auto state = std::make_shared(); - state->setStencilTest(true, 0xFF, gpu::State::StencilTest(0, 0xFF, gpu::GREATER, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_INCR_SAT)); + state->setStencilTest(true, 0xFF, gpu::State::StencilTest(2, 0xFF, gpu::NOT_EQUAL, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_ZERO)); // Depth test depends on transparency state->setDepthTest(true, !key.isTranslucent(), gpu::LESS_EQUAL); diff --git a/libraries/render-utils/src/StencilMaskPass.cpp b/libraries/render-utils/src/StencilMaskPass.cpp new file mode 100644 index 0000000000..612324a79b --- /dev/null +++ b/libraries/render-utils/src/StencilMaskPass.cpp @@ -0,0 +1,123 @@ +// +// StencilMaskPass.cpp +// render-utils/src/ +// +// Created by Sam Gateau on 5/31/17. +// Copyright 2016 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +#include "StencilMaskPass.h" + +#include +#include +#include + + +#include + + +using namespace render; + +gpu::PipelinePointer DrawStencilDeferred::getOpaquePipeline() { + if (!_opaquePipeline) { + const gpu::int8 STENCIL_OPAQUE = 0; + auto vs = gpu::StandardShaderLib::getDrawUnitQuadTexcoordVS(); + auto ps = gpu::StandardShaderLib::getDrawNadaPS(); + auto program = gpu::Shader::createProgram(vs, ps); + gpu::Shader::makeProgram((*program)); + + auto state = std::make_shared(); + state->setDepthTest(true, false, gpu::LESS_EQUAL); + state->setStencilTest(true, 0xFF, gpu::State::StencilTest(STENCIL_OPAQUE, 0xFF, gpu::ALWAYS, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP)); + state->setColorWriteMask(0); + + _opaquePipeline = gpu::Pipeline::create(program, state); + } + return _opaquePipeline; +} + +void DrawStencilDeferred::run(const RenderContextPointer& renderContext, const gpu::FramebufferPointer& deferredFramebuffer) { + return; + assert(renderContext->args); + assert(renderContext->args->hasViewFrustum()); + + // from the touched pixel generate the stencil buffer + RenderArgs* args = renderContext->args; + doInBatch(args->_context, [&](gpu::Batch& batch) { + args->_batch = &batch; + + batch.enableStereo(false); + + // batch.setFramebuffer(deferredFramebuffer); + batch.setViewportTransform(args->_viewport); + batch.setStateScissorRect(args->_viewport); + + batch.setPipeline(getOpaquePipeline()); + + batch.draw(gpu::TRIANGLE_STRIP, 4); + batch.setResourceTexture(0, nullptr); + + }); + args->_batch = nullptr; +} + +gpu::PipelinePointer PrepareStencil::getDrawStencilPipeline() { + if (!_drawStencilPipeline) { + auto vs = gpu::StandardShaderLib::getDrawVertexPositionVS(); + auto ps = gpu::StandardShaderLib::getDrawWhitePS(); + auto program = gpu::Shader::createProgram(vs, ps); + gpu::Shader::makeProgram((*program)); + + auto state = std::make_shared(); + state->setStencilTest(true, 0xFF, gpu::State::StencilTest(2, 0xFF, gpu::ALWAYS, gpu::State::STENCIL_OP_REPLACE, gpu::State::STENCIL_OP_REPLACE, gpu::State::STENCIL_OP_REPLACE)); + // state->setColorWriteMask(0); + + _drawStencilPipeline = gpu::Pipeline::create(program, state); + } + return _drawStencilPipeline; +} + +model::MeshPointer PrepareStencil::getMesh() { + if (!_mesh) { + + std::vector vertices { + { -1.0f, -1.0f, 0.0f }, { -1.0f, 0.0f, 0.0f }, + { -1.0f, 1.0f, 0.0f }, { 0.0f, 1.0f, 0.0f }, + { 1.0f, 1.0f, 0.0f }, { 1.0f, 0.0f, 0.0f }, + { 1.0f, -1.0f, 0.0f }, { 0.0f, -1.0f, 0.0f } }; + + std::vector indices { 0, 7, 1, 1, 3, 2, 3, 5, 4, 5, 7, 6 }; + _mesh = model::Mesh::createIndexedTriangles_P3F((uint32_t) vertices.size(), (uint32_t) indices.size(), vertices.data(), indices.data()); + } + return _mesh; +} + + +void PrepareStencil::run(const RenderContextPointer& renderContext, const gpu::FramebufferPointer& srcFramebuffer) { + assert(renderContext->args); + assert(renderContext->args->_context); + + RenderArgs* args = renderContext->args; + doInBatch(args->_context, [&](gpu::Batch& batch) { + args->_batch = &batch; + batch.enableStereo(false); + + batch.setViewportTransform(args->_viewport); + + batch.setPipeline(getDrawStencilPipeline()); + + auto mesh = getMesh(); + batch.setIndexBuffer(mesh->getIndexBuffer()); + batch.setInputFormat((mesh->getVertexFormat())); + batch.setInputStream(0, mesh->getVertexStream()); + + // Draw + auto part = mesh->getPartBuffer().get(0); + batch.drawIndexed(gpu::TRIANGLES, part._numIndices, part._startIndex); + }); + args->_batch = nullptr; +} + diff --git a/libraries/render-utils/src/StencilMaskPass.h b/libraries/render-utils/src/StencilMaskPass.h new file mode 100644 index 0000000000..bf21602462 --- /dev/null +++ b/libraries/render-utils/src/StencilMaskPass.h @@ -0,0 +1,50 @@ +// +// StencilMaskPass.h +// render-utils/src/ +// +// Created by Sam Gateau on 5/31/17. +// Copyright 20154 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// +#pragma once +#ifndef hifi_StencilMaskPass_h +#define hifi_StencilMaskPass_h + +#include +#include +#include + + +class DrawStencilDeferred { +public: + using JobModel = render::Job::ModelI; + + void run(const render::RenderContextPointer& renderContext, const gpu::FramebufferPointer& deferredFramebuffer); + +protected: + gpu::PipelinePointer _opaquePipeline; + + gpu::PipelinePointer getOpaquePipeline(); +}; + +class PrepareStencil { +public: + using JobModel = render::Job::ModelI; + + void run(const render::RenderContextPointer& renderContext, const gpu::FramebufferPointer& dstFramebuffer); + + static const gpu::int8 STENCIL_MASK = 64; + +private: + gpu::PipelinePointer _drawStencilPipeline; + gpu::PipelinePointer getDrawStencilPipeline(); + + model::MeshPointer _mesh; + model::MeshPointer getMesh(); + +}; + + +#endif // hifi_StencilMaskPass_h diff --git a/libraries/render-utils/src/SurfaceGeometryPass.cpp b/libraries/render-utils/src/SurfaceGeometryPass.cpp index ef50960b7d..746c25daa5 100644 --- a/libraries/render-utils/src/SurfaceGeometryPass.cpp +++ b/libraries/render-utils/src/SurfaceGeometryPass.cpp @@ -224,7 +224,7 @@ const gpu::PipelinePointer& LinearDepthPass::getLinearDepthPipeline() { gpu::StatePointer state = gpu::StatePointer(new gpu::State()); // Stencil test the curvature pass for objects pixels only, not the background - state->setStencilTest(true, 0xFF, gpu::State::StencilTest(0, 0xFF, gpu::NOT_EQUAL, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP)); + state->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)); state->setColorWriteMask(true, false, false, false); @@ -554,7 +554,7 @@ const gpu::PipelinePointer& SurfaceGeometryPass::getCurvaturePipeline() { #ifdef USE_STENCIL_TEST // Stencil test the curvature pass for objects pixels only, not the background - state->setStencilTest(true, 0xFF, gpu::State::StencilTest(0, 0xFF, gpu::NOT_EQUAL, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP)); + state->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)); #endif // Good to go add the brand new pipeline _curvaturePipeline = gpu::Pipeline::create(program, state); diff --git a/libraries/render-utils/src/drawOpaqueStencil.slf b/libraries/render-utils/src/drawOpaqueStencil.slf deleted file mode 100644 index 43e9c5c27a..0000000000 --- a/libraries/render-utils/src/drawOpaqueStencil.slf +++ /dev/null @@ -1,16 +0,0 @@ -<@include gpu/Config.slh@> -<$VERSION_HEADER$> -// Generated on <$_SCRIBE_DATE$> -// -// drawOpaqueStencil.frag -// fragment shader -// -// Created by Sam Gateau on 9/29/15. -// Copyright 2015 High Fidelity, Inc. -// -// Distributed under the Apache License, Version 2.0. -// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html -// - -void main(void) { -} From d3ca34956d23b65a60f1ff9bb460cec5de09af4d Mon Sep 17 00:00:00 2001 From: "Anthony J. Thibault" Date: Wed, 31 May 2017 16:58:17 -0700 Subject: [PATCH 161/357] Fix spline interpolation the wrong way when bending backward. --- .../animation/src/AnimInverseKinematics.cpp | 118 +++++++----------- .../animation/src/AnimInverseKinematics.h | 2 +- 2 files changed, 46 insertions(+), 74 deletions(-) diff --git a/libraries/animation/src/AnimInverseKinematics.cpp b/libraries/animation/src/AnimInverseKinematics.cpp index 31f7bc63d2..911d966057 100644 --- a/libraries/animation/src/AnimInverseKinematics.cpp +++ b/libraries/animation/src/AnimInverseKinematics.cpp @@ -499,6 +499,13 @@ void AnimInverseKinematics::solveTargetWithSpline(const AnimContext& context, co } } + // This prevents the rotation interpolation from rotating the wrong physical way (but correct mathematical way) + // when the head is arched backwards very far. + glm::quat halfRot = glm::normalize(glm::lerp(basePose.rot(), tipPose.rot(), 0.5f)); + if (glm::dot(halfRot * Vectors::UNIT_Z, basePose.rot() * Vectors::UNIT_Z) < 0.0f) { + tipPose.rot() = -tipPose.rot(); + } + if (splineJointInfoVec && splineJointInfoVec->size() > 0) { const int baseParentIndex = _skeleton->getParentIndex(baseIndex); AnimPose parentAbsPose = (baseParentIndex >= 0) ? absolutePoses[baseParentIndex] : AnimPose(); @@ -662,7 +669,6 @@ const AnimPoseVec& AnimInverseKinematics::overlay(const AnimVariantMap& animVars if (context.getEnableDebugDrawIKConstraints()) { debugDrawConstraints(context); } - debugDrawSpineSpline(context, targets); } return _relativePoses; @@ -1447,79 +1453,45 @@ void AnimInverseKinematics::computeSplineJointInfosForIKTarget(const AnimContext _splineJointInfoMap[target.getIndex()] = splineJointInfoVec; } -void AnimInverseKinematics::debugDrawSpineSpline(const AnimContext& context, const std::vector& targets) { +void AnimInverseKinematics::debugDrawSpineSplines(const AnimContext& context, const std::vector& targets) const { - /* - // find head target - int headTargetIndex = -1; - for (int i = 0; i < (int)targets.size(); i++) { - if (targets[i].getIndex() == _headIndex) { - headTargetIndex = i; - break; + for (auto& target : targets) { + + if (target.getType() != IKTarget::Type::Spline) { + continue; + } + + const int baseIndex = _hipsIndex; + + // build spline + AnimPose tipPose = AnimPose(glm::vec3(1.0f), target.getRotation(), target.getTranslation()); + AnimPose basePose = _skeleton->getAbsolutePose(baseIndex, _relativePoses); + + const float BASE_GAIN = 0.5f; + const float TIP_GAIN = 1.0f; + float d = glm::length(basePose.trans() - tipPose.trans()); + glm::vec3 p0 = basePose.trans(); + glm::vec3 m0 = BASE_GAIN * d * (basePose.rot() * Vectors::UNIT_Y); + glm::vec3 p1 = tipPose.trans(); + glm::vec3 m1 = TIP_GAIN * d * (tipPose.rot() * Vectors::UNIT_Y); + + CubicHermiteSplineFunctorWithArcLength spline(p0, m0, p1, m1); + float totalArcLength = spline.arcLength(1.0f); + + const glm::vec4 RED(1.0f, 0.0f, 0.0f, 1.0f); + const glm::vec4 WHITE(1.0f, 1.0f, 1.0f, 1.0f); + + // draw red and white stripped spline, parameterized by arc length. + // i.e. each stripe should be the same length. + AnimPose geomToWorldPose = AnimPose(context.getRigToWorldMatrix() * context.getGeometryToRigMatrix()); + int NUM_SUBDIVISIONS = 20; + const float dArcLength = totalArcLength / NUM_SUBDIVISIONS; + float arcLength = 0.0f; + for (int i = 0; i < NUM_SUBDIVISIONS; i++) { + float prevT = spline.arcLengthInverse(arcLength); + float nextT = spline.arcLengthInverse(arcLength + dArcLength); + DebugDraw::getInstance().drawRay(geomToWorldPose.xformPoint(spline(prevT)), geomToWorldPose.xformPoint(spline(nextT)), (i % 2) == 0 ? RED : WHITE); + arcLength += dArcLength; } } - - // find or create splineJointInfo for the head target - const std::vector* splineJointInfoVec = nullptr; - if (headTargetIndex != -1) { - auto iter = _splineJointInfoMap.find(headTargetIndex); - if (iter != _splineJointInfoMap.end()) { - splineJointInfoVec = &(iter->second); - } else { - computeSplineJointInfosForIKTarget(context, headTargetIndex, targets[headTargetIndex]); - auto iter = _splineJointInfoMap.find(headTargetIndex); - if (iter != _splineJointInfoMap.end()) { - splineJointInfoVec = &(iter->second); - } - } - } - - AnimPose geomToWorldPose = AnimPose(context.getRigToWorldMatrix() * context.getGeometryToRigMatrix()); - - AnimPose hipsPose = geomToWorldPose * _skeleton->getAbsolutePose(_hipsIndex, _relativePoses); - AnimPose headPose = geomToWorldPose * _skeleton->getAbsolutePose(_headIndex, _relativePoses); - - float d = glm::length(hipsPose.trans() - headPose.trans()); - - const float BACK_GAIN = 0.5f; - const float NECK_GAIN = 1.0f; - glm::vec3 p0 = hipsPose.trans(); - glm::vec3 m0 = BACK_GAIN * d * (hipsPose.rot() * Vectors::UNIT_Y); - glm::vec3 p1 = headPose.trans(); - glm::vec3 m1 = NECK_GAIN * d * (headPose.rot() * Vectors::UNIT_Y); - - CubicHermiteSplineFunctorWithArcLength hermiteFunc(p0, m0, p1, m1); - - const glm::vec4 RED(1.0f, 0.0f, 0.0f, 1.0f); - const glm::vec4 WHITE(1.0f, 1.0f, 1.0f, 1.0f); - const glm::vec4 BLUE(0.0f, 0.0f, 1.0f, 1.0f); - const glm::vec4 GREEN(0.0f, 1.0f, 0.0f, 1.0f); - - // draw red and white stripped spline, parameterized by arc length. - // i.e. each stripe should be the same length. - int NUM_SUBDIVISIONS = 20; - float totalArcLength = hermiteFunc.arcLength(1.0f); - const float dArcLength = totalArcLength / NUM_SUBDIVISIONS; - float arcLength = 0.0f; - for (int i = 0; i < NUM_SUBDIVISIONS; i++) { - float prevT = hermiteFunc.arcLengthInverse(arcLength); - float nextT = hermiteFunc.arcLengthInverse(arcLength + dArcLength); - DebugDraw::getInstance().drawRay(hermiteFunc(prevT), hermiteFunc(nextT), (i % 2) == 0 ? RED : WHITE); - arcLength += dArcLength; - } - - AnimPose defaultHipsPose = _skeleton->getAbsoluteDefaultPose(_hipsIndex); - AnimPose defaultHeadPose = _skeleton->getAbsoluteDefaultPose(_headIndex); - float hipsToHeadHeight = defaultHeadPose.trans().y - defaultHipsPose.trans().y; - - if (splineJointInfoVec) { - for (auto& splineJointInfo : *splineJointInfoVec) { - float t = hermiteFunc.arcLengthInverse(splineJointInfo.ratio * totalArcLength); - glm::vec3 trans = hermiteFunc(t); - glm::quat rot = glm::normalize(glm::lerp(hipsPose.rot(), headPose.rot(), t)); - AnimPose pose = AnimPose(glm::vec3(1.0f), rot, trans) * splineJointInfo.offsetPose; - DebugDraw::getInstance().addMarker(QString("splineJoint%1").arg(splineJointInfo.jointIndex), pose.rot(), pose.trans(), BLUE); - } - } - */ } diff --git a/libraries/animation/src/AnimInverseKinematics.h b/libraries/animation/src/AnimInverseKinematics.h index 42e84530cc..459b37d0b6 100644 --- a/libraries/animation/src/AnimInverseKinematics.h +++ b/libraries/animation/src/AnimInverseKinematics.h @@ -73,7 +73,7 @@ protected: void debugDrawIKChain(std::map& debugJointMap, const AnimContext& context) const; void debugDrawRelativePoses(const AnimContext& context) const; void debugDrawConstraints(const AnimContext& context) const; - void debugDrawSpineSpline(const AnimContext& context, const std::vector& targets); + void debugDrawSpineSplines(const AnimContext& context, const std::vector& targets) const; void computeSplineJointInfosForIKTarget(const AnimContext& context, const IKTarget& target); void initRelativePosesFromSolutionSource(SolutionSource solutionSource, const AnimPoseVec& underPose); void blendToPoses(const AnimPoseVec& targetPoses, const AnimPoseVec& underPose, float blendFactor); From 1e1dd3a633aca6aa4657832c8eafdbcea9d27865 Mon Sep 17 00:00:00 2001 From: howard-stearns Date: Wed, 31 May 2017 17:10:37 -0700 Subject: [PATCH 162/357] checkpoint with working detector --- interface/src/avatar/MyAvatar.cpp | 71 ++++++++++--------- libraries/physics/src/CharacterController.cpp | 18 +++-- libraries/physics/src/CharacterController.h | 2 + 3 files changed, 53 insertions(+), 38 deletions(-) diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index e10327b7c7..e8552df7e9 100755 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -435,9 +435,9 @@ void MyAvatar::update(float deltaTime) { // so we update now. It's ok if it updates again in the normal way. updateSensorToWorldMatrix(); emit positionGoneTo(); - _physicsSafetyPending = true; + _physicsSafetyPending = getCollisionsEnabled(); // Run safety tests as soon as we can after goToLocation, or clear if we're not colliding. } - if (_physicsSafetyPending && qApp->isPhysicsEnabled()) { + if (_physicsSafetyPending && qApp->isPhysicsEnabled() && _characterController.isEnabledAndReady()) { // fix only when needed and ready _physicsSafetyPending = false; safeLanding(_goToPosition); // no-op if already safe } @@ -1555,6 +1555,11 @@ void MyAvatar::harvestResultsFromPhysicsSimulation(float deltaTime) { if (_characterController.isEnabledAndReady()) { setVelocity(_characterController.getLinearVelocity() + _characterController.getFollowVelocity()); + if (_characterController.isStuck()) { + _physicsSafetyPending = true; + _goToPosition = getPosition(); + qDebug() << "FIXME setting safety test at:" << _goToPosition; + } } else { setVelocity(getVelocity() + _characterController.getFollowVelocity()); } @@ -2242,55 +2247,53 @@ bool MyAvatar::safeLanding(const glm::vec3& position) { // For b, use that top surface point. // We then place our feet there, recurse with new capsule center point, and return true. - // I'm not sure the true/false return is useful, and it does make things more complicated. Might get rid of it. - // E.g., Q_RETURN_ARG, and direct() could be a normal method. if (QThread::currentThread() != thread()) { bool result; QMetaObject::invokeMethod(this, "safeLanding", Qt::BlockingQueuedConnection, Q_RETURN_ARG(bool, result), Q_ARG(const glm::vec3&, position)); return result; } glm::vec3 better; - if (requiresSafeLanding(position, better)) { - qDebug() << "rechecking" << position << " => " << better << " collisions:" << getCollisionsEnabled() << " physics:" << qApp->isPhysicsEnabled(); - if (!getCollisionsEnabled()) { - goToLocation(better); // recurses - } else { // If you try to go while stuck, physics will keep you stuck. - setCollisionsEnabled(false); - // Don't goToLocation just yet. Yield so that physics can act on the above. - QMetaObject::invokeMethod(this, "goToLocationAndEnableCollisions", Qt::QueuedConnection, // The equivalent of javascript nextTick - Q_ARG(glm::vec3, better)); // I.e., capsuleCenter - offset - } - return true; + if (!requiresSafeLanding(position, better)) { + return false; } - return false; + qDebug() << "rechecking" << position << " => " << better << " collisions:" << getCollisionsEnabled() << " physics:" << qApp->isPhysicsEnabled(); + if (!getCollisionsEnabled()) { + goToLocation(better); // recurses + } else { // If you try to go while stuck, physics will keep you stuck. + setCollisionsEnabled(false); + // Don't goToLocation just yet. Yield so that physics can act on the above. + QMetaObject::invokeMethod(this, "goToLocationAndEnableCollisions", Qt::QueuedConnection, // The equivalent of javascript nextTick + Q_ARG(glm::vec3, better)); // I.e., capsuleCenter - offset + } + return true; } -bool MyAvatar::requiresSafeLanding(const glm::vec3& position, glm::vec3& betterPosition) { - const auto offset = getOrientation() *_characterController.getCapsuleLocalOffset(); - const auto capsuleCenter = position + offset; +// If position is not reliably safe from being stuck by physics, answer true and place a candidate better position in betterPositionOut. +bool MyAvatar::requiresSafeLanding(const glm::vec3& positionIn, glm::vec3& betterPositionOut) { // We could repeat this whole test for each of the four corners of our bounding box, in case the surface is uneven. However: // 1) This is only meant to cover the most important cases, and even the four corners won't handle random spikes in the surfaces or avatar. // 2) My feeling is that this code is already at the limit of what can realistically be reviewed and maintained. - auto direct = [&](const char* label) { // position is good to go, or at least, we cannot do better - qDebug() << "Already safe" << label << position << " collisions:" << getCollisionsEnabled() << " physics:" << qApp->isPhysicsEnabled(); + auto ok = [&](const char* label) { // position is good to go, or at least, we cannot do better + qDebug() << "Already safe" << label << positionIn << " collisions:" << getCollisionsEnabled() << " physics:" << qApp->isPhysicsEnabled(); return false; }; auto halfHeight = _characterController.getCapsuleHalfHeight(); if (halfHeight == 0) { - return direct("zero height avatar"); + return ok("zero height avatar"); } auto entityTree = DependencyManager::get()->getTree(); if (!entityTree) { - return direct("no entity tree"); + return ok("no entity tree"); } + const auto offset = getOrientation() *_characterController.getCapsuleLocalOffset(); + const auto capsuleCenter = positionIn + offset; + const auto up = _worldUpDirection, down = -up; glm::vec3 upperIntersection, upperNormal, lowerIntersection, lowerNormal; EntityItemID upperId, lowerId; - const auto up = _worldUpDirection, down = -up; - QVector include{}; - QVector ignore{}; - auto recurse = [&] { // Place bottom of capsule at the upperIntersection, and check again based on the capsule center. - betterPosition = upperIntersection + (up * halfHeight) - offset; + QVector include{}, ignore{}; + auto mustMove = [&] { // Place bottom of capsule at the upperIntersection, and check again based on the capsule center. + betterPositionOut = upperIntersection + (up * halfHeight) - offset; return true; }; auto findIntersection = [&](const glm::vec3& startPointIn, const glm::vec3& directionIn, glm::vec3& intersectionOut, EntityItemID& entityIdOut, glm::vec3& normalOut) { @@ -2322,12 +2325,12 @@ bool MyAvatar::requiresSafeLanding(const glm::vec3& position, glm::vec3& betterP // We currently believe that physics will reliably push us out if our feet are embedded, // as long as our capsule center is out and there's room above us. Here we have those // conditions, so no need to check our feet below. - return direct("nothing above"); + return ok("nothing above"); } if (!findIntersection(capsuleCenter, down, lowerIntersection, lowerId, lowerNormal)) { // Our head may be embedded, but our center is out and there's room below. See corresponding comment above. - return direct("nothing below"); + return ok("nothing below"); } // See if we have room between entities above and below, but that we are not contained. @@ -2347,13 +2350,13 @@ bool MyAvatar::requiresSafeLanding(const glm::vec3& position, glm::vec3& betterP if (!findIntersection(upperIntersection, up, upperIntersection, upperId, upperNormal)) { // We're not inside an entity, and from the nested tests, we have room between what is above and below. So position is good! //qDebug() << "FIXME upper:" << upperId << upperIntersection << " n:" << upperNormal.y << " lower:" << lowerId << lowerIntersection << " n:" << lowerNormal.y << " delta:" << delta << " halfHeight:" << halfHeight; - return direct("enough room"); + return ok("enough room"); } if (isUp(upperNormal)) { // This new intersection is the top surface of an entity that we have not yet seen, which means we're contained within it. // We could break here and recurse from the top of the original ceiling, but since we've already done the work to find the top // of the enclosing entity, let's put our feet at upperIntersection and start over. - return recurse(); + return mustMove(); } // We found a new bottom surface, which we're not interested in. // But there could still be a top surface above us for an entity we haven't seen, so keep looking upward. @@ -2368,10 +2371,10 @@ bool MyAvatar::requiresSafeLanding(const glm::vec3& position, glm::vec3& betterP auto fromAbove = capsuleCenter + skyHigh; include.push_back(upperId); // We're looking for the intersection from above onto this entity. if (!findIntersection(fromAbove, down, upperIntersection, upperId, upperNormal)) { - return direct("Unable to find a landing"); + return ok("Unable to find a landing"); } // Our arbitrary rule is to always go up. There's no need to look down or sideways for a "closer" safe candidate. - return recurse(); + return mustMove(); } void MyAvatar::updateMotionBehaviorFromMenu() { diff --git a/libraries/physics/src/CharacterController.cpp b/libraries/physics/src/CharacterController.cpp index ee240a6aac..88eff1a0fc 100755 --- a/libraries/physics/src/CharacterController.cpp +++ b/libraries/physics/src/CharacterController.cpp @@ -152,6 +152,7 @@ bool CharacterController::checkForSupport(btCollisionWorld* collisionWorld) { btDispatcher* dispatcher = collisionWorld->getDispatcher(); int numManifolds = dispatcher->getNumManifolds(); bool hasFloor = false; + bool isStuck = false; btTransform rotation = _rigidBody->getWorldTransform(); rotation.setOrigin(btVector3(0.0f, 0.0f, 0.0f)); // clear translation part @@ -169,10 +170,18 @@ bool CharacterController::checkForSupport(btCollisionWorld* collisionWorld) { btVector3 pointOnCharacter = characterIsFirst ? contact.m_localPointA : contact.m_localPointB; // object-local-frame btVector3 normal = characterIsFirst ? contact.m_normalWorldOnB : -contact.m_normalWorldOnB; // points toward character btScalar hitHeight = _halfHeight + _radius + pointOnCharacter.dot(_currentUp); + // If there's non-trivial penetration with a big impulse for several steps, we're probably stuck. + // Note it here in the controller, and let MyAvatar figure out what to do about it. + const float STUCK_PENETRATION = -0.1f; // always negative into the object. + const float STUCK_IMPULSE = 500.0f; + const int STUCK_LIFETIME = 50; + if ((contact.getDistance() < -STUCK_PENETRATION) && (contact.getAppliedImpulse() > STUCK_IMPULSE) && (contact.getLifeTime() > STUCK_LIFETIME)) { + isStuck = true; // latch on + } if (hitHeight < _maxStepHeight && normal.dot(_currentUp) > _minFloorNormalDotUp) { hasFloor = true; - if (!pushing) { - // we're not pushing against anything so we can early exit + if (!pushing && isStuck) { + // we're not pushing against anything and we're stuck so we can early exit // (all we need to know is that there is a floor) break; } @@ -182,7 +191,7 @@ bool CharacterController::checkForSupport(btCollisionWorld* collisionWorld) { if (!_stepUpEnabled || hitHeight > _maxStepHeight) { // this manifold is invalidated by point that is too high stepContactIndex = -1; - break; + qDebug() << "FIXME breaking early"; break; } else if (hitHeight > highestStep && normal.dot(_targetVelocity) < 0.0f ) { highestStep = hitHeight; stepContactIndex = j; @@ -198,12 +207,13 @@ bool CharacterController::checkForSupport(btCollisionWorld* collisionWorld) { _stepHeight = highestStep; _stepPoint = rotation * pointOnCharacter; // rotate into world-frame } - if (hasFloor && !(pushing && _stepUpEnabled)) { + if (hasFloor && isStuck && !(pushing && _stepUpEnabled)) { // early exit since all we need to know is that we're on a floor break; } } } + _isStuck = isStuck; return hasFloor; } diff --git a/libraries/physics/src/CharacterController.h b/libraries/physics/src/CharacterController.h index 6790495ff8..bf84d318d4 100644 --- a/libraries/physics/src/CharacterController.h +++ b/libraries/physics/src/CharacterController.h @@ -110,6 +110,7 @@ public: void setLocalBoundingBox(const glm::vec3& minCorner, const glm::vec3& scale); bool isEnabledAndReady() const { return _dynamicsWorld; } + bool isStuck() const { return _isStuck; } void setCollisionless(bool collisionless); int16_t computeCollisionGroup() const; @@ -192,6 +193,7 @@ protected: State _state; bool _isPushingUp; + bool _isStuck { false }; btDynamicsWorld* _dynamicsWorld { nullptr }; btRigidBody* _rigidBody { nullptr }; From 1d9d83b15758ddba6e2c0a669ea3b2ad466692d4 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Wed, 31 May 2017 19:00:41 -0700 Subject: [PATCH 163/357] initial version of the ClosureEventSender using std::thread --- interface/src/Application.cpp | 6 ++ interface/src/Application.h | 3 + interface/src/main.cpp | 7 ++ .../src/networking/ClosureEventSender.cpp | 71 +++++++++++++++++++ interface/src/networking/ClosureEventSender.h | 35 +++++++++ libraries/networking/src/AccountManager.cpp | 1 - libraries/networking/src/AccountManager.h | 1 + .../networking/src/UserActivityLogger.cpp | 2 - libraries/networking/src/UserActivityLogger.h | 2 + 9 files changed, 125 insertions(+), 3 deletions(-) create mode 100644 interface/src/networking/ClosureEventSender.cpp create mode 100644 interface/src/networking/ClosureEventSender.h diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 46c4c0bd4e..297ee943fa 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -144,6 +144,7 @@ #include "InterfaceLogging.h" #include "LODManager.h" #include "ModelPackager.h" +#include "networking/ClosureEventSender.h" #include "networking/HFWebEngineProfile.h" #include "networking/HFTabletWebEngineProfile.h" #include "networking/FileTypeProfile.h" @@ -534,6 +535,7 @@ bool setupEssentials(int& argc, char** argv, bool runningMarkerExisted) { DependencyManager::set(); DependencyManager::set(); DependencyManager::set(); + DependencyManager::set(); return previousSessionCrashed; } @@ -1568,6 +1570,10 @@ void Application::aboutToQuit() { getActiveDisplayPlugin()->deactivate(); + // use the ClosureEventSender via an std::thread (to not use QThread while the application is going down) + // to send an event that says the user asked for the app to close + _userQuitThread = std::thread { &ClosureEventSender::sendQuitStart, DependencyManager::get() }; + // Hide Running Scripts dialog so that it gets destroyed in an orderly manner; prevents warnings at shutdown. DependencyManager::get()->hide("RunningScripts"); diff --git a/interface/src/Application.h b/interface/src/Application.h index 9cf03f1cef..23673399f6 100644 --- a/interface/src/Application.h +++ b/interface/src/Application.h @@ -13,6 +13,7 @@ #define hifi_Application_h #include +#include #include #include @@ -680,6 +681,8 @@ private: FileScriptingInterface* _fileDownload; AudioInjector* _snapshotSoundInjector { nullptr }; SharedSoundPointer _snapshotSound; + + std::thread _userQuitThread; }; diff --git a/interface/src/main.cpp b/interface/src/main.cpp index 49517eb38e..68525dfd1e 100644 --- a/interface/src/main.cpp +++ b/interface/src/main.cpp @@ -30,6 +30,7 @@ #include "InterfaceLogging.h" #include "UserActivityLogger.h" #include "MainWindow.h" +#include "networking/ClosureEventSender.h" #ifdef HAS_BUGSPLAT #include @@ -267,6 +268,12 @@ int main(int argc, const char* argv[]) { Application::shutdownPlugins(); + if (UserActivityLogger::getInstance().isEnabled()) { + // send a quit finished event here to indicate that this session closed cleanly + std::thread quitCompleteThread { &::ClosureEventSender::sendQuitFinish, DependencyManager::get() }; + quitCompleteThread.join(); + } + qCDebug(interfaceapp, "Normal exit."); #if !defined(DEBUG) && !defined(Q_OS_LINUX) // HACK: exit immediately (don't handle shutdown callbacks) for Release build diff --git a/interface/src/networking/ClosureEventSender.cpp b/interface/src/networking/ClosureEventSender.cpp new file mode 100644 index 0000000000..f514fa17b6 --- /dev/null +++ b/interface/src/networking/ClosureEventSender.cpp @@ -0,0 +1,71 @@ +// +// ClosureEventSender.cpp +// interface/src/networking +// +// Created by Stephen Birarda on 5/31/17. +// Copyright 2017 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#include "ClosureEventSender.h" + +QNetworkRequest createNetworkRequest() { + + QNetworkRequest request; + + QUrl requestURL = NetworkingConstants::METAVERSE_SERVER_URL; + requestURL.setPath(USER_ACTIVITY_URL); + + request.setUrl(requestURL); + + auto accountManager = DependencyManager::get(); + + if (accountManager->hasValidAccessToken()) { + request.setRawHeader(ACCESS_TOKEN_AUTHORIZATION_HEADER, + accountManager->getAccountInfo().getAccessToken().authorizationHeaderValue()); + } + + request.setRawHeader(METAVERSE_SESSION_ID_HEADER, + uuidStringWithoutCurlyBraces(accountManager->getSessionID()).toLocal8Bit()); + + request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json"); + + return request; +} + +QByteArray postDataForAction(QString action) { + return QString("{\"action\": \"" + action + "\"}").toUtf8(); +} + +QNetworkReply* replyForAction(QString action) { + QNetworkAccessManager& networkAccessManager = NetworkAccessManager::getInstance(); + return networkAccessManager.post(createNetworkRequest(), postDataForAction(action)); +} + +void ClosureEventSender::sendQuitStart() { + + QNetworkReply* reply = replyForAction("quit_start"); + + QEventLoop loop; + QObject::connect(reply, &QNetworkReply::finished, &loop, &QEventLoop::quit); +} + +void ClosureEventSender::sendQuitFinish() { + QNetworkReply* reply = replyForAction("quit_finish"); + + QEventLoop loop; + QObject::connect(reply, &QNetworkReply::finished, &loop, &QEventLoop::quit); +} diff --git a/interface/src/networking/ClosureEventSender.h b/interface/src/networking/ClosureEventSender.h new file mode 100644 index 0000000000..dc726fc386 --- /dev/null +++ b/interface/src/networking/ClosureEventSender.h @@ -0,0 +1,35 @@ +// +// ClosureEventSender.h +// interface/src/networking +// +// Created by Stephen Birarda on 5/31/17. +// Copyright 2017 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +#ifndef hifi_ClosureEventSender_h +#define hifi_ClosureEventSender_h + +#include +#include + +#include + +class ClosureEventSender : public Dependency { + SINGLETON_DEPENDENCY + +public: + void setSessionID(QUuid sessionID) { _sessionID = sessionID; } + + void sendQuitStart(); + void sendQuitFinish(); + void sendCrashEvent(); + +private: + QUuid _sessionID; + QString _accessToken; +}; + +#endif // hifi_ClosureEventSender_h diff --git a/libraries/networking/src/AccountManager.cpp b/libraries/networking/src/AccountManager.cpp index 6266ad0f89..2457d0ac42 100644 --- a/libraries/networking/src/AccountManager.cpp +++ b/libraries/networking/src/AccountManager.cpp @@ -45,7 +45,6 @@ Q_DECLARE_METATYPE(QNetworkAccessManager::Operation) Q_DECLARE_METATYPE(JSONCallbackParameters) const QString ACCOUNTS_GROUP = "accounts"; -static const auto METAVERSE_SESSION_ID_HEADER = QString("HFM-SessionID").toLocal8Bit(); JSONCallbackParameters::JSONCallbackParameters(QObject* jsonCallbackReceiver, const QString& jsonCallbackMethod, QObject* errorCallbackReceiver, const QString& errorCallbackMethod, diff --git a/libraries/networking/src/AccountManager.h b/libraries/networking/src/AccountManager.h index dd2216957f..bd452646f6 100644 --- a/libraries/networking/src/AccountManager.h +++ b/libraries/networking/src/AccountManager.h @@ -52,6 +52,7 @@ namespace AccountManagerAuth { Q_DECLARE_METATYPE(AccountManagerAuth::Type); const QByteArray ACCESS_TOKEN_AUTHORIZATION_HEADER = "Authorization"; +const auto METAVERSE_SESSION_ID_HEADER = QString("HFM-SessionID").toLocal8Bit(); using UserAgentGetter = std::function; diff --git a/libraries/networking/src/UserActivityLogger.cpp b/libraries/networking/src/UserActivityLogger.cpp index e2dd110cfd..28117c0933 100644 --- a/libraries/networking/src/UserActivityLogger.cpp +++ b/libraries/networking/src/UserActivityLogger.cpp @@ -20,8 +20,6 @@ #include #include "AddressManager.h" -static const QString USER_ACTIVITY_URL = "/api/v1/user_activities"; - UserActivityLogger& UserActivityLogger::getInstance() { static UserActivityLogger sharedInstance; return sharedInstance; diff --git a/libraries/networking/src/UserActivityLogger.h b/libraries/networking/src/UserActivityLogger.h index b41960a8ad..9fad498b86 100644 --- a/libraries/networking/src/UserActivityLogger.h +++ b/libraries/networking/src/UserActivityLogger.h @@ -22,6 +22,8 @@ #include #include "AddressManager.h" +const QString USER_ACTIVITY_URL = "/api/v1/user_activities"; + class UserActivityLogger : public QObject { Q_OBJECT From b528c2fc60a70f9532644a11dbcc7eee8c74f851 Mon Sep 17 00:00:00 2001 From: Sam Cake Date: Wed, 31 May 2017 19:33:14 -0700 Subject: [PATCH 164/357] Merged --- libraries/render-utils/src/DeferredLightingEffect.cpp | 5 +++-- libraries/render-utils/src/RenderPipelines.cpp | 3 ++- libraries/render-utils/src/StencilMaskPass.cpp | 7 +++---- libraries/render-utils/src/StencilMaskPass.h | 4 +++- libraries/render-utils/src/SurfaceGeometryPass.cpp | 6 +++--- 5 files changed, 14 insertions(+), 11 deletions(-) diff --git a/libraries/render-utils/src/DeferredLightingEffect.cpp b/libraries/render-utils/src/DeferredLightingEffect.cpp index 04255fbb87..9f28240065 100644 --- a/libraries/render-utils/src/DeferredLightingEffect.cpp +++ b/libraries/render-utils/src/DeferredLightingEffect.cpp @@ -18,6 +18,7 @@ #include #include +#include "StencilMaskPass.h" #include "AbstractViewStateInterface.h" #include "GeometryCache.h" #include "TextureCache.h" @@ -242,7 +243,7 @@ static void loadLightProgram(const char* vertSource, const char* fragSource, boo state->setColorWriteMask(true, true, true, false); if (lightVolume) { - state->setStencilTest(true, 0x00, gpu::State::StencilTest(0, 0xFF, gpu::EQUAL, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP)); + state->setStencilTest(true, 0x00, gpu::State::StencilTest(PrepareStencil::STENCIL_SCENE, 0xFF, gpu::EQUAL, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP)); state->setCullMode(gpu::State::CULL_BACK); // state->setCullMode(gpu::State::CULL_FRONT); @@ -255,7 +256,7 @@ static void loadLightProgram(const char* vertSource, const char* fragSource, boo } else { // Stencil test all the light passes for objects pixels only, not the background - state->setStencilTest(true, 0x00, gpu::State::StencilTest(0, 0xFF, gpu::EQUAL, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP)); + state->setStencilTest(true, 0x00, gpu::State::StencilTest(PrepareStencil::STENCIL_SCENE, 0xFF, gpu::EQUAL, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP)); state->setCullMode(gpu::State::CULL_BACK); // additive blending diff --git a/libraries/render-utils/src/RenderPipelines.cpp b/libraries/render-utils/src/RenderPipelines.cpp index 9ca9187df8..be2bb0efbe 100644 --- a/libraries/render-utils/src/RenderPipelines.cpp +++ b/libraries/render-utils/src/RenderPipelines.cpp @@ -15,6 +15,7 @@ #include #include +#include "StencilMaskPass.h" #include "DeferredLightingEffect.h" #include "TextureCache.h" #include "render/DrawTask.h" @@ -330,7 +331,7 @@ void addPlumberPipeline(ShapePlumber& plumber, bool isWireframed = (i & 4); auto state = std::make_shared(); - state->setStencilTest(true, 0xFF, gpu::State::StencilTest(2, 0xFF, gpu::NOT_EQUAL, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_ZERO)); + state->setStencilTest(true, 0xFF, gpu::State::StencilTest(PrepareStencil::STENCIL_MASK, 0xFF, gpu::NOT_EQUAL, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_ZERO)); // Depth test depends on transparency state->setDepthTest(true, !key.isTranslucent(), gpu::LESS_EQUAL); diff --git a/libraries/render-utils/src/StencilMaskPass.cpp b/libraries/render-utils/src/StencilMaskPass.cpp index 612324a79b..6cdcfdf8d2 100644 --- a/libraries/render-utils/src/StencilMaskPass.cpp +++ b/libraries/render-utils/src/StencilMaskPass.cpp @@ -23,7 +23,6 @@ using namespace render; gpu::PipelinePointer DrawStencilDeferred::getOpaquePipeline() { if (!_opaquePipeline) { - const gpu::int8 STENCIL_OPAQUE = 0; auto vs = gpu::StandardShaderLib::getDrawUnitQuadTexcoordVS(); auto ps = gpu::StandardShaderLib::getDrawNadaPS(); auto program = gpu::Shader::createProgram(vs, ps); @@ -31,7 +30,7 @@ gpu::PipelinePointer DrawStencilDeferred::getOpaquePipeline() { auto state = std::make_shared(); state->setDepthTest(true, false, gpu::LESS_EQUAL); - state->setStencilTest(true, 0xFF, gpu::State::StencilTest(STENCIL_OPAQUE, 0xFF, gpu::ALWAYS, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP)); + state->setStencilTest(true, 0xFF, gpu::State::StencilTest(PrepareStencil::STENCIL_SCENE, 0xFF, gpu::ALWAYS, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP)); state->setColorWriteMask(0); _opaquePipeline = gpu::Pipeline::create(program, state); @@ -67,12 +66,12 @@ void DrawStencilDeferred::run(const RenderContextPointer& renderContext, const g gpu::PipelinePointer PrepareStencil::getDrawStencilPipeline() { if (!_drawStencilPipeline) { auto vs = gpu::StandardShaderLib::getDrawVertexPositionVS(); - auto ps = gpu::StandardShaderLib::getDrawWhitePS(); + auto ps = gpu::StandardShaderLib::getDrawNadaPS(); auto program = gpu::Shader::createProgram(vs, ps); gpu::Shader::makeProgram((*program)); auto state = std::make_shared(); - state->setStencilTest(true, 0xFF, gpu::State::StencilTest(2, 0xFF, gpu::ALWAYS, gpu::State::STENCIL_OP_REPLACE, gpu::State::STENCIL_OP_REPLACE, gpu::State::STENCIL_OP_REPLACE)); + state->setStencilTest(true, 0xFF, gpu::State::StencilTest(PrepareStencil::STENCIL_MASK, 0xFF, gpu::ALWAYS, gpu::State::STENCIL_OP_REPLACE, gpu::State::STENCIL_OP_REPLACE, gpu::State::STENCIL_OP_REPLACE)); // state->setColorWriteMask(0); _drawStencilPipeline = gpu::Pipeline::create(program, state); diff --git a/libraries/render-utils/src/StencilMaskPass.h b/libraries/render-utils/src/StencilMaskPass.h index bf21602462..8c05a46efa 100644 --- a/libraries/render-utils/src/StencilMaskPass.h +++ b/libraries/render-utils/src/StencilMaskPass.h @@ -35,7 +35,9 @@ public: void run(const render::RenderContextPointer& renderContext, const gpu::FramebufferPointer& dstFramebuffer); - static const gpu::int8 STENCIL_MASK = 64; + static const gpu::int8 STENCIL_MASK = 2; + static const gpu::int8 STENCIL_BACKGROUND = 1; + static const gpu::int8 STENCIL_SCENE = 0; private: gpu::PipelinePointer _drawStencilPipeline; diff --git a/libraries/render-utils/src/SurfaceGeometryPass.cpp b/libraries/render-utils/src/SurfaceGeometryPass.cpp index 746c25daa5..a13bc2846e 100644 --- a/libraries/render-utils/src/SurfaceGeometryPass.cpp +++ b/libraries/render-utils/src/SurfaceGeometryPass.cpp @@ -14,7 +14,7 @@ #include #include - +#include "StencilMaskPass.h" const int DepthLinearPass_FrameTransformSlot = 0; const int DepthLinearPass_DepthMapSlot = 0; @@ -224,7 +224,7 @@ const gpu::PipelinePointer& LinearDepthPass::getLinearDepthPipeline() { gpu::StatePointer state = gpu::StatePointer(new gpu::State()); // Stencil test the curvature pass for objects pixels only, not the background - state->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)); + state->setStencilTest(true, 0xFF, gpu::State::StencilTest(PrepareStencil::STENCIL_SCENE, 0xFF, gpu::EQUAL, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP)); state->setColorWriteMask(true, false, false, false); @@ -554,7 +554,7 @@ const gpu::PipelinePointer& SurfaceGeometryPass::getCurvaturePipeline() { #ifdef USE_STENCIL_TEST // Stencil test the curvature pass for objects pixels only, not the background - state->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)); + state->setStencilTest(true, 0xFF, gpu::State::StencilTest(PrepareStencil::STENCIL_SCENE, 0xFF, gpu::EQUAL, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP)); #endif // Good to go add the brand new pipeline _curvaturePipeline = gpu::Pipeline::create(program, state); From d19956f93c4df01dee7b7017f7d879aa72c4efd7 Mon Sep 17 00:00:00 2001 From: Sam Cake Date: Wed, 31 May 2017 22:02:47 -0700 Subject: [PATCH 165/357] Fixing warnings --- assignment-client/src/Agent.cpp | 1 + .../src/controllers/impl/filters/LowVelocityFilter.h | 6 +++--- libraries/entities-renderer/src/EntityTreeRenderer.cpp | 2 +- .../entities-renderer/src/RenderableZoneEntityItem.cpp | 1 - libraries/gpu-gl/src/gpu/gl/GLTexelFormat.cpp | 4 ++++ libraries/ktx/src/ktx/Writer.cpp | 2 +- libraries/render-utils/src/BackgroundStage.cpp | 1 - libraries/render-utils/src/ZoneRenderer.cpp | 6 +++--- 8 files changed, 13 insertions(+), 10 deletions(-) diff --git a/assignment-client/src/Agent.cpp b/assignment-client/src/Agent.cpp index 47836727fe..f517716b72 100644 --- a/assignment-client/src/Agent.cpp +++ b/assignment-client/src/Agent.cpp @@ -410,6 +410,7 @@ void Agent::executeScript() { bool openedInLastBlock = !_audioGateOpen && audioGateOpen; // the gate just opened bool closedInLastBlock = _audioGateOpen && !audioGateOpen; // the gate just closed _audioGateOpen = audioGateOpen; + Q_UNUSED(openedInLastBlock); // the codec must be flushed to silence before sending silent packets, // so delay the transition to silent packets by one packet after becoming silent. diff --git a/libraries/controllers/src/controllers/impl/filters/LowVelocityFilter.h b/libraries/controllers/src/controllers/impl/filters/LowVelocityFilter.h index d870a5c551..b1c6be1f58 100644 --- a/libraries/controllers/src/controllers/impl/filters/LowVelocityFilter.h +++ b/libraries/controllers/src/controllers/impl/filters/LowVelocityFilter.h @@ -21,9 +21,9 @@ namespace controller { LowVelocityFilter(float rotationConstant, float translationConstant) : _translationConstant(translationConstant), _rotationConstant(rotationConstant) {} - virtual float apply(float value) const override { return value; } - virtual Pose apply(Pose newPose) const; - virtual bool parseParameters(const QJsonValue& parameters) override; + float apply(float value) const override { return value; } + Pose apply(Pose newPose) const override; + bool parseParameters(const QJsonValue& parameters) override; private: float _translationConstant { 0.1f }; diff --git a/libraries/entities-renderer/src/EntityTreeRenderer.cpp b/libraries/entities-renderer/src/EntityTreeRenderer.cpp index 06227cdcfc..1b92adbc37 100644 --- a/libraries/entities-renderer/src/EntityTreeRenderer.cpp +++ b/libraries/entities-renderer/src/EntityTreeRenderer.cpp @@ -192,7 +192,7 @@ void EntityTreeRenderer::update() { tree->update(); // Handle enter/leave entity logic - bool updated = checkEnterLeaveEntities(); + checkEnterLeaveEntities(); // Even if we're not moving the mouse, if we started clicking on an entity and we have // not yet released the hold then this is still considered a holdingClickOnEntity event diff --git a/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp b/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp index 3f7c0937e2..d3fd9a0980 100644 --- a/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp @@ -367,7 +367,6 @@ void RenderableZoneEntityItem::sceneUpdateRenderItemFromEntity(render::Transacti bool sunChanged = _keyLightPropertiesChanged; bool backgroundChanged = _backgroundPropertiesChanged; - bool stageChanged = _stagePropertiesChanged; bool skyboxChanged = _skyboxPropertiesChanged; transaction.updateItem(_myMetaItem, [=](RenderableZoneEntityItemMeta& data) { diff --git a/libraries/gpu-gl/src/gpu/gl/GLTexelFormat.cpp b/libraries/gpu-gl/src/gpu/gl/GLTexelFormat.cpp index 26ce56b387..ef9b6c4297 100644 --- a/libraries/gpu-gl/src/gpu/gl/GLTexelFormat.cpp +++ b/libraries/gpu-gl/src/gpu/gl/GLTexelFormat.cpp @@ -211,6 +211,7 @@ GLenum GLTexelFormat::evalGLTexelFormatInternal(const gpu::Element& dstFormat) { break; case gpu::NUINT32: case gpu::NINT32: + case gpu::COMPRESSED: case gpu::NUM_TYPES: // quiet compiler Q_UNREACHABLE(); } @@ -484,6 +485,7 @@ GLTexelFormat GLTexelFormat::evalGLTexelFormat(const Element& dstFormat, const E texel.internalFormat = GL_R8_SNORM; break; } + case gpu::COMPRESSED: case gpu::NUM_TYPES: { // quiet compiler Q_UNREACHABLE(); } @@ -527,6 +529,7 @@ GLTexelFormat GLTexelFormat::evalGLTexelFormat(const Element& dstFormat, const E texel.internalFormat = GL_DEPTH_COMPONENT24; break; } + case gpu::COMPRESSED: case gpu::NUM_TYPES: { // quiet compiler Q_UNREACHABLE(); } @@ -641,6 +644,7 @@ GLTexelFormat GLTexelFormat::evalGLTexelFormat(const Element& dstFormat, const E break; case gpu::NUINT32: case gpu::NINT32: + case gpu::COMPRESSED: case gpu::NUM_TYPES: // quiet compiler Q_UNREACHABLE(); } diff --git a/libraries/ktx/src/ktx/Writer.cpp b/libraries/ktx/src/ktx/Writer.cpp index c94856e598..6d6cfa81a2 100644 --- a/libraries/ktx/src/ktx/Writer.cpp +++ b/libraries/ktx/src/ktx/Writer.cpp @@ -229,7 +229,7 @@ namespace ktx { } else { Image::FaceBytes faceBytes(NUM_CUBEMAPFACES); auto faceSize = srcImages[l]._faceSize; - for (int face = 0; face < NUM_CUBEMAPFACES; face++) { + for (uint32_t face = 0; face < NUM_CUBEMAPFACES; face++) { memcpy(currentPtr, srcImages[l]._faceBytes[face], faceSize); faceBytes[face] = currentPtr; currentPtr += faceSize; diff --git a/libraries/render-utils/src/BackgroundStage.cpp b/libraries/render-utils/src/BackgroundStage.cpp index 1a85a70863..5c2f55954a 100644 --- a/libraries/render-utils/src/BackgroundStage.cpp +++ b/libraries/render-utils/src/BackgroundStage.cpp @@ -112,7 +112,6 @@ void DrawBackgroundStage::run(const render::RenderContextPointer& renderContext, skybox->render(batch, args->getViewFrustum()); }); args->_batch = nullptr; - gpu::Batch& batch = *args->_batch; // break; } diff --git a/libraries/render-utils/src/ZoneRenderer.cpp b/libraries/render-utils/src/ZoneRenderer.cpp index 3b4870fd3f..741487c824 100644 --- a/libraries/render-utils/src/ZoneRenderer.cpp +++ b/libraries/render-utils/src/ZoneRenderer.cpp @@ -169,7 +169,7 @@ void DebugZoneLighting::run(const render::RenderContextPointer& context, const I batch.setUniformBuffer(ZONE_DEFERRED_TRANSFORM_BUFFER, deferredTransform->getFrameTransformBuffer()); batch.setPipeline(getKeyLightPipeline()); - auto numKeys = keyLightStack.size(); + auto numKeys = (int) keyLightStack.size(); for (int i = numKeys - 1; i >= 0; i--) { model.setTranslation(glm::vec3(-4.0, -3.0 + (i * 1.0), -10.0 - (i * 3.0))); batch.setModelTransform(model); @@ -180,7 +180,7 @@ void DebugZoneLighting::run(const render::RenderContextPointer& context, const I } batch.setPipeline(getAmbientPipeline()); - auto numAmbients = ambientLightStack.size(); + auto numAmbients = (int) ambientLightStack.size(); for (int i = numAmbients - 1; i >= 0; i--) { model.setTranslation(glm::vec3(0.0, -3.0 + (i * 1.0), -10.0 - (i * 3.0))); batch.setModelTransform(model); @@ -194,7 +194,7 @@ void DebugZoneLighting::run(const render::RenderContextPointer& context, const I } batch.setPipeline(getBackgroundPipeline()); - auto numBackgrounds = skyboxStack.size(); + auto numBackgrounds = (int) skyboxStack.size(); for (int i = numBackgrounds - 1; i >= 0; i--) { model.setTranslation(glm::vec3(4.0, -3.0 + (i * 1.0), -10.0 - (i * 3.0))); batch.setModelTransform(model); From 0372deebfffa19be483773d5cee5bb543b9c94ff Mon Sep 17 00:00:00 2001 From: Sam Cake Date: Wed, 31 May 2017 22:09:30 -0700 Subject: [PATCH 166/357] Last warnings? --- tests/controllers/src/main.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/tests/controllers/src/main.cpp b/tests/controllers/src/main.cpp index e697bd501f..81f2f8d581 100644 --- a/tests/controllers/src/main.cpp +++ b/tests/controllers/src/main.cpp @@ -122,6 +122,10 @@ int main(int argc, char** argv) { glm::mat4(), glm::mat4(), glm::mat4(), + glm::mat4(), + glm::mat4(), + glm::mat4(), + glm::mat4(), glm::mat4() }; @@ -144,6 +148,10 @@ int main(int argc, char** argv) { glm::mat4(), glm::mat4(), glm::mat4(), + glm::mat4(), + glm::mat4(), + glm::mat4(), + glm::mat4(), glm::mat4() }; From e02115bcda5b1e921847ad09e3022111ee8e3089 Mon Sep 17 00:00:00 2001 From: Sam Cake Date: Wed, 31 May 2017 23:00:05 -0700 Subject: [PATCH 167/357] clearing up the stencil jobs --- .../render-utils/src/StencilMaskPass.cpp | 66 ++++++++++++------- libraries/render-utils/src/StencilMaskPass.h | 7 +- 2 files changed, 49 insertions(+), 24 deletions(-) diff --git a/libraries/render-utils/src/StencilMaskPass.cpp b/libraries/render-utils/src/StencilMaskPass.cpp index 6cdcfdf8d2..3194dddb49 100644 --- a/libraries/render-utils/src/StencilMaskPass.cpp +++ b/libraries/render-utils/src/StencilMaskPass.cpp @@ -63,21 +63,7 @@ void DrawStencilDeferred::run(const RenderContextPointer& renderContext, const g args->_batch = nullptr; } -gpu::PipelinePointer PrepareStencil::getDrawStencilPipeline() { - if (!_drawStencilPipeline) { - auto vs = gpu::StandardShaderLib::getDrawVertexPositionVS(); - auto ps = gpu::StandardShaderLib::getDrawNadaPS(); - auto program = gpu::Shader::createProgram(vs, ps); - gpu::Shader::makeProgram((*program)); - auto state = std::make_shared(); - state->setStencilTest(true, 0xFF, gpu::State::StencilTest(PrepareStencil::STENCIL_MASK, 0xFF, gpu::ALWAYS, gpu::State::STENCIL_OP_REPLACE, gpu::State::STENCIL_OP_REPLACE, gpu::State::STENCIL_OP_REPLACE)); - // state->setColorWriteMask(0); - - _drawStencilPipeline = gpu::Pipeline::create(program, state); - } - return _drawStencilPipeline; -} model::MeshPointer PrepareStencil::getMesh() { if (!_mesh) { @@ -94,6 +80,37 @@ model::MeshPointer PrepareStencil::getMesh() { return _mesh; } +gpu::PipelinePointer PrepareStencil::getMeshStencilPipeline() { + if (!_meshStencilPipeline) { + auto vs = gpu::StandardShaderLib::getDrawVertexPositionVS(); + auto ps = gpu::StandardShaderLib::getDrawNadaPS(); + auto program = gpu::Shader::createProgram(vs, ps); + gpu::Shader::makeProgram((*program)); + + auto state = std::make_shared(); + state->setStencilTest(true, 0xFF, gpu::State::StencilTest(PrepareStencil::STENCIL_MASK, 0xFF, gpu::ALWAYS, gpu::State::STENCIL_OP_REPLACE, gpu::State::STENCIL_OP_REPLACE, gpu::State::STENCIL_OP_REPLACE)); + state->setColorWriteMask(0); + + _meshStencilPipeline = gpu::Pipeline::create(program, state); + } + return _meshStencilPipeline; +} + +gpu::PipelinePointer PrepareStencil::getPaintStencilPipeline() { + if (!_paintStencilPipeline) { + auto vs = gpu::StandardShaderLib::getDrawUnitQuadTexcoordVS(); + auto ps = gpu::StandardShaderLib::getDrawNadaPS(); + auto program = gpu::Shader::createProgram(vs, ps); + gpu::Shader::makeProgram((*program)); + + auto state = std::make_shared(); + state->setStencilTest(true, 0xFF, gpu::State::StencilTest(PrepareStencil::STENCIL_MASK, 0xFF, gpu::ALWAYS, gpu::State::STENCIL_OP_REPLACE, gpu::State::STENCIL_OP_REPLACE, gpu::State::STENCIL_OP_REPLACE)); + state->setColorWriteMask(0); + + _paintStencilPipeline = gpu::Pipeline::create(program, state); + } + return _paintStencilPipeline; +} void PrepareStencil::run(const RenderContextPointer& renderContext, const gpu::FramebufferPointer& srcFramebuffer) { assert(renderContext->args); @@ -106,16 +123,21 @@ void PrepareStencil::run(const RenderContextPointer& renderContext, const gpu::F batch.setViewportTransform(args->_viewport); - batch.setPipeline(getDrawStencilPipeline()); + if (true) { + batch.setPipeline(getMeshStencilPipeline()); - auto mesh = getMesh(); - batch.setIndexBuffer(mesh->getIndexBuffer()); - batch.setInputFormat((mesh->getVertexFormat())); - batch.setInputStream(0, mesh->getVertexStream()); + auto mesh = getMesh(); + batch.setIndexBuffer(mesh->getIndexBuffer()); + batch.setInputFormat((mesh->getVertexFormat())); + batch.setInputStream(0, mesh->getVertexStream()); - // Draw - auto part = mesh->getPartBuffer().get(0); - batch.drawIndexed(gpu::TRIANGLES, part._numIndices, part._startIndex); + // Draw + auto part = mesh->getPartBuffer().get(0); + batch.drawIndexed(gpu::TRIANGLES, part._numIndices, part._startIndex); + } else { + batch.setPipeline(getPaintStencilPipeline()); + batch.draw(gpu::TRIANGLE_STRIP, 4); + } }); args->_batch = nullptr; } diff --git a/libraries/render-utils/src/StencilMaskPass.h b/libraries/render-utils/src/StencilMaskPass.h index 8c05a46efa..0532e23fac 100644 --- a/libraries/render-utils/src/StencilMaskPass.h +++ b/libraries/render-utils/src/StencilMaskPass.h @@ -40,8 +40,11 @@ public: static const gpu::int8 STENCIL_SCENE = 0; private: - gpu::PipelinePointer _drawStencilPipeline; - gpu::PipelinePointer getDrawStencilPipeline(); + gpu::PipelinePointer _meshStencilPipeline; + gpu::PipelinePointer getMeshStencilPipeline(); + + gpu::PipelinePointer _paintStencilPipeline; + gpu::PipelinePointer getPaintStencilPipeline(); model::MeshPointer _mesh; model::MeshPointer getMesh(); From 95aab28e911949ee7804b8fc6f144ece80af8512 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Thu, 1 Jun 2017 18:13:57 +1200 Subject: [PATCH 168/357] Disable unused code Keep for future experimentation per other commented-out code in method --- libraries/animation/src/AnimInverseKinematics.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/libraries/animation/src/AnimInverseKinematics.cpp b/libraries/animation/src/AnimInverseKinematics.cpp index d613e42866..5e89093b23 100644 --- a/libraries/animation/src/AnimInverseKinematics.cpp +++ b/libraries/animation/src/AnimInverseKinematics.cpp @@ -722,8 +722,10 @@ void AnimInverseKinematics::initConstraints() { loadDefaultPoses(_skeleton->getRelativeBindPoses()); - // compute corresponding absolute poses int numJoints = (int)_defaultRelativePoses.size(); + + /* KEEP THIS CODE for future experimentation + // compute corresponding absolute poses AnimPoseVec absolutePoses; absolutePoses.resize(numJoints); for (int i = 0; i < numJoints; ++i) { @@ -734,6 +736,7 @@ void AnimInverseKinematics::initConstraints() { absolutePoses[i] = absolutePoses[parentIndex] * _defaultRelativePoses[i]; } } + */ clearConstraints(); for (int i = 0; i < numJoints; ++i) { From 03fdc1396c83d728f7df78a5358d97b4b26b474b Mon Sep 17 00:00:00 2001 From: Sam Cake Date: Wed, 31 May 2017 23:20:10 -0700 Subject: [PATCH 169/357] Fixing the warnings --- interface/src/avatar/MyAvatar.cpp | 4 ++-- libraries/avatars/src/AvatarData.cpp | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index 72a9281564..b9c4ac8d5e 100755 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -2770,7 +2770,7 @@ glm::mat4 MyAvatar::getLeftFootCalibrationMat() const { auto leftFootRot = getAbsoluteDefaultJointRotationInObjectFrame(leftFootIndex); return createMatFromQuatAndPos(leftFootRot, leftFootPos); } else { - return createMatFromQuatAndPos(DEFAULT_AVATAR_LEFTFOOT_POS, DEFAULT_AVATAR_LEFTFOOT_POS); + return createMatFromQuatAndPos(DEFAULT_AVATAR_LEFTFOOT_ROT, DEFAULT_AVATAR_LEFTFOOT_POS); } } @@ -2782,7 +2782,7 @@ glm::mat4 MyAvatar::getRightFootCalibrationMat() const { auto rightFootRot = getAbsoluteDefaultJointRotationInObjectFrame(rightFootIndex); return createMatFromQuatAndPos(rightFootRot, rightFootPos); } else { - return createMatFromQuatAndPos(DEFAULT_AVATAR_RIGHTFOOT_POS, DEFAULT_AVATAR_RIGHTFOOT_POS); + return createMatFromQuatAndPos(DEFAULT_AVATAR_RIGHTFOOT_ROT, DEFAULT_AVATAR_RIGHTFOOT_POS); } } diff --git a/libraries/avatars/src/AvatarData.cpp b/libraries/avatars/src/AvatarData.cpp index d82068b8ac..196a284f51 100644 --- a/libraries/avatars/src/AvatarData.cpp +++ b/libraries/avatars/src/AvatarData.cpp @@ -850,7 +850,8 @@ int AvatarData::parseDataFromBuffer(const QByteArray& buffer) { glm::quat sensorToWorldQuat; unpackOrientationQuatFromSixBytes(data->sensorToWorldQuat, sensorToWorldQuat); float sensorToWorldScale; - unpackFloatScalarFromSignedTwoByteFixed((int16_t*)&data->sensorToWorldScale, &sensorToWorldScale, SENSOR_TO_WORLD_SCALE_RADIX); + auto srcSensorToWorldScale = data->sensorToWorldScale; + unpackFloatScalarFromSignedTwoByteFixed((int16_t*)&srcSensorToWorldScale, &sensorToWorldScale, SENSOR_TO_WORLD_SCALE_RADIX); glm::vec3 sensorToWorldTrans(data->sensorToWorldTrans[0], data->sensorToWorldTrans[1], data->sensorToWorldTrans[2]); glm::mat4 sensorToWorldMatrix = createMatFromScaleQuatAndPos(glm::vec3(sensorToWorldScale), sensorToWorldQuat, sensorToWorldTrans); if (_sensorToWorldMatrixCache.get() != sensorToWorldMatrix) { From 3c9b14ee94863f00ae9a36d6759075bcb0c00258 Mon Sep 17 00:00:00 2001 From: Sam Cake Date: Wed, 31 May 2017 23:26:20 -0700 Subject: [PATCH 170/357] Oene more fix --- interface/src/avatar/MyAvatar.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index b9c4ac8d5e..966bca252e 100755 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -2805,7 +2805,7 @@ glm::mat4 MyAvatar::getLeftArmCalibrationMat() const { auto leftArmRot = getAbsoluteDefaultJointRotationInObjectFrame(leftArmIndex); return createMatFromQuatAndPos(leftArmRot, leftArmPos); } else { - return createMatFromQuatAndPos(DEFAULT_AVATAR_LEFTARM_ROT, DEFAULT_AVATAR_RIGHTARM_POS); + return createMatFromQuatAndPos(DEFAULT_AVATAR_LEFTARM_ROT, DEFAULT_AVATAR_LEFTARM_POS); } } From c7c07b28e94bc9d0b6aa0ac767e39aacb84c0b8c Mon Sep 17 00:00:00 2001 From: NeetBhagat Date: Thu, 1 Jun 2017 12:14:54 +0530 Subject: [PATCH 171/357] Resolve the reviewed comments of @ZappoMan --- interface/src/Application.cpp | 8 +------- libraries/plugins/src/plugins/DisplayPlugin.h | 1 + plugins/oculus/src/OculusBaseDisplayPlugin.h | 1 + 3 files changed, 3 insertions(+), 7 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index ac39f51d7e..b8bfff8c5f 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -245,7 +245,6 @@ Setting::Handle maxOctreePacketsPerSecond("maxOctreePPS", DEFAULT_MAX_OCTRE static const QString MARKETPLACE_CDN_HOSTNAME = "mpassets.highfidelity.com"; static const int INTERVAL_TO_CHECK_HMD_WORN_STATUS = 500; // milliseconds -static const QString DISPLAY_PLUGIN_NAME_OCULUS_RIFT = "Oculus Rift"; static const QString DESKTOP_DISPLAY_PLUGIN_NAME = "Desktop"; const QHash Application::_acceptedExtensions { @@ -1344,12 +1343,7 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo _autoSwitchDisplayModeSupportedHMDPlugin = nullptr; foreach(DisplayPluginPointer displayPlugin, PluginManager::getInstance()->getDisplayPlugins()) { if (displayPlugin->isHmd() && - displayPlugin->getName() == DISPLAY_PLUGIN_NAME_OCULUS_RIFT) { - - // Currently auto switch display mode support is only for Oculus Rift - // To support other plugins, add a condition - // (|| displayPlugin->getName() == "Other HMD Display Plugin Name") - + displayPlugin->getSupportsAutoSwitch()) { _autoSwitchDisplayModeSupportedHMDPlugin = displayPlugin; _autoSwitchDisplayModeSupportedHMDPluginName = _autoSwitchDisplayModeSupportedHMDPlugin->getName(); diff --git a/libraries/plugins/src/plugins/DisplayPlugin.h b/libraries/plugins/src/plugins/DisplayPlugin.h index 754c919fd4..297bdb2cca 100644 --- a/libraries/plugins/src/plugins/DisplayPlugin.h +++ b/libraries/plugins/src/plugins/DisplayPlugin.h @@ -200,6 +200,7 @@ public: virtual float newFramePresentRate() const { return -1.0f; } // Rate at which rendered frames are being skipped virtual float droppedFrameRate() const { return -1.0f; } + virtual bool getSupportsAutoSwitch() { return false; } // Hardware specific stats virtual QJsonObject getHardwareStats() const { return QJsonObject(); } diff --git a/plugins/oculus/src/OculusBaseDisplayPlugin.h b/plugins/oculus/src/OculusBaseDisplayPlugin.h index 1f54742c2d..bfdcc5db1e 100644 --- a/plugins/oculus/src/OculusBaseDisplayPlugin.h +++ b/plugins/oculus/src/OculusBaseDisplayPlugin.h @@ -26,6 +26,7 @@ public: void resetSensors() override final; bool beginFrameRender(uint32_t frameIndex) override; float getTargetFrameRate() const override { return _hmdDesc.DisplayRefreshRate; } + bool getSupportsAutoSwitch() override final { return true; } protected: From 07eb1d89e1b1bb4ab2165aa915cfba8bfdcbfc95 Mon Sep 17 00:00:00 2001 From: Sam Cake Date: Wed, 31 May 2017 23:59:44 -0700 Subject: [PATCH 172/357] fixing the warning on macosx about the non portable file name --- plugins/oculusLegacy/src/OculusLegacyDisplayPlugin.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/oculusLegacy/src/OculusLegacyDisplayPlugin.cpp b/plugins/oculusLegacy/src/OculusLegacyDisplayPlugin.cpp index b759a06aee..80c8698bb6 100644 --- a/plugins/oculusLegacy/src/OculusLegacyDisplayPlugin.cpp +++ b/plugins/oculusLegacy/src/OculusLegacyDisplayPlugin.cpp @@ -24,7 +24,7 @@ #include #include #include -#include +#include #include From ea6be93c9c872768cec0c88a029323027a10242c Mon Sep 17 00:00:00 2001 From: Sam Cake Date: Thu, 1 Jun 2017 01:24:57 -0700 Subject: [PATCH 173/357] adding another flavor of the prepare stencil --- .../render-utils/src/StencilMaskPass.cpp | 5 +++-- libraries/render-utils/src/StencilMaskPass.h | 10 +++++++-- .../render-utils/src/stencil_drawMask.slf | 21 +++++++++++++++++++ 3 files changed, 32 insertions(+), 4 deletions(-) create mode 100644 libraries/render-utils/src/stencil_drawMask.slf diff --git a/libraries/render-utils/src/StencilMaskPass.cpp b/libraries/render-utils/src/StencilMaskPass.cpp index 3194dddb49..358f772354 100644 --- a/libraries/render-utils/src/StencilMaskPass.cpp +++ b/libraries/render-utils/src/StencilMaskPass.cpp @@ -18,6 +18,7 @@ #include +#include "stencil_drawMask_frag.h" using namespace render; @@ -99,7 +100,7 @@ gpu::PipelinePointer PrepareStencil::getMeshStencilPipeline() { gpu::PipelinePointer PrepareStencil::getPaintStencilPipeline() { if (!_paintStencilPipeline) { auto vs = gpu::StandardShaderLib::getDrawUnitQuadTexcoordVS(); - auto ps = gpu::StandardShaderLib::getDrawNadaPS(); + auto ps = gpu::Shader::createPixel(std::string(stencil_drawMask_frag)); auto program = gpu::Shader::createProgram(vs, ps); gpu::Shader::makeProgram((*program)); @@ -123,7 +124,7 @@ void PrepareStencil::run(const RenderContextPointer& renderContext, const gpu::F batch.setViewportTransform(args->_viewport); - if (true) { + if (false) { batch.setPipeline(getMeshStencilPipeline()); auto mesh = getMesh(); diff --git a/libraries/render-utils/src/StencilMaskPass.h b/libraries/render-utils/src/StencilMaskPass.h index 0532e23fac..d1de0cd1f4 100644 --- a/libraries/render-utils/src/StencilMaskPass.h +++ b/libraries/render-utils/src/StencilMaskPass.h @@ -16,7 +16,6 @@ #include #include - class DrawStencilDeferred { public: using JobModel = render::Job::ModelI; @@ -31,7 +30,14 @@ protected: class PrepareStencil { public: - using JobModel = render::Job::ModelI; + class Config : public render::JobConfig { + public: + Config(bool enabled = true) : JobConfig(enabled) {} + }; + + using JobModel = render::Job::ModelI; + + void configure(const Config& config) {} void run(const render::RenderContextPointer& renderContext, const gpu::FramebufferPointer& dstFramebuffer); diff --git a/libraries/render-utils/src/stencil_drawMask.slf b/libraries/render-utils/src/stencil_drawMask.slf new file mode 100644 index 0000000000..cc81fca677 --- /dev/null +++ b/libraries/render-utils/src/stencil_drawMask.slf @@ -0,0 +1,21 @@ +<@include gpu/Config.slh@> +<$VERSION_HEADER$> +// Generated on <$_SCRIBE_DATE$> +// +// stencil_drawMask.slf +// fragment shader +// +// Created by Sam Gateau on 5/31/17. +// Copyright 2017 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +in vec2 varTexCoord0; + +void main(void) { + vec2 pos = varTexCoord0 * 2.0 - vec2(1.0); + pos.x = pos.x * (pos.x > 0.0 ? 2.0 : -2.0) - 1.0; + if (1.0 - dot(pos.xy, pos.xy) > 0.0 ) discard; +} From 47e65e942e1abbed8d081208862d46b63371b464 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Thu, 1 Jun 2017 23:42:08 +1200 Subject: [PATCH 174/357] Gradually relax hands from controlled positions when lose tracking --- .../animation/src/AnimInverseKinematics.cpp | 20 ++++- .../animation/src/AnimInverseKinematics.h | 10 +++ libraries/animation/src/Rig.cpp | 85 ++++++++++++++++--- libraries/animation/src/Rig.h | 9 ++ 4 files changed, 110 insertions(+), 14 deletions(-) diff --git a/libraries/animation/src/AnimInverseKinematics.cpp b/libraries/animation/src/AnimInverseKinematics.cpp index 5e89093b23..5b5d70be01 100644 --- a/libraries/animation/src/AnimInverseKinematics.cpp +++ b/libraries/animation/src/AnimInverseKinematics.cpp @@ -453,7 +453,6 @@ const AnimPoseVec& AnimInverseKinematics::evaluate(const AnimVariantMap& animVar //virtual const AnimPoseVec& AnimInverseKinematics::overlay(const AnimVariantMap& animVars, const AnimContext& context, float dt, Triggers& triggersOut, const AnimPoseVec& underPoses) { - // allows solutionSource to be overridden by an animVar auto solutionSource = animVars.lookup(_solutionSourceVar, (int)_solutionSource); @@ -581,6 +580,16 @@ const AnimPoseVec& AnimInverseKinematics::overlay(const AnimVariantMap& animVars } } + if (_leftHandIndex > -1) { + _uncontrolledLeftHandPose = _skeleton->getAbsolutePose(_leftHandIndex, underPoses); + } + if (_rightHandIndex > -1) { + _uncontrolledRightHandPose = _skeleton->getAbsolutePose(_rightHandIndex, underPoses); + } + if (_hipsIndex > -1) { + _uncontrolledHipsPose = _skeleton->getAbsolutePose(_hipsIndex, underPoses); + } + return _relativePoses; } @@ -1064,12 +1073,21 @@ void AnimInverseKinematics::setSkeletonInternal(AnimSkeleton::ConstPointer skele } else { _hipsParentIndex = -1; } + + _leftHandIndex = _skeleton->nameToJointIndex("LeftHand"); + _rightHandIndex = _skeleton->nameToJointIndex("RightHand"); } else { clearConstraints(); _headIndex = -1; _hipsIndex = -1; _hipsParentIndex = -1; + _leftHandIndex = -1; + _rightHandIndex = -1; } + + _uncontrolledLeftHandPose = AnimPose(); + _uncontrolledRightHandPose = AnimPose(); + _uncontrolledHipsPose = AnimPose(); } static glm::vec3 sphericalToCartesian(float phi, float theta) { diff --git a/libraries/animation/src/AnimInverseKinematics.h b/libraries/animation/src/AnimInverseKinematics.h index 0267f14650..35845224e2 100644 --- a/libraries/animation/src/AnimInverseKinematics.h +++ b/libraries/animation/src/AnimInverseKinematics.h @@ -56,6 +56,10 @@ public: void setSolutionSource(SolutionSource solutionSource) { _solutionSource = solutionSource; } void setSolutionSourceVar(const QString& solutionSourceVar) { _solutionSourceVar = solutionSourceVar; } + const AnimPose& getUncontrolledLeftHandPose() { return _uncontrolledLeftHandPose; } + const AnimPose& getUncontrolledRightHandPose() { return _uncontrolledRightHandPose; } + const AnimPose& getUncontrolledHipPose() { return _uncontrolledHipsPose; } + protected: void computeTargets(const AnimVariantMap& animVars, std::vector& targets, const AnimPoseVec& underPoses); void solveWithCyclicCoordinateDescent(const AnimContext& context, const std::vector& targets); @@ -118,6 +122,8 @@ protected: int _hipsIndex { -1 }; int _hipsParentIndex { -1 }; int _hipsTargetIndex { -1 }; + int _leftHandIndex { -1 }; + int _rightHandIndex { -1 }; // _maxTargetIndex is tracked to help optimize the recalculation of absolute poses // during the the cyclic coordinate descent algorithm @@ -127,6 +133,10 @@ protected: bool _previousEnableDebugIKTargets { false }; SolutionSource _solutionSource { SolutionSource::RelaxToUnderPoses }; QString _solutionSourceVar; + + AnimPose _uncontrolledLeftHandPose { AnimPose() }; + AnimPose _uncontrolledRightHandPose { AnimPose() }; + AnimPose _uncontrolledHipsPose { AnimPose() }; }; #endif // hifi_AnimInverseKinematics_h diff --git a/libraries/animation/src/Rig.cpp b/libraries/animation/src/Rig.cpp index add3a461af..6b478da5fc 100644 --- a/libraries/animation/src/Rig.cpp +++ b/libraries/animation/src/Rig.cpp @@ -1172,10 +1172,10 @@ void Rig::updateFromHandAndFeetParameters(const HandAndFeetParameters& params, f // TODO: add isHipsEnabled bool bodySensorTrackingEnabled = params.isLeftFootEnabled || params.isRightFootEnabled; + const float RELAX_DURATION = 0.6f; + if (params.isLeftEnabled) { - glm::vec3 handPosition = params.leftPosition; - if (!bodySensorTrackingEnabled) { // prevent the hand IK targets from intersecting the body capsule glm::vec3 displacement; @@ -1187,16 +1187,46 @@ void Rig::updateFromHandAndFeetParameters(const HandAndFeetParameters& params, f _animVars.set("leftHandPosition", handPosition); _animVars.set("leftHandRotation", params.leftOrientation); _animVars.set("leftHandType", (int)IKTarget::Type::RotationAndPosition); + + _isLeftHandControlled = true; + _lastLeftHandControlledPosition = handPosition; + _lastLeftHandControlledOrientation = params.leftOrientation; } else { - _animVars.unset("leftHandPosition"); - _animVars.unset("leftHandRotation"); - _animVars.set("leftHandType", (int)IKTarget::Type::HipsRelativeRotationAndPosition); + if (_isLeftHandControlled) { + _leftHandRelaxDuration = RELAX_DURATION; + _isLeftHandControlled = false; + } + + if (_leftHandRelaxDuration > 0) { + // Move hand from controlled position to non-controlled position. + _leftHandRelaxDuration = std::max(_leftHandRelaxDuration - dt, 0.0f); + + auto ikNode = getAnimInverseKinematicsNode(); + if (ikNode) { + float alpha = _leftHandRelaxDuration / RELAX_DURATION; + auto uncontrolledHandPose = ikNode->getUncontrolledLeftHandPose(); + auto uncontrolledHipsPose = ikNode->getUncontrolledHipPose(); + + glm::vec3 relaxedPosition = _geometryOffset * (uncontrolledHandPose.trans() - uncontrolledHipsPose.trans()); + glm::vec3 handPosition = alpha * _lastLeftHandControlledPosition + (1.0f - alpha) * relaxedPosition; + + const AnimPose geometryToRigPose(_geometryToRigTransform); + glm::quat handOrientation = geometryToRigPose.rot() * uncontrolledHandPose.rot(); + handOrientation = slerp(handOrientation, _lastLeftHandControlledOrientation, alpha); + + _animVars.set("leftHandPosition", handPosition); + _animVars.set("leftHandRotation", handOrientation); + _animVars.set("leftHandType", (int)IKTarget::Type::RotationAndPosition); + } + } else { + _animVars.unset("leftHandPosition"); + _animVars.unset("leftHandRotation"); + _animVars.set("leftHandType", (int)IKTarget::Type::HipsRelativeRotationAndPosition); + } } if (params.isRightEnabled) { - glm::vec3 handPosition = params.rightPosition; - if (!bodySensorTrackingEnabled) { // prevent the hand IK targets from intersecting the body capsule glm::vec3 displacement; @@ -1208,10 +1238,42 @@ void Rig::updateFromHandAndFeetParameters(const HandAndFeetParameters& params, f _animVars.set("rightHandPosition", handPosition); _animVars.set("rightHandRotation", params.rightOrientation); _animVars.set("rightHandType", (int)IKTarget::Type::RotationAndPosition); + + _isRightHandControlled = true; + _lastRightHandControlledPosition = handPosition; + _lastRightHandControlledOrientation = params.rightOrientation; } else { - _animVars.unset("rightHandPosition"); - _animVars.unset("rightHandRotation"); - _animVars.set("rightHandType", (int)IKTarget::Type::HipsRelativeRotationAndPosition); + if (_isRightHandControlled) { + _rightHandRelaxDuration = RELAX_DURATION; + _isRightHandControlled = false; + } + + if (_rightHandRelaxDuration > 0) { + // Move hand from controlled position to non-controlled position. + _rightHandRelaxDuration = std::max(_rightHandRelaxDuration - dt, 0.0f); + + auto ikNode = getAnimInverseKinematicsNode(); + if (ikNode) { + float alpha = _rightHandRelaxDuration / RELAX_DURATION; + auto uncontrolledHandPose = ikNode->getUncontrolledRightHandPose(); + auto uncontrolledHipsPose = ikNode->getUncontrolledHipPose(); + + glm::vec3 relaxedPosition = _geometryOffset * (uncontrolledHandPose.trans() - uncontrolledHipsPose.trans()); + glm::vec3 handPosition = alpha * _lastRightHandControlledPosition + (1.0f - alpha) * relaxedPosition; + + const AnimPose geometryToRigPose(_geometryToRigTransform); + glm::quat handOrientation = geometryToRigPose.rot() * uncontrolledHandPose.rot(); + handOrientation = slerp(handOrientation, _lastRightHandControlledOrientation, alpha); + + _animVars.set("rightHandPosition", handPosition); + _animVars.set("rightHandRotation", handOrientation); + _animVars.set("rightHandType", (int)IKTarget::Type::RotationAndPosition); + } + } else { + _animVars.unset("rightHandPosition"); + _animVars.unset("rightHandRotation"); + _animVars.set("rightHandType", (int)IKTarget::Type::HipsRelativeRotationAndPosition); + } } if (params.isLeftFootEnabled) { @@ -1233,7 +1295,6 @@ void Rig::updateFromHandAndFeetParameters(const HandAndFeetParameters& params, f _animVars.unset("rightFootRotation"); _animVars.set("rightFootType", (int)IKTarget::Type::RotationAndPosition); } - } } @@ -1509,5 +1570,3 @@ void Rig::computeAvatarBoundingCapsule( glm::vec3 rigCenter = (geometryToRig * (0.5f * (totalExtents.maximum + totalExtents.minimum))); localOffsetOut = rigCenter - (geometryToRig * rootPosition); } - - diff --git a/libraries/animation/src/Rig.h b/libraries/animation/src/Rig.h index c9d52d8c72..1c7e40a04a 100644 --- a/libraries/animation/src/Rig.h +++ b/libraries/animation/src/Rig.h @@ -355,6 +355,15 @@ private: QMap _stateHandlers; int _nextStateHandlerId { 0 }; QMutex _stateMutex; + + bool _isLeftHandControlled { false }; + bool _isRightHandControlled { false }; + float _leftHandRelaxDuration { 0.0f }; + float _rightHandRelaxDuration { 0.0f }; + glm::vec3 _lastLeftHandControlledPosition; + glm::vec3 _lastRightHandControlledPosition; + glm::quat _lastLeftHandControlledOrientation; + glm::quat _lastRightHandControlledOrientation; }; #endif /* defined(__hifi__Rig__) */ From a17886aa58e90b0a9ffd7b1aec9db0218084d4d2 Mon Sep 17 00:00:00 2001 From: David Kelly Date: Thu, 1 Jun 2017 07:24:03 -0700 Subject: [PATCH 175/357] do not allow sorting on non-sortable columns in PAL --- interface/resources/qml/hifi/Pal.qml | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/interface/resources/qml/hifi/Pal.qml b/interface/resources/qml/hifi/Pal.qml index 8f6b00f459..634da229d3 100644 --- a/interface/resources/qml/hifi/Pal.qml +++ b/interface/resources/qml/hifi/Pal.qml @@ -388,8 +388,13 @@ Rectangle { sortIndicatorColumn: settings.nearbySortIndicatorColumn; sortIndicatorOrder: settings.nearbySortIndicatorOrder; onSortIndicatorColumnChanged: { - settings.nearbySortIndicatorColumn = sortIndicatorColumn; - sortModel(); + if (sortIndicatorColumn > 1) { + // these are not sortable, switch back to last column + sortIndicatorColumn = settings.nearbySortIndicatorColumn; + } else { + settings.nearbySortIndicatorColumn = sortIndicatorColumn; + sortModel(); + } } onSortIndicatorOrderChanged: { settings.nearbySortIndicatorOrder = sortIndicatorOrder; From f79c9ea0218c3c50580caeb5b48ec177423d9e7a Mon Sep 17 00:00:00 2001 From: David Kelly Date: Thu, 1 Jun 2017 07:29:31 -0700 Subject: [PATCH 176/357] we can sort on ignored --- interface/resources/qml/hifi/Pal.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/resources/qml/hifi/Pal.qml b/interface/resources/qml/hifi/Pal.qml index 634da229d3..2d6b21b219 100644 --- a/interface/resources/qml/hifi/Pal.qml +++ b/interface/resources/qml/hifi/Pal.qml @@ -388,7 +388,7 @@ Rectangle { sortIndicatorColumn: settings.nearbySortIndicatorColumn; sortIndicatorOrder: settings.nearbySortIndicatorOrder; onSortIndicatorColumnChanged: { - if (sortIndicatorColumn > 1) { + if (sortIndicatorColumn > 2) { // these are not sortable, switch back to last column sortIndicatorColumn = settings.nearbySortIndicatorColumn; } else { From 813feeb8fdeb8f6414703b8e73ed5f3a454813c9 Mon Sep 17 00:00:00 2001 From: "Anthony J. Thibault" Date: Thu, 1 Jun 2017 08:56:42 -0700 Subject: [PATCH 177/357] Limit spine spline compression/stretch to 15% --- .../animation/src/AnimInverseKinematics.cpp | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/libraries/animation/src/AnimInverseKinematics.cpp b/libraries/animation/src/AnimInverseKinematics.cpp index 911d966057..4fd769bec6 100644 --- a/libraries/animation/src/AnimInverseKinematics.cpp +++ b/libraries/animation/src/AnimInverseKinematics.cpp @@ -519,10 +519,26 @@ void AnimInverseKinematics::solveTargetWithSpline(const AnimContext& context, co AnimPose absPose = AnimPose(glm::vec3(1.0f), rot, trans) * splineJointInfo.offsetPose; AnimPose relPose = parentAbsPose.inverse() * absPose; _rotationAccumulators[splineJointInfo.jointIndex].add(relPose.rot(), target.getWeight()); + + // constrain the amount the spine can stretch or compress + float length = glm::length(relPose.trans()); + float defaultLength = glm::length(_skeleton->getRelativeDefaultPose(splineJointInfo.jointIndex).trans()); + const float STRETCH_COMPRESS_PERCENTAGE = 0.15f; + const float MAX_LENGTH = defaultLength * (1.0f + STRETCH_COMPRESS_PERCENTAGE); + const float MIN_LENGTH = defaultLength * (1.0f - STRETCH_COMPRESS_PERCENTAGE); + bool constrained = false; + if (length > MAX_LENGTH) { + relPose.trans() = (relPose.trans() / length) * MAX_LENGTH; + constrained = true; + } else if (length < MIN_LENGTH) { + relPose.trans() = (relPose.trans() / length) * MIN_LENGTH; + constrained = true; + } + _translationAccumulators[splineJointInfo.jointIndex].add(relPose.trans(), target.getWeight()); if (debug) { - debugJointMap[splineJointInfo.jointIndex] = DebugJoint(relPose.rot(), relPose.trans(), false); + debugJointMap[splineJointInfo.jointIndex] = DebugJoint(relPose.rot(), relPose.trans(), constrained); } parentAbsPose = absPose; From 257813ec380ee1c4b71ca596e2d8ebc214bfaebf Mon Sep 17 00:00:00 2001 From: samcake Date: Thu, 1 Jun 2017 09:19:02 -0700 Subject: [PATCH 178/357] comment the code --- libraries/avatars/src/AvatarData.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/libraries/avatars/src/AvatarData.cpp b/libraries/avatars/src/AvatarData.cpp index 196a284f51..4407e12295 100644 --- a/libraries/avatars/src/AvatarData.cpp +++ b/libraries/avatars/src/AvatarData.cpp @@ -850,6 +850,8 @@ int AvatarData::parseDataFromBuffer(const QByteArray& buffer) { glm::quat sensorToWorldQuat; unpackOrientationQuatFromSixBytes(data->sensorToWorldQuat, sensorToWorldQuat); float sensorToWorldScale; + // Grab a local copy of sensorToWorldScale to be able to use the unpack function with a pointer on it, + // a direct pointer on the struct attribute triggers warnings because of potential misalignement. auto srcSensorToWorldScale = data->sensorToWorldScale; unpackFloatScalarFromSignedTwoByteFixed((int16_t*)&srcSensorToWorldScale, &sensorToWorldScale, SENSOR_TO_WORLD_SCALE_RADIX); glm::vec3 sensorToWorldTrans(data->sensorToWorldTrans[0], data->sensorToWorldTrans[1], data->sensorToWorldTrans[2]); From a1e073792809f3f1f8f7aa09204c5390e815e181 Mon Sep 17 00:00:00 2001 From: Dante Ruiz Date: Thu, 1 Jun 2017 18:06:06 +0100 Subject: [PATCH 179/357] saving work --- .../controllers/src/controllers/UserInputMapper.cpp | 10 ++++++++++ .../controllers/src/controllers/UserInputMapper.h | 1 + .../controllers/impl/endpoints/ActionEndpoint.cpp | 2 +- .../controllers/impl/endpoints/StandardEndpoint.h | 12 ++++++++++++ 4 files changed, 24 insertions(+), 1 deletion(-) diff --git a/libraries/controllers/src/controllers/UserInputMapper.cpp b/libraries/controllers/src/controllers/UserInputMapper.cpp index 570081d1f1..bd0eeda6bd 100755 --- a/libraries/controllers/src/controllers/UserInputMapper.cpp +++ b/libraries/controllers/src/controllers/UserInputMapper.cpp @@ -329,6 +329,16 @@ QString UserInputMapper::getActionName(Action action) const { return QString(); } +QString UserInputMapper::getStandardPoseName(uint16_t pose) { + Locker locker(_lock); + for (auto posePair : getStandardInputs()) { + if (posePair.first.channel == pose) { + return posePair.second; + } + } + return QString(); +} + QVector UserInputMapper::getActionNames() const { Locker locker(_lock); QVector result; diff --git a/libraries/controllers/src/controllers/UserInputMapper.h b/libraries/controllers/src/controllers/UserInputMapper.h index 05a286cc10..0c8bb51008 100644 --- a/libraries/controllers/src/controllers/UserInputMapper.h +++ b/libraries/controllers/src/controllers/UserInputMapper.h @@ -80,6 +80,7 @@ namespace controller { QVector getAllActions() const; QString getActionName(Action action) const; + QString getStandardPoseName(uint16_t pose); float getActionState(Action action) const { return _actionStates[toInt(action)]; } Pose getPoseState(Action action) const; int findAction(const QString& actionName) const; diff --git a/libraries/controllers/src/controllers/impl/endpoints/ActionEndpoint.cpp b/libraries/controllers/src/controllers/impl/endpoints/ActionEndpoint.cpp index eb834a0bf2..f1bdae1e0b 100644 --- a/libraries/controllers/src/controllers/impl/endpoints/ActionEndpoint.cpp +++ b/libraries/controllers/src/controllers/impl/endpoints/ActionEndpoint.cpp @@ -37,7 +37,7 @@ void ActionEndpoint::apply(const Pose& value, const Pointer& source) { QString actionName = userInputMapper->getActionName(Action(_input.getChannel())); inputRecorder->setActionState(actionName, _currentPose); if (inputRecorder->isPlayingback()) { - _currentPose = inputRecorder->getPoseState(actionName); + //_currentPose = inputRecorder->getPoseState(actionName); } if (!_currentPose.isValid()) { diff --git a/libraries/controllers/src/controllers/impl/endpoints/StandardEndpoint.h b/libraries/controllers/src/controllers/impl/endpoints/StandardEndpoint.h index dfa728d2b6..f6d04b8c86 100644 --- a/libraries/controllers/src/controllers/impl/endpoints/StandardEndpoint.h +++ b/libraries/controllers/src/controllers/impl/endpoints/StandardEndpoint.h @@ -12,6 +12,11 @@ #include "../Endpoint.h" +#include + +#include "../../InputRecorder.h" +#include "../../UserInputMapper.h" + namespace controller { class StandardEndpoint : public VirtualEndpoint { @@ -40,6 +45,13 @@ public: virtual Pose pose() override { _read = true; + InputRecorder* inputRecorder = InputRecorder::getInstance(); + if (inputRecorder->isPlayingback()) { + auto userInputMapper = DependencyManager::get(); + QString actionName = userInputMapper->getStandardPoseName(_input.getChannel()); + qDebug() << actionName; + return inputRecorder->getPoseState(actionName); + } return VirtualEndpoint::pose(); } From b0e4b752d5c58208b2a8d0028177727d3a70af69 Mon Sep 17 00:00:00 2001 From: Vladyslav Stelmakhovskyi Date: Thu, 1 Jun 2017 19:07:17 +0200 Subject: [PATCH 180/357] Implements landscape mode for tablet as rotation instead of stretching --- scripts/system/libraries/WebTablet.js | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/scripts/system/libraries/WebTablet.js b/scripts/system/libraries/WebTablet.js index 757743accc..7545575127 100644 --- a/scripts/system/libraries/WebTablet.js +++ b/scripts/system/libraries/WebTablet.js @@ -22,7 +22,9 @@ var DEFAULT_WIDTH = 0.4375; var DEFAULT_VERTICAL_FIELD_OF_VIEW = 45; // degrees var SENSOR_TO_ROOM_MATRIX = -2; var CAMERA_MATRIX = -7; -var ROT_Y_180 = {x: 0, y: 1, z: 0, w: 0}; +var ROT_Y_180 = {x: 0.0, y: 1.0, z: 0, w: 0}; +var ROT_LANDSCAPE = {x: 1.0, y: 1.0, z: 0, w: 0}; +var ROT_LANDSCAPE_WINDOW = {x: 0.0, y: 0.0, z: 0.0, w: 0}; var ROT_IDENT = {x: 0, y: 0, z: 0, w: 1}; var TABLET_TEXTURE_RESOLUTION = { x: 480, y: 706 }; var INCHES_TO_METERS = 1 / 39.3701; @@ -243,29 +245,30 @@ WebTablet = function (url, width, dpi, hand, clientOnly, location, visible) { }; WebTablet.prototype.getDimensions = function() { - if (this.landscape) { - return { x: this.width * 2, y: this.height, z: this.depth }; - } else { - return { x: this.width, y: this.height, z: this.depth }; - } + return { x: this.width, y: this.height, z: this.depth }; }; WebTablet.prototype.getTabletTextureResolution = function() { if (this.landscape) { - return { x: TABLET_TEXTURE_RESOLUTION.x * 2, y: TABLET_TEXTURE_RESOLUTION.y }; + return { x: TABLET_TEXTURE_RESOLUTION.y , y: TABLET_TEXTURE_RESOLUTION.x }; } else { return TABLET_TEXTURE_RESOLUTION; } }; WebTablet.prototype.setLandscape = function(newLandscapeValue) { - if (this.landscape == newLandscapeValue) { + if (this.landscape === newLandscapeValue) { return; } + + var tabletProperties = {}; + tabletProperties.visible = true; this.landscape = newLandscapeValue; - Overlays.editOverlay(this.tabletEntityID, { dimensions: this.getDimensions() }); + this.calculateTabletAttachmentProperties(NO_HANDS, false, tabletProperties); + Overlays.editOverlay(this.tabletEntityID, tabletProperties); Overlays.editOverlay(this.webOverlayID, { - resolution: this.getTabletTextureResolution() + resolution: this.getTabletTextureResolution(), + rotation: Quat.multiply(Camera.orientation, ROT_LANDSCAPE_WINDOW) }); }; @@ -407,7 +410,7 @@ WebTablet.prototype.calculateWorldAttitudeRelativeToCamera = function (windowPos return { position: worldMousePosition, - rotation: Quat.multiply(Camera.orientation, ROT_Y_180) + rotation: this.landscape ? Quat.multiply(Camera.orientation, ROT_LANDSCAPE) : Quat.multiply(Camera.orientation, ROT_Y_180) }; }; From c686acc071002c14fe0410c8a0ca778cd8276824 Mon Sep 17 00:00:00 2001 From: Dante Ruiz Date: Thu, 1 Jun 2017 18:20:56 +0100 Subject: [PATCH 181/357] fixing build issue --- libraries/controllers/src/controllers/InputRecorder.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/libraries/controllers/src/controllers/InputRecorder.cpp b/libraries/controllers/src/controllers/InputRecorder.cpp index a5bd58196d..c0a3adb4b1 100644 --- a/libraries/controllers/src/controllers/InputRecorder.cpp +++ b/libraries/controllers/src/controllers/InputRecorder.cpp @@ -93,7 +93,7 @@ namespace controller { } - void exportToFile(QJsonObject& object) { + void exportToFile(const QJsonObject& object) { if (!QDir(SAVE_DIRECTORY).exists()) { QDir().mkdir(SAVE_DIRECTORY); } @@ -186,7 +186,8 @@ namespace controller { } void InputRecorder::saveRecording() { - exportToFile(recordDataToJson()); + QJsonObject jsonData = recordDataToJson(); + exportToFile(jsonData); } void InputRecorder::loadRecording(const QString& path) { From e52765b64119b235ad32510f9fe119280d39bd68 Mon Sep 17 00:00:00 2001 From: Dante Ruiz Date: Thu, 1 Jun 2017 18:51:24 +0100 Subject: [PATCH 182/357] playback recording back through the standard inputs --- libraries/controllers/src/controllers/UserInputMapper.cpp | 2 +- .../src/controllers/impl/endpoints/ActionEndpoint.cpp | 3 --- .../src/controllers/impl/endpoints/StandardEndpoint.h | 1 - 3 files changed, 1 insertion(+), 5 deletions(-) diff --git a/libraries/controllers/src/controllers/UserInputMapper.cpp b/libraries/controllers/src/controllers/UserInputMapper.cpp index bd0eeda6bd..79f4325ae6 100755 --- a/libraries/controllers/src/controllers/UserInputMapper.cpp +++ b/libraries/controllers/src/controllers/UserInputMapper.cpp @@ -332,7 +332,7 @@ QString UserInputMapper::getActionName(Action action) const { QString UserInputMapper::getStandardPoseName(uint16_t pose) { Locker locker(_lock); for (auto posePair : getStandardInputs()) { - if (posePair.first.channel == pose) { + if (posePair.first.channel == pose && posePair.first.getType() == ChannelType::POSE) { return posePair.second; } } diff --git a/libraries/controllers/src/controllers/impl/endpoints/ActionEndpoint.cpp b/libraries/controllers/src/controllers/impl/endpoints/ActionEndpoint.cpp index f1bdae1e0b..ef9f04402b 100644 --- a/libraries/controllers/src/controllers/impl/endpoints/ActionEndpoint.cpp +++ b/libraries/controllers/src/controllers/impl/endpoints/ActionEndpoint.cpp @@ -36,9 +36,6 @@ void ActionEndpoint::apply(const Pose& value, const Pointer& source) { auto userInputMapper = DependencyManager::get(); QString actionName = userInputMapper->getActionName(Action(_input.getChannel())); inputRecorder->setActionState(actionName, _currentPose); - if (inputRecorder->isPlayingback()) { - //_currentPose = inputRecorder->getPoseState(actionName); - } if (!_currentPose.isValid()) { return; diff --git a/libraries/controllers/src/controllers/impl/endpoints/StandardEndpoint.h b/libraries/controllers/src/controllers/impl/endpoints/StandardEndpoint.h index f6d04b8c86..2006809fed 100644 --- a/libraries/controllers/src/controllers/impl/endpoints/StandardEndpoint.h +++ b/libraries/controllers/src/controllers/impl/endpoints/StandardEndpoint.h @@ -49,7 +49,6 @@ public: if (inputRecorder->isPlayingback()) { auto userInputMapper = DependencyManager::get(); QString actionName = userInputMapper->getStandardPoseName(_input.getChannel()); - qDebug() << actionName; return inputRecorder->getPoseState(actionName); } return VirtualEndpoint::pose(); From eca05d9c4281cc12187c77abb698f1332f7bf434 Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Thu, 1 Jun 2017 10:57:53 -0700 Subject: [PATCH 183/357] more use of head input --- interface/src/avatar/MySkeletonModel.cpp | 3 +-- interface/src/scripting/HMDScriptingInterface.cpp | 4 ++-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/interface/src/avatar/MySkeletonModel.cpp b/interface/src/avatar/MySkeletonModel.cpp index 20b9ee2850..84e4a9ff83 100644 --- a/interface/src/avatar/MySkeletonModel.cpp +++ b/interface/src/avatar/MySkeletonModel.cpp @@ -59,8 +59,7 @@ void MySkeletonModel::updateRig(float deltaTime, glm::mat4 parentTransform) { } else { if (qApp->isHMDMode()) { // get HMD position from sensor space into world space, and back into rig space - // glm::mat4 worldHMDMat = myAvatar->getHeadControllerPoseInWorldFrame(); - glm::mat4 worldHMDMat = myAvatar->getSensorToWorldMatrix() * myAvatar->getHMDSensorMatrix(); + glm::mat4 worldHMDMat = myAvatar->getHeadControllerPoseInWorldFrame(); glm::mat4 rigToWorld = createMatFromQuatAndPos(getRotation(), getTranslation()); glm::mat4 worldToRig = glm::inverse(rigToWorld); glm::mat4 rigHMDMat = worldToRig * worldHMDMat; diff --git a/interface/src/scripting/HMDScriptingInterface.cpp b/interface/src/scripting/HMDScriptingInterface.cpp index ecc207a519..1227f46eb6 100644 --- a/interface/src/scripting/HMDScriptingInterface.cpp +++ b/interface/src/scripting/HMDScriptingInterface.cpp @@ -122,8 +122,8 @@ bool HMDScriptingInterface::getHUDLookAtPosition3D(glm::vec3& result) const { glm::mat4 HMDScriptingInterface::getWorldHMDMatrix() const { auto myAvatar = DependencyManager::get()->getMyAvatar(); - // return myAvatar->getSensorToWorldMatrix() * (glm::mat4)myAvatar->getHeadControllerPoseInSensorFrame(); - return myAvatar->getSensorToWorldMatrix() * myAvatar->getHMDSensorMatrix(); + // return myAvatar->getSensorToWorldMatrix() * myAvatar->getHMDSensorMatrix(); + return myAvatar->getSensorToWorldMatrix() * myAvatar->getHeadControllerPoseInSensorFrame().getMatrix() * Matrices::Y_180; } glm::vec3 HMDScriptingInterface::getPosition() const { From 0e82b33d6d4cf9cadccde4abd9b33a127d0003b3 Mon Sep 17 00:00:00 2001 From: Dante Ruiz Date: Thu, 1 Jun 2017 19:00:31 +0100 Subject: [PATCH 184/357] final changes --- .../src/controllers/InputRecorder.cpp | 20 +------------------ .../src/controllers/InputRecorder.h | 1 - 2 files changed, 1 insertion(+), 20 deletions(-) diff --git a/libraries/controllers/src/controllers/InputRecorder.cpp b/libraries/controllers/src/controllers/InputRecorder.cpp index c0a3adb4b1..e8bcd3a006 100644 --- a/libraries/controllers/src/controllers/InputRecorder.cpp +++ b/libraries/controllers/src/controllers/InputRecorder.cpp @@ -259,34 +259,16 @@ namespace controller { _poseStateList.push_back(_currentFramePoses); _currentFramePoses.clear(); } - - convertFile(filePath); } _loading = false; } - - void InputRecorder::convertFile(const QString& path) { - if (!QDir(SAVE_DIRECTORY).exists()) { - QDir().mkdir(SAVE_DIRECTORY); - } - - QJsonObject data = recordDataToJson(); - QFile saveFile (path); - if (!saveFile.open(QIODevice::WriteOnly | QIODevice::Truncate)) { - qWarning() << "could not open file: " << path; - return; - } - QJsonDocument saveData(data); - QByteArray compressedData = qCompress(saveData.toJson(QJsonDocument::Compact)); - saveFile.write(compressedData); - } void InputRecorder::stopRecording() { _recording = false; _framesRecorded = (int)_actionStateList.size(); } - + void InputRecorder::startPlayback() { _playback = true; _recording = false; diff --git a/libraries/controllers/src/controllers/InputRecorder.h b/libraries/controllers/src/controllers/InputRecorder.h index a8dd12724a..9adb8e386f 100644 --- a/libraries/controllers/src/controllers/InputRecorder.h +++ b/libraries/controllers/src/controllers/InputRecorder.h @@ -33,7 +33,6 @@ namespace controller { void saveRecording(); void loadRecording(const QString& path); - void convertFile(const QString& path); void startRecording(); void startPlayback(); void stopPlayback(); From aaf9b9ac7feac8fe644465c7085193ed8156a1ec Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Thu, 1 Jun 2017 11:20:36 -0700 Subject: [PATCH 185/357] Update server-console to watch interface via pid rather than marker --- interface/src/main.cpp | 2 +- libraries/networking/src/SandboxUtils.cpp | 8 ++++---- libraries/networking/src/SandboxUtils.h | 2 +- server-console/src/main.js | 22 ++++++++++++++++++++++ 4 files changed, 28 insertions(+), 6 deletions(-) diff --git a/interface/src/main.cpp b/interface/src/main.cpp index 49517eb38e..3862bcc52f 100644 --- a/interface/src/main.cpp +++ b/interface/src/main.cpp @@ -200,7 +200,7 @@ int main(int argc, const char* argv[]) { bool serverContentPathOptionIsSet = parser.isSet(serverContentPathOption); QString serverContentPath = serverContentPathOptionIsSet ? parser.value(serverContentPathOption) : QString(); if (runServer) { - SandboxUtils::runLocalSandbox(serverContentPath, true, RUNNING_MARKER_FILENAME, noUpdater); + SandboxUtils::runLocalSandbox(serverContentPath, true, noUpdater); } Application app(argc, const_cast(argv), startupTime, runningMarkerExisted); diff --git a/libraries/networking/src/SandboxUtils.cpp b/libraries/networking/src/SandboxUtils.cpp index d816f7ebee..c62bd8f982 100644 --- a/libraries/networking/src/SandboxUtils.cpp +++ b/libraries/networking/src/SandboxUtils.cpp @@ -52,9 +52,8 @@ bool readStatus(QByteArray statusData) { return false; } -void runLocalSandbox(QString contentPath, bool autoShutdown, QString runningMarkerName, bool noUpdater) { +void runLocalSandbox(QString contentPath, bool autoShutdown, bool noUpdater) { QString serverPath = "./server-console/server-console.exe"; - qCDebug(networking) << "Running marker path is: " << runningMarkerName; qCDebug(networking) << "Server path is: " << serverPath; qCDebug(networking) << "autoShutdown: " << autoShutdown; qCDebug(networking) << "noUpdater: " << noUpdater; @@ -74,8 +73,9 @@ void runLocalSandbox(QString contentPath, bool autoShutdown, QString runningMark } if (autoShutdown) { - QString interfaceRunningStateFile = RunningMarker::getMarkerFilePath(runningMarkerName); - args << "--shutdownWatcher" << interfaceRunningStateFile; + auto pid = qApp->applicationPid(); + qCDebug(networking) << "autoShutdown pid is" << pid; + args << "--watchProcessShutdown" << QString::number(pid); } if (noUpdater) { diff --git a/libraries/networking/src/SandboxUtils.h b/libraries/networking/src/SandboxUtils.h index 42484b8edf..370b28e1b0 100644 --- a/libraries/networking/src/SandboxUtils.h +++ b/libraries/networking/src/SandboxUtils.h @@ -21,7 +21,7 @@ namespace SandboxUtils { QNetworkReply* getStatus(); bool readStatus(QByteArray statusData); - void runLocalSandbox(QString contentPath, bool autoShutdown, QString runningMarkerName, bool noUpdater); + void runLocalSandbox(QString contentPath, bool autoShutdown, bool noUpdater); }; #endif // hifi_SandboxUtils_h diff --git a/server-console/src/main.js b/server-console/src/main.js index 98bda9a10f..725c6ca0c8 100644 --- a/server-console/src/main.js +++ b/server-console/src/main.js @@ -821,6 +821,15 @@ for (var key in trayIcons) { const notificationIcon = path.join(__dirname, '../resources/console-notification.png'); +function isProcessRunning(pid) { + try { + running = process.kill(pid, 0); + return true; + } catch (e) { + } + return false; +} + function onContentLoaded() { // Disable splash window for now. // maybeShowSplash(); @@ -882,6 +891,19 @@ function onContentLoaded() { startInterface(); } + if (argv.watchProcessShutdown) { + let pid = argv.watchProcessShutdown; + console.log("Watching process: ", pid); + let watchProcessInterval = setInterval(function() { + let isRunning = isProcessRunning(pid); + if (!isRunning) { + log.debug("Watched process is no longer running, shutting down"); + clearTimeout(watchProcessInterval); + forcedShutdown(); + } + }, 5000); + } + // If we were launched with the shutdownWatcher option, then we need to watch for the interface app // shutting down. The interface app will regularly update a running state file which we will check. // If the file doesn't exist or stops updating for a significant amount of time, we will shut down. From 52f910033237ea7d48e5a96adc90149fcad24499 Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Thu, 1 Jun 2017 12:48:42 -0700 Subject: [PATCH 186/357] Fix isProcessRunning error in strict mode --- server-console/src/main.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/server-console/src/main.js b/server-console/src/main.js index 725c6ca0c8..55a45a4991 100644 --- a/server-console/src/main.js +++ b/server-console/src/main.js @@ -823,8 +823,7 @@ const notificationIcon = path.join(__dirname, '../resources/console-notification function isProcessRunning(pid) { try { - running = process.kill(pid, 0); - return true; + return process.kill(pid, 0); } catch (e) { } return false; From 792d9382627295c270a1865b48ea76e6b67fabcd Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Thu, 1 Jun 2017 10:43:47 -0700 Subject: [PATCH 187/357] send quit event during shutdown on thread, with timeout --- interface/src/Application.cpp | 21 +++++++-- interface/src/Application.h | 3 -- interface/src/main.cpp | 8 ---- .../src/networking/ClosureEventSender.cpp | 43 +++++++++++++------ interface/src/networking/ClosureEventSender.h | 22 +++++++--- 5 files changed, 64 insertions(+), 33 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 297ee943fa..a637f9414b 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -11,6 +11,8 @@ #include "Application.h" +#include + #include #include #include @@ -1570,9 +1572,13 @@ void Application::aboutToQuit() { getActiveDisplayPlugin()->deactivate(); - // use the ClosureEventSender via an std::thread (to not use QThread while the application is going down) - // to send an event that says the user asked for the app to close - _userQuitThread = std::thread { &ClosureEventSender::sendQuitStart, DependencyManager::get() }; + // use the ClosureEventSender via a QThread to send an event that says the user asked for the app to close + auto closureEventSender = DependencyManager::get(); + QThread* closureEventThread = new QThread(this); + closureEventSender->moveToThread(closureEventThread); + // sendQuitEventAsync will bail immediately if the UserActivityLogger is not enabled + connect(closureEventThread, &QThread::started, closureEventSender.data(), &ClosureEventSender::sendQuitEventAsync); + closureEventThread->start(); // Hide Running Scripts dialog so that it gets destroyed in an orderly manner; prevents warnings at shutdown. DependencyManager::get()->hide("RunningScripts"); @@ -1738,6 +1744,15 @@ Application::~Application() { _window->deleteLater(); + // make sure that the quit event has finished sending before we take the application down + auto closureEventSender = DependencyManager::get(); + while (!closureEventSender->hasFinishedQuitEvent() && !closureEventSender->hasTimedOutQuitEvent()) { + // yield so we're not spinning + std::this_thread::yield(); + } + // quit the thread used by the closure event sender + closureEventSender->thread()->quit(); + // Can't log to file passed this point, FileLogger about to be deleted qInstallMessageHandler(LogHandler::verboseMessageHandler); } diff --git a/interface/src/Application.h b/interface/src/Application.h index 23673399f6..9cf03f1cef 100644 --- a/interface/src/Application.h +++ b/interface/src/Application.h @@ -13,7 +13,6 @@ #define hifi_Application_h #include -#include #include #include @@ -681,8 +680,6 @@ private: FileScriptingInterface* _fileDownload; AudioInjector* _snapshotSoundInjector { nullptr }; SharedSoundPointer _snapshotSound; - - std::thread _userQuitThread; }; diff --git a/interface/src/main.cpp b/interface/src/main.cpp index 68525dfd1e..63738d2d91 100644 --- a/interface/src/main.cpp +++ b/interface/src/main.cpp @@ -24,13 +24,11 @@ #include #include - #include "AddressManager.h" #include "Application.h" #include "InterfaceLogging.h" #include "UserActivityLogger.h" #include "MainWindow.h" -#include "networking/ClosureEventSender.h" #ifdef HAS_BUGSPLAT #include @@ -268,12 +266,6 @@ int main(int argc, const char* argv[]) { Application::shutdownPlugins(); - if (UserActivityLogger::getInstance().isEnabled()) { - // send a quit finished event here to indicate that this session closed cleanly - std::thread quitCompleteThread { &::ClosureEventSender::sendQuitFinish, DependencyManager::get() }; - quitCompleteThread.join(); - } - qCDebug(interfaceapp, "Normal exit."); #if !defined(DEBUG) && !defined(Q_OS_LINUX) // HACK: exit immediately (don't handle shutdown callbacks) for Release build diff --git a/interface/src/networking/ClosureEventSender.cpp b/interface/src/networking/ClosureEventSender.cpp index f514fa17b6..238629b809 100644 --- a/interface/src/networking/ClosureEventSender.cpp +++ b/interface/src/networking/ClosureEventSender.cpp @@ -9,14 +9,15 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // +#include #include #include -#include #include #include #include #include +#include #include #include @@ -43,11 +44,13 @@ QNetworkRequest createNetworkRequest() { request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json"); + request.setPriority(QNetworkRequest::HighPriority); + return request; } QByteArray postDataForAction(QString action) { - return QString("{\"action\": \"" + action + "\"}").toUtf8(); + return QString("{\"action_name\": \"" + action + "\"}").toUtf8(); } QNetworkReply* replyForAction(QString action) { @@ -55,17 +58,33 @@ QNetworkReply* replyForAction(QString action) { return networkAccessManager.post(createNetworkRequest(), postDataForAction(action)); } -void ClosureEventSender::sendQuitStart() { - - QNetworkReply* reply = replyForAction("quit_start"); - - QEventLoop loop; - QObject::connect(reply, &QNetworkReply::finished, &loop, &QEventLoop::quit); +void ClosureEventSender::sendQuitEventAsync() { + if (UserActivityLogger::getInstance().isEnabled()) { + QNetworkReply* reply = replyForAction("quit"); + connect(reply, &QNetworkReply::finished, this, &ClosureEventSender::handleQuitEventFinished); + _quitEventStartTimestamp = QDateTime::currentMSecsSinceEpoch(); + } else { + _hasFinishedQuitEvent = true; + } } -void ClosureEventSender::sendQuitFinish() { - QNetworkReply* reply = replyForAction("quit_finish"); +void ClosureEventSender::handleQuitEventFinished() { + _hasFinishedQuitEvent = true; - QEventLoop loop; - QObject::connect(reply, &QNetworkReply::finished, &loop, &QEventLoop::quit); + auto reply = qobject_cast(sender()); + if (reply->error() == QNetworkReply::NoError) { + qCDebug(networking) << "Quit event sent successfully"; + } else { + qCDebug(networking) << "Failed to send quit event -" << reply->errorString(); + } + + reply->deleteLater(); } + +bool ClosureEventSender::hasTimedOutQuitEvent() { + const int CLOSURE_EVENT_TIMEOUT_MS = 5000; + return _quitEventStartTimestamp != 0 + && QDateTime::currentMSecsSinceEpoch() - _quitEventStartTimestamp > CLOSURE_EVENT_TIMEOUT_MS; +} + + diff --git a/interface/src/networking/ClosureEventSender.h b/interface/src/networking/ClosureEventSender.h index dc726fc386..be2daca12b 100644 --- a/interface/src/networking/ClosureEventSender.h +++ b/interface/src/networking/ClosureEventSender.h @@ -12,24 +12,32 @@ #ifndef hifi_ClosureEventSender_h #define hifi_ClosureEventSender_h +#include + #include #include #include -class ClosureEventSender : public Dependency { +class ClosureEventSender : public QObject, public Dependency { + Q_OBJECT SINGLETON_DEPENDENCY public: - void setSessionID(QUuid sessionID) { _sessionID = sessionID; } + void sendCrashEventSync(); - void sendQuitStart(); - void sendQuitFinish(); - void sendCrashEvent(); + bool hasTimedOutQuitEvent(); + bool hasFinishedQuitEvent() { return _hasFinishedQuitEvent; } + +public slots: + void sendQuitEventAsync(); + +private slots: + void handleQuitEventFinished(); private: - QUuid _sessionID; - QString _accessToken; + std::atomic _hasFinishedQuitEvent { false }; + std::atomic _quitEventStartTimestamp; }; #endif // hifi_ClosureEventSender_h From 9c1e99fe3f9a353b5fbaa15ecaf892c19b0fc969 Mon Sep 17 00:00:00 2001 From: samcake Date: Thu, 1 Jun 2017 13:06:22 -0700 Subject: [PATCH 188/357] Removing cruft and organizing the stencil config --- .../RenderableParticleEffectEntityItem.cpp | 3 + .../src/RenderablePolyLineEntityItem.cpp | 2 + .../src/RenderablePolyVoxEntityItem.cpp | 5 + .../src/RenderableShapeEntityItem.cpp | 2 + libraries/model/src/model/Skybox.cpp | 2 +- .../src/procedural/ProceduralSkybox.cpp | 2 +- .../render-utils/src/AntialiasingEffect.cpp | 4 + .../src/DeferredLightingEffect.cpp | 4 +- libraries/render-utils/src/GeometryCache.cpp | 20 ++++ libraries/render-utils/src/HitEffect.cpp | 94 ------------------- libraries/render-utils/src/HitEffect.h | 38 -------- libraries/render-utils/src/LightClusters.cpp | 2 + .../render-utils/src/StencilMaskPass.cpp | 63 ++++--------- libraries/render-utils/src/StencilMaskPass.h | 21 ++--- .../render-utils/src/SurfaceGeometryPass.cpp | 1 + .../render-utils/src/ToneMappingEffect.cpp | 3 +- libraries/render-utils/src/ZoneRenderer.cpp | 4 + libraries/render-utils/src/hit_effect.slf | 27 ------ libraries/render-utils/src/hit_effect.slv | 26 ----- 19 files changed, 74 insertions(+), 249 deletions(-) delete mode 100644 libraries/render-utils/src/HitEffect.cpp delete mode 100644 libraries/render-utils/src/HitEffect.h delete mode 100644 libraries/render-utils/src/hit_effect.slf delete mode 100644 libraries/render-utils/src/hit_effect.slv diff --git a/libraries/entities-renderer/src/RenderableParticleEffectEntityItem.cpp b/libraries/entities-renderer/src/RenderableParticleEffectEntityItem.cpp index 34dc86d92a..d813a73773 100644 --- a/libraries/entities-renderer/src/RenderableParticleEffectEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableParticleEffectEntityItem.cpp @@ -13,6 +13,7 @@ #include #include #include +#include #include #include "EntitiesRendererLogging.h" @@ -292,6 +293,7 @@ void RenderableParticleEffectEntityItem::createPipelines() { state->setDepthTest(true, false, gpu::LESS_EQUAL); state->setBlendFunction(true, gpu::State::SRC_ALPHA, gpu::State::BLEND_OP_ADD, gpu::State::ONE, gpu::State::FACTOR_ALPHA, gpu::State::BLEND_OP_ADD, gpu::State::ONE); + PrepareStencil::testMask(*state); auto vertShader = gpu::Shader::createVertex(std::string(untextured_particle_vert)); auto fragShader = gpu::Shader::createPixel(std::string(untextured_particle_frag)); @@ -305,6 +307,7 @@ void RenderableParticleEffectEntityItem::createPipelines() { state->setDepthTest(true, false, gpu::LESS_EQUAL); state->setBlendFunction(true, gpu::State::SRC_ALPHA, gpu::State::BLEND_OP_ADD, gpu::State::ONE, gpu::State::FACTOR_ALPHA, gpu::State::BLEND_OP_ADD, gpu::State::ONE); + PrepareStencil::testMask(*state); auto vertShader = gpu::Shader::createVertex(std::string(textured_particle_vert)); auto fragShader = gpu::Shader::createPixel(std::string(textured_particle_frag)); diff --git a/libraries/entities-renderer/src/RenderablePolyLineEntityItem.cpp b/libraries/entities-renderer/src/RenderablePolyLineEntityItem.cpp index a34a1814b4..1e20956301 100644 --- a/libraries/entities-renderer/src/RenderablePolyLineEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderablePolyLineEntityItem.cpp @@ -12,6 +12,7 @@ #include #include +#include #include #include #include @@ -69,6 +70,7 @@ void RenderablePolyLineEntityItem::createPipeline() { gpu::StatePointer state = gpu::StatePointer(new gpu::State()); state->setDepthTest(true, true, gpu::LESS_EQUAL); + PrepareStencil::testMask(*state); state->setBlendFunction(true, gpu::State::SRC_ALPHA, gpu::State::BLEND_OP_ADD, gpu::State::INV_SRC_ALPHA, gpu::State::FACTOR_ALPHA, gpu::State::BLEND_OP_ADD, gpu::State::ONE); diff --git a/libraries/entities-renderer/src/RenderablePolyVoxEntityItem.cpp b/libraries/entities-renderer/src/RenderablePolyVoxEntityItem.cpp index fd5346093b..7567566919 100644 --- a/libraries/entities-renderer/src/RenderablePolyVoxEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderablePolyVoxEntityItem.cpp @@ -46,6 +46,9 @@ #endif #include "model/Geometry.h" + +#include "StencilMaskPass.h" + #include "EntityTreeRenderer.h" #include "polyvox_vert.h" #include "polyvox_frag.h" @@ -743,6 +746,7 @@ void RenderablePolyVoxEntityItem::render(RenderArgs* args) { auto state = std::make_shared(); state->setCullMode(gpu::State::CULL_BACK); state->setDepthTest(true, true, gpu::LESS_EQUAL); + PrepareStencil::testMaskDrawShape(*state); _pipeline = gpu::Pipeline::create(program, state); @@ -750,6 +754,7 @@ void RenderablePolyVoxEntityItem::render(RenderArgs* args) { wireframeState->setCullMode(gpu::State::CULL_BACK); wireframeState->setDepthTest(true, true, gpu::LESS_EQUAL); wireframeState->setFillMode(gpu::State::FILL_LINE); + PrepareStencil::testMaskDrawShape(*wireframeState); _wireframePipeline = gpu::Pipeline::create(program, wireframeState); } diff --git a/libraries/entities-renderer/src/RenderableShapeEntityItem.cpp b/libraries/entities-renderer/src/RenderableShapeEntityItem.cpp index 1ad60bf7c6..27dd678d91 100644 --- a/libraries/entities-renderer/src/RenderableShapeEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableShapeEntityItem.cpp @@ -13,6 +13,7 @@ #include #include +#include #include #include @@ -93,6 +94,7 @@ void RenderableShapeEntityItem::render(RenderArgs* args) { _procedural->_fragmentSource = simple_frag; _procedural->_opaqueState->setCullMode(gpu::State::CULL_NONE); _procedural->_opaqueState->setDepthTest(true, true, gpu::LESS_EQUAL); + PrepareStencil::testMaskDrawShape(*_procedural->_opaqueState); _procedural->_opaqueState->setBlendFunction(false, gpu::State::SRC_ALPHA, gpu::State::BLEND_OP_ADD, gpu::State::INV_SRC_ALPHA, gpu::State::FACTOR_ALPHA, gpu::State::BLEND_OP_ADD, gpu::State::ONE); diff --git a/libraries/model/src/model/Skybox.cpp b/libraries/model/src/model/Skybox.cpp index d327593573..c47463666e 100755 --- a/libraries/model/src/model/Skybox.cpp +++ b/libraries/model/src/model/Skybox.cpp @@ -97,7 +97,7 @@ void Skybox::render(gpu::Batch& batch, const ViewFrustum& viewFrustum, const Sky } auto skyState = std::make_shared(); - skyState->setStencilTest(true, 0xFF, gpu::State::StencilTest(1, 0xFF, gpu::EQUAL, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP)); + skyState->setStencilTest(true, 0x00, gpu::State::StencilTest(1, 0xFF, gpu::EQUAL, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP)); thePipeline = gpu::Pipeline::create(skyShader, skyState); } diff --git a/libraries/procedural/src/procedural/ProceduralSkybox.cpp b/libraries/procedural/src/procedural/ProceduralSkybox.cpp index f5feb434fa..eaacc5d851 100644 --- a/libraries/procedural/src/procedural/ProceduralSkybox.cpp +++ b/libraries/procedural/src/procedural/ProceduralSkybox.cpp @@ -23,7 +23,7 @@ ProceduralSkybox::ProceduralSkybox() : model::Skybox() { _procedural._fragmentSource = skybox_frag; // Adjust the pipeline state for background using the stencil test _procedural.setDoesFade(false); - _procedural._opaqueState->setStencilTest(true, 0xFF, gpu::State::StencilTest(1, 0xFF, gpu::EQUAL, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP)); + _procedural._opaqueState->setStencilTest(true, 0x00, gpu::State::StencilTest(1, 0xFF, gpu::EQUAL, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP)); } bool ProceduralSkybox::empty() { diff --git a/libraries/render-utils/src/AntialiasingEffect.cpp b/libraries/render-utils/src/AntialiasingEffect.cpp index cd378d4e5b..08f69d07d0 100644 --- a/libraries/render-utils/src/AntialiasingEffect.cpp +++ b/libraries/render-utils/src/AntialiasingEffect.cpp @@ -17,6 +17,7 @@ #include #include "AntialiasingEffect.h" +#include "StencilMaskPass.h" #include "TextureCache.h" #include "FramebufferCache.h" #include "DependencyManager.h" @@ -70,6 +71,8 @@ const gpu::PipelinePointer& Antialiasing::getAntialiasingPipeline() { gpu::StatePointer state = gpu::StatePointer(new gpu::State()); + PrepareStencil::testShape(*state); + state->setDepthTest(false, false, gpu::LESS_EQUAL); // Good to go add the brand new pipeline @@ -93,6 +96,7 @@ const gpu::PipelinePointer& Antialiasing::getBlendPipeline() { gpu::StatePointer state = gpu::StatePointer(new gpu::State()); state->setDepthTest(false, false, gpu::LESS_EQUAL); + PrepareStencil::testShape(*state); // Good to go add the brand new pipeline _blendPipeline = gpu::Pipeline::create(program, state); diff --git a/libraries/render-utils/src/DeferredLightingEffect.cpp b/libraries/render-utils/src/DeferredLightingEffect.cpp index 9f28240065..36a9401d00 100644 --- a/libraries/render-utils/src/DeferredLightingEffect.cpp +++ b/libraries/render-utils/src/DeferredLightingEffect.cpp @@ -243,7 +243,7 @@ static void loadLightProgram(const char* vertSource, const char* fragSource, boo state->setColorWriteMask(true, true, true, false); if (lightVolume) { - state->setStencilTest(true, 0x00, gpu::State::StencilTest(PrepareStencil::STENCIL_SCENE, 0xFF, gpu::EQUAL, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP)); + PrepareStencil::testShape(*state); state->setCullMode(gpu::State::CULL_BACK); // state->setCullMode(gpu::State::CULL_FRONT); @@ -256,7 +256,7 @@ static void loadLightProgram(const char* vertSource, const char* fragSource, boo } else { // Stencil test all the light passes for objects pixels only, not the background - state->setStencilTest(true, 0x00, gpu::State::StencilTest(PrepareStencil::STENCIL_SCENE, 0xFF, gpu::EQUAL, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP)); + PrepareStencil::testShape(*state); state->setCullMode(gpu::State::CULL_BACK); // additive blending diff --git a/libraries/render-utils/src/GeometryCache.cpp b/libraries/render-utils/src/GeometryCache.cpp index f1c995b943..5755d5a031 100644 --- a/libraries/render-utils/src/GeometryCache.cpp +++ b/libraries/render-utils/src/GeometryCache.cpp @@ -24,6 +24,7 @@ #include "TextureCache.h" #include "RenderUtilsLogging.h" +#include "StencilMaskPass.h" #include "gpu/StandardShaderLib.h" @@ -1610,6 +1611,9 @@ void GeometryCache::renderGlowLine(gpu::Batch& batch, const glm::vec3& p1, const state->setBlendFunction(true, gpu::State::SRC_ALPHA, gpu::State::BLEND_OP_ADD, gpu::State::INV_SRC_ALPHA, gpu::State::FACTOR_ALPHA, gpu::State::BLEND_OP_ADD, gpu::State::ONE); + + PrepareStencil::testMask(*state); + gpu::Shader::BindingSet slotBindings; slotBindings.insert(gpu::Shader::Binding(std::string("lineData"), LINE_DATA_SLOT)); gpu::Shader::makeProgram(*program, slotBindings); @@ -1663,11 +1667,14 @@ void GeometryCache::useSimpleDrawPipeline(gpu::Batch& batch, bool noBlend) { // enable decal blend state->setBlendFunction(true, gpu::State::SRC_ALPHA, gpu::State::BLEND_OP_ADD, gpu::State::INV_SRC_ALPHA); + PrepareStencil::testMask(*state); _standardDrawPipeline = gpu::Pipeline::create(program, state); auto stateNoBlend = std::make_shared(); + PrepareStencil::testMaskDrawShape(*state); + auto noBlendPS = gpu::StandardShaderLib::getDrawTextureOpaquePS(); auto programNoBlend = gpu::Shader::createProgram(vs, noBlendPS); gpu::Shader::makeProgram((*programNoBlend)); @@ -1690,12 +1697,14 @@ void GeometryCache::useGridPipeline(gpu::Batch& batch, GridBuffer gridBuffer, bo auto stateLayered = std::make_shared(); stateLayered->setBlendFunction(true, gpu::State::SRC_ALPHA, gpu::State::BLEND_OP_ADD, gpu::State::INV_SRC_ALPHA); + PrepareStencil::testMask(*stateLayered); _gridPipelineLayered = gpu::Pipeline::create(program, stateLayered); auto state = std::make_shared(stateLayered->getValues()); const float DEPTH_BIAS = 0.001f; state->setDepthBias(DEPTH_BIAS); state->setDepthTest(true, false, gpu::LESS_EQUAL); + PrepareStencil::testMaskDrawShape(*state); _gridPipeline = gpu::Pipeline::create(program, state); } @@ -1773,6 +1782,11 @@ static void buildWebShader(const std::string& vertShaderText, const std::string& state->setBlendFunction(blendEnable, gpu::State::SRC_ALPHA, gpu::State::BLEND_OP_ADD, gpu::State::INV_SRC_ALPHA, gpu::State::FACTOR_ALPHA, gpu::State::BLEND_OP_ADD, gpu::State::ONE); + if (blendEnable) { + PrepareStencil::testMaskBlendShape(*state); + } else { + PrepareStencil::testMaskDrawShape(*state); + } pipelinePointerOut = gpu::Pipeline::create(shaderPointerOut, state); } @@ -1858,6 +1872,12 @@ gpu::PipelinePointer GeometryCache::getSimplePipeline(bool textured, bool transp gpu::State::SRC_ALPHA, gpu::State::BLEND_OP_ADD, gpu::State::INV_SRC_ALPHA, gpu::State::FACTOR_ALPHA, gpu::State::BLEND_OP_ADD, gpu::State::ONE); + if (config.isTransparent()) { + PrepareStencil::testMask(*state); + } else { + PrepareStencil::testMaskDrawShape(*state); + } + gpu::ShaderPointer program = (config.isUnlit()) ? _unlitShader : _simpleShader; gpu::PipelinePointer pipeline = gpu::Pipeline::create(program, state); _simplePrograms.insert(config, pipeline); diff --git a/libraries/render-utils/src/HitEffect.cpp b/libraries/render-utils/src/HitEffect.cpp deleted file mode 100644 index 319e94384f..0000000000 --- a/libraries/render-utils/src/HitEffect.cpp +++ /dev/null @@ -1,94 +0,0 @@ -// -// HitEffect.cpp -// interface/src/renderer -// -// Created by Andrzej Kapolka on 7/14/13. -// Copyright 2013 High Fidelity, Inc. -// -// Distributed under the Apache License, Version 2.0. -// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html -// - -// include this before QOpenGLFramebufferObject, which includes an earlier version of OpenGL - - -#include - -#include -#include -#include - -#include "AbstractViewStateInterface.h" -#include "HitEffect.h" - -#include "TextureCache.h" -#include "DependencyManager.h" -#include "ViewFrustum.h" -#include "GeometryCache.h" - -#include - -#include "hit_effect_vert.h" -#include "hit_effect_frag.h" - - -HitEffect::HitEffect() { - _geometryId = DependencyManager::get()->allocateID(); -} - -HitEffect::~HitEffect() { - auto geometryCache = DependencyManager::get(); - if (_geometryId && geometryCache) { - geometryCache->releaseID(_geometryId); - } -} - -const gpu::PipelinePointer& HitEffect::getHitEffectPipeline() { - if (!_hitEffectPipeline) { - auto vs = gpu::Shader::createVertex(std::string(hit_effect_vert)); - auto ps = gpu::Shader::createPixel(std::string(hit_effect_frag)); - gpu::ShaderPointer program = gpu::Shader::createProgram(vs, ps); - - - gpu::Shader::BindingSet slotBindings; - gpu::Shader::makeProgram(*program, slotBindings); - - - gpu::StatePointer state = gpu::StatePointer(new gpu::State()); - - state->setDepthTest(false, false, gpu::LESS_EQUAL); - - // Blend on transparent - state->setBlendFunction(true, - gpu::State::SRC_ALPHA, gpu::State::BLEND_OP_ADD, gpu::State::INV_SRC_ALPHA); - - // Good to go add the brand new pipeline - _hitEffectPipeline = gpu::Pipeline::create(program, state); - } - return _hitEffectPipeline; -} - -void HitEffect::run(const render::RenderContextPointer& renderContext) { - assert(renderContext->args); - assert(renderContext->args->hasViewFrustum()); - RenderArgs* args = renderContext->args; - - gpu::doInBatch(args->_context, [&](gpu::Batch& batch) { - - glm::mat4 projMat; - Transform viewMat; - args->getViewFrustum().evalProjectionMatrix(projMat); - args->getViewFrustum().evalViewTransform(viewMat); - batch.setProjectionTransform(projMat); - batch.setViewTransform(viewMat); - batch.setModelTransform(Transform()); - - batch.setPipeline(getHitEffectPipeline()); - - static const glm::vec4 color(0.0f, 0.0f, 0.0f, 1.0f); - static const glm::vec2 bottomLeft(-1.0f, -1.0f); - static const glm::vec2 topRight(1.0f, 1.0f); - DependencyManager::get()->renderQuad(batch, bottomLeft, topRight, color, _geometryId); - }); -} - diff --git a/libraries/render-utils/src/HitEffect.h b/libraries/render-utils/src/HitEffect.h deleted file mode 100644 index d025d2d980..0000000000 --- a/libraries/render-utils/src/HitEffect.h +++ /dev/null @@ -1,38 +0,0 @@ -// -// hitEffect.h -// hifi -// -// Created by eric levin on 7/17/15. -// -// - -#ifndef hifi_hitEffect_h -#define hifi_hitEffect_h - -#include - -class HitEffectConfig : public render::Job::Config { - Q_OBJECT - Q_PROPERTY(bool enabled MEMBER enabled) -public: - HitEffectConfig() : render::Job::Config(false) {} -}; - -class HitEffect { -public: - using Config = HitEffectConfig; - using JobModel = render::Job::Model; - - HitEffect(); - ~HitEffect(); - void configure(const Config& config) {} - void run(const render::RenderContextPointer& renderContext); - - const gpu::PipelinePointer& getHitEffectPipeline(); - -private: - int _geometryId { 0 }; - gpu::PipelinePointer _hitEffectPipeline; -}; - -#endif diff --git a/libraries/render-utils/src/LightClusters.cpp b/libraries/render-utils/src/LightClusters.cpp index 4145264b2d..7e04b1c2a4 100644 --- a/libraries/render-utils/src/LightClusters.cpp +++ b/libraries/render-utils/src/LightClusters.cpp @@ -16,6 +16,8 @@ #include +#include "StencilMaskPass.h" + #include "lightClusters_drawGrid_vert.h" #include "lightClusters_drawGrid_frag.h" diff --git a/libraries/render-utils/src/StencilMaskPass.cpp b/libraries/render-utils/src/StencilMaskPass.cpp index 358f772354..44e7a571e8 100644 --- a/libraries/render-utils/src/StencilMaskPass.cpp +++ b/libraries/render-utils/src/StencilMaskPass.cpp @@ -22,50 +22,6 @@ using namespace render; -gpu::PipelinePointer DrawStencilDeferred::getOpaquePipeline() { - if (!_opaquePipeline) { - auto vs = gpu::StandardShaderLib::getDrawUnitQuadTexcoordVS(); - auto ps = gpu::StandardShaderLib::getDrawNadaPS(); - auto program = gpu::Shader::createProgram(vs, ps); - gpu::Shader::makeProgram((*program)); - - auto state = std::make_shared(); - state->setDepthTest(true, false, gpu::LESS_EQUAL); - state->setStencilTest(true, 0xFF, gpu::State::StencilTest(PrepareStencil::STENCIL_SCENE, 0xFF, gpu::ALWAYS, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP)); - state->setColorWriteMask(0); - - _opaquePipeline = gpu::Pipeline::create(program, state); - } - return _opaquePipeline; -} - -void DrawStencilDeferred::run(const RenderContextPointer& renderContext, const gpu::FramebufferPointer& deferredFramebuffer) { - return; - assert(renderContext->args); - assert(renderContext->args->hasViewFrustum()); - - // from the touched pixel generate the stencil buffer - RenderArgs* args = renderContext->args; - doInBatch(args->_context, [&](gpu::Batch& batch) { - args->_batch = &batch; - - batch.enableStereo(false); - - // batch.setFramebuffer(deferredFramebuffer); - batch.setViewportTransform(args->_viewport); - batch.setStateScissorRect(args->_viewport); - - batch.setPipeline(getOpaquePipeline()); - - batch.draw(gpu::TRIANGLE_STRIP, 4); - batch.setResourceTexture(0, nullptr); - - }); - args->_batch = nullptr; -} - - - model::MeshPointer PrepareStencil::getMesh() { if (!_mesh) { @@ -89,7 +45,7 @@ gpu::PipelinePointer PrepareStencil::getMeshStencilPipeline() { gpu::Shader::makeProgram((*program)); auto state = std::make_shared(); - state->setStencilTest(true, 0xFF, gpu::State::StencilTest(PrepareStencil::STENCIL_MASK, 0xFF, gpu::ALWAYS, gpu::State::STENCIL_OP_REPLACE, gpu::State::STENCIL_OP_REPLACE, gpu::State::STENCIL_OP_REPLACE)); + drawMask(state); state->setColorWriteMask(0); _meshStencilPipeline = gpu::Pipeline::create(program, state); @@ -105,7 +61,7 @@ gpu::PipelinePointer PrepareStencil::getPaintStencilPipeline() { gpu::Shader::makeProgram((*program)); auto state = std::make_shared(); - state->setStencilTest(true, 0xFF, gpu::State::StencilTest(PrepareStencil::STENCIL_MASK, 0xFF, gpu::ALWAYS, gpu::State::STENCIL_OP_REPLACE, gpu::State::STENCIL_OP_REPLACE, gpu::State::STENCIL_OP_REPLACE)); + drawMask(state); state->setColorWriteMask(0); _paintStencilPipeline = gpu::Pipeline::create(program, state); @@ -143,3 +99,18 @@ void PrepareStencil::run(const RenderContextPointer& renderContext, const gpu::F args->_batch = nullptr; } +void PrepareStencil::drawMask(gpu::State& state) { + state.setStencilTest(true, 0xFF, gpu::State::StencilTest(PrepareStencil::STENCIL_MASK, 0xFF, gpu::ALWAYS, gpu::State::STENCIL_OP_REPLACE, gpu::State::STENCIL_OP_REPLACE, gpu::State::STENCIL_OP_REPLACE)); +} + +void PrepareStencil::testMask(gpu::State& state) { + state.setStencilTest(true, 0x00, gpu::State::StencilTest(PrepareStencil::STENCIL_MASK, 0xFF, gpu::NOT_EQUAL, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP)); +} + +void PrepareStencil::testBackground(gpu::State& state) { + state.setStencilTest(true, 0x00, gpu::State::StencilTest(PrepareStencil::STENCIL_BACKGROUND, 0xFF, gpu::EQUAL, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP)); +} + +void PrepareStencil::testMaskDrawShape(gpu::State& state) { + state.setStencilTest(true, 0xFF, gpu::State::StencilTest(PrepareStencil::STENCIL_MASK, 0xFF, gpu::NOT_EQUAL, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_ZERO)); +} \ No newline at end of file diff --git a/libraries/render-utils/src/StencilMaskPass.h b/libraries/render-utils/src/StencilMaskPass.h index d1de0cd1f4..c65788ebf8 100644 --- a/libraries/render-utils/src/StencilMaskPass.h +++ b/libraries/render-utils/src/StencilMaskPass.h @@ -16,18 +16,6 @@ #include #include -class DrawStencilDeferred { -public: - using JobModel = render::Job::ModelI; - - void run(const render::RenderContextPointer& renderContext, const gpu::FramebufferPointer& deferredFramebuffer); - -protected: - gpu::PipelinePointer _opaquePipeline; - - gpu::PipelinePointer getOpaquePipeline(); -}; - class PrepareStencil { public: class Config : public render::JobConfig { @@ -43,7 +31,14 @@ public: static const gpu::int8 STENCIL_MASK = 2; static const gpu::int8 STENCIL_BACKGROUND = 1; - static const gpu::int8 STENCIL_SCENE = 0; + static const gpu::int8 STENCIL_SHAPE = 0; + + + static void drawMask(gpu::State& state); + static void testMask(gpu::State& state); + static void testBackground(gpu::State& state); + static void testMaskDrawShape(gpu::State& state); + private: gpu::PipelinePointer _meshStencilPipeline; diff --git a/libraries/render-utils/src/SurfaceGeometryPass.cpp b/libraries/render-utils/src/SurfaceGeometryPass.cpp index a13bc2846e..4b13fa2bf0 100644 --- a/libraries/render-utils/src/SurfaceGeometryPass.cpp +++ b/libraries/render-utils/src/SurfaceGeometryPass.cpp @@ -250,6 +250,7 @@ const gpu::PipelinePointer& LinearDepthPass::getDownsamplePipeline() { gpu::StatePointer state = gpu::StatePointer(new gpu::State()); + state->setStencilTest(true, 0xFF, gpu::State::StencilTest(PrepareStencil::STENCIL_SCENE, 0xFF, gpu::EQUAL, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP)); state->setColorWriteMask(true, true, true, false); diff --git a/libraries/render-utils/src/ToneMappingEffect.cpp b/libraries/render-utils/src/ToneMappingEffect.cpp index d54481d246..df4e1e0e6a 100644 --- a/libraries/render-utils/src/ToneMappingEffect.cpp +++ b/libraries/render-utils/src/ToneMappingEffect.cpp @@ -15,7 +15,7 @@ #include #include - +#include "StencilMaskPass.h" #include "FramebufferCache.h" #include "toneMapping_frag.h" @@ -39,6 +39,7 @@ void ToneMappingEffect::init() { slotBindings.insert(gpu::Shader::Binding(std::string("colorMap"), ToneMappingEffect_LightingMapSlot)); gpu::Shader::makeProgram(*blitProgram, slotBindings); auto blitState = std::make_shared(); + blitState->setStencilTest(true, 0xFF, gpu::State::StencilTest(PrepareStencil::STENCIL_SCENE, 0xFF, gpu::EQUAL, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP)); blitState->setColorWriteMask(true, true, true, true); _blitLightBuffer = gpu::PipelinePointer(gpu::Pipeline::create(blitProgram, blitState)); } diff --git a/libraries/render-utils/src/ZoneRenderer.cpp b/libraries/render-utils/src/ZoneRenderer.cpp index 3b4870fd3f..2fa6805cde 100644 --- a/libraries/render-utils/src/ZoneRenderer.cpp +++ b/libraries/render-utils/src/ZoneRenderer.cpp @@ -17,6 +17,7 @@ #include #include +#include "StencilMaskPass.h" #include "DeferredLightingEffect.h" #include "zone_drawKeyLight_frag.h" @@ -74,6 +75,7 @@ const gpu::PipelinePointer& DebugZoneLighting::getKeyLightPipeline() { gpu::StatePointer state = gpu::StatePointer(new gpu::State()); + state->setStencilTest(true, 0xFF, gpu::State::StencilTest(PrepareStencil::STENCIL_SCENE, 0xFF, gpu::EQUAL, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP)); state->setBlendFunction(true, gpu::State::SRC_ALPHA, gpu::State::BLEND_OP_ADD, gpu::State::INV_SRC_ALPHA); _keyLightPipeline = gpu::Pipeline::create(program, state); } @@ -95,6 +97,7 @@ const gpu::PipelinePointer& DebugZoneLighting::getAmbientPipeline() { gpu::StatePointer state = gpu::StatePointer(new gpu::State()); + state->setStencilTest(true, 0xFF, gpu::State::StencilTest(PrepareStencil::STENCIL_SCENE, 0xFF, gpu::EQUAL, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP)); state->setBlendFunction(true, gpu::State::SRC_ALPHA, gpu::State::BLEND_OP_ADD, gpu::State::INV_SRC_ALPHA); _ambientPipeline = gpu::Pipeline::create(program, state); } @@ -115,6 +118,7 @@ const gpu::PipelinePointer& DebugZoneLighting::getBackgroundPipeline() { gpu::StatePointer state = gpu::StatePointer(new gpu::State()); + state->setStencilTest(true, 0xFF, gpu::State::StencilTest(PrepareStencil::STENCIL_SCENE, 0xFF, gpu::EQUAL, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP)); state->setBlendFunction(true, gpu::State::SRC_ALPHA, gpu::State::BLEND_OP_ADD, gpu::State::INV_SRC_ALPHA); _backgroundPipeline = gpu::Pipeline::create(program, state); } diff --git a/libraries/render-utils/src/hit_effect.slf b/libraries/render-utils/src/hit_effect.slf deleted file mode 100644 index cc4484442f..0000000000 --- a/libraries/render-utils/src/hit_effect.slf +++ /dev/null @@ -1,27 +0,0 @@ -<@include gpu/Config.slh@> -<$VERSION_HEADER$> -// Generated on <$_SCRIBE_DATE$> -// - -// hit_effect.frag -// fragment shader -// -// Created by Eric Levin on 7/20 -// Copyright 2015 High Fidelity, Inc. -// -// Distributed under the Apache License, Version 2.0. -// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html -// - - -<@include DeferredBufferWrite.slh@> - -in vec2 varQuadPosition; -out vec4 outFragColor; - -void main(void) { - vec2 center = vec2(0.0, 0.0); - float distFromCenter = distance( vec2(0.0, 0.0), varQuadPosition); - float alpha = mix(0.0, 0.5, pow(distFromCenter,5.)); - outFragColor = vec4(1.0, 0.0, 0.0, alpha); -} \ No newline at end of file diff --git a/libraries/render-utils/src/hit_effect.slv b/libraries/render-utils/src/hit_effect.slv deleted file mode 100644 index b9b0638f9e..0000000000 --- a/libraries/render-utils/src/hit_effect.slv +++ /dev/null @@ -1,26 +0,0 @@ -<@include gpu/Config.slh@> -<$VERSION_HEADER$> -// Generated on <$_SCRIBE_DATE$> -// -// hit_effect.vert -// vertex shader -// -// Created by Eric Levin on 7/20/15. -// Copyright 2015 High Fidelity, Inc. -// -// Distributed under the Apache License, Version 2.0. -// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html -// - -<@include gpu/Inputs.slh@> - -<@include gpu/Transform.slh@> - -<$declareStandardTransform()$> - -out vec2 varQuadPosition; - -void main(void) { - varQuadPosition = inPosition.xy; - gl_Position = inPosition; -} \ No newline at end of file From 226855b2b922f72440f1b10c5b3979356d38f038 Mon Sep 17 00:00:00 2001 From: "Anthony J. Thibault" Date: Thu, 1 Jun 2017 13:20:50 -0700 Subject: [PATCH 189/357] Bug fixes and cleanup * Bug fix for problem when chest target is enabled but hips target is not. * centralized the two computeSplineFromTipAndBase functions into one. * Removed dead code --- .../animation/src/AnimInverseKinematics.cpp | 100 +++++++++++------- libraries/animation/src/Rig.cpp | 14 +-- libraries/animation/src/Rig.h | 4 - libraries/shared/src/CubicHermiteSpline.h | 4 + 4 files changed, 65 insertions(+), 57 deletions(-) diff --git a/libraries/animation/src/AnimInverseKinematics.cpp b/libraries/animation/src/AnimInverseKinematics.cpp index 4fd769bec6..5c0127334b 100644 --- a/libraries/animation/src/AnimInverseKinematics.cpp +++ b/libraries/animation/src/AnimInverseKinematics.cpp @@ -465,6 +465,16 @@ void AnimInverseKinematics::solveTargetWithCCD(const AnimContext& context, const } } +static CubicHermiteSplineFunctorWithArcLength computeSplineFromTipAndBase(const AnimPose& tipPose, const AnimPose& basePose, float baseGain = 1.0f, float tipGain = 1.0f) { + float linearDistance = glm::length(basePose.trans() - tipPose.trans()); + glm::vec3 p0 = basePose.trans(); + glm::vec3 m0 = baseGain * linearDistance * (basePose.rot() * Vectors::UNIT_Y); + glm::vec3 p1 = tipPose.trans(); + glm::vec3 m1 = tipGain * linearDistance * (tipPose.rot() * Vectors::UNIT_Y); + + return CubicHermiteSplineFunctorWithArcLength(p0, m0, p1, m1); +} + void AnimInverseKinematics::solveTargetWithSpline(const AnimContext& context, const IKTarget& target, const AnimPoseVec& absolutePoses, bool debug) { std::map debugJointMap; @@ -475,15 +485,15 @@ void AnimInverseKinematics::solveTargetWithSpline(const AnimContext& context, co AnimPose tipPose = AnimPose(glm::vec3(1.0f), target.getRotation(), target.getTranslation()); AnimPose basePose = absolutePoses[baseIndex]; - const float BASE_GAIN = 0.5f; - const float TIP_GAIN = 1.0f; - float d = glm::length(basePose.trans() - tipPose.trans()); - glm::vec3 p0 = basePose.trans(); - glm::vec3 m0 = BASE_GAIN * d * (basePose.rot() * Vectors::UNIT_Y); - glm::vec3 p1 = tipPose.trans(); - glm::vec3 m1 = TIP_GAIN * d * (tipPose.rot() * Vectors::UNIT_Y); - - CubicHermiteSplineFunctorWithArcLength spline(p0, m0, p1, m1); + CubicHermiteSplineFunctorWithArcLength spline; + if (target.getIndex() == _headIndex) { + // set gain factors so that more curvature occurs near the tip of the spline. + const float HIPS_GAIN = 0.5f; + const float HEAD_GAIN = 1.0f; + spline = computeSplineFromTipAndBase(tipPose, basePose, HIPS_GAIN, HEAD_GAIN); + } else { + spline = computeSplineFromTipAndBase(tipPose, basePose); + } float totalArcLength = spline.arcLength(1.0f); // find or create splineJointInfo for the head target @@ -515,24 +525,32 @@ void AnimInverseKinematics::solveTargetWithSpline(const AnimContext& context, co const SplineJointInfo& splineJointInfo = (*splineJointInfoVec)[i]; float t = spline.arcLengthInverse(splineJointInfo.ratio * totalArcLength); glm::vec3 trans = spline(t); - glm::quat rot = glm::normalize(glm::lerp(basePose.rot(), tipPose.rot(), t)); + + // for head splines, preform most rotation toward the tip by using ease in function. t^2 + float rotT = t; + if (target.getIndex() == _headIndex) { + rotT = t * t; + } + glm::quat rot = glm::normalize(glm::lerp(basePose.rot(), tipPose.rot(), rotT)); AnimPose absPose = AnimPose(glm::vec3(1.0f), rot, trans) * splineJointInfo.offsetPose; AnimPose relPose = parentAbsPose.inverse() * absPose; _rotationAccumulators[splineJointInfo.jointIndex].add(relPose.rot(), target.getWeight()); - // constrain the amount the spine can stretch or compress - float length = glm::length(relPose.trans()); - float defaultLength = glm::length(_skeleton->getRelativeDefaultPose(splineJointInfo.jointIndex).trans()); - const float STRETCH_COMPRESS_PERCENTAGE = 0.15f; - const float MAX_LENGTH = defaultLength * (1.0f + STRETCH_COMPRESS_PERCENTAGE); - const float MIN_LENGTH = defaultLength * (1.0f - STRETCH_COMPRESS_PERCENTAGE); bool constrained = false; - if (length > MAX_LENGTH) { - relPose.trans() = (relPose.trans() / length) * MAX_LENGTH; - constrained = true; - } else if (length < MIN_LENGTH) { - relPose.trans() = (relPose.trans() / length) * MIN_LENGTH; - constrained = true; + if (splineJointInfo.jointIndex != _hipsIndex) { + // constrain the amount the spine can stretch or compress + float length = glm::length(relPose.trans()); + float defaultLength = glm::length(_skeleton->getRelativeDefaultPose(splineJointInfo.jointIndex).trans()); + const float STRETCH_COMPRESS_PERCENTAGE = 0.15f; + const float MAX_LENGTH = defaultLength * (1.0f + STRETCH_COMPRESS_PERCENTAGE); + const float MIN_LENGTH = defaultLength * (1.0f - STRETCH_COMPRESS_PERCENTAGE); + if (length > MAX_LENGTH) { + relPose.trans() = (relPose.trans() / length) * MAX_LENGTH; + constrained = true; + } else if (length < MIN_LENGTH) { + relPose.trans() = (relPose.trans() / length) * MIN_LENGTH; + constrained = true; + } } _translationAccumulators[splineJointInfo.jointIndex].add(relPose.trans(), target.getWeight()); @@ -1434,20 +1452,20 @@ void AnimInverseKinematics::computeSplineJointInfosForIKTarget(const AnimContext AnimPose tipPose = _skeleton->getAbsoluteDefaultPose(target.getIndex()); AnimPose basePose = _skeleton->getAbsoluteDefaultPose(_hipsIndex); - const float BASE_GAIN = 0.5f; - const float TIP_GAIN = 1.0f; - float d = glm::length(basePose.trans() - tipPose.trans()); - glm::vec3 p0 = basePose.trans(); - glm::vec3 m0 = BASE_GAIN * d * (basePose.rot() * Vectors::UNIT_Y); - glm::vec3 p1 = tipPose.trans(); - glm::vec3 m1 = TIP_GAIN * d * (tipPose.rot() * Vectors::UNIT_Y); + CubicHermiteSplineFunctorWithArcLength spline; + if (target.getIndex() == _headIndex) { + // set gain factors so that more curvature occurs near the tip of the spline. + const float HIPS_GAIN = 0.5f; + const float HEAD_GAIN = 1.0f; + spline = computeSplineFromTipAndBase(tipPose, basePose, HIPS_GAIN, HEAD_GAIN); + } else { + spline = computeSplineFromTipAndBase(tipPose, basePose); + } + float totalArcLength = spline.arcLength(1.0f); // AJT: FIXME: TODO: this won't work for horizontal splines... float baseToTipHeight = tipPose.trans().y - basePose.trans().y; - CubicHermiteSplineFunctorWithArcLength spline(p0, m0, p1, m1); - float totalArcLength = spline.arcLength(1.0f); - int index = target.getIndex(); int endIndex = _skeleton->getParentIndex(_hipsIndex); while (index != endIndex) { @@ -1483,15 +1501,15 @@ void AnimInverseKinematics::debugDrawSpineSplines(const AnimContext& context, co AnimPose tipPose = AnimPose(glm::vec3(1.0f), target.getRotation(), target.getTranslation()); AnimPose basePose = _skeleton->getAbsolutePose(baseIndex, _relativePoses); - const float BASE_GAIN = 0.5f; - const float TIP_GAIN = 1.0f; - float d = glm::length(basePose.trans() - tipPose.trans()); - glm::vec3 p0 = basePose.trans(); - glm::vec3 m0 = BASE_GAIN * d * (basePose.rot() * Vectors::UNIT_Y); - glm::vec3 p1 = tipPose.trans(); - glm::vec3 m1 = TIP_GAIN * d * (tipPose.rot() * Vectors::UNIT_Y); - - CubicHermiteSplineFunctorWithArcLength spline(p0, m0, p1, m1); + CubicHermiteSplineFunctorWithArcLength spline; + if (target.getIndex() == _headIndex) { + // set gain factors so that more curvature occurs near the tip of the spline. + const float HIPS_GAIN = 0.5f; + const float HEAD_GAIN = 1.0f; + spline = computeSplineFromTipAndBase(tipPose, basePose, HIPS_GAIN, HEAD_GAIN); + } else { + spline = computeSplineFromTipAndBase(tipPose, basePose); + } float totalArcLength = spline.arcLength(1.0f); const glm::vec4 RED(1.0f, 0.0f, 0.0f, 1.0f); diff --git a/libraries/animation/src/Rig.cpp b/libraries/animation/src/Rig.cpp index dd98993688..175c834d5d 100644 --- a/libraries/animation/src/Rig.cpp +++ b/libraries/animation/src/Rig.cpp @@ -401,16 +401,6 @@ void Rig::setJointRotation(int index, bool valid, const glm::quat& rotation, flo } } -void Rig::restoreJointRotation(int index, float fraction, float priority) { - // AJT: DEAD CODE? - ASSERT(false); -} - -void Rig::restoreJointTranslation(int index, float fraction, float priority) { - // AJT: DEAD CODE? - ASSERT(false); -} - bool Rig::getJointPositionInWorldFrame(int jointIndex, glm::vec3& position, glm::vec3 translation, glm::quat rotation) const { if (isIndexValid(jointIndex)) { position = (rotation * _internalPoseSet._absolutePoses[jointIndex].trans()) + translation; @@ -1040,7 +1030,7 @@ void Rig::updateFromHeadParameters(const HeadParameters& params, float dt) { _animVars.set("hipsType", (int)IKTarget::Type::Unknown); } - if (params.spine2Enabled) { + if (params.hipsEnabled && params.spine2Enabled) { _animVars.set("spine2Type", (int)IKTarget::Type::Spline); _animVars.set("spine2Position", extractTranslation(params.spine2Matrix)); _animVars.set("spine2Rotation", glmExtractRotation(params.spine2Matrix)); @@ -1051,7 +1041,7 @@ void Rig::updateFromHeadParameters(const HeadParameters& params, float dt) { if (params.leftArmEnabled) { _animVars.set("leftArmType", (int)IKTarget::Type::RotationAndPosition); _animVars.set("leftArmPosition", params.leftArmPosition); - _animVars.set("leftArmRotation", params.leftArmRotation); + _animVars.set("leftArmRotation", params.leftArmRotation); } else { _animVars.set("leftArmType", (int)IKTarget::Type::Unknown); } diff --git a/libraries/animation/src/Rig.h b/libraries/animation/src/Rig.h index c9d52d8c72..7166717792 100644 --- a/libraries/animation/src/Rig.h +++ b/libraries/animation/src/Rig.h @@ -134,10 +134,6 @@ public: void setJointTranslation(int index, bool valid, const glm::vec3& translation, float priority); void setJointRotation(int index, bool valid, const glm::quat& rotation, float priority); - // legacy - void restoreJointRotation(int index, float fraction, float priority); - void restoreJointTranslation(int index, float fraction, float priority); - // if translation and rotation is identity, position will be in rig space bool getJointPositionInWorldFrame(int jointIndex, glm::vec3& position, glm::vec3 translation, glm::quat rotation) const; diff --git a/libraries/shared/src/CubicHermiteSpline.h b/libraries/shared/src/CubicHermiteSpline.h index e563fc2b73..17b4fda991 100644 --- a/libraries/shared/src/CubicHermiteSpline.h +++ b/libraries/shared/src/CubicHermiteSpline.h @@ -14,6 +14,7 @@ class CubicHermiteSplineFunctor { public: + CubicHermiteSplineFunctor() : _p0(), _m0(), _p1(), _m1() {} CubicHermiteSplineFunctor(const glm::vec3& p0, const glm::vec3& m0, const glm::vec3& p1, const glm::vec3& m1) : _p0(p0), _m0(m0), _p1(p1), _m1(m1) {} CubicHermiteSplineFunctor(const CubicHermiteSplineFunctor& orig) : _p0(orig._p0), _m0(orig._m0), _p1(orig._p1), _m1(orig._m1) {} @@ -61,6 +62,9 @@ class CubicHermiteSplineFunctorWithArcLength : public CubicHermiteSplineFunctor public: enum Constants { NUM_SUBDIVISIONS = 30 }; + CubicHermiteSplineFunctorWithArcLength() : CubicHermiteSplineFunctor() { + memset(_values, 0, sizeof(float) * NUM_SUBDIVISIONS + 1); + } CubicHermiteSplineFunctorWithArcLength(const glm::vec3& p0, const glm::vec3& m0, const glm::vec3& p1, const glm::vec3& m1) : CubicHermiteSplineFunctor(p0, m0, p1, m1) { // initialize _values with the accumulated arcLength along the spline. const float DELTA = 1.0f / NUM_SUBDIVISIONS; From 1068a4a9bd2248823a14c3c35a5935659c86e26f Mon Sep 17 00:00:00 2001 From: howard-stearns Date: Thu, 1 Jun 2017 13:21:24 -0700 Subject: [PATCH 190/357] remove the optimization for upperId == lowerId. Doesn't work in zaru tunnels. --- interface/src/avatar/MyAvatar.cpp | 41 +++++++++++++++---------------- 1 file changed, 20 insertions(+), 21 deletions(-) diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index e8552df7e9..bbac271450 100755 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -2340,32 +2340,31 @@ bool MyAvatar::requiresSafeLanding(const glm::vec3& positionIn, glm::vec3& bette auto delta = glm::distance(upperIntersection, lowerIntersection); if (delta > (2 * halfHeight)) { // There is room for us to fit in that clearing. If there wasn't, physics would oscilate us between the objects above and below. - if (upperId != lowerId) { // An optimization over what follows: the simplest case of not being inside an entity. - // We're going to iterate upwards through successive roofIntersections, testing to see if we're contained within the top surface of some entity. - // There will be one of two outcomes: - // a) We're not contained, so we have enough room and our position is good. - // b) We are contained, so we'll bail out of this but try again at a position above the containing entity. - for (;;) { - ignore.push_back(upperId); - if (!findIntersection(upperIntersection, up, upperIntersection, upperId, upperNormal)) { - // We're not inside an entity, and from the nested tests, we have room between what is above and below. So position is good! - //qDebug() << "FIXME upper:" << upperId << upperIntersection << " n:" << upperNormal.y << " lower:" << lowerId << lowerIntersection << " n:" << lowerNormal.y << " delta:" << delta << " halfHeight:" << halfHeight; - return ok("enough room"); - } - if (isUp(upperNormal)) { - // This new intersection is the top surface of an entity that we have not yet seen, which means we're contained within it. - // We could break here and recurse from the top of the original ceiling, but since we've already done the work to find the top - // of the enclosing entity, let's put our feet at upperIntersection and start over. - return mustMove(); - } - // We found a new bottom surface, which we're not interested in. - // But there could still be a top surface above us for an entity we haven't seen, so keep looking upward. + // We're now going to iterate upwards through successive upperIntersections, testing to see if we're contained within the top surface of some entity. + // There will be one of two outcomes: + // a) We're not contained, so we have enough room and our position is good. + // b) We are contained, so we'll bail out of this but try again at a position above the containing entity. + for (;;) { + ignore.push_back(upperId); + if (!findIntersection(upperIntersection, up, upperIntersection, upperId, upperNormal)) { + // We're not inside an entity, and from the nested tests, we have room between what is above and below. So position is good! + //qDebug() << "FIXME upper:" << upperId << upperIntersection << " n:" << upperNormal.y << " lower:" << lowerId << lowerIntersection << " n:" << lowerNormal.y << " delta:" << delta << " halfHeight:" << halfHeight; + return ok("enough room"); } + if (isUp(upperNormal)) { + // This new intersection is the top surface of an entity that we have not yet seen, which means we're contained within it. + // We could break here and recurse from the top of the original ceiling, but since we've already done the work to find the top + // of the enclosing entity, let's put our feet at upperIntersection and start over. + qDebug() << "FIXME inside above:" << upperId << " below:" << lowerId; + return mustMove(); + } + // We found a new bottom surface, which we're not interested in. + // But there could still be a top surface above us for an entity we haven't seen, so keep looking upward. } } } - //qDebug() << "FIXME need to compute safe landing for" << capsuleCenter << " based on " << upperIntersection << "@" << upperId << " and " << lowerIntersection << "@" << lowerId; + qDebug() << "FIXME need to compute safe landing for" << capsuleCenter << " based on " << (isDown(upperNormal) ? "down " : "up ") << upperIntersection << "@" << upperId << " and " << (isUp(lowerNormal) ? "up " : "down ") << lowerIntersection << "@" << lowerId; const float big = (float)TREE_SCALE; const auto skyHigh = up * big; auto fromAbove = capsuleCenter + skyHigh; From b9bf6f4c054a459fca4265c98e9bdbce3b300390 Mon Sep 17 00:00:00 2001 From: "Anthony J. Thibault" Date: Thu, 1 Jun 2017 13:30:35 -0700 Subject: [PATCH 191/357] whitespace --- libraries/shared/src/GLMHelpers.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/shared/src/GLMHelpers.cpp b/libraries/shared/src/GLMHelpers.cpp index f4989d61f5..70237e8ff6 100644 --- a/libraries/shared/src/GLMHelpers.cpp +++ b/libraries/shared/src/GLMHelpers.cpp @@ -540,7 +540,7 @@ void generateBasisVectors(const glm::vec3& primaryAxis, const glm::vec3& seconda // if secondaryAxis is parallel with the primaryAxis, pick another axis. const float EPSILON = 1.0e-4f; - if (fabsf(fabsf(glm::dot(uAxisOut, secondaryAxis)) - 1.0f) > EPSILON) { + if (fabsf(fabsf(glm::dot(uAxisOut, secondaryAxis)) - 1.0f) > EPSILON) { // pick a better secondaryAxis. normSecondary = glm::vec3(1.0f, 0.0f, 0.0f); if (fabsf(fabsf(glm::dot(uAxisOut, secondaryAxis)) - 1.0f) > EPSILON) { From ac6135387cf3a520851e4acc9d709c3c4ad6175c Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Thu, 1 Jun 2017 13:37:16 -0700 Subject: [PATCH 192/357] display plugins are never head controllers --- interface/src/Application.cpp | 5 ----- interface/src/avatar/MySkeletonModel.cpp | 2 +- .../Basic2DWindowOpenGLDisplayPlugin.h | 2 -- .../display-plugins/hmd/DebugHmdDisplayPlugin.h | 2 -- .../src/display-plugins/hmd/HmdDisplayPlugin.h | 1 - .../stereo/InterleavedStereoDisplayPlugin.h | 2 -- .../stereo/SideBySideStereoDisplayPlugin.h | 2 -- libraries/plugins/src/plugins/DisplayPlugin.h | 1 - libraries/plugins/src/plugins/PluginUtils.cpp | 5 ----- plugins/oculus/src/OculusControllerManager.cpp | 14 ++++++++++++-- plugins/oculus/src/OculusControllerManager.h | 2 +- plugins/oculus/src/OculusDebugDisplayPlugin.h | 2 -- plugins/oculus/src/OculusDisplayPlugin.h | 2 -- plugins/openvr/src/OpenVrDisplayPlugin.h | 2 -- 14 files changed, 14 insertions(+), 30 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 6d34de2b0e..aee829b624 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -4865,11 +4865,6 @@ bool Application::isHeadControllerEnabled() const { return true; } } - foreach(DisplayPluginPointer displayPlugin, PluginManager::getInstance()->getDisplayPlugins()) { - if (displayPlugin->isActive() && displayPlugin->isHeadController()) { - return true; - } - } return false; } diff --git a/interface/src/avatar/MySkeletonModel.cpp b/interface/src/avatar/MySkeletonModel.cpp index 84e4a9ff83..3721eea569 100644 --- a/interface/src/avatar/MySkeletonModel.cpp +++ b/interface/src/avatar/MySkeletonModel.cpp @@ -59,7 +59,7 @@ void MySkeletonModel::updateRig(float deltaTime, glm::mat4 parentTransform) { } else { if (qApp->isHMDMode()) { // get HMD position from sensor space into world space, and back into rig space - glm::mat4 worldHMDMat = myAvatar->getHeadControllerPoseInWorldFrame(); + glm::mat4 worldHMDMat = myAvatar->getHeadControllerPoseInWorldFrame().getMatrix(); glm::mat4 rigToWorld = createMatFromQuatAndPos(getRotation(), getTranslation()); glm::mat4 worldToRig = glm::inverse(rigToWorld); glm::mat4 rigHMDMat = worldToRig * worldHMDMat; diff --git a/libraries/display-plugins/src/display-plugins/Basic2DWindowOpenGLDisplayPlugin.h b/libraries/display-plugins/src/display-plugins/Basic2DWindowOpenGLDisplayPlugin.h index 8dc1d83c1b..f3dd50602c 100644 --- a/libraries/display-plugins/src/display-plugins/Basic2DWindowOpenGLDisplayPlugin.h +++ b/libraries/display-plugins/src/display-plugins/Basic2DWindowOpenGLDisplayPlugin.h @@ -26,8 +26,6 @@ public: virtual bool isThrottled() const override; - virtual bool isHeadController() const override { return false; } - protected: mutable bool _isThrottled = false; diff --git a/libraries/display-plugins/src/display-plugins/hmd/DebugHmdDisplayPlugin.h b/libraries/display-plugins/src/display-plugins/hmd/DebugHmdDisplayPlugin.h index a971c25bf6..55746e65eb 100644 --- a/libraries/display-plugins/src/display-plugins/hmd/DebugHmdDisplayPlugin.h +++ b/libraries/display-plugins/src/display-plugins/hmd/DebugHmdDisplayPlugin.h @@ -21,8 +21,6 @@ public: bool beginFrameRender(uint32_t frameIndex) override; float getTargetFrameRate() const override { return 90; } - virtual bool isHeadController() const override { return false; } - protected: void updatePresentPose() override; void hmdPresent() override {} diff --git a/libraries/display-plugins/src/display-plugins/hmd/HmdDisplayPlugin.h b/libraries/display-plugins/src/display-plugins/hmd/HmdDisplayPlugin.h index 7dfd0fed1e..aaa6e347e0 100644 --- a/libraries/display-plugins/src/display-plugins/hmd/HmdDisplayPlugin.h +++ b/libraries/display-plugins/src/display-plugins/hmd/HmdDisplayPlugin.h @@ -25,7 +25,6 @@ class HmdDisplayPlugin : public OpenGLDisplayPlugin { public: ~HmdDisplayPlugin(); bool isHmd() const override final { return true; } - bool isHeadController() const override = 0; float getIPD() const override final { return _ipd; } glm::mat4 getEyeToHeadTransform(Eye eye) const override final { return _eyeOffsets[eye]; } glm::mat4 getEyeProjection(Eye eye, const glm::mat4& baseProjection) const override final { return _eyeProjections[eye]; } diff --git a/libraries/display-plugins/src/display-plugins/stereo/InterleavedStereoDisplayPlugin.h b/libraries/display-plugins/src/display-plugins/stereo/InterleavedStereoDisplayPlugin.h index 4834e6c542..debd340f24 100644 --- a/libraries/display-plugins/src/display-plugins/stereo/InterleavedStereoDisplayPlugin.h +++ b/libraries/display-plugins/src/display-plugins/stereo/InterleavedStereoDisplayPlugin.h @@ -17,8 +17,6 @@ public: grouping getGrouping() const override { return ADVANCED; } glm::uvec2 getRecommendedRenderSize() const override; - virtual bool isHeadController() const override { return false; } - protected: // initialize OpenGL context settings needed by the plugin void customizeContext() override; diff --git a/libraries/display-plugins/src/display-plugins/stereo/SideBySideStereoDisplayPlugin.h b/libraries/display-plugins/src/display-plugins/stereo/SideBySideStereoDisplayPlugin.h index aa65fc37e3..79bf2a9ecb 100644 --- a/libraries/display-plugins/src/display-plugins/stereo/SideBySideStereoDisplayPlugin.h +++ b/libraries/display-plugins/src/display-plugins/stereo/SideBySideStereoDisplayPlugin.h @@ -19,8 +19,6 @@ public: virtual grouping getGrouping() const override { return ADVANCED; } virtual glm::uvec2 getRecommendedRenderSize() const override; - virtual bool isHeadController() const override { return false; } - private: static const QString NAME; }; diff --git a/libraries/plugins/src/plugins/DisplayPlugin.h b/libraries/plugins/src/plugins/DisplayPlugin.h index 549387b6a4..754c919fd4 100644 --- a/libraries/plugins/src/plugins/DisplayPlugin.h +++ b/libraries/plugins/src/plugins/DisplayPlugin.h @@ -135,7 +135,6 @@ public: virtual int getRequiredThreadCount() const { return 0; } virtual bool isHmd() const { return false; } - virtual bool isHeadController() const = 0; virtual int getHmdScreen() const { return -1; } /// By default, all HMDs are stereo virtual bool isStereo() const { return isHmd(); } diff --git a/libraries/plugins/src/plugins/PluginUtils.cpp b/libraries/plugins/src/plugins/PluginUtils.cpp index 4af77156e7..ce67f7c585 100644 --- a/libraries/plugins/src/plugins/PluginUtils.cpp +++ b/libraries/plugins/src/plugins/PluginUtils.cpp @@ -30,11 +30,6 @@ bool PluginUtils::isHeadControllerAvailable(const QString& pluginName) { return true; } } - for (auto& displayPlugin : PluginManager::getInstance()->getDisplayPlugins()) { - if (displayPlugin->isHeadController() && (pluginName.isEmpty() || displayPlugin->getName() == pluginName)) { - return true; - } - } return false; }; diff --git a/plugins/oculus/src/OculusControllerManager.cpp b/plugins/oculus/src/OculusControllerManager.cpp index 0236ea1e62..60031a1179 100644 --- a/plugins/oculus/src/OculusControllerManager.cpp +++ b/plugins/oculus/src/OculusControllerManager.cpp @@ -210,10 +210,20 @@ void OculusControllerManager::RemoteDevice::focusOutEvent() { _buttonPressedMap.clear(); } +bool OculusControllerManager::isHeadController() const { + // this plugin is a head controller if the HMD is mounted. + ovrSessionStatus status; + + bool success = OVR_SUCCESS(ovr_GetSessionStatus(_session, &status)); + if (!success) { + return false; + } + return status.HmdMounted == ovrTrue; +} + void OculusControllerManager::TouchDevice::update(float deltaTime, const controller::InputCalibrationData& inputCalibrationData) { _buttonPressedMap.clear(); - ovrSessionStatus status; - if (!OVR_SUCCESS(ovr_GetSessionStatus(_parent._session, &status)) || (ovrFalse == status.HmdMounted)) { + if (!_parent.isHeadController()) { // if the HMD isn't on someone's head, don't take input from the controllers return; } diff --git a/plugins/oculus/src/OculusControllerManager.h b/plugins/oculus/src/OculusControllerManager.h index 61f2241f4d..54237645eb 100644 --- a/plugins/oculus/src/OculusControllerManager.h +++ b/plugins/oculus/src/OculusControllerManager.h @@ -28,7 +28,7 @@ public: const QString getName() const override { return NAME; } bool isHandController() const override { return _touch != nullptr; } - bool isHeadController() const override { return true; } + bool isHeadController() const override; QStringList getSubdeviceNames() override; bool activate() override; diff --git a/plugins/oculus/src/OculusDebugDisplayPlugin.h b/plugins/oculus/src/OculusDebugDisplayPlugin.h index 1cc6bd0f8e..ec05cd92e2 100644 --- a/plugins/oculus/src/OculusDebugDisplayPlugin.h +++ b/plugins/oculus/src/OculusDebugDisplayPlugin.h @@ -15,8 +15,6 @@ public: grouping getGrouping() const override { return DEVELOPER; } bool isSupported() const override; - bool isHeadController() const override { return false; } - protected: void hmdPresent() override {} bool isHmdMounted() const override { return true; } diff --git a/plugins/oculus/src/OculusDisplayPlugin.h b/plugins/oculus/src/OculusDisplayPlugin.h index a4978a984e..9209fd373e 100644 --- a/plugins/oculus/src/OculusDisplayPlugin.h +++ b/plugins/oculus/src/OculusDisplayPlugin.h @@ -24,8 +24,6 @@ public: virtual QJsonObject getHardwareStats() const; - bool isHeadController() const override { return true; } - protected: QThread::Priority getPresentPriority() override { return QThread::TimeCriticalPriority; } diff --git a/plugins/openvr/src/OpenVrDisplayPlugin.h b/plugins/openvr/src/OpenVrDisplayPlugin.h index 9856c27c50..01e02c9892 100644 --- a/plugins/openvr/src/OpenVrDisplayPlugin.h +++ b/plugins/openvr/src/OpenVrDisplayPlugin.h @@ -58,8 +58,6 @@ public: // Possibly needs an additional thread for VR submission int getRequiredThreadCount() const override; - bool isHeadController() const override { return true; } - protected: bool internalActivate() override; void internalDeactivate() override; From f99b579c14ed38ac0a4dff551c42b2bd2925e3b3 Mon Sep 17 00:00:00 2001 From: "Anthony J. Thibault" Date: Thu, 1 Jun 2017 13:38:18 -0700 Subject: [PATCH 193/357] added some docs --- libraries/animation/src/AnimInverseKinematics.cpp | 11 +++++++---- libraries/animation/src/AnimInverseKinematics.h | 7 ++++--- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/libraries/animation/src/AnimInverseKinematics.cpp b/libraries/animation/src/AnimInverseKinematics.cpp index 5c0127334b..524d08de5b 100644 --- a/libraries/animation/src/AnimInverseKinematics.cpp +++ b/libraries/animation/src/AnimInverseKinematics.cpp @@ -1445,10 +1445,11 @@ void AnimInverseKinematics::initRelativePosesFromSolutionSource(SolutionSource s } } +// pre-compute information about each joint influeced by this spline IK target. void AnimInverseKinematics::computeSplineJointInfosForIKTarget(const AnimContext& context, const IKTarget& target) { std::vector splineJointInfoVec; - // build default spline + // build spline between the default poses. AnimPose tipPose = _skeleton->getAbsoluteDefaultPose(target.getIndex()); AnimPose basePose = _skeleton->getAbsoluteDefaultPose(_hipsIndex); @@ -1461,9 +1462,11 @@ void AnimInverseKinematics::computeSplineJointInfosForIKTarget(const AnimContext } else { spline = computeSplineFromTipAndBase(tipPose, basePose); } + + // measure the total arc length along the spline float totalArcLength = spline.arcLength(1.0f); - // AJT: FIXME: TODO: this won't work for horizontal splines... + // FIXME: TODO: this won't work for horizontal splines... float baseToTipHeight = tipPose.trans().y - basePose.trans().y; int index = target.getIndex(); @@ -1471,10 +1474,10 @@ void AnimInverseKinematics::computeSplineJointInfosForIKTarget(const AnimContext while (index != endIndex) { AnimPose defaultPose = _skeleton->getAbsoluteDefaultPose(index); - // AJT: FIXME: TODO: this wont work for horizontal splines... + // FIXME: TODO: this wont work for horizontal splines... float ratio = (defaultPose.trans().y - basePose.trans().y) / baseToTipHeight; - // compute offset from default spline pose to default pose. + // compute offset from spline to the default pose. float t = spline.arcLengthInverse(ratio * totalArcLength); AnimPose pose(glm::vec3(1.0f), glm::normalize(glm::lerp(basePose.rot(), tipPose.rot(), t)), spline(t)); AnimPose offsetPose = pose.inverse() * defaultPose; diff --git a/libraries/animation/src/AnimInverseKinematics.h b/libraries/animation/src/AnimInverseKinematics.h index 459b37d0b6..ff1ab9115f 100644 --- a/libraries/animation/src/AnimInverseKinematics.h +++ b/libraries/animation/src/AnimInverseKinematics.h @@ -117,10 +117,11 @@ protected: AnimPoseVec _relativePoses; // current relative poses AnimPoseVec _limitCenterPoses; // relative + // used to pre-compute information about each joint influeced by a spline IK target. struct SplineJointInfo { - int jointIndex; - float ratio; - AnimPose offsetPose; + int jointIndex; // joint in the skeleton that this information pertains to. + float ratio; // percentage (0..1) along the spline for this joint. + AnimPose offsetPose; // local offset from the spline to the joint. }; std::map> _splineJointInfoMap; From c513d04b5201511e409f6ee8bbd95dc1f30f6c31 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Thu, 1 Jun 2017 13:40:50 -0700 Subject: [PATCH 194/357] remove crash event definition for now --- interface/src/networking/ClosureEventSender.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/interface/src/networking/ClosureEventSender.h b/interface/src/networking/ClosureEventSender.h index be2daca12b..ea07e55c84 100644 --- a/interface/src/networking/ClosureEventSender.h +++ b/interface/src/networking/ClosureEventSender.h @@ -24,8 +24,6 @@ class ClosureEventSender : public QObject, public Dependency { SINGLETON_DEPENDENCY public: - void sendCrashEventSync(); - bool hasTimedOutQuitEvent(); bool hasFinishedQuitEvent() { return _hasFinishedQuitEvent; } From 3d98f1b3eebc605cc2bcbed823e3c172a573e208 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Thu, 1 Jun 2017 13:46:37 -0700 Subject: [PATCH 195/357] print metaverse session ID to debug log --- libraries/networking/src/AccountManager.cpp | 7 +++++++ libraries/networking/src/AccountManager.h | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/libraries/networking/src/AccountManager.cpp b/libraries/networking/src/AccountManager.cpp index 6266ad0f89..85232f9f61 100644 --- a/libraries/networking/src/AccountManager.cpp +++ b/libraries/networking/src/AccountManager.cpp @@ -201,6 +201,13 @@ void AccountManager::setAuthURL(const QUrl& authURL) { } } +void AccountManager::setSessionID(const QUuid& sessionID) { + if (_sessionID != sessionID) { + qCDebug(networking) << "Metaverse session ID is" << uuidStringWithoutCurlyBraces(sessionID); + _sessionID = sessionID; + } +} + void AccountManager::sendRequest(const QString& path, AccountManagerAuth::Type authType, QNetworkAccessManager::Operation operation, diff --git a/libraries/networking/src/AccountManager.h b/libraries/networking/src/AccountManager.h index dd2216957f..9a456ca7e8 100644 --- a/libraries/networking/src/AccountManager.h +++ b/libraries/networking/src/AccountManager.h @@ -90,7 +90,7 @@ public: static QJsonObject dataObjectFromResponse(QNetworkReply& requestReply); QUuid getSessionID() const { return _sessionID; } - void setSessionID(const QUuid& sessionID) { _sessionID = sessionID; } + void setSessionID(const QUuid& sessionID); void setTemporaryDomain(const QUuid& domainID, const QString& key); const QString& getTemporaryDomainKey(const QUuid& domainID) { return _accountInfo.getTemporaryDomainKey(domainID); } From 552b69bb1c6aefc0cf7303da62f70a14e99e2c4f Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Thu, 1 Jun 2017 13:47:19 -0700 Subject: [PATCH 196/357] cleanups --- interface/src/avatar/MyAvatar.cpp | 1 + interface/src/scripting/HMDScriptingInterface.cpp | 3 +-- .../src/display-plugins/hmd/DebugHmdDisplayPlugin.h | 1 + plugins/hifiKinect/src/KinectPlugin.cpp | 10 +--------- 4 files changed, 4 insertions(+), 11 deletions(-) diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index 5723751631..ef2e53cbb9 100755 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -1889,6 +1889,7 @@ void MyAvatar::updateOrientation(float deltaTime) { // these angles will be in radians // ... so they need to be converted to degrees before we do math... glm::vec3 euler = glm::eulerAngles(localOrientation) * DEGREES_PER_RADIAN; + Head* head = getHead(); head->setBaseYaw(YAW(euler)); head->setBasePitch(PITCH(euler)); diff --git a/interface/src/scripting/HMDScriptingInterface.cpp b/interface/src/scripting/HMDScriptingInterface.cpp index 1227f46eb6..883a6e758e 100644 --- a/interface/src/scripting/HMDScriptingInterface.cpp +++ b/interface/src/scripting/HMDScriptingInterface.cpp @@ -122,8 +122,7 @@ bool HMDScriptingInterface::getHUDLookAtPosition3D(glm::vec3& result) const { glm::mat4 HMDScriptingInterface::getWorldHMDMatrix() const { auto myAvatar = DependencyManager::get()->getMyAvatar(); - // return myAvatar->getSensorToWorldMatrix() * myAvatar->getHMDSensorMatrix(); - return myAvatar->getSensorToWorldMatrix() * myAvatar->getHeadControllerPoseInSensorFrame().getMatrix() * Matrices::Y_180; + return myAvatar->getSensorToWorldMatrix() * myAvatar->getHMDSensorMatrix(); } glm::vec3 HMDScriptingInterface::getPosition() const { diff --git a/libraries/display-plugins/src/display-plugins/hmd/DebugHmdDisplayPlugin.h b/libraries/display-plugins/src/display-plugins/hmd/DebugHmdDisplayPlugin.h index 55746e65eb..9bb82b1836 100644 --- a/libraries/display-plugins/src/display-plugins/hmd/DebugHmdDisplayPlugin.h +++ b/libraries/display-plugins/src/display-plugins/hmd/DebugHmdDisplayPlugin.h @@ -21,6 +21,7 @@ public: bool beginFrameRender(uint32_t frameIndex) override; float getTargetFrameRate() const override { return 90; } + protected: void updatePresentPose() override; void hmdPresent() override {} diff --git a/plugins/hifiKinect/src/KinectPlugin.cpp b/plugins/hifiKinect/src/KinectPlugin.cpp index 834ee1ea2e..92c578e9aa 100644 --- a/plugins/hifiKinect/src/KinectPlugin.cpp +++ b/plugins/hifiKinect/src/KinectPlugin.cpp @@ -286,15 +286,7 @@ bool KinectPlugin::isHandController() const { } bool KinectPlugin::isHeadController() const { - bool sensorAvailable = false; -#ifdef HAVE_KINECT - if (_kinectSensor) { - BOOLEAN sensorIsAvailable = FALSE; - HRESULT hr = _kinectSensor->get_IsAvailable(&sensorIsAvailable); - sensorAvailable = SUCCEEDED(hr) && (sensorIsAvailable == TRUE); - } -#endif - return _enabled && _initialized && sensorAvailable; + return isHandController(); } From 551426f46e1d645049e344dbb1c5309fc0800771 Mon Sep 17 00:00:00 2001 From: "Anthony J. Thibault" Date: Thu, 1 Jun 2017 13:56:06 -0700 Subject: [PATCH 197/357] Made computeSplineJointInfosForIKTarget more general It should now work for non-vertical oriented splines. --- libraries/animation/src/AnimInverseKinematics.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/libraries/animation/src/AnimInverseKinematics.cpp b/libraries/animation/src/AnimInverseKinematics.cpp index 524d08de5b..12d480a578 100644 --- a/libraries/animation/src/AnimInverseKinematics.cpp +++ b/libraries/animation/src/AnimInverseKinematics.cpp @@ -1466,16 +1466,16 @@ void AnimInverseKinematics::computeSplineJointInfosForIKTarget(const AnimContext // measure the total arc length along the spline float totalArcLength = spline.arcLength(1.0f); - // FIXME: TODO: this won't work for horizontal splines... - float baseToTipHeight = tipPose.trans().y - basePose.trans().y; + glm::vec3 baseToTip = tipPose.trans() - basePose.trans(); + float baseToTipLength = glm::length(baseToTip); + glm::vec3 baseToTipNormal = baseToTip / baseToTipLength; int index = target.getIndex(); int endIndex = _skeleton->getParentIndex(_hipsIndex); while (index != endIndex) { AnimPose defaultPose = _skeleton->getAbsoluteDefaultPose(index); - // FIXME: TODO: this wont work for horizontal splines... - float ratio = (defaultPose.trans().y - basePose.trans().y) / baseToTipHeight; + float ratio = glm::dot(defaultPose.trans() - basePose.trans(), baseToTipNormal) / baseToTipLength; // compute offset from spline to the default pose. float t = spline.arcLengthInverse(ratio * totalArcLength); From 2a5c43026ae495b529814a85622ecf945ac909eb Mon Sep 17 00:00:00 2001 From: Dante Ruiz Date: Thu, 1 Jun 2017 22:27:51 +0100 Subject: [PATCH 198/357] gzip recording data --- .../src/controllers/InputRecorder.cpp | 70 ++++++++----------- 1 file changed, 30 insertions(+), 40 deletions(-) diff --git a/libraries/controllers/src/controllers/InputRecorder.cpp b/libraries/controllers/src/controllers/InputRecorder.cpp index e8bcd3a006..f98a42ccd2 100644 --- a/libraries/controllers/src/controllers/InputRecorder.cpp +++ b/libraries/controllers/src/controllers/InputRecorder.cpp @@ -19,6 +19,7 @@ #include #include #include +#include #include #include @@ -93,23 +94,26 @@ namespace controller { } - void exportToFile(const QJsonObject& object) { + void exportToFile(const QJsonObject& object, const QString& fileName) { if (!QDir(SAVE_DIRECTORY).exists()) { QDir().mkdir(SAVE_DIRECTORY); } - - QString timeStamp = QDateTime::currentDateTime().toString(Qt::ISODate); - timeStamp.replace(":", "-"); - QString fileName = SAVE_DIRECTORY + FILE_PREFIX_NAME + timeStamp + COMPRESS_EXTENSION; - qDebug() << fileName; + QFile saveFile (fileName); if (!saveFile.open(QIODevice::WriteOnly)) { qWarning() << "could not open file: " << fileName; return; } QJsonDocument saveData(object); - QByteArray compressedData = qCompress(saveData.toJson(QJsonDocument::Compact)); - saveFile.write(compressedData); + QByteArray jsonData = saveData.toJson(QJsonDocument::Indented); + QByteArray jsonDataForFile; + + if (!gzip(jsonData, jsonDataForFile, -1)) { + qCritical("unable to gzip while saving to json."); + return; + } + + saveFile.write(jsonDataForFile); saveFile.close(); } @@ -121,8 +125,16 @@ namespace controller { status = false; return object; } - QByteArray compressedData = qUncompress(openFile.readAll()); - QJsonDocument jsonDoc = QJsonDocument::fromJson(compressedData); + QByteArray compressedData = openFile.readAll(); + QByteArray jsonData; + + if (!gunzip(compressedData, jsonData)) { + qCritical() << "json file not in gzip format: " << file; + status = false; + return object; + } + + QJsonDocument jsonDoc = QJsonDocument::fromJson(jsonData); object = jsonDoc.object(); status = true; openFile.close(); @@ -153,7 +165,7 @@ namespace controller { QJsonObject InputRecorder::recordDataToJson() { QJsonObject data; data["frameCount"] = _framesRecorded; - data["version"] = "1.0"; + data["version"] = "0.0"; QJsonArray actionArrayList; QJsonArray poseArrayList; @@ -187,7 +199,10 @@ namespace controller { void InputRecorder::saveRecording() { QJsonObject jsonData = recordDataToJson(); - exportToFile(jsonData); + QString timeStamp = QDateTime::currentDateTime().toString(Qt::ISODate); + timeStamp.replace(":", "-"); + QString fileName = SAVE_DIRECTORY + FILE_PREFIX_NAME + timeStamp + COMPRESS_EXTENSION; + exportToFile(jsonData, fileName); } void InputRecorder::loadRecording(const QString& path) { @@ -202,10 +217,12 @@ namespace controller { QString filePath = urlPath.toLocalFile(); QFileInfo info(filePath); QString extension = info.suffix(); + if (extension != "gz") { qWarning() << "can not load file with exentsion of " << extension; return; } + bool success = false; QJsonObject data = openFile(filePath, success); auto keyValue = data.find("version"); @@ -233,34 +250,7 @@ namespace controller { _poseStateList.push_back(_currentFramePoses); _currentFramePoses.clear(); } - } else if (success) { - //convert recording to new reacording standard and rewrite file - auto userInputMapper = DependencyManager::get(); - _framesRecorded = data["frameCount"].toInt(); - QJsonArray actionArrayList = data["actionList"].toArray(); - QJsonArray poseArrayList = data["poseList"].toArray(); - - for (int actionIndex = 0; actionIndex < actionArrayList.size(); actionIndex++) { - QJsonArray actionState = actionArrayList[actionIndex].toArray(); - for (int index = 0; index < actionState.size(); index++) { - QString actionName = userInputMapper->getActionName(Action(index)); - _currentFrameActions[actionName] = actionState[index].toDouble(); - } - _actionStateList.push_back(_currentFrameActions); - _currentFrameActions.clear(); - } - - for (int poseIndex = 0; poseIndex < poseArrayList.size(); poseIndex++) { - QJsonArray poseState = poseArrayList[poseIndex].toArray(); - for (int index = 0; index < poseState.size(); index++) { - QString actionName = userInputMapper->getActionName(Action(index)); - _currentFramePoses[actionName] = jsonObjectToPose(poseState[index].toObject()); - } - _poseStateList.push_back(_currentFramePoses); - _currentFramePoses.clear(); - } - } - + } _loading = false; } From 725388043f2cd1d7ebbf82f977a8fdfd82e2c331 Mon Sep 17 00:00:00 2001 From: Dante Ruiz Date: Thu, 1 Jun 2017 22:30:50 +0100 Subject: [PATCH 199/357] removed double semi-colons --- libraries/controllers/src/controllers/InputRecorder.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/controllers/src/controllers/InputRecorder.cpp b/libraries/controllers/src/controllers/InputRecorder.cpp index e8bcd3a006..dbc2e4df52 100644 --- a/libraries/controllers/src/controllers/InputRecorder.cpp +++ b/libraries/controllers/src/controllers/InputRecorder.cpp @@ -217,7 +217,7 @@ namespace controller { for (int actionIndex = 0; actionIndex < actionArrayList.size(); actionIndex++) { QJsonArray actionState = actionArrayList[actionIndex].toArray(); for (int index = 0; index < actionState.size(); index++) { - QJsonObject actionObject = actionState[index].toObject();; + QJsonObject actionObject = actionState[index].toObject(); _currentFrameActions[actionObject["name"].toString()] = actionObject["value"].toDouble(); } _actionStateList.push_back(_currentFrameActions); From f45db99149946bc61a97034e98af77c97da367ac Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Thu, 1 Jun 2017 14:35:53 -0700 Subject: [PATCH 200/357] for the moment, vive input plugin isn't a head-controller unless the HMD is being worn --- plugins/openvr/src/ViveControllerManager.cpp | 5 +++++ plugins/openvr/src/ViveControllerManager.h | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/plugins/openvr/src/ViveControllerManager.cpp b/plugins/openvr/src/ViveControllerManager.cpp index 53500a3353..11d390fca4 100644 --- a/plugins/openvr/src/ViveControllerManager.cpp +++ b/plugins/openvr/src/ViveControllerManager.cpp @@ -138,6 +138,11 @@ void ViveControllerManager::deactivate() { _registeredWithInputMapper = false; } +bool ViveControllerManager::isHeadController() const { + vr::EDeviceActivityLevel activityLevel = _system->GetTrackedDeviceActivityLevel(vr::k_unTrackedDeviceIndex_Hmd); + return activityLevel == vr::k_EDeviceActivityLevel_UserInteraction; +} + void ViveControllerManager::pluginUpdate(float deltaTime, const controller::InputCalibrationData& inputCalibrationData) { if (!_system) { diff --git a/plugins/openvr/src/ViveControllerManager.h b/plugins/openvr/src/ViveControllerManager.h index 6532540285..0fdd04fdfb 100644 --- a/plugins/openvr/src/ViveControllerManager.h +++ b/plugins/openvr/src/ViveControllerManager.h @@ -41,7 +41,7 @@ public: const QString getName() const override { return NAME; } bool isHandController() const override { return true; } - bool isHeadController() const override { return true; } + bool isHeadController() const override; bool activate() override; void deactivate() override; From 77eb75db95db709c38f93c6759524a81eb5ad2a0 Mon Sep 17 00:00:00 2001 From: Dante Ruiz Date: Thu, 1 Jun 2017 22:48:59 +0100 Subject: [PATCH 201/357] add .json to extension --- libraries/controllers/src/controllers/InputRecorder.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/controllers/src/controllers/InputRecorder.cpp b/libraries/controllers/src/controllers/InputRecorder.cpp index d52d7d4f09..54d1aaf131 100644 --- a/libraries/controllers/src/controllers/InputRecorder.cpp +++ b/libraries/controllers/src/controllers/InputRecorder.cpp @@ -28,7 +28,7 @@ QString SAVE_DIRECTORY = QStandardPaths::writableLocation(QStandardPaths::AppLocalDataLocation) + "/" + BuildInfo::MODIFIED_ORGANIZATION + "/" + BuildInfo::INTERFACE_NAME + "/hifi-input-recordings/"; QString FILE_PREFIX_NAME = "input-recording-"; -QString COMPRESS_EXTENSION = "json.gz"; +QString COMPRESS_EXTENSION = ".json.gz"; namespace controller { QJsonObject poseToJsonObject(const Pose pose) { From 3710637254a01e8b48e83f720d26973de9430338 Mon Sep 17 00:00:00 2001 From: "Anthony J. Thibault" Date: Thu, 1 Jun 2017 15:17:02 -0700 Subject: [PATCH 202/357] warning fix --- libraries/shared/src/CubicHermiteSpline.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/shared/src/CubicHermiteSpline.h b/libraries/shared/src/CubicHermiteSpline.h index 17b4fda991..d03136867a 100644 --- a/libraries/shared/src/CubicHermiteSpline.h +++ b/libraries/shared/src/CubicHermiteSpline.h @@ -37,7 +37,7 @@ public: float t2 = t * t; float w0 = -6.0f * t + 6.0f * t2; float w1 = 1.0f - 4.0f * t + 3.0f * t2; - float w2 = 6.0 * t - 6.0f * t2; + float w2 = 6.0f * t - 6.0f * t2; float w3 = -2.0f * t + 3.0f * t2; return w0 * _p0 + w1 * _m0 + w2 * _p1 + w3 * _m1; } From 06b3ecfdc3072a5a90dab3e21ae1915f3d2bddfc Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Thu, 1 Jun 2017 15:50:56 -0700 Subject: [PATCH 203/357] also log metaverse session ID during ctor of AccountManager --- libraries/networking/src/AccountManager.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/libraries/networking/src/AccountManager.cpp b/libraries/networking/src/AccountManager.cpp index 85232f9f61..ab336b0b31 100644 --- a/libraries/networking/src/AccountManager.cpp +++ b/libraries/networking/src/AccountManager.cpp @@ -90,6 +90,8 @@ AccountManager::AccountManager(UserAgentGetter userAgentGetter) : qRegisterMetaType("QHttpMultiPart*"); qRegisterMetaType(); + + qCDebug(networking) << "Metaverse session ID is" << uuidStringWithoutCurlyBraces(_sessionID); } const QString DOUBLE_SLASH_SUBSTITUTE = "slashslash"; @@ -203,7 +205,7 @@ void AccountManager::setAuthURL(const QUrl& authURL) { void AccountManager::setSessionID(const QUuid& sessionID) { if (_sessionID != sessionID) { - qCDebug(networking) << "Metaverse session ID is" << uuidStringWithoutCurlyBraces(sessionID); + qCDebug(networking) << "Metaverse session ID changed to" << uuidStringWithoutCurlyBraces(sessionID); _sessionID = sessionID; } } From 0f22b07026be8558ba18041f8d545bf77f6f80b2 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Thu, 1 Jun 2017 16:07:36 -0700 Subject: [PATCH 204/357] move session ID logging later in app startup --- interface/src/Application.cpp | 2 ++ libraries/networking/src/AccountManager.cpp | 2 -- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 46c4c0bd4e..8c6bea0905 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -1459,6 +1459,8 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo updateSystemTabletMode(); connect(&_myCamera, &Camera::modeUpdated, this, &Application::cameraModeChanged); + + qCDebug(interfaceapp) << "Metaverse session ID is" << uuidStringWithoutCurlyBraces(accountManager->getSessionID()); } void Application::domainConnectionRefused(const QString& reasonMessage, int reasonCodeInt, const QString& extraInfo) { diff --git a/libraries/networking/src/AccountManager.cpp b/libraries/networking/src/AccountManager.cpp index ab336b0b31..c6fffbfdbd 100644 --- a/libraries/networking/src/AccountManager.cpp +++ b/libraries/networking/src/AccountManager.cpp @@ -90,8 +90,6 @@ AccountManager::AccountManager(UserAgentGetter userAgentGetter) : qRegisterMetaType("QHttpMultiPart*"); qRegisterMetaType(); - - qCDebug(networking) << "Metaverse session ID is" << uuidStringWithoutCurlyBraces(_sessionID); } const QString DOUBLE_SLASH_SUBSTITUTE = "slashslash"; From 7d21ab88b0add448700fe4cca4c5dacb2b5a19c8 Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Thu, 1 Jun 2017 16:14:59 -0700 Subject: [PATCH 205/357] add some saftey checks. cleanups --- interface/src/Application.cpp | 12 +++++++++--- interface/src/avatar/MyAvatar.cpp | 5 ++--- plugins/oculus/src/OculusControllerManager.cpp | 6 ++++-- 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index aee829b624..8d20cbe715 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -4423,7 +4423,9 @@ void Application::update(float deltaTime) { myAvatar->setSpineControllerPosesInSensorFrame(hipsPose.transform(avatarToSensorMatrix), spine2Pose.transform(avatarToSensorMatrix)); controller::Pose headPose = userInputMapper->getPoseState(controller::Action::HEAD); - myAvatar->setHeadControllerPoseInSensorFrame(headPose.transform(avatarToSensorMatrix)); + if (headPose.isValid()) { + myAvatar->setHeadControllerPoseInSensorFrame(headPose.transform(avatarToSensorMatrix)); + } controller::Pose leftArmPose = userInputMapper->getPoseState(controller::Action::LEFT_ARM); controller::Pose rightArmPose = userInputMapper->getPoseState(controller::Action::RIGHT_ARM); @@ -4859,9 +4861,13 @@ bool Application::isHMDMode() const { } bool Application::isHeadControllerEnabled() const { - const InputPluginList& inputPlugins = PluginManager::getInstance()->getInputPlugins(); + auto pluginManager = PluginManager::getInstance(); + if (!pluginManager) { + return false; + } + const InputPluginList& inputPlugins = pluginManager->getInputPlugins(); for (auto& ip : inputPlugins) { - if (ip->isActive() && ip->isHeadController()) { + if (ip && ip->isActive() && ip->isHeadController()) { return true; } } diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index ef2e53cbb9..c26cdf0b01 100755 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -2328,7 +2328,6 @@ glm::quat MyAvatar::getWorldBodyOrientation() const { // old school meat hook style glm::mat4 MyAvatar::deriveBodyFromHMDSensor() const { - // HMD is in sensor space. const glm::vec3 headPosition = getHeadControllerPoseInSensorFrame().translation; const glm::quat headOrientation = getHeadControllerPoseInSensorFrame().rotation * Quaternions::Y_180; const glm::quat headOrientationYawOnly = cancelOutRollAndPitch(headOrientation); @@ -2352,8 +2351,8 @@ glm::mat4 MyAvatar::deriveBodyFromHMDSensor() const { // apply simplistic head/neck model // figure out where the avatar body should be by applying offsets from the avatar's neck & head joints. - // eyeToNeck offset is relative full HMD orientation. - // while neckToRoot offset is only relative to HMDs yaw. + // eyeToNeck offset is relative to head's full orientation, + // while neckToRoot offset is only relative to head's yaw. // Y_180 is necessary because rig is z forward and headOrientation is -z forward glm::vec3 eyeToNeck = headOrientation * Quaternions::Y_180 * (localNeck - localEyes); glm::vec3 neckToRoot = headOrientationYawOnly * Quaternions::Y_180 * -localNeck; diff --git a/plugins/oculus/src/OculusControllerManager.cpp b/plugins/oculus/src/OculusControllerManager.cpp index 60031a1179..ff3e614077 100644 --- a/plugins/oculus/src/OculusControllerManager.cpp +++ b/plugins/oculus/src/OculusControllerManager.cpp @@ -221,8 +221,11 @@ bool OculusControllerManager::isHeadController() const { return status.HmdMounted == ovrTrue; } -void OculusControllerManager::TouchDevice::update(float deltaTime, const controller::InputCalibrationData& inputCalibrationData) { +void OculusControllerManager::TouchDevice::update(float deltaTime, + const controller::InputCalibrationData& inputCalibrationData) { _buttonPressedMap.clear(); + _poseStateMap.erase(controller::HEAD); + if (!_parent.isHeadController()) { // if the HMD isn't on someone's head, don't take input from the controllers return; @@ -258,7 +261,6 @@ void OculusControllerManager::TouchDevice::update(float deltaTime, const control handleRotationForUntrackedHand(inputCalibrationData, hand, tracking.HandPoses[hand]); }); - _poseStateMap.erase(controller::HEAD); handleHeadPose(deltaTime, inputCalibrationData, tracking.HeadPose); using namespace controller; From 27664756de05b4b8ac96cc3fdb9d81e24450b6b1 Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Thu, 1 Jun 2017 16:37:04 -0700 Subject: [PATCH 206/357] with vive head-puck, isHeadController is true, even when HMD isn't mounted --- plugins/openvr/src/ViveControllerManager.cpp | 3 +++ plugins/openvr/src/ViveControllerManager.h | 1 + 2 files changed, 4 insertions(+) diff --git a/plugins/openvr/src/ViveControllerManager.cpp b/plugins/openvr/src/ViveControllerManager.cpp index 2f2278ae82..abff0770a7 100644 --- a/plugins/openvr/src/ViveControllerManager.cpp +++ b/plugins/openvr/src/ViveControllerManager.cpp @@ -165,6 +165,9 @@ void ViveControllerManager::deactivate() { } bool ViveControllerManager::isHeadController() const { + if (_inputDevice && _inputDevice->isHeadController()) { + return true; + } vr::EDeviceActivityLevel activityLevel = _system->GetTrackedDeviceActivityLevel(vr::k_unTrackedDeviceIndex_Hmd); return activityLevel == vr::k_EDeviceActivityLevel_UserInteraction; } diff --git a/plugins/openvr/src/ViveControllerManager.h b/plugins/openvr/src/ViveControllerManager.h index b06ba5bf89..d03818ea34 100644 --- a/plugins/openvr/src/ViveControllerManager.h +++ b/plugins/openvr/src/ViveControllerManager.h @@ -55,6 +55,7 @@ private: class InputDevice : public controller::InputDevice { public: InputDevice(vr::IVRSystem*& system); + bool isHeadController() const { return _overrideHead; } private: // Device functions controller::Input::NamedVector getAvailableInputs() const override; From 37b738ff8bba90ad2784a09a1e9060f5366b555e Mon Sep 17 00:00:00 2001 From: David Kelly Date: Thu, 1 Jun 2017 16:46:31 -0700 Subject: [PATCH 207/357] initial cut at some UserActivities for the bubble --- .../src/UserActivityLoggerScriptingInterface.cpp | 10 +++++++++- .../src/UserActivityLoggerScriptingInterface.h | 2 ++ scripts/system/bubble.js | 4 +++- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/libraries/networking/src/UserActivityLoggerScriptingInterface.cpp b/libraries/networking/src/UserActivityLoggerScriptingInterface.cpp index ff69363570..61f2071c5f 100644 --- a/libraries/networking/src/UserActivityLoggerScriptingInterface.cpp +++ b/libraries/networking/src/UserActivityLoggerScriptingInterface.cpp @@ -56,7 +56,7 @@ void UserActivityLoggerScriptingInterface::palAction(QString action, QString tar } void UserActivityLoggerScriptingInterface::palOpened(float secondsOpened) { - doLogAction("pal_opened", { + doLogAction("pal_opened", { { "seconds_opened", secondsOpened } }); } @@ -71,6 +71,14 @@ void UserActivityLoggerScriptingInterface::makeUserConnection(QString otherID, b doLogAction("makeUserConnection", payload); } +void UserActivityLoggerScriptingInterface::bubbleToggled(bool newValue) { + doLogAction(newValue ? "bubbleOn" : "bubbleOff"); +} + +void UserActivityLoggerScriptingInterface::bubbleActivated() { + doLogAction("bubbleActivated"); +} + void UserActivityLoggerScriptingInterface::logAction(QString action, QVariantMap details) { doLogAction(action, QJsonObject::fromVariantMap(details)); } diff --git a/libraries/networking/src/UserActivityLoggerScriptingInterface.h b/libraries/networking/src/UserActivityLoggerScriptingInterface.h index b141e930f2..885f637a62 100644 --- a/libraries/networking/src/UserActivityLoggerScriptingInterface.h +++ b/libraries/networking/src/UserActivityLoggerScriptingInterface.h @@ -30,6 +30,8 @@ public: Q_INVOKABLE void palAction(QString action, QString target); Q_INVOKABLE void palOpened(float secondsOpen); Q_INVOKABLE void makeUserConnection(QString otherUser, bool success, QString details = ""); + Q_INVOKABLE void bubbleToggled(bool newValue); + Q_INVOKABLE void bubbleActivated(); Q_INVOKABLE void logAction(QString action, QVariantMap details = QVariantMap{}); private: void doLogAction(QString action, QJsonObject details = {}); diff --git a/scripts/system/bubble.js b/scripts/system/bubble.js index 8d103c93de..de18bae4cd 100644 --- a/scripts/system/bubble.js +++ b/scripts/system/bubble.js @@ -10,7 +10,7 @@ // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -/* global Script, Users, Overlays, AvatarList, Controller, Camera, getControllerWorldLocation */ +/* global Script, Users, Overlays, AvatarList, Controller, Camera, getControllerWorldLocation, UserActivityLogger */ (function () { // BEGIN LOCAL_SCOPE var button; @@ -76,6 +76,7 @@ // Called from the C++ scripting interface to show the bubble overlay function enteredIgnoreRadius() { createOverlays(); + UserActivityLogger.bubbleActivated(); } // Used to set the state of the bubble HUD button @@ -142,6 +143,7 @@ function onBubbleToggled() { var bubbleActive = Users.getIgnoreRadiusEnabled(); writeButtonProperties(bubbleActive); + UserActivityLogger.bubbleToggled(bubbleActive); if (bubbleActive) { createOverlays(); } else { From 4e190434d12366f88511e481d93ba59ace96f6cb Mon Sep 17 00:00:00 2001 From: seefo Date: Thu, 1 Jun 2017 16:48:38 -0700 Subject: [PATCH 208/357] Added polaroids to snapshots --- .../assets/sounds/sound-print-photo.wav | Bin 0 -> 529930 bytes scripts/system/html/SnapshotReview.html | 6 +- scripts/system/html/css/SnapshotReview.css | 44 +++++++ scripts/system/html/img/button-snap-print.svg | 25 ++++ scripts/system/html/js/SnapshotReview.js | 57 +++++++++ scripts/system/snapshot.js | 118 ++++++++++++++++++ 6 files changed, 249 insertions(+), 1 deletion(-) create mode 100644 scripts/system/assets/sounds/sound-print-photo.wav create mode 100644 scripts/system/html/img/button-snap-print.svg diff --git a/scripts/system/assets/sounds/sound-print-photo.wav b/scripts/system/assets/sounds/sound-print-photo.wav new file mode 100644 index 0000000000000000000000000000000000000000..ecc51699681d7d5101628b3b50a34033e2bc8bcb GIT binary patch literal 529930 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

    )9ePi#x*{dB&>)wO9TX0$Zua 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
    NT&*|ek^OLP3_cA{E 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

    -
    +
    + +
    diff --git a/scripts/system/html/css/SnapshotReview.css b/scripts/system/html/css/SnapshotReview.css index 218eb8c9a5..b243d10af6 100644 --- a/scripts/system/html/css/SnapshotReview.css +++ b/scripts/system/html/css/SnapshotReview.css @@ -286,6 +286,50 @@ input[type=button].naked:active { // END styling of snapshot controls (bottom panel) and its contents */ + +/* +// START polaroid styling +*/ + +#print-button { + width: 72px; + height: 72px; + margin-left: 30px; + margin-top: -10px; + box-sizing: content-box; + display: inline; + outline:none; +} + +.print-icon-enabled { + background: url(../img/button-snap-print.svg); + background-repeat: no-repeat; + margin: auto; + width: 48px; + height: 48px; +} + +.print-icon-loading { + background: url(../img/loader.gif); + background-repeat: no-repeat; + margin: auto; + width: 32px; + height: 32px; +} + +.print-icon-disabled { + background: url(../img/button-snap-print.svg); + background-repeat: no-repeat; + margin: auto; + width: 48px; + height: 48px; +} + +/* +// END polaroid styling +*/ + + /* // START misc styling */ diff --git a/scripts/system/html/img/button-snap-print.svg b/scripts/system/html/img/button-snap-print.svg new file mode 100644 index 0000000000..d1570711d7 --- /dev/null +++ b/scripts/system/html/img/button-snap-print.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/scripts/system/html/js/SnapshotReview.js b/scripts/system/html/js/SnapshotReview.js index 36f7124f93..9f1d62eadf 100644 --- a/scripts/system/html/js/SnapshotReview.js +++ b/scripts/system/html/js/SnapshotReview.js @@ -311,6 +311,9 @@ function addImage(image_data, isLoggedIn, canShare, isGifLoading, isShowingPrevi if (isShowingPreviousImages && isLoggedIn && image_data.story_id) { updateShareInfo(id, image_data.story_id); } + if(isShowingPreviousImages) { + requestPrintButtonUpdate(); + } }; img.onerror = function () { img.onload = null; @@ -670,10 +673,22 @@ window.onload = function () { break; case 'captureSettings': handleCaptureSetting(message.setting); + break; + case 'setPrintButtonEnabled': + setPrintButtonEnabled(); + break; + case 'setPrintButtonLoading': + setPrintButtonLoading(); + break; + case 'setPrintButtonDisabled': + setPrintButtonDisabled(); break; case 'snapshotUploadComplete': var isGif = fileExtensionMatches(message.image_url, "gif"); updateShareInfo(isGif ? "p1" : "p0", message.story_id); + if (isPrintProcessing()) { + setPrintButtonEnabled(); + } break; default: console.log("Unknown message action received in SnapshotReview.js."); @@ -703,6 +718,48 @@ function takeSnapshot() { } } +function isPrintDisabled() { return document.getElementById('print-icon').className === "print-icon-disabled"; } +function isPrintProcessing() { return document.getElementById('print-icon').className === "print-icon-loading"; } +function isPrintEnabled() { return document.getElementById('print-icon').className === "print-icon-enabled"; } + +function setPrintButtonLoading() { + document.getElementById('print-icon').className = "print-icon-loading"; + document.getElementById('print-button').disabled = true; +} + +function setPrintButtonDisabled() { + document.getElementById('print-icon').className = "print-icon-disabled"; + document.getElementById('print-button').disabled = true; +} + +function setPrintButtonEnabled() { + document.getElementById('print-button').disabled = false; + document.getElementById('print-icon').className = "print-icon-enabled"; +} + +function requestPrintButtonUpdate() { + EventBridge.emitWebEvent(JSON.stringify({ + type: "snapshot", + action: "requestPrintButtonUpdate" + })); +} + +function printToPolaroid() { + + if (isPrintEnabled()) { + + EventBridge.emitWebEvent(JSON.stringify({ + type: "snapshot", + action: "printToPolaroid" + })); + + //shareBarHelp.innerHTML = "Printed" + //shareBarHelp.style.backgroundColor = "#000000"; + //shareBarHelp.style.opacity = "0.5"; + } else { + setPrintButtonLoading(); + } +} function testInBrowser(test) { if (test === 0) { showSetupInstructions(); diff --git a/scripts/system/snapshot.js b/scripts/system/snapshot.js index 494ab245b1..3209a5e51a 100644 --- a/scripts/system/snapshot.js +++ b/scripts/system/snapshot.js @@ -99,11 +99,13 @@ function onMessage(message) { Settings.setValue("previousStillSnapStoryID", ""); Settings.setValue("previousStillSnapBlastingDisabled", false); Settings.setValue("previousStillSnapHifiSharingDisabled", false); + Settings.setValue("previousStillSnapUrl", ""); Settings.setValue("previousAnimatedSnapPath", ""); Settings.setValue("previousAnimatedSnapStoryID", ""); Settings.setValue("previousAnimatedSnapBlastingDisabled", false); Settings.setValue("previousAnimatedSnapHifiSharingDisabled", false); } + updatePrintPermissions(); break; case 'login': openLoginWindow(); @@ -144,6 +146,7 @@ function onMessage(message) { isLoggedIn = Account.isLoggedIn(); if (isLoggedIn) { print('Sharing snapshot with audience "for_url":', message.data); + isUploadingPrintableStill = true; Window.shareSnapshot(message.data, Settings.getValue("previousSnapshotHref")); var isGif = fileExtensionMatches(message.data, "gif"); if (isGif) { @@ -153,9 +156,14 @@ function onMessage(message) { } } else { shareAfterLogin = true; + isUploadingPrintableStill = false; snapshotToShareAfterLogin.push({ path: message.data, href: Settings.getValue("previousSnapshotHref") }); } + } else { + isUploadingPrintableStill = false; } + + updatePrintPermissions(); }); break; case 'blastToConnections': @@ -214,6 +222,17 @@ function onMessage(message) { } }); } + break; + case 'requestPrintButtonUpdate': + updatePrintPermissions(); + break; + case 'printToPolaroid': + + if(Entities.canRez() || Entities.canRezTmp()) { + printToPolaroid(Settings.getValue("previousStillSnapUrl")); + removeFromStoryIDsToMaybeDelete(Settings.getValue("previousStillSnapStoryID")); + } + break; case 'shareSnapshotWithEveryone': isLoggedIn = Account.isLoggedIn(); @@ -262,6 +281,54 @@ function onMessage(message) { } } +var polaroid_print_sound = SoundCache.getSound(Script.resolvePath("assets/sounds/sound-print-photo.wav")); +var model_url = 'http://hifi-content.s3.amazonaws.com/alan/dev/Test/snapshot.fbx'; + +function printToPolaroid(image_url) { + + var polaroid_url = image_url; + + var model_pos = Vec3.sum(MyAvatar.position, Vec3.multiply(0.75, Quat.getForward(MyAvatar.orientation))); + + var model_q1 = MyAvatar.orientation; + var model_q2 = Quat.angleAxis(90, Quat.getRight(model_q1)); + var model_rot = Quat.multiply(model_q2, model_q1); + + var properties = { + "type": 'Model', + "shapeType": 'box', + + "name": "New Snapshot", + "description": "Printed from Snaps", + "modelURL": model_url, + + "position": model_pos, + "rotation": model_rot, + + "textures": JSON.stringify( { "tex.picture": polaroid_url } ), + + "density": 200, + "restitution": 0.15, + "gravity": { "x": 0, "y": -1, "z": 0 }, + + "linear_accleration" : { "x": 0, "y": 2.0, "z": 0 }, + + "dynamic": true, + "collisionsWillMove": true, + + "userData": { + "grabbableKey": { "grabbable" : true } + } + }; + + var polaroid = Entities.addEntity(properties); + Audio.playSound(polaroid_print_sound, { + position: model_pos, + localOnly: false, + volume: 0.2 + }); +} + function fillImageDataFromPrevious() { isLoggedIn = Account.isLoggedIn(); var previousStillSnapPath = Settings.getValue("previousStillSnapPath"); @@ -349,6 +416,7 @@ function snapshotUploaded(isError, reply) { Settings.setValue("previousAnimatedSnapStoryID", storyID); } else { Settings.setValue("previousStillSnapStoryID", storyID); + Settings.setValue("previousStillSnapUrl", imageURL); } } else { print('Ignoring snapshotUploaded() callback for stale ' + (isGif ? 'GIF' : 'Still' ) + ' snapshot. Stale story ID:', storyID); @@ -356,6 +424,7 @@ function snapshotUploaded(isError, reply) { } else { print(reply); } + isUploadingPrintableStill = false; } var href, domainId; function takeSnapshot() { @@ -367,10 +436,13 @@ function takeSnapshot() { Settings.setValue("previousStillSnapStoryID", ""); Settings.setValue("previousStillSnapBlastingDisabled", false); Settings.setValue("previousStillSnapHifiSharingDisabled", false); + Settings.setValue("previousStillSnapUrl", ""); Settings.setValue("previousAnimatedSnapPath", ""); Settings.setValue("previousAnimatedSnapStoryID", ""); Settings.setValue("previousAnimatedSnapBlastingDisabled", false); Settings.setValue("previousAnimatedSnapHifiSharingDisabled", false); + + isUploadingPrintableStill = false; // Raising the desktop for the share dialog at end will interact badly with clearOverlayWhenMoving. // Turn it off now, before we start futzing with things (and possibly moving). @@ -442,6 +514,7 @@ function isDomainOpen(id, callback) { status = response.total_entries ? true : false; } print("Domain open status:", status); + wasPreviousSnapshotShareable = status; callback(status); }); } else { @@ -604,7 +677,12 @@ function onUsernameChanged() { numStillSnapshotUploadsPending++; } }); + isUploadingPrintableStill = true; + } else { + isUploadingPrintableStill = false; } + + updatePrintPermissions(); }); shareAfterLogin = false; @@ -612,6 +690,7 @@ function onUsernameChanged() { } } } + function snapshotLocationSet(location) { if (location !== "") { tablet.emitScriptEvent(JSON.stringify({ @@ -621,12 +700,48 @@ function snapshotLocationSet(location) { } } +function updatePrintPermissions() { + processRezPermissionChange(Entities.canRez() || Entities.canRezTmp()); +} + +var isUploadingPrintableStill = false; +function processRezPermissionChange(canRez) { + + print('can we rez0?' + canRez); + print('can we rez1?' + Settings.getValue("previousStillSnapUrl")) ; + print('can we rez2?' + isUploadingPrintableStill); + + var action = ""; + + if(canRez) { + if(Settings.getValue("previousStillSnapUrl")) { + action = 'setPrintButtonEnabled'; + } else if(isUploadingPrintableStill) { + action = 'setPrintButtonLoading'; + } else { + action = 'setPrintButtonDisabled'; + } + } else { + action = 'setPrintButtonDisabled'; + } + + tablet.emitScriptEvent(JSON.stringify({ + type: "snapshot", + action : action + })); +} + button.clicked.connect(onButtonClicked); buttonConnected = true; + Window.snapshotShared.connect(snapshotUploaded); tablet.screenChanged.connect(onTabletScreenChanged); GlobalServices.myUsernameChanged.connect(onUsernameChanged); Snapshot.snapshotLocationSet.connect(snapshotLocationSet); + +Entities.canRezChanged.connect(processRezPermissionChange); +Entities.canRezTmpChanged.connect(processRezPermissionChange); + Script.scriptEnding.connect(function () { if (buttonConnected) { button.clicked.disconnect(onButtonClicked); @@ -638,6 +753,9 @@ Script.scriptEnding.connect(function () { Window.snapshotShared.disconnect(snapshotUploaded); tablet.screenChanged.disconnect(onTabletScreenChanged); Snapshot.snapshotLocationSet.disconnect(snapshotLocationSet); + + Entities.canRezChanged.disconnect(processRezPermissionChange); + Entities.canRezTmpChanged.disconnect(processRezPermissionChange); }); }()); // END LOCAL_SCOPE From 6b2e4c5abca650a627d53462aabe6c04f030a869 Mon Sep 17 00:00:00 2001 From: howard-stearns Date: Thu, 1 Jun 2017 17:08:22 -0700 Subject: [PATCH 209/357] zaru stuff --- interface/src/avatar/MyAvatar.cpp | 14 +++++++++----- interface/src/avatar/MyAvatar.h | 4 ++-- libraries/physics/src/CharacterController.cpp | 8 +++++--- 3 files changed, 16 insertions(+), 10 deletions(-) diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index bbac271450..d9b5309a77 100755 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -439,7 +439,7 @@ void MyAvatar::update(float deltaTime) { } if (_physicsSafetyPending && qApp->isPhysicsEnabled() && _characterController.isEnabledAndReady()) { // fix only when needed and ready _physicsSafetyPending = false; - safeLanding(_goToPosition); // no-op if already safe + safeLanding(_goToPosition, _characterController.isStuck()); // no-op if already safe } Head* head = getHead(); @@ -2236,7 +2236,7 @@ void MyAvatar::goToLocationAndEnableCollisions(const glm::vec3& position) { // S goToLocation(position); QMetaObject::invokeMethod(this, "setCollisionsEnabled", Qt::QueuedConnection, Q_ARG(bool, true)); } -bool MyAvatar::safeLanding(const glm::vec3& position) { +bool MyAvatar::safeLanding(const glm::vec3& position, bool force) { // Considers all collision hull or non-collisionless primitive intersections on a vertical line through the point. // There needs to be a "landing" if: // a) the closest above and the closest below are less than the avatar capsule height apart, or @@ -2253,7 +2253,7 @@ bool MyAvatar::safeLanding(const glm::vec3& position) { return result; } glm::vec3 better; - if (!requiresSafeLanding(position, better)) { + if (!requiresSafeLanding(position, better, force)) { return false; } qDebug() << "rechecking" << position << " => " << better << " collisions:" << getCollisionsEnabled() << " physics:" << qApp->isPhysicsEnabled(); @@ -2269,7 +2269,7 @@ bool MyAvatar::safeLanding(const glm::vec3& position) { } // If position is not reliably safe from being stuck by physics, answer true and place a candidate better position in betterPositionOut. -bool MyAvatar::requiresSafeLanding(const glm::vec3& positionIn, glm::vec3& betterPositionOut) { +bool MyAvatar::requiresSafeLanding(const glm::vec3& positionIn, glm::vec3& betterPositionOut, bool force) { // We could repeat this whole test for each of the four corners of our bounding box, in case the surface is uneven. However: // 1) This is only meant to cover the most important cases, and even the four corners won't handle random spikes in the surfaces or avatar. // 2) My feeling is that this code is already at the limit of what can realistically be reviewed and maintained. @@ -2324,7 +2324,11 @@ bool MyAvatar::requiresSafeLanding(const glm::vec3& positionIn, glm::vec3& bette if (!findIntersection(capsuleCenter, up, upperIntersection, upperId, upperNormal)) { // We currently believe that physics will reliably push us out if our feet are embedded, // as long as our capsule center is out and there's room above us. Here we have those - // conditions, so no need to check our feet below. + // conditions, so no need to check our feet below, unless forced. + if (force) { + upperIntersection = capsuleCenter; + return mustMove(); + } return ok("nothing above"); } diff --git a/interface/src/avatar/MyAvatar.h b/interface/src/avatar/MyAvatar.h index efab177a04..d9a2c03c38 100644 --- a/interface/src/avatar/MyAvatar.h +++ b/interface/src/avatar/MyAvatar.h @@ -523,7 +523,7 @@ public slots: bool shouldFaceLocation = false); void goToLocation(const QVariant& properties); void goToLocationAndEnableCollisions(const glm::vec3& newPosition); - bool safeLanding(const glm::vec3& position); + bool safeLanding(const glm::vec3& position, bool force = false); void restrictScaleFromDomainSettings(const QJsonObject& domainSettingsObject); void clearScaleRestriction(); @@ -571,7 +571,7 @@ private: glm::vec3 getWorldBodyPosition() const; glm::quat getWorldBodyOrientation() const; - bool requiresSafeLanding(const glm::vec3& positionIn, glm::vec3& positionOut); + bool requiresSafeLanding(const glm::vec3& positionIn, glm::vec3& positionOut, bool force = false); virtual QByteArray toByteArrayStateful(AvatarDataDetail dataDetail) override; diff --git a/libraries/physics/src/CharacterController.cpp b/libraries/physics/src/CharacterController.cpp index 88eff1a0fc..06c211e2f3 100755 --- a/libraries/physics/src/CharacterController.cpp +++ b/libraries/physics/src/CharacterController.cpp @@ -172,10 +172,12 @@ bool CharacterController::checkForSupport(btCollisionWorld* collisionWorld) { btScalar hitHeight = _halfHeight + _radius + pointOnCharacter.dot(_currentUp); // If there's non-trivial penetration with a big impulse for several steps, we're probably stuck. // Note it here in the controller, and let MyAvatar figure out what to do about it. - const float STUCK_PENETRATION = -0.1f; // always negative into the object. + const float STUCK_PENETRATION = -0.05f; // always negative into the object. const float STUCK_IMPULSE = 500.0f; - const int STUCK_LIFETIME = 50; - if ((contact.getDistance() < -STUCK_PENETRATION) && (contact.getAppliedImpulse() > STUCK_IMPULSE) && (contact.getLifeTime() > STUCK_LIFETIME)) { + const int STUCK_LIFETIME = 3; + //if (contact.getDistance() < STUCK_PENETRATION) qDebug() << "FIXME checking contact:" << contact.getDistance() << " impulse:" << contact.getAppliedImpulse() << " lifetime:" << contact.getLifeTime(); + if ((contact.getDistance() < STUCK_PENETRATION) && (contact.getAppliedImpulse() > STUCK_IMPULSE) && (contact.getLifeTime() > STUCK_LIFETIME)) { + qDebug() << "FIXME stuck contact:" << contact.getDistance() << " impulse:" << contact.getAppliedImpulse() << " lifetime:" << contact.getLifeTime(); isStuck = true; // latch on } if (hitHeight < _maxStepHeight && normal.dot(_currentUp) > _minFloorNormalDotUp) { From 0b057740591df9f8bd6ce8b8f7c7da9b4db21178 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Thu, 1 Jun 2017 16:57:18 -0700 Subject: [PATCH 210/357] change default avatar to new baked mannequin --- .../resources/meshes/Jointy3/Jointy3.fbx | Bin 803344 -> 0 bytes .../resources/meshes/defaultAvatar_full.fst | 152 +++++++++--------- interface/resources/meshes/mannequin/Eyes.ktx | Bin 0 -> 349744 bytes .../meshes/mannequin/lambert1_Base_Color.ktx | Bin 0 -> 699260 bytes .../mannequin/lambert1_Normal_OpenGL.ktx | Bin 0 -> 1398324 bytes .../meshes/mannequin/lambert1_Roughness.ktx | Bin 0 -> 699260 bytes .../meshes/mannequin/mannequin.baked.fbx | Bin 0 -> 611280 bytes 7 files changed, 78 insertions(+), 74 deletions(-) delete mode 100644 interface/resources/meshes/Jointy3/Jointy3.fbx mode change 100644 => 100755 interface/resources/meshes/defaultAvatar_full.fst create mode 100755 interface/resources/meshes/mannequin/Eyes.ktx create mode 100755 interface/resources/meshes/mannequin/lambert1_Base_Color.ktx create mode 100755 interface/resources/meshes/mannequin/lambert1_Normal_OpenGL.ktx create mode 100755 interface/resources/meshes/mannequin/lambert1_Roughness.ktx create mode 100755 interface/resources/meshes/mannequin/mannequin.baked.fbx diff --git a/interface/resources/meshes/Jointy3/Jointy3.fbx b/interface/resources/meshes/Jointy3/Jointy3.fbx deleted file mode 100644 index 9df7b17eac138d83fb9ab7250534be409f38b463..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 803344 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⁢M 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

    $T-%mSLyWVCrxwG|F^SnE;2PF(X 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

      XtyzC& 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%0DhUGP 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�omV(aumt znQzHXL0`Ryysf$LiK>|#qu{z5!Du_rAaIxxVF%pzTECnnd0$OPAtHf#{>{IaD3N1h zUkZS{Cr2zn8Yf5%B5pvq4@*p{4zK5rB0%~}s!n6z`@3z0_EoK0eNI6V>n%QvF1|X! z(t?6jfuRbsOa3i}Y%_(Q?WY2|AiA5yZqR^>IeC!wf=ZWf_k-X1pVazhQ?Fi6e0d49 z*_mnn@BB;egJGGlq|tw=$S;$jsf%+`vCWD%IT?xyeUe&oV#u{G13#&|40Eqe4?*xv ziE?M{tuyP~4Y9Xf`pGu!?NGGejS{?EMB%$ZO+82dvEKa^t4@;Hc17az@>{CU^qGZe zz>sz``6on4_~`+%sQq6VX<~d}|E+mQ^|QCA+G{3B^_RRIIXDsBZ(@2Wax?GC& zZ}o6_QOi~+S%eW9#Z_+~e8;CfQ=#)%OCY2?njWzYoX+^=8R<18hPrd($zS^IgxYekJF%_$CzS9#d}jH(2w6)>*DdTfO=KC zECkCDX5>$wu8Dc_Fw_x>OjtK_o0-`!CZ z0psxeg0n6n>D?S7RvzEWF_^(=V#E5^bG^2>d5=+Xce_k9Pv095z=WQP=#<~)cj{S= z*3^DNYEl)LM%mG{z<>`DWq7D8;wgR{hd5X0qS5=7M z;*I3A$y5H)vFj&N#Hc})k~1W@5ug$k=|Zo$s!80YclkaiR?Fnx@*PIMx#yS`ffzCC z*-}^Bdk-fTTn&u*D70e;m4HLr9|@0l_aVKSLjerF!-zN z!k*$^HI9_&8&!lF30P0CvvGt)^^m68L?-n?KYcpPfR?)vAe}$g8^Oi!1?nq!Xits# zmc?NFMH@8i$}(t-!d6#Vc$ao%90L5Ns4?k0rdaSRj`Ds$%&>x2+WkA+$iS>eMTd9O zFT)gQ=3qr9qouLC=M^RQ3OwxbApJXgapm51U8Y|wB>DvK52&3;6(#S*Up_jh=Ojlp zYF6to2)Z-gJ2)6!;Q_JTql}1tgI-Ul5-u5Uf=DFuT~c%4qgUr@fsEZ2fTclsjoZz+ zTcz{4%X#dA5}iNqbq5_33y9^i;DADCcjoH~RPEm$1=V89qhkiY>I`f+r>4*6+wo4*0C-abRhTw6X zn0nZEd49lFNHP@^wuq&Xuk-4(e)BXYQx;>P`RT@tM$<%KbRsan+`6i>tV>6sUVy+oNJ!`pv00ZwxzgM~)dHER!VVP?d&YUFc2Ve3TwRDiola%zb90a|kSUG1Jz*yZ{mjcO@ppJkrxr$bCQ)D4 zXCS`vWM8%20EaMZ(iV$H23}DUpL(HFaPyCgo85(noxr>1@~iX;TbI3Xv*oKO-k?og zLtTlkN0BhT7Ud2c?DB}wZtGUPBuqz<$tK_suj= zil?f6Yv}3co+)4Z7SJiuC%qp=`T{}EJ!8;ZFYCS#e50SmCilh2VkEWQBu+QbF(WS# z7Ob9osK&g6FRhzmOSiicy}gs3*4*dC#E~2!P#o>KWoD_KtWb*fwS4C4!BQ1>JEyTQ zU_w3(ofCGPo@i+1H`_fC_9!W{;uHANW$HZ;p-F{MdM{gFOsFH;wog&O=L0%OF|Hou zrR7_C{!mV)<+P{r)nV%r&(?r%p(t)Muqx3;HV_t#*j+=DeE4bI<(RIlXAPk>^aSO5 zy(y*1(eqQ@3<^oO6mPpTS9Y(cL+p+xya+*7E#uJ(kh@2~tJ~mVv^MXojGYnj;xf04 z4J8ykubLt{xE`ac8kcG1I6-_s=S&%W=0L>@ophjB=R!h^5$pqN`uI(`@<9s}MB9{t z6+fxrM{};!7q?J03wKQN%%E)ZIliXR;xl~4@hh!c#9>7b#~ozg^Nxz+PuhMABbGdS zoxs$XH-ZGQ2za)VTHzE|kkM^1)1qd~lO{9qmXqr5KGyDOc{x{4^bn;|fs^aPbS_;D zi-9-QIU{S5?62!2A+b{26RQCXl8%+JKM_oCz1l!^jb%6!FVBf)E1$aZ+7g2Rz~iQ{ zSG0BY!+_El(}T(P52eU@i22uYH&f3a=$(>z(zBOyh^LfN-9ueby0y1#vA*LiP@T${ zsg1D5GhRJBEkT&bPU;1m$aI9QIC6on6h~vCC8j&T`T>W`vYOz7;%|xf%j~X+jo(6VJN`ftU%afA zRGGpMj6=of*V+00Z4*9#j!tT)TvLQcV0^A29roI$wh;l0)G$TWboqe7fSc1W zL5CM?OA4Rq^u|p%1x3}tZ98ZOnqJ_E&#fp#(mEDbF;sM?SN^Gm zgY5UB><-2uIEWapeG88z51L?Hss$qn`vMOB);IF0b~1jGT`f;j6RI5GX z-$7bOC~F|b$X2bR{H|i_{RD76Oe}q;uoxWt?4uSdH$AFO`xRE=Rgl*AGE-5|?oe@A zxp-*hju3{Xuw--0Y+K-_9D4tuMBgFGkS0=mwxjrD^kUo76VtkU31~9=e#eFvL5uIAmtP=jlBaFP4&lLug3AQcZ~`{(KO8lPqaLktza~mLElbBJgOuT%hk=q&WT^80OGbPQ;U5O$@Z%Fj%^H zXHQvX8jT5`om*KmF+j%>a?cNH?9FT%PDsgntH|;Z9)gP>Zo?;{`Vj&yf7QuPTzmJm|?quamu&;Ov2yfBerF`Juc7XrS7C|EoJcr6@RK&|Bb#Yucx zg#!{^y4$0b0l^V3_U-C&rN_(PApS$QcIyqM-5VUZx5NISPRwucTi#&e zy}|jj-Scf&u5a)${~JuGv`GBLJy?FqCWci1C_Vl@7Y2w8EvUbG34i|Q*9R}~KT))^ z;{OXp({=xSN&bzZdAt83MPu;%yII;`47Fn*E;mXVGFjJ5X}2efHXCu^(G@ z;H+Ky-TBU91w7#x$%VWh5=mrIcfNA`?*;_z@7ZM zh`$(@z;8cEOlhV+3v1uvhChfK@t`CRkdiY86iff+R-c%I8b=KHU{nW)(X0LQX$?4O zR0pa5@&^^iPFom3e`7BDhS6_f&m>_Mb^}Jg5}z+Pr1`*5k#mB7M#w-K#VZOVOP2gJ z4OJY4GAqiDbo-O=Y!W^XE%Rqpv%hT9UO|xd!=CYHeqYhxpIi$HS&RqjC(&{Zsf&{X z3h<}QNk*2W%1wvvQu-jm3P+VnA*fy=Cr;rfT{S=+r1^8TF501F>z-1RPr(IN8&2>3~4okhK{Xv`73@_?%Y@jc|%}rr;(tlqd|7)KFhu zG-v(J%*S)2v%}79D?H5xby@Teaa`|-hj_7nXh&^Thdh&C%MrFl$Jyg21n=M}q z6qqQVPTixL(Vebqmx6Q+qw{;&5D9f<_xrMj8!IZ(w-+!TvD;N#C``k?b*!2>Wmh)5 z)40Mvx{IC!3dG-h$k*d57%^Zfi19eFhb7pL_COe4{TSxKAd+|~|NO(<3o4*U(2&FwE_Zcpby! z!b<7rXL(5PI-LH2&sR9@j31;{H;vTrY}#i)SSqSZ^}p+FS1Jt-Cc?=I$-D?3>wNKc zDol(z>$uPsnh! z#LD-<4^kO>&%^}?*2G>Vd#UwzA`BefCaRyj4@4b&K2C)Y(c^NnCkIiS+mdTs%XYIM zP0c3;-<-w~+P3X{NpEgoX@@7fHulJ^AQ3+8kb(V#4Cp29C~{`S=_@k939}Zd$Z+0K znKF*9Wwt>YRKVo(q;Ma67s-0EpPWVIr`ttW9CntEWIi@zuU#gkZX|bw5Wm-oyTM-R z<={A*h|QzcmU`oHi6ZP_)H_-GFcF_A|HWSV-CW|j43t=4huzIbd{;)_xcqu1MJPEm z(h&{G18M*yCQFVnhoSN+*^3g5YKnH8HOHEjkY$&#Q)3zEJm|nCu#IFk1WI;b6datD7GF!)f#U15oxbJER7$LXdPmnh~Emic0z9@YcaO4YVr6Mp7z*cDl8Y0 zv8W{Qw3JTibxpd~71OGRWymm(Wh9DZC}*s~#Y8f&3LDXOVnyQa(QTOben30-rp+wI zzO}T#`l8iZ)Kw93@|4>_(IxYa=CGBZjnLhaiAicv@WFvH5tW|U*+F_~fgx*IS?fZ@ zho?~9)YgO{MRCfP(w(z@ufvz;L%VQ3?;PQSpX=t_SWo#ip-ofxNTnFnyvid1{_3=+ zFgU1|3uC*%U57^34xbHiIo))@JDMLz@ zmBUk_#J8Nx#b17V4^xNRtu|xVIF>!KGB%tzayS{-@O*>JXx&^Y9{@^#U`DgMB*A}O zd3m@-=wk;?%y~$L2wz0+T`TJ=s4nzm*s)y_SfW(bB^oe?3xmi30v%gf5@HsT% z*1FCNl~~QXu)K>72sq4)LQdGdW6^qf$L2G{7>3H;w?a4F`4PwrO)-QXMhxc6ldFy< zorg8l+hzk5DY}4wg6Cp@ z4(ext>{l*qzmAA)uey+pNQYnJVCV>4N4}ISO|20*xp1vNHGq?c?0!?6=jrtUOH|IT z4(pK2I^TIYS3i=N!+bWG^S#az?7CcBipgo`CXdey3TqWGUz45Nw32G5R~KidUkx#! z$>57@9F{I3;pu4bbv0!tMi&cW;J&t*A3{DmYBjAQ`-+6`v5tuiyVwLJF99XzVyJ^4D1Ao=lEWcJQ5r zi#OQ)t0G1W{1?Q3sED)QVE%!V{dU+tmFge(@8*8PynTc7XM5+{u-x9@i~cv5ZfCM8 zGh>weO)o~z7?FDX`)ISE%i8Gwxgti6`%e||dg=eABDQ-Q@4r>VF@gVB5hn)!K2PU= zuZUURD&no*74b~(2lRLE0w&im4f+CdHBdAvn>G4RPEJmMVPP%!!J0)n`MU~wtUN)Q zn;&V%ZZwvA;Xr|XaJNV?8V7~6p+5w7#S;ck#pfe;Dt#*HU@2hsOBvB;vrq2#K(B}v z@kf-z9ELRhRjLxJ_PeoF#EAd$9)BxTe;Kmd1#`fo$N`IS_CXZH+w%~aQff&?4SyvQ}Nlf+mv!()E`20sTBiClybTL<|7Yh zB2I!m?O(u>%SmS`qQl+Q-5)Yt*+WH<4B*~ePNjI#{RP(E^#DD zPh5vWq-{D1sa-7T&(uW4^qt?9{n4UaKSK{isv3L#%hDv9B=_ZAAcRXW;3$_7l+26p z-IjH-a+gt@pM4;Yb&{-~Euf2t)2H=64HAAY0#TqB5NNwX@8+1_Hv!V$n-qU;0?=Pg z3XueNo_JH7ehRv>Jko@sqVzeUsxsmy$x4eM^ghmAgGgpfg^-CJGpfQ^WCcqR5vc&A z7=uAWBm>bgqV18oqvL0f)mzV(d#`W1OA5RZ^cJ5TM>XLx~s*HyAhw?Ua}q|l<0wC-8`1`;=dMStDFVjPl&(8Ffka8dYt`2fwxsp<9dXO#}~fRYxcnYn-3;s zJ?DZm**nxY>T)?|`~j+RueEJ+m~7X@7CJnqip5sXv=}fr8eULRjyl*Uq^4qiiV&aY z?y6a<0D%hjCxM&JFYI=QIJ@}9nf%{^G@?WsQC92w`AVb_1hce`MjK5mjEbmmRw^ zY{xLWMTT1(VNr3RYs1U7PY74H(qUpa+O$EjvK}Wx2D|eG3OZ_k(Bm4ddaeMb zLni`1oE|qXFxGlMACQF987j%!r1xCs_ouoX#=U(HqqxQDrP}MNFou_ePdY3pG{?G;c;59G77#i;Hs#fI* z6XMO%JVYRLku6wUqt|k?fQ%d-noLgT`ZnU;qUM&^6C=ljiGmQu(m!`UR#4Y8c(SxwaqEFZNdQOns4BQMja z3qH**L@#xG*Am+ZuXspTiuHc#6CX*L*-eBQ)g*t&ExvBVHvC5N%zc^YQHed*Vm2N5kD}D)m$z)L!wi{TAGghqC$@n;X&}b^eXWUe_dM|iuWiR&=H-GYOkXB;mHks zaU_{i7GNS(szYiDr@CQyGont(8 z`S#mWl*o^+(JYiFIQw`Vg9Zsck9#B>Hbdz-4~Fkh!a}yP`U9e^)9d8Ubs&vkR%!=} zyD|~$FUL~GZD}V3yK}dAAF#kG^m>JFtNNfstDJ76-r`*nlzYMETNa&ypR10_+_(NJTSm7OK#e~ z*k-ekQZJ+qc5j`6Fj2%e#T*fJX(09b&Fo8)le$M1_Hy@gQB-;koQbd#LhM2+t-VRTaa&CYfZ`lrOe^ zXHR>38yg!7uWjb+cWq|D);rne-vk{(Ms}ivaG;8(%&`+Gt9F-~$x=_}PjzzQEw=jd zn;gHpx=Cr0Sn+FZ#OP{$C40Gbzh}72DHPR?{THM7AKCzd!5Jz-Q%QU-=f6qMx(rlM z9A@cXq(>Wk(lKV= ze}nU9`}enDQN6)$`fo5*s^WSZy@dHiiaG9nk{$#P%JS*|iS&3>|0mKDt@VE)J;rb2 z{WsDR8268)Co}o?c>)Fdn^H>$<&G|T`S6O!qSL121c|I z39XH*md^FZc8--TOCtdxp}a_7NFaGqf&!?ZP-v*!#`EEp&b!OKCyfM|?dzU^(?>W+ zNJz*$C;^sj@>E-9z$Ut{sVt13$za)X-|=#1Mh$WNod4t>&cT7?KpgugE6NR7l*FJ^lZMcaTr^FebUu8X`#r8&TQz#C1R;t4Sb#Rh40)Dkb@uYDE}FTQx|O z#B-r0M^pw&@xLB&xp!r`yLDL%@WA}pXL%gtcepsLKBExkP%cm3CQm10AhYkUMubaf zA=dEUv&P3=13un^wQqg=g}eM7u6^72DHCu;Zhg*ndPeWPCHIuleun=i`|9IMABD#d zM<26Kh_pV_Z==sY8BfB@VT&U~fq!dhs3s!!GbN(P0n>;Zl1cnZb&~oIg9HjdRTu$h z`yfb_MrpvTL0RZqru3ngt)w_R@t50Y`Zm+A(6ciVA9zJXnO|2#f>N(W5BjH<#3#l$ zlb_M?KTqnL60A)hs*;v0(ukHK6I3O7Kr&YKm$9nh2URiZ-v$|maYFR2TZ;TdBB<3q z5%Kav7LYBPaKM||qk1YD@mY{T-Ond36iswkIOm{(66(FXO(ElaCi z-?$Ys?)J+GgRLS4S#nVrD{WDb6U`z&mby+shR*S)a;JS`c$ZVmx&MulJHbY zrtoAM-`}#{!byLo(-WuR+6|IqU8Bm2BlTM7l90t$g)p&I2iQ?BNRlaA9a>1=`lPmj03^j1$X2A!2CxTm(DMpfW|R|<#n-_-u8Qh*KG=5VGTkV$Q&y6 z$?&ug!cZ?*eU7Z)7CEeb7jniJ3F#eXzFn9$!~Yi-6?-mL8v5|3x9d;O5evHkvM7(a z|LaAS6F>b2BasP>8g#ic(r(N#NKvNH$?zXkeM}MiBf8|1Ki`D}>(O5p7X+#wER4ZB zeUJlbHpx?~;3Y}ksUh@FTpqGq9>ZIfpe%#Rg|jpjbLX0fu_4|QCe7Fv{2i%A8v4s0 zr7^6zG043!%InJb9Y|vqgiCagOR^Ydk8U7iyqIfvziX@>tT8AFR+D94;3sm*Hub#Vlj{|N2=TSs2EMH zq!6siIay{gSKv06p19})R@PUy3)u%({GQFPQ^Lkt2UIZXceHeg93*JlE&Jc$lfLYn zD4Yi5o}d>-;sa;g#>%~763QQcODrCb%->8gkdOuzquM6v)i8yurId@f&NVPGyi6=B z1Kp`+8Lv4dUcVHcYu2npNc<4Es7%yL`QRE{YyJ`At_fNy>03_r)i}nhnkn$=iF%pb zm3n3S6=zoIiZiTeBx@;@MaPo{(pZ8Zi^XGGgVOVv1r9M`SW!bP0&k(1JB3JL>y1`z;zf&1n*CkXOG?GFB7*bm};Ji){EctAj4WG zI35FhHY0E>MwP*dq+aN*T75#NECs4Gnf)3%T(pqlq`M(Lp4cy~GOd#U6c*2XeUKxY zo&hPm9L(QH3QM{LJEGOP91YM*?o3{TbH#sE|{V<)?Q$zKM zUB{u=j#XfwUM?e2k=&)`j%$6)N>MeQy>C#f#h=$B{Tw)voY87b3UR->PX?mcuSSDB znnRAO>(C1b#FIWU2PRN;eEgvn(>Qz^EHqtZ-ck=2<>raF9fg|QfKIA};Rn#5MzMMi z>LF>qXIjSf8CfseNn#L9*WA&D=jlFp7Vl}#?9`Qw^0FvTO9yDlk_bi}>tXk#0Ds!i zXrE&m57%WU$ed>%^zPOQ(%#MVf}$t_dKN+A@eE_%Bwm=ahA8ZNfB$GqJd!gBtrh%Y z-N4+W*APJCr>JHTwgShK%wXOaZSHj^xJu6-8-a|S)tBtP>O&E_{YffTB=%Tf{JPXYl?WKYjH7Bp z3ZtRaMG`=<|F;W$@%DJ<{-7v<qOlGLHNTva&Q^6`CC`J*7XhHLrVry5Ljy-#siZ;;xCKt5_HrP;wofN;)!FsEXX?kZ&hIPXx{X`2 zoLBY*N-4X+?kQW`-*)LC9-yVC zZkY=eY0u%?JG!%%tgXoqn2_pfU`#CFNOS_3HWP3WU)u!rbZ#h!!t{(!OWeA3kg&;c0l% zdUX8DkD{#~yan}8EgWT93sn&vFG*7b#xs=bX%bjw>x7$^p#%7HXuy+m0KoDG;xj{e zk$_K=zJ7}*rYd3*kXwlEE$Tj@aNh}n_actm4+1>~J)}hHqBx^YEtz0lb~Dk)YJP;i zd|r4Q1Xn^Zxgj>vU+U|8EX|b zJAs|8X}kK7a_kkzG1f=Ky=y`sJ*4n!U&flmwC!=0ca1cN&x{!RI3Ly_zl)XZf!W|V z<>}?txqBJJK8iw;mUO1jMv6|Zi7JjAEt3q4^Hk-o>~er|Yip5ueXad?*EMkI z55s3Fw#@?w_SAQMz(Sc$Og|KeEiVd<3_@59pm3 z(?IPdiEAb<%m>CPOTiGYcXl$G$5ZCMeaK_A3f@`dDA5m$%%| zRW5AwBf>L&BV`cC;&Scl6o(+h^Vf^*HaFnuX$YrO?Jv6Q^z|BGt7w>?= z+mPE+mvBLyM#&c)_+&5tnp*v30cpw0gq#wVJgFgSfl@3-Oi(N`Q+Bu+2&vy%%Y`(5+=WF zan1H>2MDmxb_QG%D&n&;sZ6jF72bom_{_! zBrG53{$@UPpV>e}&WD5k>fqUPf)jYH$O#0kLJlz3Wvkn`9vw$OjZH;tx^pKp*1(I@ z&<=Mmmk=1R9;?xc0X@3lvFaV2`q7>lrg&lju&Bbn`W^~T>~f+w$qq$M{nQoK?8Y54 zTY}E6d=CTk6!>_*6nZ|>UwCk8frWcD*Psd>b8hD4(f0`NvpTqv%sCN|!7jEE-um*{ z*aYNy774uvWDOFO{A&GM%$IZz3!IY~4zGP4O>i!IK*%r!=8944N&gG_=CB@G*wqHy3hXjyt8$TO?VWzoj1e zD5~kUS;$a~oT%wwM?67OeG=RxE7#2fSWd0n7Q;{XhQ#TMQE_;lHX1au`?Q$JTtho) ztzO!=TSyRm&gplztc()kpl;onvfxCqpE2GPk+fW&#W_mYEEZuYO!C1>W6;V#E!`pg zuG_t`^AHvl`n9+1QimQ%)odt5(NscADLbNq--De;)xdp|*zF5DS1B>wSO<`0{`@{T zsSVD)9aVfiArIZORk0I_9sEl&hf3#;Ks9%q;!)!_2S7M(bKGZ!*eqD7i3xM1X|@vS zAe#DJdhMlg~cj2Blt9Z;# z*n#e!1N8_uWNXRGADn^HpyDpC50smOP1T5*?k0YvykBhbHke{{$%@=g_O=X+2?*cH zN*kHvEiX*X^F|X>sR`L~)ABpEN&Gw&Pv&1(5N=*urpwtw!&9;q_%+D$11&yR2YXJI zhf5!adNd`XxvG_k_pCu&r2i6mx4sTCb zQg#(gD5S>NYK4LPZC$qXxr(Izkpv!&h6P|jMh4}dS0QJu-Ib1ZOWq@0o<3wuh`N-? zw_NPFqlByb-E3DKuD5oj8|~K$EK@=!EH11eh@4k9ig}udmnf?6Y_5Rche_$rAcJ_e>CKefEuw>d> z_d4GBTVh0W#)K=gdkGpoMJrFKnhp{M;TT{8IXuaW0{SKvAUN~oriNdGmHfWkUF=&? zw|bVb(-LaaBvnFLFLO^sOt*qzsHO)(fbi zG8du?wwfQOA1%Zg-y=D}1cIOLt`RSJ5q&G|;w@{&%fooi)mJM*{hJ0P+T06JOF5l4ZCClIg_+YH zZ(9)j3vtL6mgo^ts&=PId%GFeH!|?6NZzGB)=6WRwuT&7tYu4aFYAdBomXKfPiGKZ56btS|oC^b~ zq|ig1^YUPw5-$Dh>!&$kf!1nhA*HY~T=eC~HBEYMFVB_XYC*zErrpdIZ0Nm4UN*B1*gRCz#l%iS_eLmC zgR98w$-gvZE3RW;GZ+rx3**2ZnunIIIc@}H^!Gen;%|ZZuO7!>bp?Q#RqT$ znLh1rI$k2tl8soiU(~`*=TZCM)|@+L^1A1A%n_wtcCmbtGrbpfw}sAd2DGa<(_o>@ zO0^Rua5&O4Kfwa1`wF54A@cg$Hr7R`Xv_~q7bL9KRXbM#r~5(6Z|&hepV>2)>u<)c z7q_fWvVDHQi{)~Buaurt&a>^A4+52r)I~u(T){fp3kVv0Wg~$r|9a=0%{IFg5O0U0 z$y?5Fue1;{o+Ui*-hLur)iJuP+e?)0prZPHXDSSQcVNcj zTrL0?$DY=FOj}P0rjn+zBJUC;ukrBFG#VNEsEX^RD(RGqZE|q+dD&NbxA})Kt3HkYP#yDzRr|G-NfFegG9x|96BiH8~}mcRFNGE zK@{0!CU6uDt`5U6(Oy1rEj*s%Op>k9Pue_|CE@t>-eiHyOZ;Aq_fyvmiz^c5+ZvIfzX3b)sXX;UszGs9Z!pk(s1s5?yZuT8 z?t^SsY`gS^t7g6imo4A+#+>$e>i6Z&jMp9Ro`yJrv>mKU+Yrxk5#rhrBr>-4MVA9R zuI0#r2$dpiC8gP29+`mC7QOsQyb}T^Q{710CeX%qs5&?A5b)2u!BG_kv?pO9c`9q%{br(10bA4TQLzkIn_3b-eZv7>D% zgS%4TiPa>P$YCFZ-$W*oxcsA?BJ4{oap=jK4?^`sD-6%7z*-aQNX06)}I zztDLY9#z{yqWs9|NYykGaL&%jKO1S^dr$qTHNHK1YoY0+XqiF4H&Bj!S9~*tg{LgH z?UjQ+fcq8H8qEC^(>8C|66=c|CI4CFA_TTqFFEcag|uIip4?}grK~ZFZTF->VtHFx zMz+L=T%FwMnf3N_X|ZjGYR@fZ;s90{?~vDF6u4UyGw$tclRMK@G*^@G$P2DYE+9DY z#BwywiJqO1j_B5)*Z~JzS|lZG?YW@hfy-0OIM3vhW>P_&Z_*38s2(4L)!joDZz zO>g~Et!`7l@W^@w@nMTEOME=uC-^>WWCAkUM8M-03~^H>#RIIoo+F#EJ`uJ<`ejfS zYvf-BY)2)rIhOQu#MN2EBV~G8ImcfBRi4ZERnK-Om&d($jjx?_R9rujQN##8?uumq zyA#M^Wc|QIBSExVawucaz!)qbO`8sdI?`6k->>j&qVr>$iYx|YY6`r7u7+Ap^c+vW z6Ycn79W>io^_u>8t6YAwfR7z25;c!KJGIWUKZa5t5;=T}#ls_EvC3mXkJ2O49jNW6 z3^ff}Rp%9YZP?$J@G)do5%k5a>;}|*JcRF&+VeBsYZ8Nr&BQ6r7>XTmvxO@;w5I&i zWqAN(#yc`kiMt=#z&eR8O4_F+i216Vwdv0*KMpLTG&oU#{WKl@6c|hvEECx)_sKzC z#uGg;_Vfv>*I!z`B5RaC@tJP+-Ho62@UBS_z*+P*@^bK1?UKcI$L|Kc#0z<~dF}Eh zz^CIa^Q7s?^g_uwUXnputi-$06q%YJ>Tod>9F^+nIS!GBv6r=)M1=2Xei!)so^FS> zbj~MYe3RCa-Lt0{X>1bVBXssF_N4N9KL#R>=m$+K#Hi$A)StBF_RSr6w zmx^t87`jhYUNC8HHXdf1t0D+anL%=);dzewmtPx_uj>f1n_C=NHpd}oW1I20!k%NuaSlk~=~kBrO8+K!$^5|T^+7QLZ_ zxw;Is4kpH_JkO47cy3#Z?P-b{mEaif?}479P5xL(&e-Uh$}Kx$I-zx6EpFV|iCK(Dk*MAPSA{(NC#A84;ci9GtgDiaOA|g8o54HOU?D0&`27Ff#DghWQ6i zm_qgzOyz@ycFv9L;i36cfTy&co|;1JUoHFz^Y$W#d2K)qWG1i^du)5Yx}0gn%fFNc z+>l`0n2V?F&!c*s{)Y|iPwBHC8xn~B+Mm+@a+r8#697OC(WQHp>&VnRzZb9mm(swx z`v0UfNPUCZ@dk(X?XZ881T=5(OW$Cgzrp#l-T7@;sc-OsGX5(}*||X`rx_&K>j0Jo?H>ifX3*b|w83A7xa|xG+t!atJQ2D5e1cAykGf~&bJFUZ z?GW975c(OK+$@LOiU47pz~vGg*rx;S=gL1weIhBrXehWr?0xD>z9NY6s3z^5Q-!nlK79^%gX=5*jYza)oyM7CO6&E z-5?<;-Kij@gft@E-6$d59nvKrjnbXcAl)t94e||qc+NTRdEf7h!=HPNvDbCSV$XT4 zd;aD_1B<_VFZ7b0M@w?^KJ;FI!%^;dIBIQxrrbvHf>(|}n&$`Gk1rX~jDL;@Z1WBx zz8V#w`bU8yowmc6IIHI=M+><)3P&6LyHJi+>U;#`(U|}CUMl^fFL)#v-V-m=ufJB5 zeZuuqSz3^eM;7L>z3j*<$Y+NUdGyB9ks;uV!q$(F9m+Nc8%H+(7 z0=vJgv%l)4dJNEyG0;yCB93_!4yhH6IEN02hfbhbkFi)!7)y`%tjmI*Yy9J|`JZ*h zl0&FRpb53f`osB|mWK|aj*>(Ab9i7A7Y=&S=Ha!!X49%Wi*3?eXBv4rG!jFe&!2+} zQpqNH{;D%3`48)vnILpcpchH;i9kP=tt&|{S|!!!abZ)}h1s`oUZ`~bwdemw3)8>% z{9i3h1>;>g$M+_?kl!;>pW)=n&<`Neut>sCR-$yf5T7U-x+u$LQ?ci>lc@M&WW};^ zM3MTTEUuCp@&ra7IZxblyWdw%&X~`;d!F0q-jo>GnD}M@Oi-G9^|K9tyV-%sJySbH|KFX(EhYkB(ml<_Y@a#OJePkV7-PA z`VI?E?JDLMf@9AR^A+ER)o)0+Vy42jUJ?d&_FEVQnk3NqeC{@H8nee8$w``b6(T;} zc(s{apUIqbh@4((A8C{YiUEO>n!L{xJ*zi8gAJ&Y%4jp|z0R3IF|@dOKasm3aqQan z7|+z?ClCjBI`gEVS9#IvM>gmMo?tG78|UM~o#dxv)}>zb+<6H4G!%t-f3|{Fv(tOO z5`vqk>^R7>cA+;rdcZcz0zLWq-d5ODuDg+HMveGti+;kju4PcENZf+tg9_5sl-YzpL4(5!1w89+fzmGu*`6dqFCrt}s@%65 zqc@rCP(zQA>h^UtKPyXq_j+8#9_9J_-kphCqpVkP#S5(~smZv@hhb!}(h_?O+4LlR zY;+1k=BF)94bAg&^)Th}a#zHiEcCjwwu~znBx}sxsfpEhznsW+C$@hFZMP8k28d$o z%^F}f6gi;`#S~89yVjkgn%0-sEx;i-kf5K=!4 zc`E4DiFghrz*jWoI`4)+bhFLjwG+0~OJ6!{*{GlDqFujS(oe2R8e&~6(ADzm&Hm&~ z#jk>ftAW`!LE)3hcU9zge0ijwb4x6DJ}9$wJCfCVy-uj~7P2x&*xE4-y|XYfQM)P& zAeIzcc&@=PN?>1=>v4jE_N*&G^QP!X8zR=d)gI&HOf_xSHIM|Ec6 zwO2fIVYf>iLYfh%vFdtjtiW2S!1}sAcGeR^R3IF)w5%UT$*(rvUcQ_=6 zke9IwWZ%V_>=5i({Cv8L$WFFx2$x-7qhH)$@Vk@}omA3J8-$GJ%?QUN*!1Wstm`$i z1anMAr^6B$WS43f4F@u_=Wt4dcrp~!PQ{+R9497fuJ4_HI?_GCXua4({3Ef?R6nd|Kz+EUzH)`i<)6C3hpM6cVE8w3k!WFvBbU9 zN-1KtP&+nLkQE$eMfp8qty{vOyP28UJYpd@DBDDW7g(_s3xUm=FS}X4kALt}Ato|x`-H^R8 z+(C2dIXwSWs5nBS`K6oec-_>M_^w3oDLImHMX=d>0t8&N_z^Gh02NjZdfB+};t3y; zfdz+#;wZUN^nKr^ZqkdMGZ^}biR6h&qP8{WD|XKbt>>&YG@i9QD6<#Vgo4xFEk8bZ zbUOxzTWzEsJF!6D;C~ULTxjGW+pf*MCV^_4_qQU*-!k#Sc%y#ymF)VOkfc&jn4-PSk_ z@9kwHXmsi+)A2@>TeL!i(WF*MPaHWI}pGG>?8Rt4ywq;{El^Xbim7h~ohvM`3d?j;Z{#H$KqD#koRZh)w zf_52#?dH-jxO%8GG3G_EN@J0<;M+xJ$~L5N^HI7}bT@nkR54N}zxhH%zjqQTKyVI2 z7vKeV=X78ojH~~t10BaQ~15p_R#EX0u zMbv)1JgeMv>txT4PHuhFO}7gkSUJQB1v-&gk4 z+6cyKNhhyw;rAQHXGlK|m>^6&8T8IV%thw->DGzM>A>k(WwX^Gx4?X-8zgAsg3mtf z8YB52|&E4Lp~6&Y%H>1wV_qdeXS z-`OCvJS*-0?QFz#3Nz)-OZk>&Ayp zV?hV3ohxAm;7Pw1xBjqdScU7&gqpgoKjsLxUPjhPb(q!+9qoLH%_z^FsmSYkyfwfs zkscJ~v{DT%@AgOOlB$#~N*G}gV$^~7&%ifpX z`;GhO@A=6p94b|dwP|0I{;sTcpsMnDX1`~6o3tg()7=73l#DENWr*`yc1{XI+u^+Y z8Uj0>uZ=5L(iQj7c&C8-DzZoWf^w!C?G%~B-StU9Pw|fl7j+CDY(FhQhBNkPx^L%) zKju39k+3U8W4`~Ao4RKatH&}9a8kW|YP8xz>-=gRnFT*9m?_LMTTGm4(s_08*`W%j z^j39dkH%%8ZOJzLkG56jeqGlOeR=0bTzi;p5~%W>E0s&b4c}>pG7*GtrsuwRFY4to zGq1-Qpg@0hJoqjU>|cx&S1U__WUtAKO>^Mi&RS7pd}Dy|b~?`Fn*!NVz2^e^rUz$R zNPH*m))qa^Ppt7`7nq%zu%g%wcKrgP;$t~p0vK0P)CT^Qs5yhIv@>el&QHjl)|J^x zlD{V%O{lS;a7AD2TxQ#L93OPaV=5f&Z*(>V8xiL89fZOq=Co$1tL(LubN2M1Y6;#Z zz@KekI*->x1ae@WSI%Rjhg%8@CWbo|49+Pf@)`wL@UzwTN)esbqzO3J4Wdl4^4vU) zRKFKi^PYrd@g&~GqyK@%?Z2gF+u8SZf`>BpyZQGpq8GZw3~N1((ye>gIZvWtoWfl- zd5sb&@?J9vKU=_wiKc8IOvah24n9u}JCiuK+E2TS(usV!?Ksb~3vC>{r`_j@jgaPH z-Tb?N0L9*+Yl@UdbXm3TtV4$^bUe^23i}N1q^aboeLlb8RD9BDk<_sETZEdvnS@4S zOEPn(TG9K=sFXt};khRVQ_Zoz0?diJy2BeBd;{-4Y3*^i9TNTW)_fz~w(ouYe3APE zXv$f3LtzTjzx{n9TF{19={TvYuBcVE{c0#I(e5Q|>JO@etqTCLh8dYz3xmmdO2ks7 z)yZ~a-2ID{gzZNE<_&8dn#uPe|6;tdF1s$XJzLeep)XGf64G>`E-3EpiiZ2t-v%`q zRt}P8Vd51g#Gr~=osy+Io%FR^m3zyVfJ$ty6YwO}zLWGkGz#7OGr6{e)qTna!sgFI z=9w3Uu{{o2MLZ^G%?qmU_CLd47A&z*9uy)^<`>bI4_=$3yWOU@Mj}cLly+z$&1N{w zXfBC;6XaCe^!~BTCGPhQdR8y{$u?f0TglK(rb_nGSzW*a{=6Ecs_7c~Mdsn^cR1gp z%daRySyLP`$Nus1aWpH7XLFp{GqA5Yg%H?1h$4K5r_*1ZJ|ixBl45a$<`+d8AyO40 zXeNdelJvzY1D-4=O?&TCvc?5xpRSY0Sh_Fede_p%h`ZfRI0K<(5#PKV>eAEaHdoGm zXdO(cpE-C>_4`l0EYCnZe}|MRq1B#-fF1TS@Dls+VcmQ<46O9N$dc@|~$L{p!Bq9%e*I z#o_!h-TV)3*|OFPL4x!-;c`*-ebJ#U;hJ^kH20>df7nc)qf~Wc5i^8|NJQSThs`y^ zs+8SOrtkjax?XdFN@4PDv(*z*Uy89Q;gTWd%)GYhI^)c+5RVCMgF%bxlDH*VSe<9Pp6 zmC1mO!mq+F*AMd*Y!nmKKU$F*^8P_0|5fWztVc7wcF11zP#vIJ`3ZWWB3vw(KF{yW zA|sal$8--ZV?j>vALnGiLjUO*=dcX+?9?j`{wZ1HdXwBRC%#`fA@jSLf1$n_ci#!a z{EZK0?_twf=hE3kU07pY*dSS07hKqc5n7`X+Q1fC=lQETM)!zo@sN4(Nbvu5%rJRG zd7@%?l2q`;FvJPEzNB_-rM4!ec21|Z*QRz~X|?!kb#!XA`-)t(y=oa=iaGu+fX zmOnfo8X^wqBaZ%d%AS3EEPF`$zu9Rr&qCDY5Hgwc8UA3e`~L9Ef~eA9u{2)&!%URL z?GCsmQ$?+WI_@#%GN;#L-ucskR(%NmfpQjRk>&HEu;5QYM?da2Wd)cp&hoH5&Pw0U zRb?TMb2BwSTDSGbPFwSi_rc(;pZaU}hoJpS^~K-2-wW-b`a&?lln3YfrprE9BGY8V z6w_asAz0jDQjwzKJwr6xJBud)u{1m7+?1M5VUb^%WC?N=4duTv`6iXKYE)Fq+-+Pp zUwSXjSvRrn8(#@bI(o;2H=cxxNNuXEJVo}Qc&p&Aa5|INUVrZPDy-uf^mihHv2{o! z1^;rvX((JAmuYsqv4+f0j{jC&d0F!QX}nWHm~T5G8vD*Cy;uzU>>dLg`%2o-kj?H^ z;%F}QBHmBl6+RN@B`8z{^Y`hoytu`$kx>@7*hJAvybeEy1c|p9xe;K>)mY>w=N6Wi zS()w++x3xCTfWU>7gETm2+40_)g#=pRZ1~i@Mx7L`my=jy}d_o4)r_UdkV>Io%N$W z&tW|s*IJATI0(O}GK@hQ#UPc_wyqwIHr3QO9^VpuC=&h| zPKz~oBj`yq3M##djrpgvZmeGR7cqMhKf6l>lfG|9W?nQK=Ogplq%$j^|32#dItyYw9Op*6Ej){Q}Kw<;JHL~ZDRS_fBSU0G{hbXoe*_y2?TX4Ou&X#N0sw(qtNQF|n7SImfk`BpA6n#46 z{8WKKbS}s<`vq^Dq)y&X`wa%-O*EcrWJrG=#6wP$ct6TYn5V%a(^{Vo!}Vg+0CmxRgT zRtX-`0YwgTM{XGxvU%fO((gb>8)eih(~8CRI&z}wXK#CUFl>I>g0h1c zuP~%YlV*N&+8o~``X7o4}aEhEoHbPouy0Itnsh35sB1^7SCC2(b;$}H0e|`U_@5U z@!nu-chYdv)54{io>5gAbw!K)&NhAxG#oG!>~0=rb1Gm2{@Us~TAKbvIbuhTGe!_< z{AuaymDkZT<8ZeXj@hZf&ocP;Ex#xFJAx@mDE%m6Nsnw~8~MY1iNuhxsiY4b$~i1p z(){D5r8SvLFS4#G^e7Ybo}kGG(IT&HWbHeYuZ^gn1U8>NPjJ%z=p9A3o3)SchbDEm z5XXkvuBu|WoFN+a>moWg1^vG->LhikKURJhnrVwcwjPir5?2t%ByIT}zeI zYZc1RHCC;`95q^yg{J&(bUts(kHTWM!j);b*@0q-}*Y<5UxE%bgn>-jl%Q%y<2EO*&)T) zLPfnJhLhi=bc6l&przY-745~{y&6+=W69a$N2)>v#wkXSdmO9F12e;7IdhOFJ zHaNL)zBjNvCDSqQA+fk|4NFJ4$xJ7!%<6I3r@r|i5(|Cy;}xELCN9Y zhb8+`_%v)X67$@ymzyQtC#Iciz7NMfmh|MceicER6K5!Qs#O^BVuL^IYni2RWLXEI z=WWyFRq`*|u6yd|>9LtieR39`hUj=mFcF@}aBnCnPGoefEgFX^&&OjQrMkhAbr`G3 zXi2UHzw#W(;Pu+s{$2M}s`YkVbEg|!w@b+OYxH6XP6tKtrd%8%?u_iB_(HNl*GbuK zIK(hDF^q*OU!7vK!Ax~?gk}m=*d@7z{9T35h4MH&Oa}{w)$1)n(fZ_k7BbZ`go&($ zs|4tj!@j~G1*YX$X2Bj!$*u@{IGT_%3Av51!@{40dW@sbZ7%oUAZQ^3D$-YXyI4@_Cg(jLecsh4+gK0;+r3|Z;!G5(yP&sZ(@wI*o23mwL+iyOm86?x+V z)3(0tM%an7JK$TyAtM9F={-jI5@8Pc&v2f6LStWKs(JoWLAI{OsBh7?2dem%-)y6m z?ONeyrkTt>Kv~?6kz0A~f3UDvz^nEC( z=)*FN;F3L+Fm}O48uTb7*VnH7p!R;g*@cu*Ivvkh>b9;^Hw7(;QqbA@n_U1Kwe!NI z9G8ucxg62#WcQO5wZ(zp;MvT}vEn4>Dh3zC-9u2rCNY8rzV`wylpEn! zPTu~tq-+y;C=-c%of}?scn-3Dlr6#x=CQ_> z8K0FJ_tRIMcoe^^>>G}2@i2bho`!j~*i+A|$a{_4;HUT3Jqe~Oz{qH-ch>F0luK}= z8}xScGdFEKE3t%9FYB*HY+=WXUYz!n_3Oc;I+c+FbYqvw@h;A zjGhaJ#O5ZhkY4>N%jAQT>|D3{&JNRxzpR>G|Jlb-?dD{t_+-R;OCuzlfn=wHnY0wM zL`00~>(kXq^H}$ZMz!6(&JDNd`CrS5Oj{_SJ&{&E5spqP0be1<(Hoog6Ov0ehbdE% ztDFsr`~B0U$_Ov7v;%UZbyouWb7e-zN{4yn?HOjIq;p3lU3*jW_41Kw)JR@-%wtOh zTfSQ6(YG^u`u#mD@sEu`tLiXmsY5CTL?d{CE5YmA7f4E8oQm03Dr~QXEuIk|F}6~W zHIHixcB-$Zz2Q-eMbD)(Lu`J^j%j;OnQIvODU4UC7v?QzpuKfuQKYQ2lPW^BqtDpA zTlqZGx)=uSO~su=w0=sd)xpIsqFt;{P1re+L2`z(#9lI~(@<$*or`d5`gW71wq|0*;~Px30@JzIsw`{X%sD5txmn+YZzAX4GKP8%zH~aR72j!Jgus0gRH{;0GjOx# zsnFrQ;u;(wcM*!+Kj@O`wW;v&?j-+d3g@7CFN%?yevmrdE9GUPBm0vFdqbMaf;!Jl zpGlhIPJY+tlmGNj6J5MP7Mg<7ytC!>W;B~PkM*@&zbg4RgtF>q-Vy%i&xMi?>ZQtr zmiPRo?j1SBk%@|k#oNVPB7_qarJX2|eH0BjxS<=NvUx4!S#0zkcKuDV<=X`5 zsQP2eo}CGLvs{=f$TOsY0i=q(6FI+Ri*VO|C8z96{*>(Owq~^FtTrBQWhFc;Y__W* zIq&zL)0&};Po}P|`NGaJAm5Y8$pzUozuqWNwA_AcJt!h;C;5Vr@7+tofyV3=7K2#8$V+<=&R1t0f3&+zdcVScv-|PVCt@i{(9{G*N)7E zo}SsX3A!#i-#J~QHSfGHagyK7&|c}XcNnWJxz6-IO|1V9|3<27v|^}#RaoeEAPvv_ zy0F?Q9zELdKYg~9@@}Kf){5qLkrb#50&~q!-?Cz;|HWscrDj-hg={si6~p)$q^$^Z zOP^ob2maG%(??NKJ*gCJ@gnrJE^>P+^1~%ays6`#J{#Q3KPCPL{*Cmb%;iTpG>^Ca z+ehPnl&||JbLCOa-`C$f4(qP^FZt~MCbMC^ihQO-NhGI}m&}ewUnEpuvb3ZD>i_oH zVmJOzpRMx0@!5!kGg3C5ewhjhOy$;a8JHkpAYp^wY-i_P-}R(GVfrdcb9>4n{p5?p`$EMyv)B3XTwf$Dw-poIe&$1= zno7J&9*#BQ%!gw(l{B9jj(4ichauULFs>VpvvSCX2qMz@{W)Lvhtsho?G67dQdELH zkphJ#*yIzYI8!@8tBe$;v_LjNyE>K(b&xGJM;fA>Ay$m+1C-{?utE;|KiU24lBdxfhI9=s%ySXY6cS7hC$ zTf;}#xP4B)D5nc>8P0x0BhYjk)XPC8t63<0^5l#UPiVY_+qm7l{kn=ln_I`lTGlgRHQ?I$ODo~; zrbGN)dkW24a+HRrJBr&8ZtERl`7bT-=jc~wnvdE8j@b8ECKwv5*tt`0Ch#s;e;_CA z{k9phoX})jBunKjGMaO8d&jfCJ-%omh{5oU>x=VYn;S=CJ`0L2ESW{kKGu-bVy3FV zx~u4blj5Cg222z2Uhj8CBXVA~=iM?`V@y-iK1X3HREI>qDPhuO<^0_`5S524CynmB2(!KDSilAL?4TfT})%X%@2? zXv`CsdJ+~M1tY18){;Pxz%c6#O?w-nO2&9wKHucNy@sVAci<45g3G6$G}@J9`{r#o z!Edk6hcWbuh^DtM4n8;JbdPYKioZNPFAcTQU8DP|^Tg5<5Hg~y9#W%w@No}oZ0 z9s4^;g>Fs(BW+vz-{fq>nul`M;3u)I+?Z(M8h=k|)!xY2p%C>=dMd7Z^uh1U)f0I! zklGZ!#iX-z5Kp)h+Iqeau3qq^bdA89`29%*>7+~|zSZDP@YBQ2b~3S=i6{9OxJSQs zUSq)iObS?q3Braa7?0H zPowKG<-kB%#8oagWW?}i%4#8{Sjn{E7TTUpzwTbbF?G6+dbfbkK&)8omk5)O=>GY= zCnv0aN0>%lGzy!Qzz#;a9ofl%M`epJa~3`lQ%N# zxyG9aL?=9WcrT7t@iTRYEN>psX=vGLW^5$Hcj!1y!kBtPv_}eq3XrJrnK&VLCs=2- zw=W%Eep2G@X-Id`@ne*%7iW5p6oGQiyj!)?I(W57$xO+A7#8M+(_M~?T-|M-e^1df z;4(UKm4)~AY((R#tKFqlzOdm^AEz$f^cYG_+NLyHSwTZ8usG87W%O^_L(8HD%$)h~ z)}zWvp-aw{7~L0X`fs25{I*0y798}=@tRn&!y&8Zyx(=T7KT-t@$pUlqT~_%^X2J) z)HBT6ilZbqR$3bSDK#XQGOagp&z%om_7H8Bes$_?Ulcb^8AN|E})aFG3PZ`QxHn*VsuKmxN`Nsl07q`5=H+;-^X0Rf& zuSl0?xW_U0OX$e|7zWpwak3iO?`hDq92p!`} z(p`|nO?^bgj+St)2eTS195cZ-i$h{;DX%Zl_teAz&0nsuzmTYW{;+t5B~-yIAZNzj zqqW;;xBt%d&HQg;gy9{ndA$=XPpCon%DF|ocHQ*pF)3}CMFG#ZhCRNXqf6zeAqcU$ zZ<#(fb&8i)*_3A%fv-B5_I-;EEvJ25(s!}~HOG0c?%h8_a&v0mJUNCfez(sG{~6)u z(9oQ$Jw+gkP}#-Pn5F18?u|4N=&h!a_eEY5Q|CdRwVEM%Mrpr_-5}^Rc6_Uv2`7gq zd0&QMrUhI~w<0$B#)K>hnyjN==ob%7j2J!lmq*O8c4zq5MPJEMk=mlya5T0{Woy-2b+B$FuB5N2}7feO5sMq|%{s-c}^o3z?W z&^J^n*yad9SMw2Zy?s|TV%r$KUX7yq=FyY6-#BJ*WiElKD_M6&=xB5uu8YC6HpJCI zX4+FBj<~@@g1KUIwTxBDknagD8F6g&_u@9Ab2OK98eB1HdM4c#LUJ8j*Ixr$Kgrc-(WEK>Z71&^T%63h$x z-4&h*-_A+a-oPHygztx#>NL>EMzvNr?5o6Wk2AX#Bx*F?J3{&I77t!_+xzk0L|X`t zDr{yfS-tVy#K78}&}Os8fP&v5!#l&?RW`>$EWz|69u5u4y`f@k{1U=H?5iN>{)Wub zhkutdrCRfqIJvbyB>FEs{?JNG2U;KfKLvKxXhEH7BmNB8aaI{cgeJMfA zbI+P#BHw2~FV;&qpCS?9>`op^TNM3>-R9o4d~B=8SY241b=E6s`B|G%>O}J-rx2R0 z#@eiu1PxbgLwbvFL`RnFxgk(sB;n*P2(Byer z^z!w^K_>L2hMjeOK9bTFkzyUECW7?4&&s7#&;^Akaq`~}M_wPeelG~|aSWEc+P2|i zE!`jgEpg+x){Pt%@&w^$g|V3`;d$HU&mxI=MxTptV;y=Y9p*l9$$9$ArvoZ%?mc_7^qW-?y(+ML5lDTj()DbnQE&T% zN1*Z#H3_i_VS@Lw(<1EMTa;W3M0^*7S(oNr|E3bT-#U9f&<3mig-v}^ z@)(gw9bV4gp!TZ_uSqq9^R{8fB2sJgs)xO(LVoexyeF?l9ve4i&Tzy^PF$X z$!l@1VpWLn#cADG;=UqiE**Ma+93Zd!P1ai#WhsGIY3CWgdbC!_FJF#xd$sRL)Dia zgPQ;FrvI&bb6CyUj4+ySSmB-Ews2uKm7)5Ne`X*tW@)S|AM%7RQ`>PW-RGKLX1NOe zYX-uTZcBf8yW6bCjgv|PKPl`=oHQht`p*nxFVHUKd!Ja#X^qr4#rtz%zX)!|t@eLr zAORcyRR*H?C^Pm^4)fz}|IRQ_9_61s%G7<7^Y`_<$6-l6%D4MBnJI)$9}>8fMNZ3Z z`a&`FMR2YUyNBTqAHV*0|1x> z0L%dZ<^ceU0DvU`z%l?}1pu%P0N4NkYytp&0RXlD0NVh79RR?=Lz8y^z!3o87yxhr z05}BzoB;r?007qjfExh7EdbyS0Pq_Ca1Q{0fdT*)3II4L0N@`|GbjKMpa4LG0ssjL z0AwftP@n)ng#rK#3IKE{05G5cz=Q$-3km>iC;*;80APavzzzX`0|Edi1OP4w0NfA& zo5P<+73IRY20)RLK00{^Hk`Mr-AOJ{1 z0FZ$IAPWKD1q6VX5CG&L0LViCcm)AK0Rn&`1OO!n0Ll;mR3HGnh5+ye0)Q$605u2z z>JR`lAOO6D0H6s0KnntZHUt122mrbe0Q4XL=tBT7fB^6g0)Qa|fcFppj359QLjW*= z0ALCMzzhO_IRpR;2mqE40IVPYSVI7?fdF6&0l*FdfIS2N2M7R;5b&p2nDax!FbDvy z5CGgD0JuW{@PGi|2?4+h0)RIJfDaG=K0*NSfq*|<$NV4w_(K5r1OXrb0ze=HfFK9} z!4LpKAOJ)o0uX};KrA8vafkrKBLa|s2tXnt07-}dBqIWlf(Sq=A^_=#0AwHnkckNX zw0_P;1Rw_yfLufX@(=-lIsEIP7=6If{*7OJ*z`~jn;Y&SX+w<;;{S;VJ~4<*y;e1g zrcx-1*CIh6OQye}me!~5mWj?r977q9VZdQfo@EHJfH3qb@hMVsme}?m-Mle)E8T`Q z({&ALx^Q3EY&@n~R5Jg7oEu9<3R$$%dlsprd(DT-Kd>KHI%Y)0%Q*DbIvG_uyDFf| zI^rWoW>mgFpa16@CTWYdR^-NC+!~GQ>P90K&8Qt8XJX7aJC|3YTN{@~v2A;vU6~P{ zF%i}m4Cm)_lpQMRE=??E>%~PbW#x8BO~X?(+Q)|Uq_?S6c(Y>~FI^iJvI2b=m<_Cb zeb_YI=OcwRJRVgw)cvvkVH@j4DLd^pvN{njP|@2&Mvlt4Iw^Q=#v3Wuy*OVX`Z~u; z+3BBBHnTV`V!qb2o-M!56lN)%NRdyu@lBGL4iSTX(}hBlvnQ*zUahd6UKB)T&p(edFluR?zo;GHG+tS)@nzW4d-isY zezswMPdq?Z(oSL;(?N&0iS3pHO+LC=*XhCr^LV>|EF_nhSiuoRi_$>v*Y(G)kZOlZ zMz@WP{>!$yaiN(;E@Dz;E7w9H>~!<1Sgzj|>YnL&=c=Tgy!_&H&b8tuVI+5KmXh6= zKK{qD3OU0}3A_!Ck`m@hA=ep@g^8kOYvW7b3i;`3ULjaW$$|;?Zjgj!P_Dfw2TX9j zL2>+$D^ghYUa;j-TYYHtlCD064$n#IxiOX=CmP3X0qiGrBg|Jt2p#5?&fW$XJOy6G z+wrtPW9aj#x%$+DELBMM2GN&W>{+>+;%x?u+o>`M9o|Tu!~<5)SnX(y7+>%|Nv2tO zI|Lo_n0)y?7$LShGGQT8fzujxaoN9w3!R78^P4$BwiqALJw{#B;7+~$=dK2p2HCj- z4?*-4>sXdqswyssEvXyM~yL5j@pZQwYP}2-S>&bqtzV zkRWI7waZ%Z!GJTxkvD#U=N30=&Sa#S`T5o2M&xK9YSMwvyLO_CzR?Tw-GkO2NWpb& z^oX6Sh{kKAQIV`i2#VTrE5kNMlrQ5y3>ay8ooPc^qz2dN3N2-qoaFZye+uYsl`U#? zU(ma-AL!tpGjn12%1u(e2}3(c`=%)}gT;J*r%{q}A}l&q;8n(I>S=>+9R3hq$3p&z zTV$iyRa}=1B+JZ+X=rSXqGoP+<1?3I4c~NHGuH)|7&G0;IrCEc;>4JAfqdI6wU~Ii zq(K8~w{&h=%S^FP-0z(ZnfYS2E3I4zzjMy~c=BG0uIqOTc}eC=j~fZkpQZ9OLS1X_ zVb8ObyUDXXZRwEmbFDx5Qx?QdAfVG=6b!gt6q_lcJl*mhvE!rkNUR|%Aov+(kGnoP zh$y7oN39)_JX7vCm+-XDT%16gE`KlGNzo6@7b#d9-z1aZJ3ewtT|;P`CM9g?aPy_f zd8+sG_0U#d=-v6q(Tuvtj{No$!%_3P$l+eJvJ=dY*;?Owk}3Q~^U6Esd&RUgC>aL^ zaayS^k%wOUw+x7|j*ysR#Z4TG*S)bPnJIiloU(J0wB+_?O6#6a**D*n*`Q;NAa!K3 zZn<&q3EnEcvqcUD_PHG4wg9z)p{bYp`+R1qo-^?uQPWJl$ij!rd~KBh=M=jsb1U_j z3wqy5Bjfr5kA!(!RtobT|I7b}C|2h&JVbvC1B?GHicNY98_yrZ!&mzoXbbI0OI#0H6Z^AV|D7vbM8)Zzl&D z{+lSa^l`lZD~cUF`j1g8#@S!<#PY9EEHw0AKiCv7e}1sXuH1Xz0Q_Mon>a6HH@8vZ zyTl}YqnPPu_4x1X*AlbWcDI6DdOR)YU!1*GxEnqa5LC!bjufN&l#kE1R=^}3P&wzE zPA25ta?^02$&cV;Lm8OECjW3K@hxT_@kT}L`(h*1(nH45qrV924`lV7%ScoUL+q3< zx-7reZkqL3soNrlKf+JZg-WnlmG5JbV}m(pbMFC?8nT(Z8hF=VdA4 zNCo5+Mt@225uE0sd-mp#{Y5uFH3nBGh8S=tMhN~mY_Sh0>4<01N})z5ouTiESCd+@ z1-c|ijj>{q+Fs|eeWv3f#e$8yZT;iW-}dU>4hW|%GyU=Dk6G_+|Cd#dPzW#jM6BQi zm)MtA_zxYr_E){kR08ULu8NXo{pr)y7DOK1#YqvICovYfQAPeKzAB5$GBB5U&qRTk zBru-}(Sb7Rfu1kxK$Wzg6ZwL$QHIX$5*3>aVV0v6T@>=P?*YL)6i7 z&dM^mkiS-pI^s79dHTo4MS5Hv!@Os4rgFyc9InY4{YIoG8ZBbD<%u-0ia(H4l~l!z znl^}<-anApdF!VJNSjvO&nqI39{Q2pwnW@^3=yy3{ROL6^ICNdSLy9fwtE&b&1As# zQvHYB3;OqPPc=F#1-i{9%Hr`{gA!an=e)h9@PF+VEd}4WC9cc9C5=117TE`m33|vM z81?s1?=g4D9bgguM7N6Q{}S^4{RD}lKRiK_YOXvu9+T(vvGfctk(ExXSj8j-zjMEQ zQSm08jaI6M{hVeRd%7Yg2*2V$lg9itbu`u!qo^)JbV16sl%4vf15fY!x%ia!8yOw(@pS4GmU{XqKnhXgSj-QxOskvo`j{)+=ae5pHC-F=sV;OucQW zH52@M_qvf2Xu|a(HhmGe>0tPgpo@re(x}pGB2LF?kP&Bk;e4;^WGt&aWgI8l;U<+Z>;?Ep#+Pho^0lG9O3U$vtk`mBU*B3XwXa{iYINZ7^`HH^ zS%v1trX<_@?2SvONQ`)_QXw*lr;@7QNT0)QkIqcR9UKhX){v76JO_pNi-y`;F6?ZU zkO=i^CiUaaxh;Y5h}E<(n1<)@lHG_Pdw}gIWE2p(kL(b@s2FKCvzwz}A%w?}>@)<61$J!WXGc+06>8|E1l3C(q zLj#K?p=?#cYr=(Vj) zx(G~#_a}6D-Z$@dYGtCTIJAFpxeDK~szFHGJfZU$7-bIG}wAHs+%CUUU zmiFyMjK3PGq$t@j{4-HyW3=$H%*^cl=ld;f7nSLsJLvG2WT&HT`hC#`$iv^mRpUv0 zLW;Pr9Y^+e+6(UtaM(r1zw&JP5Hw{EFE$&T*yH%3EPt(xe2^PyENZJe>L|e%dor=0 z&-0x6WpWT6Qqc3SlD}$b$G`bTb$_@VJtj2aC|`}}$uVR{Hcsm=i4&TRP#`3wW#D2m zK~yMqxd{!@Tg`s%$IafVUgsjVFF;b%g!`O8=A2?Y5nFcp2C>%li~O?MR$1mgW%|ap z+H)hxvY7!W6pO%|p%63!*<%NXlM^W7&F1^c&?57v%j3+b6DTq#e1rA=UTt5dAUAZH z!Wqi*N{&o9Bo^OhvVYAs${3j>Y~*mT)iho3@cQ`PZou5A&4e2K%AP_JM}x@g<}cQQUZQw&2{@X~7-|wdt8h26+>T?N%JZswX%`HY*^|H6 zCH-mncqYrF$`BfAws?!ndiqM(S zRMY6mZkP|;rD-}j1tvD#xQz5_*YT8E^!>P{my(U$hZ}l}G}%K=%?t6(o{nXN7$L*v zVHW`=ov_3TaXt@!)X04k{FTzxb5p6E1bq@dC(NmG69V}1@rG;SgoKY1>yz-tQo|CM zs-FcXA`(W9Oxra)1D%Vpi=LQEq|MDvXf2B5Tw{%K)QW4*IoAws9qo_aePCt&z5I3%Dd3{o^1KTZ3x%OGl zz#v&IiLXQCO+6Od=saAQQ2ZC@>k_@Ot0}f9mL4QB*9&tJxb+*WoUf`5T|1Rz+2L+A zqK;R5Vp@$)*W6$6S-f=i{bX13;=4Hm})wgKQXs$qdUK0Pi7Z#hHbKPI~ z3w$)2JQjwV_xzJ@8^+vf*VCEOqu$>gd`YUHU3I*9wu5&lo?B4eeO3~7-bxs+;!yXP z%*Cp8B{TGX&%jXk0qgG6mU$d*5$UJy$wm#+H6Y#Av!m>6V-Mu(d}`gX zF;kMzqlRbTU7!)QL)<;V@SCts?iT-T@maUTLBm~1tw=!+A!AkLfe2Hsx2C@ZVd#a4V}Le2 z+}--}Pz7PGiLA71M>6MH(eEG=(ngr(U|r2VnzF(j_U4bcb|Gr!;(<@vQZ%^}cI;FF*J*40Bv}%yysqbson_nG~zF)F1g_ z{6UI10q(~LhvzR5XSF?rjJ4VQ`p&f96X!3>dFi*`xUdtvf0Mq?5Z-!xp;pknr?81` zF)h#j%BSdcaQ0Z9#zALMtQ@^g$4xb8yTo99&qx;}Q2W%^U;B##@(z)E5#y}X>bH)w z$xFjiBt_bpkv%onfk%|=BtK5(d4l*aNI5CBQ8`tQ4xfGL$c&PrLh)FM6s)K`*3GBU zA>xyLkRniaBK}=v3FTGsrwi)yd?ru;2bU`K!MIF|-T2LG1~efOqR?~B5mL8>fY`W) zp~b~V*2A3lSQuEVIQEg+eOCR42D9%?nI+K3%;0)Mw%M4GmEg(a)33f9n$gB1A|maS znm;XWeo@9Qh;BL_Gp0SPgInccxk!WtC!ipmNF0)*>GE-z0o#CCpa1#SI<(0Mee1%< zWjqycZ_@FigQ6}nd-(I*rf_CHq?5mCtj;^v%^$=ArWy z2lLw}1rlEcHO+)oslpPUrUsZMpQRriwUd6I9b<$3cwHPFWpblQh_Tj5H;^1bMSFam z%2<*J&C3ezJn*Q=+DI~0*28-H7Qi?gU3~JyETCvV;)TCn4SFXuGFvU22ZmPo8rEyY zD!o3#G3nXIQ^ThZ7%FmqNnxWOSXU$A;_5GaU0>8P6=#&|D&>qXZjzJnUB2S`fpCq) zdQ*jQd}b5>#G&O97u@JZc?U!7YmrMMphqlJ~=VMeFFXcMg@wLC?Y)2;cd0^*H z-VJan)rU#AJYP$u_ZUK!;q)mJul@0=q<^9c+L61db=<=FjWh^NyEl>ihlovkFd_wk z4St+cH6?|ida7?k+kL}JISe*r)YdON}1m=`458<{x zBu|nm94W^wO`W`S=cF_!TILQJl7zDld1pl&kfuEBdK)780b02+Ky08&2O|r5^_kZw zppZ5yvOgnuD4j%zTl`IDaznXBp(b~(wgq8jEl<|$c1JVUV1MbD=j2S8n(LX=zBUw zAt?Ds>)jEfoI%6*r&k!Sc;5_lKMpOw% z>R!Sr9!N9DesZ314%^dp$$mM!g^hnDh$v|0u;0(|Ow%hO;%@M`%j-NK#Oebo_nWRv zJ!Y3lC>Pr!2+p#n6YMd~M zYkh4YF5!|0mAP9z-Ea4)^BsG)$n-@HSI;gPFeje067rk9+Z$y%P3aQIJP`DXU&Hou zdI=F6w7kybnwqRpYe%BTDVTgkilahwtyX2WPS3Zl0M92`Og3L>U}bo~6^6 zhQX@5zw}>Y=q+1}Qsd}Ll6=TX7_Va}!+cgA;gPLHqT3;)AD3_cG4XL7|{Re~mAmRT891ZO3EdT#;lB9^gPs#rPjzWkq00#g-{z);PIhfju8#)@Q{nY>K zmpRh!_uc6HF+K1TG zS&s-_bebybA-?o|OiN%eH0P7M>|uN7yWtVzLn=*{7Gy7iDWm(_uKiw$A8D-MUNB{h z=x_TwFGoI-!b?d9t)aihRx;^+mvnL+ifQ^Y4e*Gd_aE~iy9>NULukzyR|p2-so8>i zVwGhHfA;-`$71;WoP0>b(?h4|5Kxi2!jE6uO~vHkU!=40s>H$9tG4H{jYHt)Z!7w@ zD}o~aq_k2l^q8U&qJJ82{je0#EL1~h#>jl6x3DERSlh9s1eRqo1<|B)$^L29f7eZ( zLQFL3m(P*I``BEDL2ERix^m^-%;?*2$82`p?mUJ$=g7U2Oq#|`1(M5=h+F>lpN-3{ zsALgYsKz`L1U*09kOg_5nwd z=O_03eb|33Vl;@cyeEt5qq)KZzTqUM)sbJl)xLzHkHiT334Vrg8g;TIVaw7PBabGv z%A2vK{0uP&)##IbUY5*RZ2E9}x+S!s{cFRQqF>WECArFy9$T3{n4NA_eB(gM0Yg7x zZ$4mXwhL;z9w52y(I@^t^;9d>$=(Ja`zc2$e^7q6_4`Dm@QMGAONN6o*hKaBFvVP~ zpA6Y}zL*&P=N!<|Clde^+483B1=bn>QuB{y{ZX&SdLnnCtBC$WxS&T}UCeWP6e z-An)1jk5pCOD~b&!f{_`wzEH?cStzdoWq}zTxpFwE;2T(hub}d?m(g&I^y|GZ`B7VwXow25pLLp4Ulr!!$Ah=PL93AL1G8zj8hF{3Zjp z)>kYV6UY5SEu|)Db5^*Vskva?4~5Co%8E~##&?+jYoU4p(#GYaNElHoOtT_xHQ~t& zJFOKk#4i_Ze?Pq`^MPG<{7v6X@a1w=2I&Hhn7Zv_A^hj{Qa;y*ISJSA(=qRCVrS^A z-W`VAvN%ZKf5ZH?<`VI2p)N~PS!o6`hHwv(CrlD#T&T}Afl|?&kHW+}WhBvce(k@V zzj*%|C$OT#yqsm3Dk%EU{A><~+bL>^#f08=BavZ7Z$aKR?YP5=MPbK18K0>_;YLyZ zjZclNmWM($VSC%xjYRuSmf?s6!gW*MG0u;z&8D#TGY?KiOGY2WlFqzPjV7r@r(?|B zxHOWXShx`nz`zS|$PqGe&A#2|-`)*{cW>ahzeKv}m-ad1DJ8$1uzM40Mb-e}@Wx59 z#7yuxUB=1xqEdW8sLZ9j!sViM_*eI9OEwcPhaEXSM}$7zV;womlEppurIR*k#1hn7 zem0lb@SPb;td3_8^X>)X@+(XB(XRK2!}!lw9CEUl&qt%{;UA(cFumDj&NuED z-0^lNgM7SDNLFO?HLpFl+KZpYG+A2?*K;T^RyoeiRpLQAeo^tHB=LuVijB9!95?c{ zG=kEg&|YgpO{~)O={*93_8v4#mP{9YD_!Fsn78gldTs`0@S+i4o{clH8p@!>(CFq; z_)=dnecVM6Z|q#xN}0{VzVm+K_=3~XH$Z9o(Y~;JkEZM^Y_#}6_FFdR4sY|X_6N== zIPN7gfsZy7mX%u-vMzh=`a0&PjEs1}q`p;Ny{<>;>%IBsLc>AjczZnI+gZwQ6tK=I z=lo=={FNm3-xFM58*9=$fk`f~9EbP8GbLNE-ag}aCu;GzW@!`NeTVt|zM--T1CJL@ zexveC(d3YrOYjEj>wU#Ki|gmb4~iOPCALmJeZXuJiS@#hwX95ppS>#~Y`9fVbW`Z# zIo}zx57*23k`>0cEV0*N{^JsVXYQS}zJ+HS9xk%B>V(sSLTbm9npl*EEYZ6o$Q;Xe zkyKf}I2T=;q|MzmZEL-3gtI!L^lQ)7EfNvn+K{oiKZ{F zTX396TkQ#s-J4xXykW)SfHCM}=ogwTrY60=o7SS{`__ZazZEmJ_Kh=lkjqbd;vUW= zGGuCAji`P;5E<)n{%T;{pn)t-c=2{-%etN9_JP%j0l`VmAX~JaJu`DWXO?vZd zIzw3ScQMrf63J2mt$_1URN`?H*E1S4Qkp<#N4sq>qNAFBto1%JdkRDL?g~K)m+7pA zB#X@S4DaIV7{W4Ia^y)MEahXJY^ulz@oV26bWtZH$jsNqH6OyN_P?_2t-0s8_Sr3l zdB|YhbH2ye6ohcqJ)nK*n7AnB=RgGs?G&qF)I2-zRbseofg(ox`n_t-8MUi_wq=V^ z6#hMbwgBM;TsNq(f|bei!?K*ZZ2wZ}I9y77FT7i?-olW0>d%igX1-;tO|Y{*mIIYlUPNHgNbxF-%*@Jd~IeYi0^sw8prswv_wPI zm&1Hrh1x6EUYHz>u2wN%E9jJwfCub_!=`zG2DNs$lJM2nwIEijU|xj|98Uhq(Q>Qx?((UB?_d zmQ%&!c%ogSSE(*ho?=7xrN`g#2|DxzI&7FN1BW=z=~nj;5C<%}3XZSJ=Og;l(WG9T z8Av*?($$3eETz0bI=tr4V7X9?<0o!OSC6@((r_vNEHT8=+}5&ko#5*hf###6EX{R9 z#ZW_Gq-~tC33IV6s4-=J_$Xwx5S@aEe&@w}Z-{EvLAYyqcS1Nf{sUx^jLaN1-Rfms zHlzhUYYavItL1p7cENX#$lt8F#94SYBQAM7(39oBw%sYG);Ae^-Tr*|0`(k5pz-45 z`{=E(#s-QT&HX42Y1IydC?UG1n0hsheZ7A{oZn^y+k{}4|W8#Q_Obe(H8Fel*?r$m;g zUR=5iL!jY_Ll40|GHTSDbAiluQIk7gd6WWWdAuEdTH9J;`0cf`2im<^%oHc9OA#y_ z!Ep|;w+;}&n#XRI!BhtBpXm5mRDHle$K>G>w;>OCM}-F+oW(ndtws{|GTrJWu6=px z&a1++N-oJI17pn3D|@ucy;3R6u=$S8vwP9iv-_e!lzC1gJjhwb*8!o-K4gVwF)udK zZT%RFmEG?f4_TSw$pn)yTQ-)5PsG zw+|V9hw6w9J49JipB3gm>yP3YOUle9+=U1W>&NMtyCMocyZMk(UW>8z?jiv-wIrK8 zeRub`NMtkhWR>1MCiFeR?a~9e@5*7}+;-KJt@cJ;_)%nR*&eSO&a3PV&0gJ|gSC4B z`vnaj)$IJjLv8vmq#U2GPMQm<CaMBa|Il4ExuDmSID3tPQSy+1f{ z(v}VPVr*FyOiUE0Q`-73PUm0Pq&;pGmbo%Y3>Rv-wei2xgi&WKuwklJ_`QY-m-|&?}Gh+VIMRyeb_;-D37t9xc`X9+32lYjjx}VO_dI( z`Dx1#_u%Njy*=st`ybJ|tD!2ZU;UoN-bcsYiO?|9mu%&YN-hbOvz4x((ABB*e_a#f zA%TjOyT+7GujfSUx@o7&F-r7Z|0TXG)!dTc0i$nV0(`pNg;E~%8v|}#BL+22sOj|P z!k$9@6do;BH=YS{FGUy8yBo@|KKp{&+!P%_y~2> z-La42dOaEv$d?ThcGG?EQP0XJx!A=a2G_Eb)@w;1)T|55ELD@qCeS18lu zOcgb3`2@U^*9rzRnC&VB4G+2U-xKK0ZA4i`jE~fx9xLsz9x7xg^T>*(q&FsL`aC8_ z$eW6lls8N!b8j;LbAGJHBpxY0S#9Ql2jnQKoJs zz{hfn=@Itrz`Sm)fl1&XRS7Y%?E2!7z_ncZEUxZ=k`uj*2H9cFSZPANz*yQGTZK9j zVCT2Ad<&I-(df~kE%V+hck`}s8j=?LxKN^LPs2D)3f02|!>f>|_ePkZopnKvJ**iu zoe;Z=_vMq+YTg~S;-w(9!ajRzLv9}bdCp=_DZhow>(Lie{G<(;AA1F4#5D^2w!*?6 zRO>{ABOTbnYv-ik$33UGlS>~z%i!G$s2SL_h`G(z_>OuBQOq9m;B%kBSF-0B zVs)sv?duTcBp7UqiouCb^$iTJCxUlZk?=BTwFxx(*)r`upPllDI`QmV)|womi;A0b zDrCIEwAU)B%wRO-H}CUkReklEX(PMJH?s^ua?JtF$79E-itFo(M_vN`eevkrYHWA) z+m0~Gcx_tsk;6oRlgO_x_$u8#v`={D<($@*JX?otFN}QEYU1ddK_LlV5H(IaHde#; zy1Em5al7JF^d{enB=k70Eskv!)!bQEMUA;D8Q%=UB0Z`nTSN=3$Ow(Yk7w)J-bJbH zDWA*h`m_KNk(mAMS#xDa@`Ul~q0%3yQY-y0ID%?&pHn`x1qzJz)MuZ$i9emVc$T4b z&PO~@eM76$)>SWa+_;ZK`*LfTDfG3}tBB*94DFuUm}yB4udU#Z4uoe`Ub8ttDFn3H ztMJtY!_bd(O;ao~iyWhk_X5)Ra~K(6xkq0-5~c+f@rsE}O>N#Oj3s%zAs;a3P;A~& z-G;KhBx&`v{E{is;IviujHR1h{o->u|4_wq+OFt+M1DbvX;D7-Ys&RlfngS5lRoF= zeHi{V#y#~2;s=EPUj}$O^%}PZKe<`OT^UpTW?x9RA58t0S^Y=OU$4V?|6W$~ANlY8 zP3A$Lqs$?$n(#aZUc*lYSTk~%HS?bsAT7iH#sHNa|1S)XlITA$Kry2K$^dVOf4?vP z?;)ARe;8oW?~u&Vjf`#t;C-lH>o8f$pw0Uv=Ol_;`^Wk>EbbzQ(1DL3+WrsNY%6S`#ge#_rM`ZFEipOEcmQX@`~3Au_mdvFhbKW;v@7^7W#j4=7& z0pnoQpTNk`q}F2-mKgc+Zt6fCy+sKvm13#Qxp(w?*ojS_Nfx*j^^l zc%cX^Ym73?c5jtwZ~f7)qnG#S^kqxqx2_wGT&#C5Mb(mrQ}Os)d@Ct^o>%6hS-+HW z<2%6o6(+#K(&vS0#3J@Lz)J9yr<47yG&QyaM@-_Er$#|k;m$t;1YZ6DwypAPJ>)6G z_DLO9N55cf;#dA(>s_yilwizHMW!z_LXy+$v}_o7!1&^47hg(4$81B}=Z0Use6Je@ zUAao5FwP@?5xeP5DXR@*LBn6T?#BV0+eO&mg%9&Z$ft{dR~O;?7jL_5e>JE6PR#su ztdj;%Z=vSRla#}BzpvaD)W0?R{dMJ5p#Ez1d;XFq&U*HpiMeoyloEZmDwYhT(&La` zo!mD;ea1UeW!6^4LE_OtA(Y1lvM?kiEVNw8wl@p2iI~|UL`_%c^CbJHFK+5eUKbzp zPul4f4bSLMB@T3s_SM}pYA4y_KXwW5M5XmO`~28Mq)RF5e7;%JF;=}9z1OQxn5%2~ z`$ zl+h`aob*VvK*NPLy}z<#`!z~OHRs4zbOwKe??3qB)(3=P7F+XW(Z^r*{8!@YkR1E) z3)WJ8lpUIQY@|GW4m-KgFq_;Z7fzV`k)P`YdzVoF#D?B`&Yw-uZCt)pa}p z-}TD*8@-ptzH0Sv`Z*xKSZYk=d^lpZ-^AEs;@$7o?%u|ScPszgg_?bONXfJK^2VBlUYn_OtoWL=Oi--D z_9IDbgi<7Ph%|?^w)`gr(#*@!_&F+Z1Fw_xr-D%Q)pT{-Q>_z2Tm5u>OG;=@)!;-f zA*OQWj?0hwm=H%9J~U@g`lCC`*DQOOcm(kxnys{y&AD_k7Xx3Yr?8Bn-tRw0b8dZ5!Idd>z>fbbghVIze z7qs?@RySV1DtKOH^+R!0{muHjy=y6cq^XBaT2X#lRu_$fl8xpVcbH#rt^6Dn zG`fzwSxf@DUiD1R1o<63;;u^Y$YegH$GHkb@sE)yQAl3lsT@=wuQWj>A%gZ5tkKwZ z5AXHLGrvu*`5=J$1|ynWK7jJ}saS8P$(&mU(K++vY&HLTjM=j==YuD4o7V%eFS#t@ldqTzT6g zJcBPYHarLhFnh>3YBefa=J5(y(KGgj5_^{EIC9ZH>aMef7=%k9^ry5)SYwn$_UL_c z`FIk9rzaQDNPXT7iXRC zSj_ysZ*ClVlj*A@uEPVvd0L%3FS5wfycF^=F7{J7#&l0YG>@p#M*6hKY0RN~!BB*- zfu5$w-aWX&!LM?+l~AKW8$-^u0RwZ|5Jhohzs!BnjMs&Vm}9RP3wb{f!L}cD@zyOX z^X#ZaC&fibA`86pqP=D_)55^p>d@dsJyl+?W& z^UuEHNoRAtCONjcTg(0t^>55ET-EkC+XI4&;;qlD(Chu2cSblJ$n5Gb9pJ?HODPc z4E|%|?8iBnD@|5G^;@(iL(x(8FEhoLblAwx<>}Aarrw`loeh-dkSRA(-|$$`ti2hn zjd}yGMH0CWN>y1fq-4L68&5xhkMGfD9nhy)Tz{?p9mp&W70?t-r%^IJ6Zph_vS_4v zzdw#r8s-u7kzk!n<#X=$iCrzYhodTOSQtqBv@fG*>B(#-G*?@q<>3ANFVbsAk*=pc zANOHdW6O0}b3ROlvbr62_@WU}m_zI4%AGLXuF?D&bfs5ok89p@U`^GOi|<$pycKzt z&_v=7Z$mjZBUy_*l#$0LmtmN=v zH~Om6u5^sbDBlYCxFX`YwV)t+)8KuD`mS0`hEXJYPYL0s33^lByb7{c3(_Nx;krz+ z1+_oY9Q29^cafKnDD`us*6B;La3Dx)*WB%5e4j3~7>`6cr#)=yIoKd4qjaA4U)H|( zSXrGi(p7b+K%zuFv{7uABOUEMQ^rx!)8UCa=D>^hk#gdGh(pAOcgCkwZ}tUbGYVBz z@FJ#p^i&?-=k4{cNON&wf3{yT=a!yoPO3~YN6KgK-{P2I(dT;KV*dgqmD_SZa3ffs zTLK~j|Lu0sH(aHXM)&zgV?|*1U5caW-Lh$JQ}H%SaG~oS9LY19SyuCfw?uGH(n#1E zaA3H7)Fnw-ShQ?MbsY>!-qoX7?g={aTSsMvx^libs%^{jG>ue}Ze^5NjL(+0zE7pR6@j3_0~>BpsB8sEzy z-||9rLQTp&mt*@Df7<9IL6#! z{r%p}M_E zBuu`^obQqy*?v?n>R9qhV)N01^MtCYD*{c?S62I&X&<&bEL)FazcB<|U3{9p)gQJ+ z!k-wiKJ=e>HttVM@?xq+>8>z_2Q4jZ#1vto!1e=&i{fnr4r)U}S^2|H!d}jj!&6j5 z`eE?s#EefO7U#l`uK5)cR|hYeY8Q|RDKfqvJ}+P?ux`p@8@%6Xp|TaFZ*=(7NSK3} z8}4qbQIPR^6w3CoI=DJNe6g8_E1tj%ZNIPH=Na^I)+enerc!GXIH&Dia9UsN*n`Y+ z^zgz)Vq6}aIyb6t+IsFgSxSw4P18=U=*N>fvwZFZoz3LdV5iWVxaT!q3mf)pv^zK$ z&j~}vgU=JR+2uMB8ws5-iWqlnXvk`8wWz?k)?0Vh34h(PxZWUzm$2Kq%D@(a?%>_r zWYQ-Zgj39)!yL@}dFe;#)7q3r59=A)vjd77%lg+szn)h+(3)%3nhkH=quX_|T4Q^W zDx|*G)X?+b%TXZveet;=4?)$tRm!(J?5TOn#_-ZLkL@!ARe2x3?~LSC*!{>F$Ngyo z#^ZX<9Cs)nO?;h0luT(gM5@R968Jt?^8 z`92D>r}GE6v=bEc?>#iEx5CwmgYRWHDw##gRF^+s5*z=)==3>T^mOp z2)*w};6Qs2m_zGu-_OXGY`)&^XwrzU`f!}6dnQ#R>XjA#$}M4Wbbmc5@4A044tehn zMEO+y!E1xnmX`cv$u$`{nlP=PwK?^yr8^*r;fdu)|NjLmL9_hovV7S>3pYG*1DE?k z>6xt|UE-Pl04q1~D!HBua?KvxS8Ys`KxkmiPvGxh#m;+Sr2lfidH&VbstjMY5cR!J zHuS4<{{SoX20GFc!GtZ-gkAW)>1r+Ly7k`*{svYaF#J>Ee*r5Ye`JD$-*R66`Pjd} z$=o0LcYkDl`y=PC*YA1%Ue?$j`SkxLv;F(r*?ggzupZWU^G~p%6O%|W_MgCtBKQ9W zR)!w`U%-mTpY{Ha=BiYN{|Z(fGygtL9)EAH`kDXn^T!qf06zo(0SEws5CB9W0Ej^V z5QhLD0Rcb~0)P|*0C@-i3J?GkApj^r08oYipaKElIRpT82ml%o05l;0Xh8tbh5%py z0l*LffDr@$69@pN5CAM709Zl*uz~5dko6$$_v6aaK602ojJFrffo zK>@&q0)PVr02d0teJB8UPyq0u01!X{AcO)y1O?y$6aZo<01u%6Jc0s10tJ8+3IG`t z0CFe*6i@&tp#V@p0icEgKm!GU7773z6aacC01Qw77@+_>h62C@1%UZyrV0!I85jVv zFaYFW0La4tP=EoT1_R(J41i}a0G`7DP=^7a3j;t827o>c00S5RhA;qLzyL6Z0q_zA zfCUTyOBeulFaYdf064$^aD)Ny8U}zH3;=f+03I*^JYfKM!2s}w0T2KKAP@#X5Db7| z7yuD403u-kM8N=vh5?WS10Wd&Kne_iR2Ts1FaR=P0A#@c$c6!s0|Ouz20$JRfP5GL z1uy{K!vH9R0q_9^KoJapVi*7)VE~lC0Qdw0pcDo`84Q4O7yuP8@GFz@84>``kpNIf z0zd-^fHThDH)J*9-+0l_8}er!N+IGedv%N(&-eviCzTUxJxeMpleQXDflRajv1=Y* zxOOMOMOsj=z=M?C@-wr~;=!9fEF7vhVh^$C4TD0+s2qd17P>iO-Ec>*Z(TD^`L{2M z&vX~|iJUBup6@R&jn4UR3ZZ@>d-i6|F_)4cdLdoI@HK+i_AYFE7b`qzPfPa)9L8G5 z2-z$Lxr%fD=heItpgX4VVoVEOz8JToAK4d^?R)uV%Z3r%X~7p75x7!)8mdpd+{-Jj-bxLG}0ZjGXPo`N?h>WZq)tsfpCvsNy8$L+qki%xspmWp=qaD2aQ&(=0m zv?0VLF))YxNuB_XqLImkT+)TUJL=x$2n|-$2?;~PY%g8g3n`M7N*_ZB}Z79Yn1{a>xId$ z1?0}wjomKeV9)TG_$|!#1w)NRuI)c%1>=%9$>$Tz__=S+ubMvhes|<5BC|A0i^>`u zuew5UkY=T#YKe&-vcM?CK#VV(Hf&uLP3Vte&AeJ+?|lC5aVl~mir9-DudwwTpQWC? zIqY*v0w$?}_e4B?#)A?M2|q*x+O)at`P>&|s;#@b|M-5$bkS25FCU2Hg@PvD?x2F0 zYsFS6*kEqL=bYPxoT+TbgU&wK{Mc55KO4CtQ(= z_+SzLMe+`X~|(_XFyLeFTa^~_ia#pZ)A=meqRRqb7t-{(m@_G!B38$`AV*m zfCG!*72{mxN#x?ktWO7{cQAXlBgbHpx2ODTYehL zJ<)9ZxQjS=tJ>I~)}HTq3el%mgr*Bn@yxwi<~~o%tmcy`Dvm6fW60y^N7CCrE{)oH z*itLGh^N3#=84AqU2fE>-J&8Y&0>s>Ha0#K$%%70qh$E2<%*~ky%6bvi(;nkc5>s} zADa4BT**;V2A`66HaaC@omySJoH&5q}tP$lya^X>DJ6>V>tvnmGWYujX+v*_)=JtG*D+bh!KIoJ#-~Fo5|uDY#?c#SZpRd z)D?s3;LZwa_El5!)i;SfwC_~Dngn4^s z=jneN@_iIVzpL&KiNp?jOoSj{g_*}+`E<}Sec^6wSo_+T%kWsPQ4WZ*1!8D&|_SFDg#rC7~R*NqtiM!Z-)#!!2JK1v5x*n^w zPP>fmD{K82)qZXKa|g%!#3a`>j1D4Kq1;xYCKm{L2?hdepI0LHH5q4Qw04*=#QGjF zTL-_M*O=OS%x_6+th5eHW*Wf(nHIEtCe!^W`jh9fYDZ*Kuaa(!&1pzfKkPfYT2n+0 zPq?O3`M)co_;5(`af*kwhR$y4F?@YfXj4pmYwh^a#ZlCAye~csH{2ZlncO>JRmU76 zt!18s9Y{WJV`gibyreRj->YlV!Na@mqgKh^ffXPIa`@V)82Dd1o;+g9Kq^^*5tn9W@t`kQGxBg10KSa=NiWr zk$<}^#%S&X-0~*`CE*CT^0xz|L{{~YsM+&O<& z3H|?8CD{IXT>tB_obuluzZ(p64zi~RTP6v+PG)GIwxIo6l_0|XPl^AfN(lWU6Yfuy z;Ph`*!s4GQ;U3p-nST{6e;%U&9QeJgi9hlg{!L~`EseMW$5Y|KT9Pk6s|2+(XT-Yy zR3)UU{BKo)u+#sgO33-M-v3c0eBu7DRl?kp-^U3G|F`7A;y;-$mwz%}Or7xHLBLW% z?4Cwh**jJ~Zmwi&7NZAq4@2M(kqMyMQL0!g#8?Od**+pUq+}zsWy4mE5qpS@f;!EM zbs5WVg)`wr;BiE04WE)nn;Qk?5slL&&|uOkA<$!svyk~=OHzFa&SZ-c$5Oa&^j?;6 z{QVyANOdnE`FwiG`S7GE{fR48yI5I#7&w9VW&5Ycp7<#5T@SXXDYC zON-di8XEkOnzs*b4i6Qr44tgn+Yopxd05uZ35s#Slp*FHFvXr3{TUwk&XH|XM9Gyk zs1?-^o`SH0ppz{;Sl)t z-BRv-9D;^?_d_=0Fh!9lQehS<39e%_;m$-+!sLJL%UAyLwB$j4P6CzsY07cTdm^ye zaW~W;mnEV6`>Ww8?%(Q_zrGrzaDVM@|1_QGo&3m)e)?WMs*Vj;#;@snVXkVlW^kWc z0P3WCexF!UNNDX-)euSt+2}$)lZMI0q%O=PS{CBcL0i>KoIFfD zNNqY4pWWAjC-Ws(*RguwLm(v4ctx>fekwO8Boyu4dNF@pWT9E>{2jA!HYBJ-{VMx0 zhQxBLBW(<2hES@5{HL4GOOV@F8LMq{^R^lLF|@iTtsBXKBSLS^->$7Rb?Az=67-r( zjyT7{#L#-4a-}7d;@-ECC+K-A6Iwe!<-!M5QDkphqt4|z=9GC-pLJdTDN?NFN%*nV z4+?pp###SW>iy6)h$=7v9G8M>_aag9abIi)^*c}Zo`Vom6 z4exyle5mqaz_D4`+uJHXT^G*={u?umrvjyx=%zg64sjbkb-v`*%_tjvpupeFxlT{) z&8rPhUPWt@=I*|Ym(9VcY9CY|M#ERux{nyXrX)2Pq1jC;rHjYYMUbpgwWEvj-^9N{ zn(U;`CHizfXQEYWOT`Ca`Dtt$k6Y?N54pFyVGa~ImqRbC)465SoxMxK`a#&~1b2*N zxj{y?1o>bS(RNSe6ltfrbjW9hS3|gdJG7z}OummF-DqH(-EM_D%5nAU_6i1Bo?-{4 zF@I2VtNW@WfJtXTKhL=ozTY`GSMW@Rz*Ezyn5h;MD`lmxCT!K{_M)dWaPAPcxIyav z0y$ub>O+l-8mScmHpghY?*WN~c=n|Mi?iGNh*5L0_j}4bw~sjxaftdN`l&{SSvHNi z@nycOrtr@sStli`T#u6J#fQzENq$I~-Y37=7rkw^R(Vg~JF|5|2Pa~!zxSP8(lDFW z@lNKDr#SQtBa@e+ALfFi$V5JjHW5##ZXqK`t7J9zvl5Q-w!?Dyy{I7Xhu7K5MwFH1 zIG?x=BU$#yvCBC_gAPpu+FI7(aVL=q^qz*a7O&n0K?W;q(_K?0uV3BcAxcwfkf-xb zdOumMc*aQV+^-y&N8)=uJ|+6R)9Puyp3=CZ3-slMZCZ7rMQO@$*`ABMPdAovPmEkT z?Sf>sic2}BVk*mq@2uk@>rXv0b+Huclr zLNcCsZfM*lgv(|;WW=8;w{<+7y=o2=^exN&(3+o#G)EMd1L0;LRyM*mDj!D44r3_q zIi_srE*zhCzIZ5jTj>_Lu7_5pUbf&9{e3^pdg*v(-9NsGII7}4Yq##j<>r?ZMn*!s z5ZgXHg9gXLaTC>h^H|m4=2xa~LpL~QySEAWPw^N9HSUM5;y%u6S5q0%lJAzL=_C(G z(PnbeCl{xm#;E&*d1zQuwM#;UJwHY>i1>)ouygqu?iiokXuhe$=Ds5Qn&)^;OPRP; z)OkUyRfgYvYD*=r0RyYTx*Wp-l8~Xt#!*mY-@~e!9Z7drMoPTrs|%e7Ey+)BCKJej z+~eZp1YUX#9~SkjXJ=PjvF(Aj*1JneqDjDTI09|_UDHPWM|q4HFf)`EL$o{sLs z*Oddmd-t`wS5=SV9^!xxGqj8u;4gWbhH>swI!g0weG5(K8hHhMJN{Ip z1&d5q&5mTsTz`O3a4oPbz^Ou;3u>7BPA6A>@K}F@_ZshfpQ5^ERorjcqrnR^rH+UI zDTf&@;>>y*9%WD^HR^9RH21i@kN<>HazkAA))8On*Rqmj2{65 z0me)*#td%STAln3Aeh+Cez4%<@h2BSG6Av*Y-Z-Le6kQklPq|d9@<5IPPS>vi`cgvsd?FIO+gTk-BGAR}kpGK&uGG zhfQq?F&u?%;JrDmxJk~NYsZz5k7FPw-1qhOs}mIRA$8h&)Z8Hjd$=!Sl_D)U?z;XX z5rqtMlsBQ9bQ}7~<07Kw-KBS&ZU2*sIVe6gsXqHU$`UbRd<2QFp%&fVNL4yeKU}LK z9K{{GEQoT~Q7z@^M4W33X2A%psdsry%6`+TCd&)os#FirUfVpAp7~To z5GZ=ByqvhSWKO$fQy(2@V7|}O@FfEWRa)}#V3{$ zKio881q~C9=+Plft3oN3dxpA8SwpuNG6w7W329~AFdf3Ke_ZV25cJ-~ zRylp`bXM7Bmo=r=dOkM5TNs!bQ@;ECo+@qiC%vkVW#OVW_Px=lBc0)|d+u9)lEHE6h=nV!PHiIZnr9jus z*kq!{7~vyq_t%Q6xMHoj(}V70lU}EUzM4d&x@nIPWHTPYe%$j}BY5FBkul8T?lJF; z-Irgukk6HkqTOIjydxl|YJmH{bVmW&tv13gpPfeM@Ockrvo35zTs;b6u;)pZ_)5oj zkLTWlU{KD|m2;*?<&tYVH*bLReUG=Cb!w#PUEV*CZ3w_$D=~G_WsczReN~IM_Hm)AWUy9G^oWI$Pr|HwBnjP!%PPl~L#mD4BF z)(c8Fj=-3q>E(?AHUOeCdMq@nA28hI_H~105Fue^_PV{)(U3c@P7W;qdA0cNrr?w! zRPp8ZXBR$6@76ySKoBky{S|i0BR3tSS;rg>5K#2j-G^GEdJiNK`OCIYOArU|scueajA7EqeG`XobBwV9@W4EMXDpvLrg>7R$L53t` zT{c!UgA#z2IIDp;?82zXUEgTNzL0a}^A96}aahwo_}CuCLU69;VE0XAs&q5vqb{70 z+gomHr6In(km9>XMyUB1zSl128J&Z?W0HfIl}_W(C_nY%oeJ!^(Nf6AG=6Q6)<;N+ zq$_p5k0&0UOQq;ilP)f-qwx{1pZ1=gwz&(MM)`a{kiG~fl7iM~JMCfFD3 z%Nj#0F6u+-(me#>E$$oKK${LC>fQ-jk-y|i&Nu6agU1?A0fVOCe9gkGy;8-8eGoJR zC@cs|*>lhy_zsSdl{XyXq_E>Pyu4KAw5qmnU;m;buhI7t;nkTZkAQRrjQvaQBrRz_ ziR1+LY8EI+L=&3OgL6ac-c?^316sP3=Sl7#*DJ}GN0C&O=2i{lgagY&mt zUEkgP>Aiio$@1>jV?RR*m=P)$Lhkg!61|U*1H!nN519}zM$wz0sUa>Kd_T;4<+CQX zz*u}3+OQU8tuQKX*@VcX))rSLJr_Dk8HNhKbw?|z(ki*c=*sK|@0ie&CrLA8Pa9(k zt>tpPuy)|2hRTrdz*`Gbb56L_1fjfiaT8>*ECg`Gek#>Mo#&B#t}5x-fOhHCw6)$p z?B5uNSYxyvxZVF20UVKLx)GXso+h*(<5yyntP<48xGiP4y4+5f^ZVsJ*P9~md?#5!V zZZygCzS>f?W?u1ZTAh>*t2*LszAp3`#b%Ug(qmdWh7I>llUC`!>Cg$vF4&BjwmI+u+yTjs7z{IL4MQ&p)Giom_%uV zYzeKJTHF~iOgB^|no;awt+ubR23i%GXeh)D4q)ocYFr9(S%9mAcZ2$-?RP)`_#O0W zzC!%18W(XDRl|Uq9$e^paj^>Xj88vwUXH5-Gc__N4_wM1JfGUABtecx?E)1;@i-`M zyTi>=7VT8AxtVy7!6oJ*zfyH-bKpnQlp#H$Ia4c2+>e*8lWd;r58lAE_-}8(Y!?h_TibLRE`rSU>!&7qI+NJyNqfwu8 znY_G2Ha5&UzQ+l!foJTNL9ZMgp`eQ!}F!z z1oRS3fg9`ohfm~JVER022OHz8kcoB?%F{VXxU=at@IVBldRs*DMgQAtXQrjR*3|%q z%{Wdhiq)z_ZDwJ?*uanjZF>@Xk?-^#j)ICRrY)m|G&b)ICk88t0PRYdD4P8U#j@~5 z!ioI2=vKK8*$apoH53`2wnku8oK!I#=$AklZU z*;$zhbNM2sJuE0c%eUrETt9Iingd%P|F*rDe~@;D!9 z{FcM3Egk39mUqdDs2uOHAGlpiva5Xm!$d$ZD#?5=78FrQV(nY~lLE&&ccq!Sz#I2n zP++vY86)NGH!>wgqKr17KH$BOYs`=0V8lCd!};uk1xs`SuhwaqiXrC9Dc?X3X|DAj z9+`phb2%`a9%y28`6@iwJ_Q=f%(H%hBvvTA`PP2`3uERFEv)T1dqvzmyjY){kdw?>2g=4UO@##_WFA8af zP!=tr$Aeljq2y#;eWFFD3n@y1WOCR7R5mKe{E8@ql#!lv7c`krz+;H^9MZE@Ara=s zEnAogH)hG=Pi_0T-WjjNCXDLUcbin<@=Qh>6S}J)LcImM$BPQ+9>PTVpOMO?kl>=IJ$Ld2dtpHJ;%1`mLSCr0k(MlA>(kEgxnoKz;-?w-{i4*%XJop+@(-O{?pJaO7?$JlVJbA zg#QDl`_Hm}sYUL8;J+^XhN=1o&R@?zefsiiTj77;ulx&4hL@C&JvTWXGAvzl8!K5)1-xt9i@$cm2AC67$A71?K|}@z%A|W=`Y@ zZkGx5Rvw&5Z?IH2e)g8hG*3uFl%f3CewFEzVTRwHTgboV2cpKNG0a~%xj8ajJlQ{` z64YTh0oGx73B^*`3^aeaB%1CLVIWz7nPeh{0#w@G>CpM_xRDJ%r}IP|a_Kpb1g)QG zl5rsoQAopa6BvkSQ%Lja6HE`iBu_Y(lC%}gEf%q{5h_l5;h()xF6#> znmPrkY*WZJ_RtoZyCkh_)7V${tlzhONlRE)$;7WC^6&UEBrqgAxS=xf+ws{11tk11 zd&NA0WU?tbrE(F+v-wE%CH!DHvxMO`$Ff-<0x+WdXt06|zbf{y{Pt>-u_|g)sZ707 zze9OLh03K{urLd1<#gT5z{EnQ%8|LN2i;9kJX1u}rl`ZN4V+SMtJAw^F7q`UNb26J8vn{-R;mr1EB})&{Esx| zI*x&xw*Svu>>p!;|6fq^H5azc?;**@=%~l!o%BsBS?oR1zR;ue>woHAzmBD8zys?t zT9{-1i_dnu1TVO3GG2TxgCU7H%wI=y48up__*0p|GZn$l4KAb|3(ooJ>h|yFK|t?o z8*Ypj_j7wGf{j=w{Ih8-%xH` zasCwee(8+HW{H=0X7WKWd?7fofed(|CaE*NiM`V?KL;&;eO2;AbsR ze8cFH$02{Ing8kguR2TzCk_Je0hp#lQVeSL`$u3M{%^X`Uq1p<@IQ4UP8C;%xs8>G z+}tm)q5&dw@wqT*(eZ=j2ARf{TXysYqw%iKsUhK#WH}0jLi#15fUDpJ!cI7+?=@oL%L5C;V##O` zZ?{?GS<95IJ4mOcs*1A3K5q%_3p={j5Rm79bV2Dzv`54yA`esV8|@Tkx%O{e0JvTm z0QUV#ymM>QcoVOV772!Vtw~(iDI;Jq-iQxxJ$;=O`hvU#Q3a<;Lk#h7A`i}{f1QK! zK8jO$%XRC_bX4Cl=vT?_Z_~v3na?s&mZ_KTHm&s9Q^EzDSkPMbE*0Z@6sn~mmZQ+z zwMb;=9Un(@D`RSlMwEH8;sOIuZD$;7_n{GA=LJs85!eOa_YJuhW!7s_jA7M+jEh~J z^B7YhQc^G}%1Gsi$^-n7r*-U#(-#tsJVIpE*r3GhAuvl+yyy8hhhbhUU?zS|tP=nr1& zB+zIAUwxppeOltu$rFF`#4S2Gwn@6wwEAhgy}Zf^70SeQv3nRX*54BR6_k;xrDv0h zUn{^AO-^BGJLRQRcc2X?=KTS8_auwpo$KP0#;0j?atAcYo=fXS zn?MK;Y@eu`$YV=tA^!D{tPJ!}SV@n{Cb5kN?2|g%&}H36{ugC3GrlV_ zeW$^FR}wz|p{EMJtxH`bk7O@O5d3c;5kzo9(abAxcNUbGD_|viLSaYAxBFrgTjGKJ zAn>gC6(|A=&!EZe5q;`v*~3@`EEI!E>2wOAKm!Uv!7{>-``ER1*xxWBfY|#^mDX)g zt~AlW?!mjC6po#pgy8ZGkhsb%?grS8L-M%QUuCIo_Eo(FKAj4@2n3??U*gfveG8Lf zc&xA6dmc1>Jj$Wad1U|wKC?2qckj_{v7}4gi$bQmaQ0HVy!Ic%42g$&`Eltp#jx&_ z#OyBxmj*rLvJ=;+J5Tz!lVCD8a{feOAh;A8kA;lO%U%=FpArRAPp=QY$4paO@Kh@| z!8mGX$mNA>=~r0giOx*e+~aIVFz{Xh`Wj}~>LP)O+iG~c_mxPU;bg>mc^}SawqjI` zFX;k5PT#)HOpElr64o5DSfIG%2s)~rLEv!7^vl>MW*2U+E_^I~@CyWarh|2x(|SgV z2c+Vz=N|p*{qBdD7@BqQZwC<@X%W*sw+=8S-;$+A#-X^R8;lg{P_}Y9eyBL|VpP(8 z3E5{_(3!;*&KEiVti})g)g2V1I}-+t3eOeTYE=28^}a=arru0p-hC5qVpVER0wUjb zW*>20{&K(QSgTC>YiIA4!^VyVFw$~G!e;k#|;JhlY)p5!tGp;boo=_-EA()M4 zlP8r#7rGrX!oDMS^NwYkW#oP+gw_VD&DMDjgU$EN%P&!Shmtm+j|~XE7r#wuQ7d2If_NeKqJFO>#F;o2B}1Dn!o~lsx2ca-Pll# z_BHi16;XAB#i9!p*~Y;^tES@g1i0Blg2Bhx`M(K{EEP@LMgZSrQTmS>3z zZ+b~11L3=MwwjHcw=*pgsyN-yoBB@mwB5E_=@Zm<7Iw!W3AfGUsD=`dFo?~~Z{+x+ z!1r7aC>8)3JYP~b+)aj1F$)AeJ3u%(cf{yk%n^agG7pWc*BrjJI5s*gl4F*se^*wk z^Q}&$Rr)s22c*dCmqA*SXv6NdoiW7h&Y||5%lf&BlkEdGE*VEvFPoW)&~cAU!ySda z3hU0#WaPO~^Esf2)F5dARVx^0U^&#Aj5|F&H@xBacn4tOaI;$>bIIgI0q=5Gsdo*+S1X{`f17D>6zZVp6rz5pTShAA!u ztE)})_#lmlk9WeUZ`p(Pr|XWQuxJoNzpJfd+dxFsFFdSO$pD;x!> zLJRldlgU<2PJvL;%_p_{Bn?qt-^AfRG>vvw4%n@^`0$BXAU z#GB7J<@?h+%~{OGP2t*CvUcl%xmHmd_OYE!iR;dsA}dA8{?97&RZ5GueqdRZgY>Nl zfHCHJ!g(Q6IP;d(JLPD=E%4L`>l^64<8j%z^Y(r!p~v@bhn(Ip!gp#?FT8Bn-0&G( z(7Ny9C$H$j;C6-UU&TbGvY!YXXLlf=%*yzPFyHW9mQtqcT%5s}*&IE~3!$?=tE~YQ zQ9nMuHC?wyN0I1jXC9Wl_~K05KS@pTx@;)lmP}=POBQL=`{*MuZIY1B+FIO9f)Q^@`_Zo!O<#AYk zvyv^7{4zRgGta~)yK{DzL}{R5vFfTHHwwdoe;=<|n#QLd8`i%c$~sGV3O6;GDFoO! zsj_cMCotdND)n~W|6-lq-(`JrsWc;DzAei+pGVjLl@yax#?V}lV*w_#(adM0VpP55 zwcso=UJ!deZOf?kvE@3x0J{IOb648xUQNEzPb!fO`=nb5vc{Fek_xYg{@4sFZO{`J zPWfV!Ii+;9`3ZPq+*Qf`t5gm{?No?U3&8@zAFpsakK+v!Aq}-eO|Ia&z-UE`-2L0V8^}e*I!DfM zTA@8E)6ovn0?31Kv}9ykQyILg@8%M)qNoq+4C1z>9>K0;noo&%=>V9X>aC_xyP>0W zsLhSZB*>Yh<>g(MW~yjTMd1^|Y}9o8iy+sARsWU8wtOY%hzAgcDecF|^dzqN9= z`;hB@N_xyfdGN@e@G!nYsQLyiDcr)HR9&KDcr+pjhO0rx|80m z)gGT6v3X4PYm|UIjeQkC@7o2=quA2ai}9z4l>Rz{#i8PB$gvkr`e5U2B5orgl1o_q zM8pL2fX#k1s)j0knkwoCZCcd6Nf=$gEG)$Rw?u#{%ODxjgAXIE49F*9P0KNBuH4f0 zJ>gtM(Afm;)3xcPsP(nEu{k3I|J7~zYNRwC&s!fjr8U%I&J}u(P%h96I>8)4FET4> zY&7#C=*;QX zd*BMHY|*$1s2*H9+c*khyUr{fY46n5+S*$C^a&}Srw$DU7aHm zh)ro8u-&yvIX($0lO6|IN>0{sVNi+kgXc+ z$%9WWBcHL#c^Jbj&*Lt$0N7etbi!s8f+A1=Z{9EvrPo-o*N7~xpt0WP zY%vmrOGAMLQ+JK;N3N5mWxOC)l&i~%MP9y^G$J_T4qv1!KTWGhd=0Q zS?29sx0)bMjNjg5(f&b=c*yVFOJKD1wQ!*x65T;99@961Vj#;m!%wE-3mPtkyiP|= zSpI;pAizr5>Ao3xF>SQ?08z!&KFGoIrn$3!sDX%Bhn2P&pA5HgJqGySi2HE)$;)?%{z#<_>9*|!tRGk#|h5QC%65o?*fa&w4 z^5MMo@O?7m=Dht2tun(nci*`hImOYg>$%Qd_iLr?kLoO16z7Cel2#P3*x9A_J3VBY zXvSCbdP-a25oMj5T=sQ@FQ|LRtKEjR2oOOgFmB4@)xm77+0;*6SK*%_6g;>RQ9BI) zBq!?Z-6XU=?5WSHo{#_&`S5(QIwQfgHb2^+1oXHqK7!gR@c}oE}AY}OfZ&Ot-c$&HR4}q&uG6BI4%w?1EWSU z-=B!TWXELGnC|2fi|iN@uSG5M-0%eY*QDZ_y)U=ME;w|ay?wKfEn7Es=&{H9Af z^ukbz?|(jVszTrhXshdZyPBGY-g{qA3LKxtPw?ctG6?J;g3N8M?&5{YXb-ffrlfh; zwq8j_>Hy4q9)^LbT*JRs_8A@ci+1|(+3>{l7a!xE#%uJ5&zrX8n=&D`{31TNk$%;{ zWIyBt!%Uw|rbi6QCKr6vtMvwpC^UiYX;f|6n|+7BBb=q9u#e*G!dRn!-eosJ7goWG zi5aoiiKc`n^H))Q7)uGh8>F+)4C@ThL^CY-0hHXRd69Z!+bLawV4CRU_3R$Evc#?^ z3p3kr+^&QHj9DndwW0iOLca9lh-v6E&{Y$$8Upt0Y{F8?aFCvvyQAj}>GKOOiS{Jj z66o&x8ZI;hkVsA%C5yl3*ND{g@0VZwm*DgXbOXIX(Z&QkTh7U)k(P;~UiaF0)^`Bq3K8kt65-vdE zoESgtzs`;gtyq{f?&z17H9I?W-$FxN`HH;odSAddTkj-okBF#+buq!F@WDNP@zH0V zc3oAC$qmej3*UwGg&&MWlw(pTN)I}f(faVoeUA?w(jnszcg5j7`$aqHSn)w|4qS}Hvg{*4y^U>b0Yt{f&>3Y!NK~i;7re{MT36&H0f1b zyn#^DN?S93Y+=!-L?gq)_qpp61q@9!ufVBRTAI~-canDk0?dPei&yWP6U68sYJt*Tp3;ibjG>Nw1 z#sEKqj`e~K$!3zrA-6?vVhDbEA3D$t>2W~};wBMN7^05+wocR|EK?an3soIqo3HbU zu+XC?jIRx#YmggfB3m4X#w!KlWnZ3&z`D(6_Ct|mpe2Zr052KUr83Qr>-wpNa6zaH z;?)k}CjAcLkivQ@&-UgERT&~vsteScuZ_I3(7{hz{F$0klVH~%+vVg`9rtUjXlcL` z+9sMGW1n(;A9H<=bNv7?(k5OX;{b^GDLRU!&y;H){!g%S)-`I@4KVT(9RpbVwt4%O zdi##M=ccgdw(&pg7~i+8-?!kBn!6SMa;a?Y(LA@!0_E6+jdJal&%8>HF6EU88CJlJ zFIC86V=NX$sRt|imC1ZO;~mJ5ODkz2M*p+8|1(+IL>%bML>iQBI%Hg6`q$jbF9Xc~ ze}?9D#OwDM4SeQx_yN$I?Q|MGK!Z81eYQSH=!5q@0p!0<`xbtQS<>rGxTX$ z$}#-`5mCNovI9lp0F(GiF3+ZRe58Hx=6%>&+D)w<=CmPXaAT}B6wP)p2Ze8nXR%*E zJHWU%sH1Q$H?%AVTlYbcD^tG0>a}lHz_uO>-UWOBV#~HtdS;)+E|6G% zVSr?-n>8ZPiQ}3;YH_7FKa3D+MwQ#bUQIwKKL$^PyUBtG8xJmRxrkZbicG_2Z2U^U ziaX*y{IpyBb)6Nuf)fQLkalI52CA%#WLhCiL08gG#=d5)zqODppoAYitR?P;SS{ zLHbsY^JB4_@aO*YOmZLP+(v=Nka5GBexG$zQdx@260)hDAKxS3U88MBt#=e1gqD_o z!qz;cY$imExKEv65#2R*Zc@cAQl zeE$~WGf{Z3w7LL(RbR&Bk|qqz_F&gOV-Fojd2uDQrUJ1lZRK)iGYI{;509~Q70bq$ zKvfcv4cG60FSFPO(BCT5c2R|B({lLf_P$v{1;wF%Pu19aOy*U~*OP#&u`pEl>B*N; zRkn<034&G;`RfzM)#s~JEp!Tz&+A2Cj}vmyY>cl_%7lnY@E0nQ-4j0hl1wY0w z!@*c-JCPOHQk^Ndug$PqnR>FAS)l8xE1{Uo72Z{t8kf}Z&3nJ8QfK6p<~s;=RG;u9 z3?rVRmj}e>d-4q43;v@)6M1VZB#gcz`iP{L`hjSYm^s@QawsmW%J7lA98`*ta&uE@oM2FISk&T;3<$neJztQGI{^uXPkW{~(GU~%^_XkDjRZcVjV=#?R?uwi}3@}~{P zpkC|-es@uAw{+VBPzzz57Fx2UB^wxw{i?D%5$&1)5Il*Tn8}3;B(Ca0C;+eJFi0j( zZ)@>=iDXhtAI184ICbMot`7ZUuA?%etJ^e=2+{Z|YU)eqg05WGy;_So7`;czgFpvu z-U33a&iFi7KfJhz+Z1J(b2efYG_LRqz7jdSfkTo6#Rhp#mMI81c6seSG1rBqh-RKr`yX19*11xc9#h+>>}016+n?uIMvquMn;sF zfD#o`X&>l*zP+KY>ru8%F01I=V)L5zU%Ogf{Q~s@-pP?78Hyk5pZqFG!eHy@mJ(nbQa=Z-6Ql3kpmTCv|6xO_IFk*1|Wu1V1%~I)KTjiQ5#=C*n8= z%(ivlba|82lefBsogr~f|F(t$xR)dS4|gm-RTps zs@y%8MN9PJ(2noQuyH5`;Ok|4pY?`@GGws+F)DYY0ne*7%7Te4+VD3g>1FxVO&ZK9 zxC(2(=4z1+IbC*}5qb4l<8;`%fWn%JWo+W`a;OJ8LcXX2h1qXoUM7xg+weOnUrtEw zu`N}pNbXeKGsXKsGGfDkqo9|!^t`Xo0>F`1m&+Tj8}VTFaiv(;lY`Tw0>AxeTVh#8 zhr_9+g1|5Ah=eSD+}um#96k3ip6tgxpT@9?io1RoU53=Wk|-lKqmBSSz}yDSZ0P5; zI!IM-W!CH>nR&~LyLFgcSjFO05GFhk&>a5Ji7{;m>3M)>&X6)UW=;Im&}fPxVv;FX znSHX`8Oq*J24PeW4#JB^K3Qsy2QGG25z`?LKb1OfSh!OvEdwlq8ncq^+_UanmIjCjQay1ZWPTvk7ztZK#CsL0m<_L^q`5^gYZxsRL?TCj1?#{B>@ zzRS&%4A+o78-q3Er0*6HK9l?FLR4u49J|wZFBwVxoE;y@U$DafXCi||%HBm7GA@rw z*f4>D!bWcH4Lne|Dp*Ugdf!BQvYOymDqpb|hv*<(eu)_}XmKF5~Ob)vg zk+K{5JsYI%Lp}LCa=?5d>V7!D2bb9}`>hbfPJMmXM6)SuIPy6rZw7di&C;!Bm;-ur z*t-8K^UF@a!1qnaCv9<0rjfM{4cklgSw*UMkx>kV;T4v>NHVm$c_> z$@vR}>lEPuu@xH7w8)<_Tqm9lov`zR#N2QkaJ0_q|8tmsRiS4oMAgRm|hPvQE<3Y|Pr*4#626gIG3we%=~iBF2v7 z&g(4xh^s#!18xvy6$KD3DW)4SsH~0{z^=!u!ggV( zh9TO$V%IK=t{ALEZhO$zri` z-!8yA6mfw$3mqtNo>P*V8dt{iv%ejJkHz|t*&Cn(ha6l>nhbp)V#N=`EJ9)!MQaQD zU=HVAM|7)YLE$dMiZdfN32}Bz5X|+c2K?>#l5GYybtx^Q@&K zhh0Qqu3M`V|KlI4jj;!)Hm7ItDGq_1lD) zSxtO&wfSELrRAi^jp2&*F1)nX1dhwJ)6&`{H{CTA-U!KKwWnVwwp7_l0VK@w!{5EI zSXPWjN{@Rxflp#Brm`GPIdu1zo07ccCUux57y*vXZidq%P-yyuh5&^7W)QMbJTb9l%d@w**wKnjjxNZQI4Kda= z`{?|M@7O~ty<&&pZnswPg^d)*$+#Ayn((Q9qt&7{VmB%N#DM%{f`?yYa7I=S?&Yfn z`@WKtFq3l8kaX-rq~y4}nD`fxaye*}Mi`W3Hy!^H-%bqUrIjdJAU-YoY7NEQosj&E zJ!0qnXl5dg+$LiHO2N5fQCT)5{&gbtg6MQIu?Nz)S4)8>;vFB9?>F<95M_cOY1ppyRKos8yOmBg!byPToKZWg z1|t-u)HB&PTP*YE^{@n%0DY&D@a|F=-+?K*Idpf<%}GVcw{z3529uZTYdLugwe4P;kLJ90J79eKLNK5N11IA~QmfK+KmrPK1dfH&=F$XW6>_D=x_i5k6_-)*b zj0@!3sYxOk?&&L`!Qc?w?e62zD=m|U(dixi^lzZWO^HF9f`G;xJ&88!_XAlcfLMz@ zSnOh?>=h{B7o2V^SGxMY*>g!o@67=Amxxt7j%f^ttG=}pGp3Wy!YP$S zpO8iR`V*H^V>Y~u1AiwA^1!S?QLpX61wWysuAhgLCcE5_ArnxEB-zUY;H=cOeF<%Sgs9L^& zFNpj!R}w{->V*;i{Q*C1UVe2CQ@QTS^Wgq_@X8OkmKQpfP6l6pZ z=SKB^)kcx({0k`bSsBZ9eid5(Q4t+QYN(AkJJlino3Tw0iv*=G%P?)Ey>DFlHiL2T z4#fe>1Td9d$jGdH0LVYekCOP#O(UGS_-zsxSGRaR0tAS`0{I|^1-RKVcjCdE>o#I_|Y&Xf5w zSfN7F*`;WJ)S)iqDxrKIo)6Xl7Y#_XBt{585c3Sr1H(sLo_3kEerKC_;yQTZxOn=u zA)Z8rX=rESlAYW3h!YzMc5_gMbRi$3PlCJNm$QWw;plD>8ThGYKxj2cVU!#Mxd1p& zKhRc@n>4|v&%T2yU?QkXEQ-_WjS0+Q@7b~Pp239d*y&E~nNNq?bK)wVTI|&ioucIp zXCDuftd$bR_`o6|96&nv2j#Ha2^vwYqGE4`*|v?&)5v4wBnd$)3wC7^cyF7uk-2*V zIzlD9>6H?As1}yfDD{=ERDDveDhOh8714v}#M4fF_I4D#rS4*TqYCRD5&CDxDcQAa zQWX@j2CIk{OhAgqlFQ=aB~8I3)7(u-$FSzq58KP##`O=l<0$HjM$$dB^zI4JvO4bK z!tIVDB*KAs$n?nZBKa`5Eh=v7BPy0qLnJrw*v!hotiiRk$(<0^;XaWO46i{8HDh=; zQn=xTxDM&3LVlF4I?2mCJ1=pO0$++`)=lZt32fL`tYiw z833NvN>X??O0-y2DX)qQDd7$pm(h)MKT73L^vu4(TxNqzwemfXO7kc0C}?0WRWi<` zx%)uj@lbgKJeZc6*&m@+%?Lclig}2cb zF^n8~3FTvq>)vs6ezrJIu1U?-=nt*1$OdT3=4Wss0_Qf1*_Xsmq>&FSZE`qMS;q-O zhJIB@%8%tZkozEW&!|)i4*8~FNktm-bpq(CV|*fU9y z!g&uvHGB89H887Ww(SMo-3c8T(+ZgSHq!TYfsHq$mmL@CYbma94bbbyWZ=BT=^`8O zCGh^F;72ue;DNKyMbS&^G^d<&WJji`Ar)Mt14s*?x;kc6SM5q5`4oL8s&HGAhvLac zPa*^F{*9mOPi4Y`Asi|hgtA9z20FVVLLhjV{LX76c3Ev1k5=$=h?vtk3lSpc&V7?Z z=Rd_KA!baW80&4XM|1Q=y^;njPK{Gq_1_DH%OCXXtjQ;oH?(Zv`Wz3 zFV2KszuD$q3!H%!F#|tkYa73<~)#k>|_#<-%g zhM0lci9zSQ+n(H~&}j4eDC)HwWDpeKdJY?Y(4E)B|)Ihzf=g<_~ir8s)GLt^L) z@Z<<^fVn|)Gj?XH-MzanE3T8(N4qkL<6{XuA;~*P1++<6cX_-01V6zpZqgP2BtjrO zkf2V$R~r7F%}j>WI1o>6*C&uUvW+bsIY}$`MtQ@*3& zVKP3Ol9iLmw-2pS?2=v`LFs zFEu%~aZ(aYd@YYeEEt;Fs=Dhv|7HUun!>@Y?&6i`L+z6li}UTJhQNdH-90sdM4%0! zaaLj7S0CkfPkgK(Z)2r2B_+X2eclYZ0}$Sr5Yy2U8ecKXs$Co?u35@Z3*cBy7g$3f z**SBb#Hp@qsy-?Tg4IZ_=GZ7Fb+K1&9GO^~lQYCCH=(&{v12ec5-7(vL?8@C*S(^3 zpskqeyf`wy&7@f`ZK^eYQQ{J0tPbMs&dk>FS}{qKbhHj@V#Z+EW|nb5P2a43R4gJ_ zAVhPwto7$0ot?~)nYaX?Ec3WyxmB=Xs1c6&Rdnyp`(@#iIVcwc)4Q`=F+dRmF?TrY zPioNP#AprhuNXIMUT22BZTqP3DM3IPLA8gh;brQ! zyE>!$ZC18GD{Jji#;Hi4R2=z!*QyuJ7a^hu@rVF_t$9}T26mAdYu$H}K zCZQyxc^;>6+J%L*WZ0)}6}`-oSSo8Q0jkwCqVE?Dr15AjqG71|${ia|Stq{cA{A#< z+dLO!wZ@kyd!Oq&^h(p3KSPfSJB?Gncn=yV$Z0q^6Xwq1%6sk^XzJsfk}^ZO z9Ow zhfVw!u6jtNv96E&@RL$+D3~jBqW=q}4h#FAC^f|&nDBq#sQ(M4R{aD2;}4|<{})OP z^oLUK|AC+OFEB$5+2&z%6nJv?mTi7f>O}q7@&Aib%NG47O6?8xzfkJ4Kl}YRN(~wQ zUn#YE^zUu<-EH}hNUmPT2std5R zFb4fXQ2Q^P2VkNYgeku|4p{q4fA$*W+hjs$?82337{!th(+8AD=>L5}@@K2VA39I| zyTPHpT%YsL3KbUm?Cc^qF&U?N%ICc36m6hDd+S-QoxQa^w`* z`|bM~*AHc77q+sxMfK1$0r+bUcZ+nwWgJ55I&`6Ji}J!{0+j1I#9QYF-2Z)s#La_} zSl2OG0KGE7-3U4VkFj?S&TQMazdN>Vo1LU%+qR94?WALLY}-x;9ox2T+k7kCz0cnF z{LVe^{rjm^>pSOMYgIip#`p~KUJ5=jeF`azA^C`pbg8Xk0i;rKADUtz=$B$4%OlxD zx0ynKU#*=JamGxAARoSjEi(Zy_A8QqCP^QnKPa8;R~$g-1NfkfaeB}u&;}U&E~NCy z6p}`m)5(7}+z4Y>t@D?wpv>rRM(GEjln*fE-wg%)h`+bv*M=j1WRUahJ~F`UW*=3V z|LswN^VmTGAi%_r!uN$Bh`afK%zjXCm48I1WA700fCOjblaPy1qZA8be=PHl=i>6C zk<@ft#bcDkA%{`xp!26B^sR*25W`1Y_XOWZ5LSLnlu`zSQa*&0QX$}vH-zS^LQvC3 zwW+Bn5$3di!Ec%_l{%6PmRA8?`$Xj1OCR0`JNF^>FZ0ctF>x;XDEhAxy$bIC561{M z=m7kS;Tw}d-xY!%L(UKtEon#!HEBrlZ*Kv(5QVUqK84W730^5?5yl7SGAI>^e;{f< zd>1q!g}XkI#vai!&>#_6xJT7y?1OAjLM8 zSp5MlLA1D{p^x^teOgZ}u%Tb`Z6g;IxxSqZdAts zMPOD?8Kt)#GMB7(gg(ACm^|jxB-U6gy4wP>?qTr=)HSSweS2=7mF;4Vqw{cUi(<>xJAD3Glg7k6zkoQ#;RV7zHD=D^I5V?3))^ z%w*f9wpn+{nC9Q0aB){)fIC*>XSy&HP;B}V=2dXMMq(UNB~c&Rj|y?{{`fMXe1cRq znlZ$Aa*ghc1jP0o3|B8YQe#<10t!dj65EK7GHI5Ri||GSWM>r7C{s!?`no|(+PNT*;x#->_~r0l0BP45Q@e+t@&=A`&&V0b1NgoQPuZkM`N66 zzV$c$eV#BP))oP%lwe7&n&{WN()+7yfg?ELCbNoJEG(cMw$s_82z(xquXY2 zf}AdR4+|nD(9aEv(3WVzHdeEGcV_4GQ;2X5@#1#^wqdJdt9J1DFkp#q$9P=@1768# zJrI(l6Z6-ZNuarm^NvdqVm;i0xr!Ee0zQ*A(V6$)cF+=UHSISTZ<@%~jpKLU=)Ni3 z4=Ym9Mr5?5>P$nWx7L|Gw>-$EppgSsz2kc@NT2E4i` zte7|Qd1&xBr0SI5Xi$trh^#4fJoCU|ixzi-KK3WMn>1~-3~d@PE`$r`s=fxH=u{IZ z#SUgR`Nys$_|k6K>mr-UyX*|4Yc>2V7A&`GL}StuB$+H?i+WwZ1!}=csjp1m%Wf>EL8Ca40f{3T9*jN2$ZGWR|?-UhM6$f*m|F&QB{paj6p>*YUe+7GV2; zN&+0Qw=kjJy)#UxoZ`-{CejOgAb)1|#KoCdlxXUgyezX?=TT*5YRRs|7m&Ki6LjEP z46ibiuy4sM@ka8;jM6X1>~S}>VC*{X8>WnqDG7_)cR&VNnm6NB(?t9S=|K&!SP+Lh zjxrhZ(Hj%;;${Ov{06;O>#S;o5v2-W&fVAoYYNN8fl_1ws;H%dF96I4@EGe8&FIXq@YcDyttv}?_biV-G z>A zR5r$malO+tz{R6YqDUV%4?Z2Ju+L@DJu6hk7{TQPfBR`>NI6gnK>^1g!B_vV**I`R z<f z1fzPUl8pD51oEz9o0#O;+({JIrN)>9b*WcMIE%BAQob835Xtd%85jOlUsKlIjeR<^ z6E`l-Rik3@ezF=zqk=phionZuE7p5;U~Z)p*+d!Iz10(=KeD9bvb~Su3lLp{jf(yH z!i}%V1=|(9GTaRl@lFMj)}%-9;~|BN`OBU2>?79KNN2Pw9i8Mspi?3FCshF~)$JAJ z7OA0)23ziaf_^yn*EHJkYX9!*(yibbKl~~W_{`_66R6lI_>5LKkBK>_q!X@oI77P% zWEJ56fz-hVB}6IOvGoZ}h$f|QAh|24ad9ZQ)l)9_HF^x}__JM{UE2eOu%h=|TnGl3 zxpC+AKt20#Cipg7(6`ETB9RzETgJnv_nG+*T5BJDAV+b!}*mQ6D`I|KLfY&5G2|=V<##-)dopNZ}9Kh%T4P8 z;*_qZJbw?mutKX7I*a7%(X5Vai{kv`$5kEZ_R95uo~<;kzZAq&5h&Qy-wn?LKh)aE z2rBnZR|9(#J8{Z{5=tbkcb}TFQg%auY^qY1LVMSh>`~D&T?j@Q5-N!d=T+f!SGTwjpK{oM$+Nd!i?*T1;q~$Mz4T)AQzSP zp9Iz9BWuN>C^B2cyOT&DqivEkA<)^vLrIw<;8 zFQ87s8DbR&B()i5SE$)30%XVE0;6ovF!Q(X)j(_YobjxOi?pCBz8^dG)*Nn474C-Z zT&XskwCAmn%mpOIEA`fImrv+;;pof0v_E;pz9>qzuCO?Wt1aY#!05JSxlZ!6L%!eto+x^m&{Q)>^+mmEIf8!A6(S{=ZFoK{c(kRLFYZrR#DVI8jIB=f>?<|>@3nxEJEj4$DvJZ7?tqdv+BG9uW;>6HEkXi zR%vvMHIh6#KJcTFQtf z(`RVlQr?80apO}@NrIut_$5>7lzNik`ITc@#DxAwgEDPV^XBaA6}dri4h%(TYP$M`dyWb>pEYcjR4@2X z8-4{W9zLSJZ5lhL!qCHRdoqdW1v&LQ4c2T70?rkT( zZ#v32UG z<3dRu!a%;V)RDr{*-wCNEImE&ppfi#M*%w)*aKn@opWfgY^}?6Q!yNmMiFTbq63&@ z?^>L*6&T?Sfww1J`6@||m!nsAXW&tCQ=+(tHhkd*_4{=i+6^xm@#2U4$UW*B_Cwf6 z@H~#j6fcVCZNd#H5Y29ct3PxTbA0iVtQ*PSOdLR=o^+duHrS`ySL4H8-{ng1mmt{G-$ExH zLkh8wg_}BSkmuEUW0DREojl|S?XpbT@)|D`#zavc1c!`Z;?M{XwRblC5X68L#~v}F z80sQw>Z;Q`1HXac3gbRIi*)n!=CXytOGhcYR!Iub?S_7M?yj=H3^z>C?9E{x?l82c{Uv)~g%t?PDfgx1F z&9QiXx5whKHuEfz>1&omWSnycr-}T~Ns^xL#;qJR1z7qygNT_wn4U$h zS%Zqnr+~3SwW4~)PKxp|$rB>p)Lh5n^F&53>mnFTIJWIbr-9@#RVrDNmCe@DXV9fb zPVdO4FGP`aoN>S)@~2jmgGWJxON9LJ-@!`p4S~!Do-$rf)jFoACfTu zDdM;9bVZYoA0_3a5IpJL+4U^5T2YJ6TI3P~tDc{;;Ar6`V}u>|YPIv|c^z;KZIu3G zX<~X2h0PK{mRr_9XZP%iYYfZCz{Ethd4}{vr_R8e4#Ppm?5k_9f(xMWZFlmz5knf+N-gsEcUw@2 zoW6X=e^_o!fH=Dqem+RkRtyBw=CC{rcX-~6Xr44d>kV2M?ohnV5Ws2yO1&B#YEpHu z+1+({fR7b%Qe#Uo=Z}0SQ!iclBxZ@cVi@U2PiW(*XV-@ws3j1`@*0kBA-l*~QT}}* z-ZJpK5@r+CQ-W=Kla+~@<87!A-gabbS0ZFuP*EP?h158h)%Co#wPlp`jA{;>aULV6 zIASS#gMu*Wgi7_w$;OlF_WFf%`y%IwL^Pf0?cI(GVhc~@y{6@hPm|Km(;jZbjHOU6 zIUBOg8+9K~qDSC{dJCG!uadk}8#bn^tq?DJ7s+Q?so$oep+Zh>kaQI;hKJTW6(qxJ z-#ODePCI)?vGlglqu8^1I=CZLK-h`sG=j-zVwxWmy|6WF@~K|swzHhWY*UtbBBXdo zJfqtUSb22z4{EtV8|0o+>b3J9!|klu{psEB+L>UT-$&8~RWR&) zj5=_Fu--+;L(zSy6eX*UmuP6CtaKr*taH8h=>6Q!#e`mT0;lere>8szO>gAz_7=!Vy{hq}$hwsaF@1K$}Y*vF+uBZt9mP5sB*IN<+wmEI~nQ|!zSTEmg|Fx4YaVpoE*gS~9GG*~rx)<7o z%d@-0JZ6B-pb`r$k}R>?es4{8#DYrP7Amh^fcar2ktGVA!EKHd-^vdpZAiREb{!Vj zfSR4XI0Y`z`qeklwaxFv>iP{_emqz1p`nm%x4KgP1!$SU^tEimiJrQM%$zxeGs0*W z&w#ftJ5zv9!c8YYw325#ZQv%k0^3FVNkeX}IsW5w`pYILNj{e5&@a1j0*GaleWb&f$p$A6j7Bms`q@1*fNdZZaq?)2n4QV!hqHpBjo{0bKSJ>q}y z!h!x7)9TMSe1C5H*O&-@#(!=9J*L~AasK-K_1*c`vf%!V|98>iSg8;#E-05wDX0+ttNAU2AmJZPdBVTpq#v+V z<=TS3gb8Vfg5TlRiCFEMf`0{Cp^d=>F#0}tq0lBDEr7oxt@}8n^wDCH#*n`ftrxV6 z$-NeP7r1zz6J1C44N$A1gsAtRwp4{Vht)d2&Q)gsBQAC+*Vp_*&PyU9wv96&j_r!c z;?;JFf+tS2uKJ9N2mgPX$`Tu9zKFSmS07n%I zK7Zh8QEQUBpFKK)UV%}S2(}R z3KJa5_T9a7fv^?@0aL{cp)?+&Gar(F<$xdKTR*l*bc?+Ih1~KVI2`b#DBF zYu&{dckPq_JoLmm1Sd?oF~lb#@Q(=@`Nz(*h~r+xMAHA&!w6nT-b*e`A&$g{K}aFN zMkyacPKhL?^c7Knx~@n-3v(*Ck13mC)KnVk1KV4hk8^s+`@3py7p7@49rq>=?T@b$ z0NN1V52MRQm_9}>%=lN{z2Gn6@Hjteb<*#ZR;BzBCB<|ZLoD>DmKQq7FdVxIJ^J>k zbqT&d#8f_{kWiCE81-ELb4NVJ;XYF9q8}G+{)(CFVJ$EIqQ|~pdVB4%c$vWc%CBF5 zd0(OZ^&CZ9vi$0&{7A^>{Vu88Z|oqcxcn9b%+Dl9p8O$n%O=@;yjbzUISikB5K&8z zAZ4TYkqf{#k@L}ib!dLc3Kf3L2?61kk zR>%f^_KgnHXEOM}{9eN%B@H0|N?~tk{X)@hekAOcOAPC}G{1K#4a*D;E>xu=imZl=S0m9mA#vJ;7 ze-#5T{-Hnq^;LAi_|PA@TwIyrbym1i3~A*8Llwn=@?(1Dc=>@KA2BOjrS}@4=Q*{n zIjIaOb0mcb3=_icL&*tZ)NY!Of3DqozAc(_W!7ZWjJu63xmUi@6s&egu3%CE#1JID zvl_e!4Jw^`0AaTnKfic#VC;g)cu=X}btSY$uR`I0W#^F5CN)~Z=RBd&(d5BoJ*;Bx zUp?TbsHW!~qz4f=lSp0;&d^sJ3&|cFQIN+jrKnib1GZgrJD8#95F{YnuD(os8mq-Y z{EB!Y(5q=k3^s4Vbgjh%v$7mut%jPB&fQ8bK5L?j59iA`{@gU0s|P+Hs;y2MPUz?$ zLciK*YhkYHg__R}yG?L+_!G9Zp$ySPmu(hA{&jZ$27zYd4hi?icu|KPW1;^3zVZcg zo1>N1IgpCOJKL zdQU|ZXBRL8q&_=uFuEj54m6Qt+3()P04JKx+(d&s$+2gOc(q`F;}D#wz^P{`DQXDT1BaE5Gn8PBR(4RBGozGh`xp3R_;B|1WMbi_M(Mg8ujxN{kF4PFPPy64Ds_< z#l@}rMJ-eF$Q47Y&tb1Oot48v&l^s2Wi~Qn#4%x5NOwG`0otB9t-O=K$o^j&?_vU@ zqG<}%IOc*RT1G3vBFasn#I?pB6n&(CF!>Flx%L(UmOBM-oLpNE z*11_NtC@li5|k3S5W0E&J8Y9*Ju-tX z+YGF2n~&g)**vzsOM(*cBw*I*(gSmCYgXUQcZ0tx#1p&3Ky$YtoWV&F!A}+=CzauL z0(2tdC{OvRmorromT*I(1GgHOLp2Xx#|5J7R)?}yU5Q+zZx7tW(1CYzLJ!F z(7U5wa76P=i|(y;K$wN1(k&nbXZh?aC9N_X;W=}iF`qpxnei#8KjiTSYWhHtFp9mx zE9h3KU(gSlVNc1o4P^#;1ISgDgs%lg+qsv}q@SuvE|qYlKoe?jlm@dNk?VlF`%%6o zA5YtV`etj3=aR|7yes`h?PeyC$=mY|=_?Fkx#i5eygS?UkYY2OVQC+Jp-G);>I{pM z-95jKDR0f(DkOLacXRq<4j7^q3(uD}yidu4St@V4Gw-X*%J-jj)-EYD)gmg84srMw z03uAc0_e!Mn(wqmO94meB4i>9W(Wh*ZkW#((LBaH?I?qt(TVb%uiJ$bTvs?2h~((M z-*m2nFtG6;ysur2iQdp_yJR5m&z<^pe1TJNr>uMmT#sY4(k?Psp7A1H4&)*UDkCQW z%Cgk+{>hjgcC^rHHaXvx>+tT3pd4VPcrzBi-h7F(nYymOTQg{?e7!SKio@HYw0D47 z%eS8YR)r!(V(4!aX*1>NQ`l7KU&etMWt+;jqPuzMFQ}=e~yX#{<7oVs_j!r)8@?r))R0zee|4!s*aJEvqxnPOe`-~j6rL`d_J zV*sB&wq_wy8MWzU#_c^!@AxJwF;OLjCe9HiG~MbjQJ&#!qj1j?C)J?sC2bI_GYxID z%l7m@klDSBE774o@V$=8yH1vdeE&QyC-4*0aKfFW!Gj2++IOi#{U!Fpmg)j@m}2nLd+C#Cunfe-RUddA6uNF<+D7d#y^@zq)?k0WVQ(fHe~| zx5r2#XRq}_(J+DkBmfj{atoarM_r}VR{YI=6u!{7D>Z2wdU6{7F9rl&UU z2F(5|bGaoL4Z2rW9KAibJ3I;R@po7ef^1d2BOr+W)fI@A%5M6a`kOuFJhC%+)-q@B zDc&`x-Ra>wSXL9fm2teCAZ4tGaSSG6aJH5?PwRuo24j*<*EimiH1tbq&OP6w_)FgH zZD!H>SC=)JStQE*m}WIZUwqHx?5`Fg0)Q{@~ZRChK%w6d)gWIT-Dk@tffv8`(x zV7Rm@K#6qiYt}Z36>U=C*l1jfxD_u}1Y2X0uUKVt?Vf*wZc_tWa^RsKX$?s+AlUT8 zsA&$*O=11mnZz2|>F1x-)2Z zCvCxMJQXt6FyRkKFToZ{-||Nk9^waSEIA{mqc#KM%n886>rL=u)gHm*)uY{T zLB8dH{t@h3eVnH`61h~$@u>AoP{*4;6Q%^@KnaH$$T09k4f#?Y<=%89J_BwW2CRS} z+Jb}m>Yp!dCn?Hbj@jB{r#31*9tJQfW22)Qj5X>9#mYYiMeR4_3#C$F$@#?-f%aC% zha{=1OS>7F0jHjD=zF7U(X(2Yw^8f{kDLFHyKN7J_x5enpf3P`?U9s-oiAq9HoIjS zc|_=8gvq!&u?MSW*@14H2T}`YS(m;+BN}kpOn565e!+!oy{3DoFvaA!|3Syu*_~X7 zgt3}&v6`s#a#zezd*l*M=T#pF#J4s(F%L|H1qLEXDWHpX{Fcz3jc&<84M%k=d;26& zlOp$(yCLZ(o=etQ$TA-0v~?M%9-az?xtb52cp#LfY82kc}*MWV4|esHMAf&H~O?n3@^`na&5!No-ja;!XZm{KKNZM}ak zKe=_fAr7QQb!RY#Q8xS*lbM}d`!oq{~%TNV?pEp?7IR zdC%!2pMHD;u8Dj^@n-9vW zXp;a-{RYeZwTR(EHCWqb+;j(d2gciO5v?KP*eTxThK431T;Ihnd}y&$24{Waw#*MH(wsE{ zj`KBptrQ6AeOTjXW_|Z*r2I-C*hvRrin}6%2w0-`Ij3qdzpsg%`fz?aUet<{aPGt< zP_57+D^F9bObKd=YAe#kVTu#+lPo1qK;9{WRltE)TSc;*%_i2Y6ABCO2dixmIN6uwB)TI48%Dxw>o-ZTQ|Bl9#2K9~HTCko#bc6;<^JJS zwiqAelx}_RSblnYgLd_KeRN6d#&)uF=sr`JcGUh!-J&1v5SaK)W>Nn%DHbh3-!wMp3KBIdv zt4^|t_4rMPZPsT90yFNpw-USRI(tJ5GIT+}IX{C|_b%paX?C4K2{F4|7OjmD55X4R zx(2STIQVW&9qzf9JHON%r=2cd_`8Z}bS?Mcn>I6AQE9^n51Afwof~MAueUHCx^;mT zy7!>xNn_>^XB8CFPlE^G#f@n-o`pQ%)J6A%$Rca5qQ#}d`{cO3IW~F8fLFDbiixR+ z1gqU@lzuV~J9N1@ascUEcs>eVj~1;uD}MP(x)rElCW2Y({g``nJjK$)ium?*U_F+; zx?3F*X7=4r_kF7eKxG~2!nWpOCz@otr9lCtlk2=-1T zQj&)6a5-$X?WSRqDcNLlvkc0w*XPqq<#ez?QZe6V4>)J64=!*f`atqh@X~;WnCt6M z*=p-|HAd&=ps`x*EwiH3X&G{{TyJ~XB*;z+-ryy}nF;%po4@vB2RK-f4W%bN!oO~D z0^q3&9y!FN3SAt`cVGYBsx#Fm35z8o#S06t8yo9cQ?P3wO4s8_4bwOD5xqiwG!{8- zs=B)wymwzCL-S4o$Vj?~wS)~l)U7-7xG}gvfFa|FdLv-=G1eS2M%(7+`{30v=WXjb zWa0d{uHs1rhuY_;2tdZSm|~qTvUFvvR0W!Tdhydp`mTrgY}ZLA8&3RAPHGM`l}K-^ z1$c||N51(n$!PXLY4FJeKd(<5C}%?Lo!{N3ecLta;qLvJ4R%dJSv7bm8K^m2ANEJ+ z->@Zx!q_Fh)h+=SPU}5<{(5^nDFH_KL{c9Ul&1L|E0vUasGx zVf$Vo9}}Hgg=A*(O)ToaunJifd&*_NS{n@#Sp%oj<1iITJ2`i$GA2I9O0vwj$gFLh zI{68NuN5N`kXgLrk~(ZDVOrgw9$DO=`iv{gZ;LA<DkjFtcT3w$F)9G$Ct_CW4t zS&IQ?2w^3j_vmS^P1AVKBq%1INTOvY(ZaI%FCkgtKdQL9!c0c`QM$6mw6j4j| zph<)^RPUj^JlOd-F+pM9qeYPp`Huron##*mBEOiO%Y+Dj=^wj=4X0`ka)dwIB?;j% z`~awY`iNWVP;FgMuaLd{2d7@Xw~4A$L@q1{cO8|^K9G&5q0isLcu-&k_mABR;pE{F zH0pBKnbITQ&zOR#u*C8*hnytKK!Z>`TW+OQv0V-5gP>kXOKi$5 zu1Ppb1G2JqCsthzrF*P7`+|!r8&tzq{SZ6t47%#n0vFRq_Q3Ztwy&kI2Pa0#etFu$ z0?dO5OYcdnYi67QX*cDApX&`3<9bm;`yPBv72Vlfrf{EXgqzhtaP*G)i?E$nBaWa_ z2td5<$V&*3IU-W{)6N$B(#?n!Yv-uu(#e6IYq%~E)m<;Hohu$3X%SOa$y%G9I0=f> zPUA#JS36lsm{Hrg`hbx1JNYBPxZmq0cat5vOCg<{@i3g@Ty@AMrc849g6wn+YY@ZS zBchg9biVOq1xszm+kVLW_I^vwkWe@(|vr&OIn9d3$S1`9pZ? zt#5O-f{2)0)JSI;4-vo{!mkZD8vW&h!<)$W3(T&zFGfQ1wXMI(SNCQK2-w#Q+s0w# zFf#c#zZkNbs2^G@_U5jfUUdFg;3uLzAr!5jjAvbtxj1)-u1NvD_OHRbol5$6#Aa~U1KMCtT-c@CKKNf;Zh=oxor?O8n0)OT6Z+c+ps5+TvuU0yyBP@F9H zE?bb{B$jc_&ks8BmUNYDeLz=|iFwsbicipMpcoSg5>}(|a8M@pGOFw$FF3TOZA83B z1X*#J*}05F_N~wvvvZvcwO6nbq2bmmy;22}?~QxVfN;OqGb<)VuzU?1bFHRk=_x{& zCz`J>G&C@MYFIznJ;gUjJk!R|qHD*1ak7Bom)Gfg zaK^kBy79*M?d8@;Jz=}>r9x*!aBo4dON(G52kXgCKT-<0wVd&Q-}7Nt5%&lLF~67) zTj24VOyYdWHT??b?(t2QzgOusC{#l=a3UK+;pwmo{vZ<@MSCXuju>tvKD1lWR+ofY z7GDzu3}zM(>UKt#P+}wDDJQUf6Q$7fM>*fsL$+f4Y3SFz%Ej&C3YQjd6$Y6fUqaV- zMvanY!DzNASAXK#dlEq6*#9sjK_ zZnPckz_XKRE}69UOGJt@@=45`!DY+W2lLY=IH%P%X3Ni3epHt08g#Rm-->P2pQJ;W zx1iA3j+SZ>R5tRv0*`b2HV$RU-rs;eqG9(NqheqpCFLW1A7VkBGUHr zQJ-{p{U_%l>Sz8RpUpc1FZ3*zRI?87zr9MTa>4-cjUdoPalHF1_4!*v8Y@MjHV&cyA{mG&b(I5aIWwCSoU(hMS$+zHXqukElfLn{LDB2Q z1a68+ z!hswx(KT_|xMH&cbH;p?3|yrYe^5zLA7O1C5p&QL&j4huoN$1gzVIDN95)x>Mkqic zKyX{PP8tk1+ZuFYKDP7VJnb3)?*WBRRt7lO7`$eu-Fiv|hdy(crV`+j64H!u4M2Y> z(Pqd7MuQg`SJs{Z?|ObJm)6fE=ESvKsY~7XzCy1Ya#Mbnb(!drreqX6V(s-Mmv8An z0mJ2l{|ycjr%8Sq0Jye4ZY()9)i?5rGyJ>+DI!67q=DxiXw}4U=SN_d$-qEzc1RWDTYQT5tZsPpE+G`3>k&mNZ!-kI99yeV_`7!&+X&$J_4!cb11p zX#Ic7`u~gb0LE^Ib$vFShiycwDB$Is2d>K4G0HXdU(N#v?ZP!rJrABzo1wbGK+1M` zPMP%4e>e|8t!4LX483+)%#!)4L$z01WweB~-h(LfTa+oQ6 zOJ_2(+y!46^!@FZ^+N`rYcRk7ay~KNe~Ud%2iDi-a^W0^lCe+!qG59# zh|#%C2Yuv2e}_Z;v!M-GJN@bZD3B85dj5>R73yI8m_b1VDQJZxaq2&G9>xzgbU<=m zOds`B@+kHmLnJiAAYtm`PSv*oK=$AdWV9GzJk!)5VJdb)Rh;HrRf6MA^+&`O&V5lN z+Si9yE>tdsAub>CLt6hReg&TV;C3UWAM)cpO-25hC9v8bQJ59s|8jF^dQk7ftMxN_GpDGOsLjYZ+h9NcW; zeDYrz=U)lgB1x2Ajlfx?bwyG*NAi(RO!&cnu{@q6W2BygYnOnB<`<>f`|A(&q*E_cW|4Y|aab``>SxH1@;EygdWX>xh zp8<={i9(KV9dyH0BXBpY93d17DT_mXOh!>7h`U^gEED{}AaQQrI`7_k&$E8qc5Xj* z%av(6c5hDX#al2pk5^GD9D~N=qWid6IB=Y5<#V6D*gSP_Wg}JIUi#dLqCMr*e5B5` zG1$y=$8qXySU<}vmxxBpW5pwUcMYcG!K?8`1n|z_Tv?yPw-Q6`6-&w(9NSOQHR}q7 z@1p3bK30v_-uhl~PYTCd;*q+%*o`cDI@(%a7~`uY;&cN&q!4XwUQRAA+WT6-OQf7> zt(r*Xo+^mTYh@08iZrum$-pM=4)43n17Db2r)a3hfD_dJIc^^Ibmnv=FKI-*OKp=0LO81?bB^p*uVQEA9yJq!EDU-tX8E#>BvqDJPO|k z(Ln1IrgNMk1)D^&Rh$>@)@||&2l5}HK?haDBt^mk>MO}#b=G=n?UYYYzXYV;1_IW& z_g`97@6FgVLe{%9kH(Tc)03Afq)2s}88}Yy0R@U*P}NIPvexr$h`@jEuH>ExKs*8) zK&Hl3*||i+5^12@TRjZY0}3mxYCtjIzXjey~-qPeuHeB{j`bDOaJt_u$7> zp)-Y0PhI4Crt@iLZO_C8E!n5l%FLQ;p9?wj$?-k*$zRlr1G)xW|M(gkV{ z=0(-uQo`K&B>q)8>bhbrCGk9@;JVZt=I*kH;^5o}KE%iBjXAUpk_$fOIuIv7|`n;V@Zh-;Y$j>vY4XzU>S|_IUseK zwhCiHTEPe!nl1NKjPVvxIP@5fff(c@yls@217iy+S>Z9r@SC0Y^{gL9>YA~}R#e}B zx9Aud&{U9i7E%aDEE0p4ym5{EeDR2iDYDn7ABQSS#8l-Ob=Bizvzt9@gKL<5Eud8g z=^Sy}$(oHP28LBin^@F@lt#+dDzP8e!=AZ&J}o9Dw$dBTKVaR?O}_D@P-e(EJAYw* zoI%+(7?ODRAJl#EIOg=rV1$i>F;hU=mYWo)#9fgMh*nYYiUBO$C~$7*$LH-HDt{4z4*n)VpEf|)sVy3j;lP6n!|4zm z*{;~RYcd?AZ->&?`ZX3ScU!KaP!;_yHf#pHnN;bR_+>5hLm-E&<1kvmv^vE@;k%IHsXlhxL*8VXS+4qUn4X+Zds(E`BY5huJZ zHilaL!CwxJF|8Bx9`)qzWeHW_`PV2|m960bbt0K0N)*B0QbM?N27^0-$~smpK;ng%Zkh2xd!UiYRu+n+~r99^Gu z<)6n@(-x7niMmG;MsiTjnDL0GtM6ACwqWw3Ew8Q zyv}SCs)L=(?0rAs_0qtyuU(JA7o^XEmFkgJ|By4Z-(tts4qF_EDbWPtHu?dZ7>9e9t*GoB@rTYeC`_x=o2jS00&>p9z3oR*Y_5=y;3MAtFOa5P}Li;flR{ z9&;5I`Tt0J%cv^5cKv%wE|Bh$?hd6xQt3tzr5ltMY3Y*g?vjx1?h>R^y1P5xVchp~ z?`Q94|MwX07x=K&;yUJ>*EI&`Z=L6HEHRc0NkgQ+TM?L#JFT6KX}6v^Ju8w?07V{jMU7iP@N_TdfwF@ z4$P*D`+0%slaz6W7o1p(hT+C*H*l#$u&6wLi%p7Yb)NEtUqW-kSLdU(BJm?tcyr9eew9tFj|P*+x_I4* z!M;%r!`o#_zAN_*e(9@aA3i5awUD}0KFDyuTEh}F(bPZ+W8OTF>4=lA_
      i{r7% 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
        Ro2BTI71b(1Eomv_LAj!{vb!6Y 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 z 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%0D1e5I@;S&A1x>-D1d$L==k{KjeMgH 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

        v?3}yrW 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�{!;Ag+M= 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 #J3y{BPfG*aUmOrDaNim1VtxiaXnoni!*~;Wu)z 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 literal 0 HcmV?d00001 diff --git a/interface/resources/meshes/mannequin/lambert1_Normal_OpenGL.ktx b/interface/resources/meshes/mannequin/lambert1_Normal_OpenGL.ktx new file mode 100755 index 0000000000000000000000000000000000000000..3ae717c5d708e366650ab13ba5ec93f6d138a127 GIT binary patch literal 1398324 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%0A@;9%P3JB{xDaYWGR)G(d5v*29j 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

        |gFp_JgbS|5=?hUdm&WE0NZOVY?5DTt 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

        vrJ)>8#xiLo3uuq;< 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

        yrlyob<}v7TWO{zS z)oOzRvETIht2`QpuYB^LXYT@bQ;6TOU=)SJ88wD7W>Xb2X zCcdHc(Y80y+uzIKzaPMMKX7ni`>d)5ze5Ci-`Z~9zS~NykMi}vG94z-(<3Qhq=eg# z2fI|?`Rbmoo>@;ps_Zp&5inA?Nu2D}I)dwHqXr=7+ka-W)Zj?8~CGF=Rn z+?axM^@aB^lk9)1==*QI zAmBgj$^&2Dt>wPjwEKsYxtORwG)(WWZd9w;!^75q1Wq)PI>JV^d7_^1^9KN+0R>mR zquIU2VMy;B_-&a?j1COCOapLf5{2QY2W!M_dT=~z9G60SK`98-^Y5=(u=L4dTvB;a zAEyEpMJ#!F(A15%pm}MY%j)*sTUDAvs>6qHxcAxtXZ@M1=1KgI!56Pk6KUn`Lgemh zWH1-!-}TKqKOaCUVz!N?WR4L?!U|RJRD-g7qf>a~C%?;u`#-1NiQ~5vs+0njvO>ju zw%fR%&Z$Ip0XLZhfN%~!U=gWB5f83a3KjAl|L|!dS{-Js0 zuFThV-@mr|o)C3R18N?x+@F7W>%+_JhjLK>HFDtTaAmnl+0scB6M``t8z6hRI)}{v z4wn&v4nTEB|FAV{d6&~)oik*@1J<`M3WhZm^Dff&XWqh*14}qn%tdMroj&S%-U~;b zgqQc%M(Cua`t5(#t;W&k=6G5^Ph0TzO37abiZEn&kaD9tP@m_VFjAZFT#6=|Y?2(P zRmh))?Oij|NPhOQ{xjX`iU0#`(Hj~DTlpt7UlC}tl2hSQxBeCSGt>Vd(T|sx#z>i}%eqFckPV zhP*TdBu!;km6G=xGJj7EG9d@BTCn|H&bA#nIAS^-{3NJ(0{^f4)mwqQ$w~?=T&c?O z`EJB#+o(dY)|T-w_1nXRlX)dFp=%&u{C!N%q3&#*@pms#!KMPn4Gl&?hJhAfpy6=9 z)O6Q|dUeHWfjrVB8%N$SMQ(W^nsV8vcb&cnApM8@DNG}ds?G$gCzg=>e=3UxVTkRS zwz|PKOtNk-Xrx4=Es2(D@;r_96%B)PYFb2qC+Qb9;eQVRKnsbRE%g)m0w9Y5v}l3p z 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≊mg6F_$@W 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

        dr*X_9kKa-sQ;=0T{TEv@9aR4;3F- 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 z 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�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
        A+{0Y|o_Fptiw(s$=uR4c4BwgD~F z1u9w!7e_o&On5|LE26U|ozOIv{IC9x>S}2JxZP1Se@Dun-la6&r0lOkYbz^|nw}RU zUite=mp6vSb`C^FoUQ)vevacX+`d z1fFNG86A#-Klg&X1)jvyiqvX}2kB`K#I#wn^6g3TLW?18oiy&=1risJVj)RlrB3z! z52N0{{<_|J`F7oO!Rx%@Kp^u(X)Nx7^bk@6e!r0{EFklRft|wORxn=^gmO7{lQr#f zU0f`M`}PZ-oYpzYjwOC|EdCjVU+>WQZYnBGldg7(Q#!$Z4fgPqcJp#!!0nRp;Q2w_ zT!BS5){{CG@UPr3>S{x1^VAK?esd>-`HqSf^O=I!y>xsG1NiY0xs+dNVCFS3^G;I4 zx-gfr%VE=9+GOZn4)%*sl$$4DOm*|Hi}SXTgix$vrC={4L_89pYvS>pTm&?h97UtnbdFlJgTnJ~=jBh51N~o4Vss9JmEZQ%PC3XH80>n3T~Fbu zQ3}l&fz4FR%q$)TXV?6YX83Z&fhoRp)f9-_63q>)5X1Yai%{{kEh^xmEe3) z%6U$baJ9zJFhpT5xUo`a3CK4TxM0*;`o;_Hzl4Dn(^pqm{ghlMR@spo+}ldwm*Kqd z*jyW~&l&djbsj~~2(p?a6KYe;VN%`kt`D@F_@<1QP+xF*0LULL1#o2$PeR@Fj9|a4gaU&`$vBN1nETp zH#Ng{`;c``0FG7JvHF&ccA}>bis(jI4g0|?8GVH zeGz!XN~__tjpREjNx~(TxgkYG>F68|XLJ^Y)9{8RC-Q1=$IiJ9=8pf~E);XDh8N_B zUUCH3yQ^3jrSu+gZck1Mc)tY6Qa;#o3fv^n-|^&X$j`SC1@8j;VsIY@oMbVqmIS=k z$Iy~W-JyQz?0zZmzY9bGJjSHVG>pot2J;&vw2kK~J<~QN@Ti0$vXwLHl~iNRlS~Mf z_0t493*;6xyN5{7L)&4xg6q#SXe7zu^8OADT|x4Izo9lS{M-*=BYtKy=Yy|ah`X-O zAHDhf&^7mK%OXdqBg;iZ0os&<*7IsMX9f2ZySx;U+{z2?6p~o8P~b@yP+0KSLcyqa zY-CA2&-u06LL@xkPrJ`?5yO8g_@SZDhLuj+^Rz=_t0*4w_KSbLV(^aCK*&2Ae7_tB ziea#gK{ua$_#?qVTUzgKk(Oz~1!;GXn0Sk7RL=4R@PEhHiIBD5E&DSGo} z(wjGvXnfmO!QPLn8;drT{kjPkQCNTL<(!3yyRwG3n|97DtT3kZ&kvi**_B1k|KjqJ z7RGp@G38a?QAbhp{PL%_LKtJB)ip|%;Mwp<*-%jRIlZ}G8q%+nlR79G8YzVA<>GaL z`T1!i9x33o!A_?RohC0l)lL#>NCmhAm`tGgO4$zd5z+OnZhL9O<-w7C9bhgSK*Oj@ zufZF~tvt%$QEN|6%}A)rk4pXZprVE%U=iS$8r&oX)8(EB~iS z*2$?__v()ios;FX(FddFCTF>fJ)4x>8`gjvR?UT%yaai>JUhQ-%1=d$jf53FXe=U={k?w55=a(H4F zqOYMbN@@)plUA*J_u?=0Q_oq52f1xOKfP=*bSYL?R1qW*>P5J%d|UB?gXaTJ@1*dS z)~U~Cp>}<%b+jR1snr}V_GyAV)!O2~J;lL2R&)5uj?`6o4!tMLNsUHn?9r7|H7wOy((4t@2YQ~Bdo+F14^~yY z81c>P`VYmZr5vilBT{B~0sq2_h$Kq8aj`CE*~Sh2=UW6Tow+ZMjCgru1W6=&Vc?G` z9i}fHrgu|>Wv|=Gw^o^NkN<)i4|o?`53Ew#@Pm0DeE;=0u&?_6*m~2jChkA%cL)&^ z5DfuWPy-AIC{|H%*8~G*P!w_BTHHYhd-j>h%w)1BkPOJKMZ{ec6;aVvR9sMN5s@N6 ztJYer+G?xTYOT-pOaIR~FV1<{UX`nc$$Yo_{@jQM*mopPpT~xQ zw(g@70iQ;~I5@=x3w~a*;O7DYPpOF@U=gjFc>hrt(0kXye#}1Fh;N%S^(W8!ZhsNT zD_2V*%krk5B(#7M$%jeodgGw2M*&|L<|M<2HXG{q0O}8Z|AKhFKw^?r+Ug(lyQ#yf z9yD)0%NS%6W`#~T+d`qq-Cg{IWj4*W`EAv`4@s=PRNiBd8Z}+7`z(Jo+CH7h2LL~wEkf9c6^~DWFMTzGL^}p$ zu|{PZ@_{~Txf0~ZAP#{Ctr1V#-7)<%*q+Nn8~$^6!B^k~kdd>?d+o7MvXJ+LvS^QP(4+sv)UDUGcs^`(QS$ z8QhiscxFsSo$GRJWM2qZLlD$n34fiw!RMr^>Lj5qp2!+BSZXgY9Xy#o{iF_OLc3kD z7Ndf*H$Ucw%_f!9#cZ%{cjOrZPl=wN)@xpL%?dlXzDPB%g`L#GHemi0y^4#Kq_mmv zF%ghX-907cclIlbV&wYZ()G`DSiNhC=aw={T3k4KVbn%SGv@Bhs&R#mJd=KfNxy=^ zLd)*{IYX$j-AVSnlk7`kNgWHe3DWHHZyxx3+s+~J`I1DwiPmdob_n|2d;mV*cuR-` z)coj|gqh#~ejFn}D7HcNKYlcx0t>xi$+rBYb~f-+;IJ@;6`Dxpd+?yasUAAa|4GmM z-w_}&Dn3jc z@MlARx89Wn3rWS5oFr#S66g;QNDxNg97@O!5dgiUm;rMZr%vKs2N7Bihg;8pJ0OWD zfCKUs5f8**l}C3(y}W-D+>^MA1b{CxgdlkmF#ii24vtmU??ULz3!!eF4aN7^Q~3Go zb0d=>pg$LSK*(Nm(|25u4+HWHAP2NJwU`Y-!s%|#F^q8cr8515?WK?P1%b!yuJATA zVq?>~!DB^2+g8cG>N9QM5t_<6QQ)9Cz=sa8UU?H}WJ%o6 zi6T9IV%1NR9>vgVwoo|7H_3!o$m_QqZ#JPDUS1iCBvP15VyuQmM$EiA#WPkzp_3+a zDarI&qAh#2dGa`&n(yV5emdv;Dr#?@K#@mkw#WK94NgintoA%Jqm96zK5;C8xTwJU z0I2_fuOmrhOH6r&ElR@{CD4n5d=zueoGH~MZBCtbTgsSQ%p_2+=3g4Ll*AVe;qyyO zMgPtJLY+D&{*T8A{dX_g{X^LBW%;z4^=hyl&Z|y@lDYQ2`)HygN`k~j?_AQsN$V(Y z+OBAletfsVrzqbaf?TC%sxmjNW!eVRJ4ydB(K7XCOQvk6v*~$&PWHGlJ5xWjP{DfK zYyL(`U^NiL1Vmc!LyK9z$BxorvePHV-1RC{y!(P1_9NyY=C2eFLAzWq2GCbv2r+8piAJ z(#tDamC}qN(`IHQvTNsiOWm6DQxi1IJ zGirinH?Pb{HK+*o_`H9WI_HQuV5}Fdy9iy{}McQm+Spwach*<{)GN zSBE9BlJ8F|w#qIq7hhhE>eN~mv}@VPa_QU=K>w#xXLC(~TbN3P$=+?UcT?EogqRS~ zC_|q2?tJgv$rM&79dIE?*q=Ac5Ff1XrO23!(2!}t1m4IqL&5{S}qId zJ^pX~r?AkOSE_|YraZTP`j8IYQuYtA`Lhi@FTK>Yb~os=Kwh>9KlwKB-0J{$KbsPO z=nAe3O7|N?5?Ubv4l{byRYUeE1Gq=RfR|&H{?jtxY>N+t9=h%fY`tt!G^RX1krGOx zPr{{8sokOw9BfMCmbri4BET1uSeu^r90u=`2tFLCN8jGv{M*t%P!B|4Udd#}2K&ba zyMI1Q5Lu+2wrhe!_l80@EM7HS(xfl&K0tWyGwIQV$MzpCYqH>j`2xQ@0fiz{O=Bh> zGb&3L4d1p1Es1t(s zYdi$*0N!;%CIBI|5`NesCW6F+dDKp^H+X-?1D=m+cT18!+>^i;Q4!`6Nd@`$tG$2! z`HvO{{SXD0XKe7CM90OD>I=uBH_nO8$oP+^r3UpM+-Ek7eZU&~fTdNF0TMDmLaQQt zjt#ND))TQCZihefqjK&o8u4=JNV9B(S3(+lE|C&p)R=Y;(dQqiOSbF`*rk|n={40i z+A>0{F3BOfBsXc^NjRR*$eZrf_lXf~Q;gaWv;B+vx?I;3sQBRN%%bRSD!O~0L9IQM z6mE`j=7RcvVucP>oH_ks$a!PlQ`^m_wwpRM^X2_9Pp%XeeADjpO*@A|)7#dqf40>i zn=s?zgc%^O7RZyqo`eM_v*STO4|zCX3cuc*dCf52{rv{}W$CClqLHN{9a^uQUDe)W zQ_r~h(~M)G6y_=~ca)dYTI+cKm|)=VgoCL%vAH08ebk<;n?R2$wg^NvATCi)EhDw2 z+6dsE$HosX9=~lEiEoTE)WIf;{3y?7zr&kEW9ySxt=-$R{erIL-kD3GYtEKtB&OA- zDFRR8pq`rQIE+9-Vkzu+;iyJ%4~u8mVI;QnXzjt~8uvWHVc69L3&7WRF4zykd{|5= zNM64yIT8xZ@AdY--eb*)98w$nfuc~PU-Gt7g=Xx4&$s(VH&bY&F&9o^^or_lAHo;F z^A7k^5QX)|U5Dpia6i8(>jLry> zJRd6Wb-==B0SgFK3)Jr^(T~Ja1bx;Ey!4t*;fc)bct8-O+my&G83^(h!9M|hbMQ%f<+Sr|-U|cw(a9ba-i_= z_z-yC!3>PpvSze+&S()*Son8SLdWsm6B^- z#a3DI<52++M4~~1EF}}2mOSR2i-6yesQ=Vk7dc<(vxXsg(3`Uqx@XS7lGXL*{IL_# z-`@7H<>Yj%slPdO+uF`uTiyvoWjRNsXXMWZStSlf+i_-INk_LW?>e4;ILqquA?) zHE>8YaH_OlLK>x6yXD%SmRGd;-o9gf?vK}@@DE-4pAFNYi$3k|J9%ZPV&KB}RbNck zsa&>~!)CuVWq$iAacB8XlPqh)hx=0fuKd@7tdo@%n=)X2aB)nuURnbu?sjk~)uneS zV{i3mWY|ALPIfaSzVQOx&x32td3D(yczhF`UImj(2wIbx>1uj@Ex1J4G~6}z$A^U~ z>;CdYbBPXn>Fr2bzpOOtkLVx&i2jj6hn?mYa*rBiWKKV04u{lK)pJ>;1y))7MsdQ% zcnaIYMc|=KS&j(cgdgiv8>b6b|G20;=fC|wg{GU6cARR~=S} z9nUFz@@fFct71z4uM?}9ny|{GC$vJ~&l4Ebcb1Af=WYV?W_%)BVodu0=6@do3bpKY{zH{%^btcN-wsl zE%s9;yNke_Y(E+n>hO0#9TSlO?)u5V!Ftsu(IDwje=Q0LJUnw z@k>ww2e33a(j*_1%MV`)c>EzSUx3hxMFUqDHmv~uW(fr$Ch7F%n(58EbZGebTlFhr zZ5nYREl#WhdMqKuh|S8mX?iygk)Z*P$C^K3YVoxF#abNVK@h|yFbly6@!%5}3?qUt zy$)~MFn#=R9|G-x*Io3Eps=7;znz;CDbIxw|pLkn4bj zCC%N%K)=)W=Pg>AeEi2x_kP5sy#0?84?nhT{`|eObD30EApPij*WpWMP8B0mcv_+Q z=yyLf`<&6`Ic7xPo>6Z`!~90RE<0D8E*~7XKVSfpdBFT{&43TqbxFk16@8twY+m0Z z5i3jd*)?5vq6U0Xn4R>?e0*IXy{W3BW6bz@6XgxpEz}v`Bul zrJwip+l9)e`a8*KewsKV^d~dgwAPhx2f15~OBbIQ2Bj^<$08_=OCnu3-DJ|9J^gi}0r1pd#2Xgs)T8hN zcgu6#?_b0rpf!@yr5oF}f#(%QSOO#V_du=U9neeEN&M=>C0l=c(*L(7V=0v`0_jce zyCcilbB6eIOplKJSoYj>$*AVkH~7@I1AeP}UzP7VWv^;JPoVzn^bYSawDPAZhj#(q zl39Q_V5B5hmfTmC+}G`2;6iMj+>n-DHYkn4;Hjy(CY3EW@ zU=Hs#Q<(p$itwq%LhNc$?=^cXfl*?_5fEp`zRe9h_jdJvdQ_Hx$nKj1d2IyuCsw?p zPC{TFLp%cZ34tC+y7pv09a^8UW7(?51O^KhB}Oa)d`2WrASSec#?1)q^7u8a@vC+d zn4ne2f#U#gc>YyWF}TBu7qJnWZ2X9yCjWK;aCfEMb<>QR_eH0MjB5h>H6)nFSk#}t z^I$rAC@m7=!IZ$I=()KI>fa<%a;E>7_Rw%fO0XgbR)j{*t#08~x2V%&v)^?|dv%Jx zD-SOkT4K-~`E%Oue}w4sivRNkYmV}~D|j3#?`}ZSt$_K2Y#-#)0C8ztx&mxwbf|d2 zWATE=ghoQJB?Q|jTl2kN(0QO22?1moostbfLwtL*8b~0#5H*q73PDM`KEqlKQFkJV zfz6qr*LEQ3DWpcW#lP)WIW0?$()V0Zkyv0CGQ2d(ng3y5(T9j)0(HR1g-(gF;PU_U zK~7kh!j_OY-(S2_664lYIO`<({D8Ry;>k-$obSiLVa(U7-XxBmC=Ar8tA*3X#95BS z51)5zR^Q8Jb^C|@Z7*RuRo1(}!A1<~OyByK!;Vn+%3HhFc7&PapI<4oA5R*#Fil6F zPw+NvfnfWt<8pd)=-U+o*^n-E#V<>CgPchljFgDERDL1%5MLlAFjB1N!-;fm@2lC4 zSPu%L)2G$7<W$y@O#9zQJP$te?*CZ0_woFRXO|&bLQs@2FU6^ASo-#IU z1y#41jvQ`Xb*?ynPV~Lwx4$jPib>bsIWp3cKU#ITbj*;QnSajw@eki08GIr0`KISA zi(+N&(&f29l%^93-}AWAs#sRAcG;WZw1)rJUigf&OnQDe;Nue-UTgUv$noF(-(03w z!*dJke;j69f1ob$*QN%8a^v(ujKj91wHtCD9lY#NHA(-93@mbL{yq2kY0)RZ&v1t9 zPS&f%2^-fWU=;dz$}XSg{km*xgU`Wn-n42$gGXqChdwWUW%Z@iy?Xo?|KA=C>u*Fa zt?j+EwwF-*1&I6tM6|Z>;gG_ILkP@o2pOIh>-sqAh|`teN?p_%C9aUb$@ z+N4|Hi%X(S0|CgLQdw&H{ZZ3jrx>wmkbK=>DvOTUr<;qBQevZ@SQ_jhfL*5~!SOS;RG7HZZ7UEWzWj8<>F zTR-v_KZ9C&eo%(-odHv1fBv^BnO0ujv?hK@5U3v#h8=0%I=y+<^yXb8S~V_xLla`t z#3$B?6KS2Ax$K=YoDJh%VP;npisf-n;M)e@VsYd)!U)`|TX zh{E2bE_hgKqcp=04OkU>TBqt}&rdF=u9XtF)EO`n2}Pm&gbyF|bn<)*e@wH}Y@iV3m!^E-OJQO1NYWD?D{rU7Q2` zN-*20%q-}ZR>Vl2) zm?F9I`jDhM$&~6FGWYf#yCLh^0h^_HABj4{p@5l21L{vjxAgx`uW@z$6ZAaKoRiGa zcbh9n4e{hgijVL9{P{Q7^Doztn(iSAs%hDQRXWb)sVnmg=r7~!syvbH~_d9h!Mi zEq&reZyCHq-~SeLu_y~hn6CmCS(SOC6b*AVG@iBU2ea=n zopSKtoVlBngqFhs`*{)vXPkk_fS-gg0-+IW8#wpx!CDe?HJ)g%Oxm}&zK134xkam6 zZq|o2_TTxXcKvU?D@e0kEWU>&rV|N;?w>oCg7amrg}KHIGo(2$aVYm9yvD@*^v2#}BiT zC{=SQs3pmSrP=>T8xTX{d?c(NS8tL7z2AbHByNj~fhA6ZdidHq+vc_Y*Pqr&^ol7y z#W9h`-S>8e7f+}L2VE^oqjYNjMrYXf+#>8+5dgwb=&-3-={}5Ed;0Z|bAM^TJrL%@ z@miTj4&(*&f8J~kLyJi~@qz=s$OiL07osB!>XJEc{TII=Fn(xw3M-sYw}_Fh5-x$V zU}Sp$Vv|)LY*Jbq2{f>g>j8LGlF=u})&D`_JBJwP2*#$F%7mWY(L!kh0utsAG3awB zFKLU{O!vLZ0*C3cUExUPc9;P3ehLFS6(dr;gSRn+?7@IHEN|$)`XBPY`hT_sPwQHa z-3|-VtH|_Ix}pk;V(g0xu`e!y`Tr?(_!*%B!&EAV2D(kJto`;BBgade5g>t7e6cV}*`0X5~d4x)61U&=g!<7t|^;t_^HR=ZEg2 zl&)A&XhXk}O&gz;yk4=BR=p8twnuR7YR5~ZTK^Mfc|sbU0Q7$jKF1Nj zC9#x~edfS265q)&z(Xx2#nNTNw=LZRp1)|OL0IwCi?y?O^HQ~2c>;(B3F^1@8SZLY z>moCm@KjcS2Zbe%xl}y!JA?Z5up_V4M*w#hDC96D*8y=IkO@aBf{@ZyBYN)D>d&ud zn{iLC(_@oH6{^Ave}9|aMWVYnTOXIqrr&ZrCRUx+U!fvm?%LGo;O!8enl| z+8v71L(6u;kRfNhb3t&M-KoCum1{$^-Jsle?{ic38Cn&%w5Zr;5~=pj$!=TyBZW(y z1J{B)3I>i$frS=LUTt_96|P0sM}!NwYv&2A zgn~JYz?}VGo{Rhb%)kOi_N2sJZvJvD&k}%G4Efd9&IjE*Z@{+axlTy`BC&Q>efhF| z1jgZVd1A9sR()Ao62FGbUqP>A>O^$*uSZ9W89%_3>pD8T>b&!?G&lF_6L-&);F#$5 z$zOjilZE(pyr2Ecwt|)^^#yCLSfmN-_}3Fw7&A)VW!t9YSaOyw8pzwZ$)IU^){`8W zP_jB9qr@w_hF11=PUCa$lt|z2+c8&JY*zHHju>HCY~5n<-Fs}5#+El{uI=ZSUAB$S zzrTASJkz2GPxe9E%ADHdxNsFSio~upCi+iA7+f*p`1m0gEm+gWQPgDtYD=TfvukAHMi_%!X!8H*MpLYKy!&?p0S{u|3CjI}ziH8j8m)Gwr`|YLGW3DVaSEe!H|EjY;zmt&Y z3UOgp#wl8S*# zbKd^2-1km0mAClNI&i{BzdWSDBd|fA^RPwgij|Vs!SJQY6U7u7pO^GoDA0E#&aZ`?a{On&|0gm3uJjC8MCEuN zs_{N>ki_BEaeOCi!uVf|A2Q&bPRUEp3Ym&n6=}BnPklcEUtRdHdducLUdUadmoP#?aUal=2>Ul#G>5D z9j~usU$SQ3N=1Ug*Wrr6OM?AlY(~6#!9*%_rcUY^wlZe71n8}kj@Joosy!K%C$0=B z#6Exh(1qh>ckDOXi)vltBaj6_=?M(i-K#AH41DZhtZbBZPYB*4hze`w1){67dd` z6yb@7A79fw209aj1;^9cV86xV2Lk_Y2to<^=#=-ShoC`x(K;PnSpo`Q4{(buSw-*G)6L_&;Z{ylzpL@JMxfK3g*PiVSO>{Pr*PjtH zI<0gymnnfw>f9}^CSN;=`Zp%IO1te+&kJpj6Ax1=i|5hX;w)_@5zK3cd=2vM{rZha zUZL#U%kzhZ1sVOoX=1MO`HRAD_Zq|K~hy)~Nx_Y;^1Y=6|tS zt16kRD(U-_h(?@t&o>Gw>XSE^CTn|DZFaa_N(h;}lNl*CKQ z$MF!eDetkoti2oP+Q&(TjjN+H(Wj*aDO?g|nxuIl5T$epkWc%il;-W%=YA8U>ad)( zSAG+xgB%cvBf?B#&%7dpo^=F9ixIzp5>i>oPJ6&jAhn6LVlzLO#L`bD`7aZK-=jc6 zuyr`HzGvbUkxrY`QCHmQ>r^zo93`FSp;N<`oEykV)?E1Gk5bQ4TJuYz^HGFDm%*AY zy0;{sR6OW=l?8b?3r3XtqibTxFF$J+dkVN@2Er`%gdm;jt^i>sBD6aAjI<{lagw_o zCy^a6i6u3Mw|fg2tRq(PGUudLv+8(yhIhR~v1-@U8he!F1lxGnVE;Xr`@ zj2j$)*fb5E9~*pKz?W|3g-P7JnA^uC8Xyh9sKBHvT zf~=FV3Vu;q%7)a~ z)#C>InUU?XYPvGM>B=}uYW;W~ekCxiQd*B+wH(o@=S&pej%W0m7dL-11< ze2l`q_oRC7NhCGEzI!&wo;&l-;+c1NdJTv@zFAtS?yG(O_2)O+auPDmcDb5pOubj3 zHWuhGuvfU%WLFyVBKQ6gLnZw#(8_h6h`__Aurz2Z)%)zy=ul&Cmx^m zbJmW3oC@#yc5i#95%WrSEM0k0mv@SuXQCx~&H11k_ZBR(DCT1Aeb<~fU^6afFZi`f zhYrS$dZ?U~h8(zJ;M6Q*!Lc#dV-5$?sQnO}UR#j}SMdf|4VBV#{1m=h! z7*>QS|7oP5_t^=(LVkDKoJfZeoB05m&GP~Ms)!2U5}H-vi#pgz1iC8ZM2|P3%j@o= z&I`*Y(Ta`hieuAsN_z4dH^1D%7AC`yjsjozegx=0Mg=8YF5Ti0*eDuWLSh}ANvlHB zNNf%*>#kc0{C`3!1fj8)i>JTM=u6^sNdz1pNvVd_r0-G!o-T}}u(*Xez@M~COyZOv zoVP2vP`%)7^3-huC|p_=E?vG;o5QgX$HH|K8n|L_*!80(e8o4Dmdu$%VwKHFN!}d0 zEYJSelwA`@jOi$-WT#bUU)zgb+lx|IMeOA#5gr!hiDeU_A08vIp304mSfp(I7|{z& zB|~D7P+FxR-MmRz$yCRdlA20^uw&Jgow8A%y1vKajA)@{G=Nmo`Kh^?8deUt8KrtkkXr4dUsi2-VuwK5LF%GiYAwTP2^-ttg3k@0zsYxW`Vdh0**EJva0&L>NKGVY~==v zeJG8$Z`IcNE&}rgd<+q(zB}U4kN>XxOs!biaQ&L zu0e(9)_z~Vw=U6PnQi^kW11}F>A8&5_ce`G3lL=eXQPJc`~auBNOS=Ua&0a)DIe|l z{>9cK1X|(E;lmPA`AD?3>ZtoZ#Pw#2?26bm7h^Lo5*P!SooorIH3!5m3J?=GMTz-P zB!%B@O8T`f0PGt$6f7_mF!r}kLq^jYT-{;#vc-yj&h4A~iVgmMxy~Ai0n3Y-er)zf z0!s;rtc{T9^K~=7S$%2~i5?v^C#Z29iTcD^b|tI_{z*<8$Rj#f8!{mzl)~V-)2dT@ zid2>ZE#BY$L}E;5R?0GwE}44=afv;QnEWCA_n(jT>bi`#qkQ)n@!EdWy^wB&+8(zr-+0RkgL?=?r_BG>8!(C3h zk5&bFr4n6|8hqg&@WKlZ3AA`3^1NNVv*6#CKQ^uVl2-Lz&D|qfT)4hBVe4$dpTv3^ zmq>T_r=%>Q?N$$^Lwg-f*)N+JP4%nK-+zKBtUIRIhU8lcQm6N1{)W=3$b>@IDW`r@ z<@7zA>o;lDqo}~ys2Tbs} zWELcVTpP0}f`B1}9i~%vHdI#02T=Gb&s3smzgaFJmrQFrMq?EZE53aG*(eXrI2Ot+ z26>!L9w(&;|3f$XL+EVxd@rE{TA9$d+F@J?_*-#1B_cyX=zly}+z|kXwdUN_;}SMB zZX)r-I4+DBY+Jqe2)$_`h1E^T+uImiq0sv8n+%bRy8z;-?m=zj%NjnJNZZJ+I$$wsOj*OD9)ub6X_$6lJV;4y_2 z&djV$&&w+sb0Or=wF4BkXC{Bx;Au8_>>~ey@&2S{zYlUiQ1964G4hq)@Yj^;T#}8I z%#;;K>N^wbJ8A6m$RCDOyrFYm88S?C8ih3>WZ-F~oyh6`OHTh$ZvG!d16_|pz~uq` zE+3XK5QW~0yB6Jh0o=PFrcPqbe{m@xQ@oi%quaK*gyH5qqxz6hy^q2coU-elmfJNy zNL#z4_rTxZ!@@@N@&@mNrz}?R_Y?7fzMyW(;$0#y@coHrU=I?#EnK;H9N;0a5hf(k zp6`2}*YCVPfrWTNjKH8*O>C~2p14bg$pa^^c-ExDuf}GC#*C%#ImL~u%9;#{dp*vQ zsWjmIM0x`~u0}k!pbG~)mH0&=2)W5~)&tL34}cCC;@3!uv!_@=Kjhw5vX}@u-$Ez9 zuS+AbgH21R<^l^grsLV*^}z&s%}Yov=|^FH1C^zNa|w(u5;=Gldv5Q7*W!iUB)Ym` zlm8^dpt`(#W5S9$0{5=r@Y!LO44?n@|JdTu^ZDZ@*%hrTt6Pz35*^<+{X#gRm%H_U zE5Kb8^l7w??|>Js$8Ye?6>za7HJ{ z2Mk$XC$?sZ#cNvQ*OJ(C!6bfiJ);@0ZSmBB{yOz~WWnS1ax~vNVnZ|Fh#@SJ%L_MZ zm~Vpvk3FPN*|Bwxrzxxj?+brFRXdu}{5zrWa@`LlSy#z5SIHoqx@iA4DEYWfwY`TN zRlbhIkkL}8Q@Ur3^rd{z<|m|PmyXFpJa#R63EjX~G9(%-UEDGyW!Kj3kte0DQWD$0 zr>P#2GV%qk=I!=dbWYXL-RnbU7G}@iXNO>+Bjf5MrnlR!$(bbdPxIbmQMO#R|Nh~y zBRl&0n4Uv+S`|9)CObiBRz3T2?AoP)R>J%`@UJ&6hk7(8*fSJ1>&WS)TkkS-MxEIE z@zq}p+Li$`T0HOWmC;ubMFkA>pyCu3v^&$+wT+?<5L50z`fVA}ub2APxjMGhUqcdU1XPiT9H@8A&*$*_-$1$&S|~ zo+u$xcub-E+L4}F8^M9K=P5K}f_HI(!luaiPydfO z*%BU?Lo2J!o)7x=A^1LV7#Ok2tCMz%6L;&do85&I(r%k`LXd4VQchttQ=N3%B@5<( zHFT-J1O1E035!T&WyJoT{^J2JBc)$FAJ6wlh586VJ^{^fuqBkLvNp2&(072d!>@~r zF)F+dUHuSsgv8c*KpD5CPW5~H-kkndNUfw+oLCD}xYRTCS(Mu!3njvcNg@3R=6{fP zoX(Wg5vWh&dT!5p;2)AW*pZa-;Lenfb@NH=c9djW!&sYU)+52JM?X=hJuiOBt!vpmrx1AiA8VvM7umJc`aa*g2TMqP(0ujTGrxg=oLPvjl zjl}0iK;CV1v8vzw7T@0MB<2~OW{*ub$l1wI_?9dkel*>qX@kpH0C6B!<4X%J|6y6% z+mR)ka@&3(KJ?#4tq}Hg7A;4nzuhcS>~VH=DJc1BaSaQ1Ymbi6RQE zV?wsyNVh37zdp6$w zjBm>h2)|K2VXsk%l(*)v#??{GIPT6jODN?A^PP*z)IFJpqyMbge~(hVhjZ>r()Xq1 ztT@qhuStiGllBaiG7e4JCs=`ioMQ;#2_$y(e(f36>S66hnKXPuLF%2_|9G_3{m zx&VO!JnEL7woa-RGL)9@NJiqqnJ>cz=T8YsrtqGq#-$x6v@(_u^2!mCxMSbA^>wg0 ze~P&{W-3GCi6)14BxBL06+TG|2`97&0ZUjgF6$Y|f)PJKe3rd4F1j-=T8A!}L58ioV$DBgGF`P4QJUg}{y)9%w&h&< z>V5o%i8|FLtF(7nhpFJAh`o4R9}0DK`py5P(x&*>*e{0kr!`sDMM?85mQ7^PRb$Xq z9s2m9$ozbivw&m0J;nY5rIE9cg;!3{xu*;n)AnT0s;o%cn8{h&u#e~dNi2K}_B!Ue z0K{GQg%057anA<^<%?_A#sGc@zZP(m=**5_K)@lf=S>4w@7-;Y{Sb8HO3)1oE%fD7 zKWVk1bJ4m46!5Jfp(8-3SGm_2SKWFh4+zqsUnZ}LUakQ8^+=%4*962brQQ4!fn-rY zq&4rKmI42?_>)*ilt)JMX1#jGja@!BE)wW!FT}yHbZErPx3{O#1jdgy_v3I)1#_m* zVvsk^FOhh&MMnJ7FA37r1khiIhyXE>=@}i&9R8)3R&( zGOrnqlWLlixN+5C3)Tl04C;s^ac{19{*VL`7sGn782Ii5T!w`J{nGBGtC}e-JR~@P zAEiU*{&V-Mk8cT_&*CPBAeI8(`_E@(T_o@no<|%j(yED<(Bc((u>VI&cou`=(iSvf z^G2{wk}&KrlMIdvslM4p;nH^b>MpqnznMPw--mtO`Mz}}$u?!y>p{7Gg9)roAR>hx zBvx4)-9t?R{wj#;U~6TQmUxb7XAxS6f*=YevH0bO&JQ~T-ZzMYme}O;Zv}o@G!nee zJUY526>sXRa`aU>NNn{eq|J~;p~a^w=5X#1xRZq-0TBl5w{?N`^Q+yQ43MXrb7|EL zdj3-i4ZXN zga#u#$!4p3*VyaR&(;{Q-HTI>6uT@r2M$L?)rQa->C{5=krTxkr^rAh8K~D3Op|8) zR87ddk|D1Gh|+vt?=kAMyi)del}lB&P=}@4nXHw~bS3L|G}azjGd))0gKF{K^y0dUWuccAwKa#n>n7 zC&q5DQmLM?HJ-C*EjcKS9F(cUlG+3MJ2@myup*#P*rHhyS6!>?wy1Y(KDEZzRlZ_Z zC?vh>qOmbQ!&DPezM`%Et$%wdjSmY{$XG&4>cBzk0>VXrC&;Xifb^>P6?B5Sj>Nfb zw0KCORX*?h-~!Qdw||~5h$rNJ0jYj+kf#nKtU6Ai^u_rRFTnmkCB%a-kPsR}+Ydi~t5M@Y?(c&_ifQmfK`!s|J+Uz1n`ExXsX)u5VUv~hr*gvAr3 zK!`P;bMSb~X*s2h3(=>Bgp-*L&OU0EfW+Z=X1>_lpdKCidz3DUzyjDpPW*VgMrn7Q zs{aV~L1GF<49c*$kf0clZw@15jYOx4i!B(|H;clfyG}@5u?Cg+>e0umK%OffV)275 zcm@9J7dsx2V4v?~1f+sj^m^5iw}ckrK^_i>QjOZQV9%2NgjT{60Kc_**nyoP9l?aw zgA#CguwD^$@Yp`05;($!`~o5^*yrKLp++g_e}zy9Y|t=| z^G^7h2#hI7hPe_wik>N!Z2^8|w%9KOp)+?iuAcz>G;y$p2TN>M&g#85tM@vAg>bnr z$Z1H17lrH;0$ztGSrB1RUZr!~{s<-nC_W9!;B|RnNGXMPcWsoqHtJRD&Zk86Q4qM9 zE#wdqoA&yy8Hp53YRx6$L>k7GiAMonoxmYB1hK^=R?)n_G6p8JB1!=A7B&A|7~StC zL1L@+a66hNm8kpwCK$kkQs^e1+@zJ;%<`<~rT3NrzZx4#u9X-tMaJ|x2-4*-u(^2b zGh=qa1@o}J!s7hEr%mUo9-H&~d^{O~Fs6)RdS-9J0utpt%qgBM)ome46&+rP4n2`R zVBwA9h3O}zBmd4}NYrco`I}=HeRc`t@%Qw1q}o%GQc}`fw&n5Fo}WujTFLRLkmu$H z%oglpQ-(dZ1aFA`r)tN$vdx}9wEbRkhSEfO`NaNgDU}a#G58~fLMwi?zfROy6eoP4 zwgD0yy1Bk%T1co-qh(2-c|jB!G&6YM^?I{vVTi|1b@e*+G$Zq1$}w|ZR$n_S`7?>R z8U|i%kl1AY$*vCN8A`Qf&7bP2UHY7@64o&IgekpaBBC-*rLYAt9gLU6kj1J&sDOne zT98>4=$mHHE*N`t@}v(SA7{zS11C(%ImyFs$E)1>)J3odsqjeSZfjph;_y&rJtxJO z7l>?&N6Ja8YEWj1kJPGl9iMq;@eH>Y4g-2t)ya4!J zUi^y=IwytQX9YW+#OfQOs~VFW>p8TLLko2%yZlVb$7a21LR@HcN)(CPBw=s_Ltv~h zz|8^rO%V|iX~`PLEglDWb$l2}fhG2Q+j&4N0Q%XutxXFo%Bz;EmP0Re=#a1Ec*PGz zS%Wr=_uBAEho<+f|McAnqkM^Y=yuT{9Y$@wvS4MiO?9<~XKj>F*sg#Ho=A#uec#L$ zugn%5s(aV|bK7?gC8wy}`^cX{(RWuO$nLHOhW~FYM<1 z`N19}R<#VNC=mgFEsU_>|N5U92Y}u^k_&SUnJI95O3iS<_jkZ^9OeQedgFZ14GN=L zZI4^0TJX79j}yLpOyDUro9~bqR3_VlQ-_|r{X!B(pu;x*ylju(p#S_?6s%Kq&UN$8 zfj^&tCDwv|VE*UnFnCFablw%S=DQ1HPIQFo@Z`*x!Ywg+#f4EAGr63^1GXhQhNKwf zVhP=eRJik6Kwb^L8FSU_RB1QkbT z7Tfc^Ex_MQV-Z!KbKCy1W{1W_xh_Of=%t33D1cF(#N9G z9F9)q;-o$9YA(q-^2YnfdkcZ5u!2b#Dc{1n)*9X>)#3<EGh2;vB% z$7@ktnWH+YbV!j3(=6h6_QQ?>%0%NqAQ?0`i^ z{N}^H+BaJF{uuD7l@)`e_dD&N9}uO~a*DD*{Xg#ocyaL-SVU?fYA;kJ+DWVeN}C5u z%>`dnQsduSbeQMnGZ}50%?j4+_KUM#ky>*tOxB4_ifQ}H-1#?Tolpo1X%=WF z;0r}MYK8i(CBP38N#Y@42_f-(iz;eYOpN_Dg?UbN#a>LZfjrRn_HNMMOP?9)4YI&l z=L2T|{~8o&fw_9sD^6L1xd8aj4Z(=SD2Eq>z+YY?(W-r^0aG$<=odg=w+rk~6a6HK zT6uf_m%IV5{<{l11V-$2nO5rn`z1J%1;vw!ZCOvR@W+7toY*2j3|Wpo;50~Kd`GMQ zl*&rYwff%c=l-GawA)f?r;JuX0xr_qLu-+kV5YoP5BMx$f1e@My`|MK*REGxS{@`$ z7Q213-fXTl!+JT*dWs-1CVBtT3G=OL-y1EH*8D_aJZb*?8FmVLywRtk)fc>fL`<#3 zpfFkXO*!xri3ePwH%k0SY{d`KTPd4J)YTLn8pburm1f73$m3u>U{b}5O_65rO0##7 z+Qg7BQ%IOr{;|R5Y>Ur-e0)M+mTz}e+(9;h`3WNUh(S5ya%#U$2=HAeF%9WVM!33m zl)9F}d8GwuRdPZuG>3H$_(b8)I$5_mleDr8uSb5nMMLF4Y@vhQ;?_MP46Mxrvba0jWmUa_2N41j&>VK8 znUIJ7TvqR!N???bQ^#6l%w!3(unSTW>#3QK>{@EdBpU6=w^AJ{Tm0kLC4TY~7y`NQjnAV6B z=-w+}{}~`k0eQ>Ln8->?FyJML7ljB-vetQkrvUErVh^^&s=b{5Ui9^Akk@4f>u=?o zOF`FnuF>KU3w*+~I=bUpJ@A(^0^r}#=Ol-3N(qmru%Nk2(1iYujsMku3Uwu#_Zv^^ z{tr=S0@cLXzWqszn1Eu4sY1~j!hoP+aih4k2_`y&pg`54Xaz+JLXa){%rG z1#JN%6%~t!(W-4h(YhDWS|r-4wXI9{#rn2=?*~2CoJq8XVS-f>igpi zYE=b){Pn`CQ;j-u2{Rm`a2B0?`}@A--vi&It%d8hV$Z)>Id=183TNL?K4Df@YaQnb z77jXSEPH_<{v>MO8b;ik@cbT)qq8JQixkzm1)t2Gy?C|(`^jAPe0G_k0?gaZxs+Z2 zBfjY1TIEA9X#beP@3g6InG0!b=R?Ikw}K+_5xWs)Xe>CbM)7%8fCt3p@C?eF&XKpJ zYiKNTX2a&$S&s5gF%VE_&yK0Tz>uOnsNJMac3w($UJCR#S+LYV zsCvSEXR`x*ezyoUYL~3u74W+T_7HqM*ADLL1wTX z?mx||D@}GBOLiPFV9OD!`bw9v^t=(VnhPkRMKWu2yvd;&f4g^L>S+oeTHSF8PBUQj zIUg?706l{ZSpg5;Elyyj9(-}0F|fI;lT*|gR0Qfjk_pRg#Sx7y5sfW0c01PNnq6SW z79;sGWHW^g7ASs+Ei`MFYIc1Z0eJ6l3!r+V<6Q<_ ze=<{+P-rQ?XnF6M?GrFxW%A+pn)2X%R{K6Hg^`Ix>n`&g??irlFES;H#w#yN0k5nw zwV9)9<`{8Q9QyQ(nkowl_{(Xm)>o+N%G+p4ln==~%RSfz(zpc;w`?4}Bz7 zG?fMNS(P&f1PO%=2HmcYUwM%J)S)cd-G!jL4CU`F8JjCd>I;sZKY01#L4*44(URx| zJcsI6_Ow~-X=Yu)Qs1#fB~H~oTjM@kW1zofbL3W)Jjb{y+hihU{^cL88a68*oD1`& zccXsexQe=VI0(~iv0LqAWxeya%nNktbPV~oh5nF8| zxb`Yuqjlc)l@uZFL!1&erOF!nN5+V`f$v9iPz(Ma&%{6PO(qGO7-jhJ#`1F|-v@0- z4D9dPMO=HqKn#`=D>LYJEm@Am@AK%au4l(xCrQE%A&daEl;g!s@RU3nTYlT8SU}M@ z%D&<+s3kE5<}r1lw0_BhHS6Ch2cO6IR5;#Q7;>BpIZo2JKgpGrlIPUUy?tikKhSi!osgKRDN`-LHl%5NkZORwEi=+sr%B)wPhEU zz5jUZmqvW1{@CJ>Zc1kj`J4Ff7vSE4y5YG$LqOZMW>->OoD#-$Sq-ZEqe9{x(pl1qGX{;;+-F(Rh z&UvmKj-oJ_hqTGgQABXB+rH0gQNb7fs_pTCIeH8vM4TFU=L4p|5Bf?J=*oC@({OZ? z->rMP?G2S;tg{@xCFs7i$V%*wM*ThoNqF2aDn?DJ=VJ>XNJ0^8w;MeTyR@-CegSWo zP2w9x5G+Scs;2!HUOsd$kS9lpMj9&`_Z2d6y`+wT^O*NdG=6hel&|z~hC9 zSvxnp(En*%xO50Tm}jVrOs1ogTS=S`A^BV>MdbI%Qn?_XgoD^2o=v53)FHO+K!2JF zqcufyq~qpD#{r(4+|FScG{S-S-6aV|eZrL!ZAWY2=0N5`f2aHu@?z;6i$BL8}U!CQ8)eXy3@WwvrarCdTRA) z8jBhKh2QHjmj@p&I=RnE6Dik2*ZB9>>Pkm{`m^g(5_fYDDxqRnq8IO5`U=RG z+gaM5%$T)*IlsT?y!;}skAV$@Pr6i0ZUJi2 z)=AgNGdKZ08O=xj-T#jRe8@NkX4O?9j&8)!ZNOeV_IlYg#8h_CoDtmeCXM-pZw-yU zQG>Pp8nu(SO6tkj^gV8#K`UQVcXmxaxc|t)I6N93F?(L^N7n-Vwv-XsRA7I1|7YM{ zF3sYw97Pej)+t+CNt`3HhoNk{*6v5*tR7bMe9g?(nU2 z7EU}JHEAHqsE>UDPn1*jl{!%WM;Y~PO}{qp%cPYoK6io;qVY3#^Zl30YRcjpHpVxk z(0J=R*58)MExJ=5bzkaCGvFO}VtDEurFe6g*>tdV8s%d_)IyhVi4 zFl5;@zirce?=3Uejk z@xKOm0AiF8#nE`srkQoKVW5wpG|hEx8u(ykZLIHTzbwvsY$yeUv_qtoFaHUcguM%`7zO=*P;t*IG&X&iD*p_R(#NK>PCtIyfPMWCPT-+7WqY_|rp7>FY~e=ts8}nu zc*Gy!9iNj#MxDeXWSPtUt^c?{m`cJD3NJ7%DcHOE1s{{)7~TIxZO{rxJ@D%} z8iXsewvUmR<5m?+0UL%5q#cE{)j{i{`}gg zr)8l3=fu1D5@Y$fjnmI%f&O2Bq;gpHg3~dw6nGtlcXTV3&4yfnM`U#klDL~MZDsT9 z6ckKW{yIz%OdO9lQeq;|U#H~H7J>7?!@xEg58GMx$~R$v2gl2TQTrCq@Ax)R__S`- zvIB^N2)%zdlo3$`d#BM8XQFXucX9M#kZ<~;|JPexyUxGA3+%1&*xopcuGs(M<`oaX z?`!SaE3;_o&{MLtUWyRD#2Di;Ed*!V_ct3|bX8pn=?PD*s+iq8BAJ8&{Zg=(V^^(O zy?NDY9PG_;XtvZ=;p*o)13b$VCMr6t$XQ@D7g)`}hri}Bw;<7W1wp6)q6?u6C@7ajk^jz9FvQx2IALqmk9V_Xd{a(hSu9p#osYr# zqyPK+PcVs-5F&7A(0bKJiU&UfpO+D_b5NtM;|Ndu_a`P|Md_ugr#aS&6;W3dGs~U2 zBa?0p{=LwtnqG8tu<3r)MhJo)ma;7cexG8Fa5>iC0<7_Zuz>+Q; z{^QLQihxs?(ebm)TKIxu1?Wd;v4r6uX4S+G6~kkoK;O$_b7<^Ao2SK^N#cSSD+5m@ zwF9vz8+yG;H|Wi4oKQ$%x5b+UOHfKB$n_8JhADg~2>PJ`HdaFY4JCj3LB1i%c6-fQ z!PR?jlz&YTyfeUIYt%(|-Jeyx5Adp`G%T|#g^LGow@fhUKl*A<%w45ZnefBF2k$;6 zaUq{#gtU=J60Rt_mroPZ`b!jtS6a#+^WM$onrK`+Wk?inqVeC0qhr&e0moQk7o+sH zo{{T%My@A`tU4~kkuwDW|9UQsFJD+~NGhT9!Er?g+5iWOjb;fYpr4D$faQSih%#QT zU5z-7TOB*V^B-r2k?P7Z*Z5*r5Abvb|R3bLz*OBc108X#HSgQ_tWX*S07Ie86daNi=Wn zEu|IvxpkVA{@#EkDY``e`G+p&nhjiYE{zqf?i%;7u?|P7|Ixkv9ffDLq5EzsDWXo6 z!jf?V{Se5z#fw_fF4Zk333juL5hJFurlafqheuLGOUkSkQI@N66n>30sh`pxSt>d0 zt8{2g>jzEi2LtsI=<&Mq)t9+}eIrT4oSG{5WWC4Y0kc-IlC0pSHRbk zI?Mj)8GE^BG>zxa@^trjEXsqa2Nvvi(E8z3d4q$MX5BPL!&JwQ6c+NDt*;veb8;qX z#7t1{cv+xd>65QB%7K0Zi698F7T#F?!;O@L0DqVkN$X1fo&RHp<8xb&*=!Xd$4XQ8 z3Tgal(t_)`GwkY-NXz(_trXVNy@N)!T1t#dD`iV71NYukF^?j$#4$24`2RRO3W~R? z&pZ3MfZt~a`&&|{@(tqa*9RVw80{PVa%ZRmlcjnM>4O1&uv>_lbe{%52;jVlr{Q>q zwkmRap>hI=xq}LJ1jXAb?#8#h(sbISJDhX8C+-l9d6(9&1osaCEVm1}R{Tp%)|9ew zG%;c|y4#&fs(#8H``^ydB+ikf8ogG)57^%{O9ApFVHZEJiFfXh#)wF4cE}`6V#K zI8_1O?FbrEp60>J7;D)mymM4!zd=XLXTg^;or;Gx;-TeTz_XFFITDMivl$8|A)|g` zLu~8aMpxmafv8ERqiFrs-Jya-@9ix6ZSIDO&QUa`oZ8YRNitS!7ouUpJPPy2x|rN4 zH6?-jMlg+6C+i0Iexr6l&x(tu5^2KKA6i)JGwG*K>zo;Kl_E0Yn2m_}1y6UWh9vlc z_zak9-ZPc{_Pqa>(f9MINe-vaJ9KYP5`#I#3pF=(gJg;EhTY2WS z{6HQb1M+VWqi*H0qsC>YUg&{rXy@CoED7YD5W-$aDEHK68Y+vL+fZ8n=k@C&IuF~+ zCu^v%9TcrUHo7b)!fw>9${6{19tZf1<$R8$N*6Rfml_}7<4f%@kH*iBu5BLU59r0H z8~(rfKfaO80!UNcv{{e$ygq}%(GW#DtaNC`{$;Is)=cBK?+!AuSZmdRBlGu<{glG^ z5#@qo>4E{*{o zr||VdsGva!@<0}zH-LF41AZP0v2A_R4__>y2yc%Jj+kYu{5HQe_Wl*KuH!S^-d>em zS#@?La!h5$|8w&A@$|1~ZA4f}%W6A#ecVy#Onb$+*$GXjqi8}Boj}iuw_qRt68WKL z0!8p6QpFKwQ_0Bn{Ug`+lY|G{&qem46j+uuM@HdA(P@#1#nsqf9mCd|LGV0DAS2Xn zLd*A$n145*gR?}a0gs%1Az@$!MF@5pNrW+~CQ8HJl!M=w&CTMoY=t4d+#~1gBsSnp z3-287RL@;^X71WE6y6Ri`h5zjDzjM<><0B3j$>fdsC#^DvkdIFup?~n**I(Y;xRvR zXE@B*XT$NMio48eS@y28=ux15#AOM2CgR@DAy*${)5OUB)xeZMi9Yp71&y6Xl*MmN zug3=({b=#uc2(@smg0+yvxJ0u%FlI})vrET8$C6~p?dXiU-z06S}S}lH7eicP~|td z_=#Uq_+y`f8J}09d%A6yeU||~H-yiJT$R2%J_zvl;dZx3#;ew&*ca|3lp?&Xq}NK; z0Ds8A8mUvI_^K%GG>)bWMe`)?(m%id;Nj>)B;F!H1tX<)-LjM2_5;T$BJX^na2#!|;8GRS zP=>}?QconRv#4jB7Vi(e1nSpJZZty?d6Fe*b#8FJB4Hf4v+T|J-o9nWX(D6l-o>k7 zqwe6v{RdBrK|jnBh@^(n{!#Kl(|QB;bTNDPg{%M5|0(=YTglpEQltLLdFN*j(tsW< zW#BjxPvJ0jtGkNex*;hWvMM#U?a4MZ=vP5K{I~vtyyj_=^@r!unrjn(2z%uR3irdC z1vh*S#fU}yBi{I#*88RvURjn`t+Rc9IsFTbLAUCo;5~zN4*jBYhL2XSFkpXvM5})q zbe2Q~F8BuQ*w_-{dzDKw|AXrq*B3Nam*`7aHQ!LdH6vECfX2fkQqz*1PAqr&m#rOl z0H50}Zg+c#;oYB3BEc;kiQc&fNo!mH2aRbgxi#Nk7xcbKRMCMp8#OCqgYyFU-2~1|0{BX+BW~o6XS#YFW@KF zyzo15 z!obvS@cj{wm}gP-$uXI19hhIF=7rPr7Q^cg4X-~0dJszT(SQ5@P8!dDC>1NtITiZD zZ-yMLp!I)nI)9A))};y4x`T?YQA8TooOj-6QJ!664AcX=kjEEGNy1GdAZn1{L7*a9 z%abh?$(9OmKjHv=a@*_^dqVa#Q~0tYEdPz89{lE}MK?FakVGm+%7_pXMun|fqwWIw zKA0yN)!!#>>)J1-@LRt0teGnv6*JzxzxOgj6EAnoxH5Ferh0eH?p4_!4@`t+idkm- zwX(>c{&<%r?sSe{U*GL0)3>|1HaCsWUQ|2F<_7zw%2gAllLReb@nNn-^>n>$5^=WSgt>q2uFH?t8S}H?Lj$ z+H_a>v$ky~+7J`=Uxnvj)9bF>$gB5+SMPy+7GBGyrp7XT;wXLRWEwj(N>Mi3Zm6Kf z=Y^^AXg&Le@6N^Sn(`0a!N*ENC_Fnxa)B(V(|=YU{>h(y3SVVXJ|0MC%Eea({I5)} z!bpicCC+Hp%2(&hR<8s4E6Rwarj7H#cw;e%Z{$b?a*v~Y*7P&8rUU(Vj$&|$*{%I; z!6&~h_$0tr3*(?xl{_2h|6qQ?b&C+2YFEyOH*$6b`Z)myHK>|8d9{gqX}o)0=)^0R zotV>@_Q!*<6#gg)UEd{jZkzCoicoE&uz}c;3mmIa_h}ht`@KmdVXs3dP7J9XrFQj( zy8?b#2?UvO=bk~wXLEo*Rl-1VFX}(=|9g;FSjJGQIA^Z_`2Q3Mh}WM{qZ#|pzBeA# zQhF0N)qk$eR`pxW0^Ona1N9T!C$RHY=i}r<@n+r0foY2drqKktcHa*^uM2-RW?1L!Bk?E*VYoaKcDr}g`dd3moG(Th zIM}LeC^X8E-8A7E%5`* zzB#?N27BiE%3AXboR>U?&D~YlbMcezOMoN8mM}0y6YQ?NYY*%NdJhkhWtp+J9?0K* zXaeu2obhr=^_;=#2m7jNBE9RS_5SIu$~mcfW~c6<@bw0C;6@>h-8hD+m@5-WaN z_!&hArCCvX6YUk9j(4-;j5JZ;@MWLeYgNlugM2pd{BS7|V$+VjmUi{Q3Ij%TMof44CwzPPQj@R2Quj6 zasm4I7prDsM(C@5ZugWA|GeSqwkcL^Mtu9-Ilng+!aQd2qkCrE4*m9oONT6~%LyKD zI?I4LzT8uZ9e$_eVU`gnN6b>w*Ffkn!PDjr!?NNNPdzi+-e%~(Gu&wrnZ^m|*#)pC=x50jS!{Oxx|$-m?N*o0`k&=R1Z)XimI18?{&#F`8amkHs$Q2& zjz}g)(D?5KI`OewgYLC^f_s(Afj-QUGBAZNb95KXK1vb6=qy2$+)|ckDNnSN2mD(+ z2Cgn&bZy+CYZCxxk=Kf37*y~6_-OAy6piOiXLG*0TwT6$@f`V^i8Q8IFs5hMajSa4 z%x%A~ev`)FxrxzXK9}ZlH*%?av=PsLa^fnU?Ai+IKl8|-^CPwF8@Fpz8pjc?tKWbP zo-aHUdD2v7Z!55y5nBI)xg+|WDUPb_>ThzL-;x;QLusMHiK)sasMMcP_?<4FzxySs zY-eupK{A*kYzQN;xh-1!Hp{mj3Vr{b35f-e0`-wE~CMqBw3=9H;QX zhC^$8N|RP&sYpDU70CYuet!*<$mQhc2J~e{gqrl97kTg8`UvQ)at7u(%P;keTL||5 zXed(<5p1qVjx$V4-b&$5#H$Y26=rOI!naQ@ouG)7GJ9Q|)j;Hr_IE1=z+8z(iV#bA zAWtRxfBpae*Z*lTk47 zKH&c~c6$unZnysP4gZ|o@DG?@#xZUgjqluXp=F|&B2a{ZWsJ3QTG#yp3%fwS&CBA; zE!e4J*{9@@6uy3M<>D_wEh>4z&dCuBMaWW2aDOVxsbv}PjQWCE^8=}YP&~8c7lDYS#`oh zi%zQZF5L?F#Bh|GFSX#+Ws`}!pns}EAg{!r9;J0lCjk8e=;4UtMgJc{;j8vY?{v>~ zRD}I~I3n_}QGawMv?Ct!>H(C7(6YDvyQ?TH8zGK%kQSh;p^Q*gU&Pw*RB`588ed*Kkc0}%x&RLw>~q7YRfst9PWqOe z>|O@^GbXo)=g`dW5-sS8rf@-j!VhifPE5D&9bKCx;K#RnIR?#=%IwSuWgt%nr9r-x z5e563f&5B7hv!}u=}Yh@m4JCQ4-!aSm5<%2?Y}Rl^!|qQug|gU6;Z$EMeLv`e7$e$ zn@6Qa-4B_s?9Q7=;c+YH^o!C-ttZ?zIh+c7{=xZxHPi9U>=}XksQ^Y@r2+eH5QXQQ zU}fFhN-6pDBX{Tp8Y{V!ML!(0s=HSj7TzqP@ya>pqbFEw#CeDRyz489$ckfNxs@Wq z#8XG3Srh?Zup0ZozFhzKAL@<<_K{Lx#Hd@p;lF@qON4RcZjs2O3mv$7>dR;fGn`A` zF`jYZR@bn`d7LEZRzx61P5O10KHOd8r3hO}77g^(>mPawECIbM$|H)mXwEJh`2O-$ z5@)}JT49MxS$Xo9?&L9w2yRExtZp~{;r0zx?hQ0?;l}vF!>i3@5uUIJWfqBt$!&EK zDXn@BYkzmBox(rwTJ?Ebs7WE=$a+{>3cqFc_4r=$=&d!+o`K)5HO?&N#k$u0)$Y9* zzmcqh0(v;5B=b{u$wI;T!D1kuiO9puKmIux_(i2*FptpQJ@0B8zm>v<`aI)cOSNwF z)k}+R_fSNzJW;$e(L@~6Ha&V21oSb+E-@Q*-(-|@JiZ^uJI?STChdk^&!n6~z|XQo zAQo6PKfWG4XVw$YKTd`Bh`^qYobiI3E*SB^(uUIYYxk}i`iREgT)4xCYE3E`va9Yw zJ&6mWQrWC1qb?+I#O!VZg{QA>k4!wsltfKzo$|Pq!fS69G_B4vtD;|Top`aAB&e83}Sz0zkV+FR%1Eb74ONZa! zUHELsfX!G@vf@)ted#A-B*X8)R#n*Ow_eJC8cO5Me+<7jY}I`b(hco9syVbZxEtak z6c$cLg?B}zyCU4I2si8h*Z=lF{jbsmw`AM*%G}1c)E!@77bucTb5J*DhYbojNKS1w zRLQgEem)RiQ<7?H>g2s!MIbZ?awW-t%mG>6LQAGF9Ps*zQ3yhaw|;EsTRRp4{w|J$ zfvxKHb(enG3i99G5Dm#p`h7D`eEvua@>?N>!===$B!q#}Xku`vTT$EQRBm3S+6(GU zs))l9$tcacm1vz&LE>Sk1dd5{mcv=%y=jMNB4J?a9j4f(?iiTbabHXk-Z&4um^PJV z!}9FrNtAx$DVD$cFtgd-Jo;kuSTJ8&x%Ffyr9YY*a!AMq_idh?jZ*kft1@FjJB8n2 zclf&t%{r^4F7?0{KtD#9W~4@yelOg0Eu6xeV#nkhK~0r=PhXgR^*)95C!vR@pf$yu z4L^_E@H36Gdj`KvDlsbeCx(g-htZmzC87QqtZMb&-Q(uB@QvE9=PX|lDsgP4CVo#% zyll`FjglOj=JKczS0@5^oBhF(!fShtrN@nF=gG0OmYtj0zop!R{r2kcGuLfUuS;&7 zXt$Tam!sgUi!|<&2OXKY)>)}<-=5mOog#9%S;F{KOYu<4$hFNQY5aELfOm0;vyv5A z2Y51=yG_w>PGi?BDe9Kufd9c^G2)T7D)i~P74A_K5fyJ2?B$rtc0X*N{8vjrucu&y z#$-P2I+OwPPj0X{rn)li>|1GPGk_n?PQy!#+ScSV^AGmWc;C0hTf{B{zA^ZgJ7fz* zjE+XqcDN1LG+Ui@Dd4g5Sym4GzxogSRbYR^P!Qn%#|88okC<2g@BTl9N5bh%aDu7q zB6$D!27J>OvGDFthnA&3Xj#`zW7p67Y$53u&Do;c=M;k!kt;y+5r!gyrKuZbpg$C$ zSzee{A2+5pdnw>|7UZ9I+lv>R*fS?}4^5oCIk#w5agF}$hTHPDzX|9QHV$giPx<>$ z$0;#IFi1x5*$k6z)B2q&5hF!JiQo>b}i8yrwH+4c3zyxs_(w`N^!q0&hE~7EOr260)g}pp1!V@;3jK-r6U*TOTb5tVM zQ}&KQ8iQ88Ht|wsbYE7EeqO!^_16?TB+@{xgPKU!K~`N%hJM zy7##Ss*esE)bFmlH?d1>!j7(aJ?RhFt$bQK_Tzr80Y8(Sq!@S1q=_96PrnNCY+AWl zFxRLj=N0yLsxAtF&G`rMmBUg0UbN%pXS3_&Axaa{3j!c6L|v z{8`Z?HUJCVbyAzY)VxJwTnhAZiA}_#HD3seJvA^)gQh3viqieqyZ7ZL=g9_Atw~x2%{i7yz{i;c4 zGqWjzH)3X<%uZ<<^7AHqOM&?`m+>ML)_gEt#1_Bc@xszT|6knm3OGMlQdmk?_E%qF zMn9r3T4bx8bIz(-c&_MFpTwYTI#)jK4aiCy53&60I7#7+H#$&@g2D{1?Wo-=Cka#} zv4ecf*qp21d^t7XU$D7lwrwky9TlekLJ@Vs;53=Qq?&%}^wb%rX?!qQm$b)Kjh}ZI z&$k;%g3XcJMG}i{$;-E;lm8%z3=$H+|N0BsN@$|@X3Tnjl11fByAP*bByqQx62i1a zTjBS;yS|UaTjN-Qc$t;><(}rM{woS!-;&pK9{Au`M}Moul__~_srLZwp7>Sn(FV6>VGIgu-6^Mvs<)?V=KZtK#?nS=Q7oo#vI$M5M1{{Xn5hJtqzL|47^| zkvO@iRk!z>k*mRdkq^gHaFj*W_Mbz%P&iqqD5)`3|@4 zwFy8UPz-uQNwvFK3jfX`aq&n=ix71w>(>u_^W{_uKbut8*w{kiSw_+;1biomClDh> z&FuZBr=6NgVHI)G9ZMP;ly7|B6MDM`JU{z#j%~E+-oG!N0qTu#aWEV|l~z9g3HHZA zl)ARc+rt+wBKC6cG|B-{m$~&+x!i!tKgmfSMN%V`rN(mZ~Wq8_ZETs0rdN) zCf(F)E509O8cHGegUBae(JDjslu7d>^~L=+eai=)6O~N9p9z}2rx3p7L!VE;N}wgf z&wm=OU$M1o$}$=zibmu@LAj7=#ru5JBSZ-uVh4O(8^(DCulNf3%GT`i#G^a!2lyXj|*pW*Xm(o#&9Y8Oz`y6;-e&yAwt8%Jc~xY*1Ia_ z5QV4AS6pu^bg1->?$l-AzG_J1wp*Q5w%xn5bsXSt;EjGsV6K3RTi*|_2K@u&iL)71 zYdhEM>V1hM5PpnZ%&RE^^`mn%=s%@g5o*BxGk(Q~r3Q-daO3lL$ViMyN()N@`@N8a z5ld+TX^kyv0C_q>R*D#PRp7l7uxk@2tZB~tabDD{UDy>Jd`JZRQ>U6jpqgzXxBVQn zEzy803b&^(UPCQRdylm8+ z?)xKc3iN+|H{4w}7`33mUK(=r&D6u=40!XZ9tr&7Qbx>jRY)W1-qO~aRJBRW>!S+n zdTR0@rN0LDCG9raZPjnS_wv2%K>rf*q+Y~c+49Q$*thS$sK+n@_9Pi80{m@|oF_sZ z%F(@Ge-`+M`5ZLWq;p#x`-H@*j^nZ2^`hWdD&cHM4;#hU1$pIcBjeVcXY(B!XmR$0#_`7?YLBoF| z_?w_Y8*Z6+emr)U!Xvv2Gny1;&AB3D!>z+4&W=K$#XJ%_4ew)u0e^>&@HmQ9N#bU+%(`jx-T6}wQ26zs zF^eY@8g=q5*xTQgQA98@l^4yBxIjEp9M6!rSOoSZ9Gc1l8vEXGiU_u41V;&|%32vx zFGPTE2CWlXt;)U&M<1kKq==PqZg_F3MRjA9?5sQ=^ds^NSYA`Ius5Km5CSqTt6AdS zLWNtwAEFh>GKS9z)c2C^%y=6zge z4~@6YZHoMeTdVlt>WuE!pBV7lgNNFu@wS&;w8#)MX3~Ex`!s%0JFSlHiW1Kd8*o1V z*ycM~p7M`w6fHV$FyP+nL)8mF4tm`3>#_`r$d9vS#!>q=?UuN(tYb9ZreLVPbmx}A z^JRr6XHpt^bY(_RcTK_E@pYa@I+xxzKG;)=I&{J8ulb?(tW}CxA2v=qZqg?1Eq~lr zVj(_x@3VQk45o?)3ulSOb{TZ*rX(0&x7sQqGd*98Pc`VgLH4i5r+J7;&;S19t66~W zYh*YkN96}~U_L?P##(9XrwVJ?WKG@#6-D7YgW9jRZ82#--z@9h4EFyZiJi?Qbq!kz z$AkGl4NDj?kH!*daboMmD$vhD5cI$PA3U#SK|DmOcC=pD;e2GkUb*4JQ&5v~cJqjk zo)HG^k+;a(UXKM!Cr`EM|8AXKYDhHc75>H*3-&c&%TDy^KmHEfKjZ?T)Ton2cI-+9 zega4;0Y7iZO{#uJ2l)Bp?J#P>4)0p~^x9;K5T;~0;Y^!azV^d}q9+tCPf}h7zG)if zWpU&rAz-+)QRW2xTit?VG#<>Wojva=jsG_N(yt(oII9)0i=^hV10O%0y*!#E*lxrl zLhC_47^weV87jH}Tb0Q*8ml3hCKT5WuK8lMQ8(FfXj()AN$~5C6cRS+j#Jr)Z3mb~ zO8L>KweV!yrul8TX5Bjf(Y+g%*I?E6?}q+(*MKW_`V_Vk7Ogyg^OpZ~fqq-cH*#sr zCsr54tRV>sLTzG%#&btox)#l*i2S;Yl_>%%_WM2US9lCbAR;a)g3apqFBq|{hQvKG zcQa&nY=f8I_of}9@ja(|AAIkk@q2=cKHwh%X+5-rQiq3L>1WR&2@gLmg@e|YEW8-V z3n2s-+`>4gHEhS3^`41ILH)QLD1)jpt8Z9VWL(#@yQB z8d6t)Y8xaf-{|j3@OO>D%YV#m@)b5&H_WW>LwEHNnn_E#;5TR4-rBUd9F_{Il;INg z@ZZCGODD{K#Kg55^{(%_;c11fYoC7;uKL_()K7`{+%gJkDDRK;6*cua^mmd_HvAW} zfsy%_KQA|zXVX*C?!)b6F?`lY2~<|%=AdpbvZ9W~hgf_TQ3QURTo#UuDuqUsLWDBh z<_WjCaV_|FMnvb%b{x$P@omSV`0ObD2nQZ`?9Xqv2foJDs2RAUsF7~b`+Xfn6A!%4 zKs~7MzkU)!2V(s}1$#=e$2Jd4zd&I#x98uMl$&+(T+ZrJIe2}etRksN|JuN1<+API z^EMLrsVn@)JI*Zpp2V1-k!#z0R^`Eq`@JA<%MSMOrB3DUoR8#d_fq(qtMeDn&3Ed2 zc{%v4lYqyIrpnA@Nl*r45OKkL326oXkX^kI`EpetuRcq}^C(95@)rW0XJO;?f}1NT zJmSWfX*bv;-YNte^x&TBk)5{f=jHjkFL)~M+`{v3j5O*u{d8kQeuGEr=ncPe zZ!(P?9mmiaL-l!K__Yc6HIr`2h1-LxYqoFGIJRpX$H09zjuA;11=c$O>zzR3JjDV- z_;r&u*H->`{(Xvwk~44%Y~5yiyY=&XBk;CQRHSqwptlMy?72xlu4mixHMVS(u|44DnV5bKO1fUHKf8F*jm3*7 zEc!d-?vfIt{(N`VM6iFF1^gzcLHFHidcHX=Fn^Q^qs-d;1>3C-BZ)QMOm+1yH)}M9 zRqK`=r3j~pfn#hAS>tml{7zCw!uUdy()5nTym=*=#aAt%$Kz9=BiIfAGEu`(x5D^xZMrwpr}x#LzP)tZd-suDgG~y9Mz7 z-`7*Ro(453D=?@ZSKr^qo=RcY#f_28p6%s}hR!S++C$@I=ll4DTTHsMYx1R)AaBVi z35Me-H9s-Ep3kC*J3e+%myawW*%AmsX+6#EQ22c{m1qN}`rZUP!4W|t-K=UYGvkpv z^pTY+I`nP9p>GYud2`x%W3iQ(*RW|`-3W7je~_Y|JDn!O1X3OoXWsNu?)KsLU{ZT4 z3H1j-=1ovi-m!*az<-HDIgqWgoj+oxJJ^8lRVIFYp!+Ju)pZeOS93^A zP{(7S(Pn*7RHTMd1O5ffh~tf_o2vBp?y^YC&50TkciWXE-;CepSxw>VkEVy!h1%4w zGUE1s$|-DOSMS7R1*scIOy|5*2<|gHc7)WZi(Xb|$~gtjJ19jYGiiQ}Ejn(_1^or^ zLpry0+@JcvuVRYe)yg<2GwX@-hK0}eyaDtc83~~_rOr{qwH+hz3|T59;u(nU*$b?D zV3OeTc??HtQ3dj}UgU#kiMY;U$8mD>c?XRPAI;;;VXCn)B|pvhDv83rJ(u6JB-pI~ z^YNjCv}mAz34{?Iv*yNI`LZRzKTwARd$}fM&OGI59>{AqrY^gtvZ>GJc;#z9qKG`1 zCj;>SKX=`c3m;J+Z|?3Ktr_2@2mTpwe}YhmXI6XHJ&r9G2lhKChHI=~rhS-UHBkhb z5*sDWs8@jaAh3^>-Zc08&4aeeJs;nnp7J%|Eyu7$r~^|Km5hG?e08E2n!~EA?D*`| zh%=~7QIxVT?cU6q@~RE@V%H2+7uzOOe;<@#Dmm5^Doh(w`*zyG?YFrsV@Zr-?&N7> z?1e`+TgpeJ+w$_CeA(7)Ybt;i#dhDiY1+cTu9uJSjJaQn_H7+8rmiC9!}8oS^KBbv zTnmo>=%!P1^rs!W51+6UGW#;y_(4c#jr-0)bqsIJB_LBT{U>+m4!!h=x7VfPf-T8 zs8=E{_6J~Bd@S* z+ZG%ir$0Q7!aX-icFgLq;+FC_mf#+ZZNB7+7*%d5Z935sIlmQro&&r>e66wMz=;yj zFT^k~WW>kZio`Pm`;75f5UaXi=gaL8FSk?p(2Z{L#CRK)BL44?YltLx9F$*&7zpYe zQ(d}=BvRd64;yu8mL1Dpc324X6oj2(Ggm&0-;$GUGT`X${QMdZzdpW*U zIbhx;x5KFCov?7APm@@GHwx9Uz~={})Eb}<$Gbs4=j;tXb&VkLIye)0iAAa{Tdbxf zz^^XkWeMX7Igdp% zYtO6m4X@F7TOZse@-*nc`~T%nGb%H?DMbR3 zK-fG1jMnQ{JReq}!4$!ZhhUW1Ph4oa?OVjMRSn;*LVx}05boQw;OL0?W-9yO*|#Tt z>d}96$N$ltNGmbVJz}2Q&`1ye*H5q^n(&(yMO__CamNt_%h{_L7vbr*Jm=Ld0n5d$%E zQmyk-;IHr^z~7A>M5=!bHw5Y%4NF}w_&>nE#6cM$L#g9Ni$&G(G*&&$J!h%SRpIO_ zICb7Z;X7_Ba=ONt^ru61@IwxR=N$%D=&G=BL1E((!TTl8f~7Wf!u_co10X-%%Vjt$ zq6}h-pwPP%;g!XDB_0QnYU|cm-=pxR#+CgyTTN>5q0>`Af8>GV-9o8Z*J*k8VaUgU zeYgx^yj|D+uyw|5u>tp9IZ-_LvPl`A_vWJaODX)(P{|W>iBo%QbL7!gdeBb@;Fb)7 z>el#@AIue`e&>V2Bb*g><>xuK-|~2h=%$F&@R?q#(W(nMbl$#yAIL}K z0Dq@WmS6vl8a!Vj2@B|zLu3BR9s8;QSKS`UQ(QLc`f?6`19&j0;P{DhsN`$=>c2{$ z^ox^sa28##6X@@wv~F-eZAJuqp1CrX0QpWJ-;j=4oJE(pK``+Skna?e1@fNew{1#p z+eBf4*GdfCY1ZNHu!qhTHioAH0vGcl55z)u~^7O}1R5f6+-Yr1UNt|@4A zJaj<+pZA6@3{SLeVUiRHJkc@b@NdJu5pPgSNf8=7;pPJ1vq$Mz8V3Ef8@1>Ueupcv z->uP*lCGn*!!)+<@&1-`p*1Sh67pF z4+s9fdp+8E4eI0>tI$>t1iAKZnAg<3F{IN-sEYmB>-|Rkn(bxVBl5w#i)R<2G*)2V z(rH@xg0I6CRacg`zm>XorICm#XgE~ZXs(F;r+25$P7*8u(8H_*@7aXmUv?R)Tn(Ib zPrkKs%9E~z4mXWOJ*u8&bDJ@Z)p)Ue*Nb{X!?bo>Y7Zw(6zEsOIP%)cpMH7er!v5^ z7a^pON8?ZPL+%NeR}m7D1F<0rKiw7I1p4O`G2(&c25rvLmyA*l;ItrF9G1Jx*_-V= zn{B|p>GvI4lVnw&w;p_EKWM@yt|1IaToISz^0Wyi zI)k8q`&v}AfCPaoWSN=FO!fs#hKLK=0!HhGMT?QDZ50v4Y9AI?(AKT4wO`w(wYK%C zzw3^Det&%Y$LqdYB+K0QIrlm5^LlUcjkt4m#BDRSz`1q&U%{=VI`;{k`vi??PxFSM z$Eu6})d~6yz<*Xoi<2zIel2IN^i+X)7eM5MME>7So|Hue~}|BI6t4&vNU zHEBe5+z5&gO9UB+%~i%446HM00v(;dx@TIYA$mk-^oUN1$b*xZix#V{?IZb|MHoqt zLIod|I91DBdzXzlN#pKW#k&xXMSnZ>;4#-8@b4oza1x0B{ESW^Mbuy9)AAInZgR$h zamRpO?qU)@fpO~h1749W#QXD#P`movTuUoz3GK%mnCHaTz9NbrZ3Mhf)XU+SHuXsn znNyM|lTQS=S=&pI(C0y6L&ihuH0Gc9&j)(7&bVoeUEjB`Zcrg<#nd&Y2R=V#FP|)q zpPUj;5(p>G#{u=6SPLsY1$_TW5irk8xX)(vYt8^13k4&VIrF23Qqe=46amXq;~ zDO&iRQ+I9UUPU4B1BH>$Jgefv@d@7@G-K8W;}d>#(fat*bqO)+0B;Hfa|yU`P!@%t zB#|bPF=E7x&%eu=e^(C9Z<)6?$(Q$!-Wc$K7(QadI%~fCe#Chb!Q}&f5RI>|?T8=W z4dN+?R}_Bh;PGXj27w+5b-{>BS1@R3-ES)_`0$N2rp=GH8cGK(EgiI!GIk}gR$gf) zRQ)cRPhBJ_ydWa;#dW}+7qljoZ>KDG#&+)u) z1JS-?c>C@*fV065$X$&K*tI_8i_sL$7AaTOz=w0Z*Momoy`gY#lQNTmU5mVJC(-*1 zjl*kKqRh>j;)blUg6BaRPu$phRM}fgF|9nHKPI4%u4*sY8xECj`)BQk>y3Z)`B%q( z-X{s#FDHd)g;uh)@Mz2eipUW-YyDoE%C1GXsZlWhg9=~;joTiV#(q>5igy%@I(6!~ zOO1f9QA(GfO^b_J2hI;(4o6z4)@1e7WC8v&%!X&DSatE{U&i#AOksN@xoA<2 zO%3K5YWvXoJxy0y8kJUKR$u)x-c~cFiTzwO;)KPx7~QQv@<<{Y;(>WxeL|Xe*P3S_ z{)72Ob6I!Fq=AzsQFu>qe(#JaPQqbTH}{JniY#jH70vX|1t;LASFs)mfD+sWuai10C~_3ub)N=o4k`ju1~BWnhQ8 zg!gd{vfYd|AKKS7@3vc`SQSvL0`Wf(%GY%cTdu?5APK%$k`AF2g%d*kZ&05_1%V`= zald)Se)A0Q{Db`4uYGf7A=X|+5pgnC2I8Xi!yhYe2)%%(EpgT&HiP4k-}uD|uuoIq zcD_?Nt8M+Pw)LQ1$q&?e?f9IP*9MJv8S-;x^HE!QvcsI}I`?iqTg|lcd_@QuQln{0561wVtY!#UCgq%YSR|RfW zacRujdod*L<2!xA2;1hw!urI*(ES0N4^~x9#NM0kFG<1?;;C<2`;H$2_HR1hg18J7 zT}c&PKvx(*7?|fQFIs8Xo0SgUKjafhJjMm5uYdkwZ)I^+#|JRVyfC3&Il2@6BB$uV z5@l!bTNC;VjIa|`C!r=KD=Xa;mO@7DC!uXJPXKLARnkOv$CO+CeV$TA{&;W4bqcHg zD0X1pn2ORv|8G9@D@G$3ss{XV)hz zVWu`Ot9X8sgI1VEL6LVM_TfGA9?tISP3}+YhwHOiFP^olwDV*uMl3WNdiN?0O%*tc z9>4{`D2O&bPag1%bb!6g8$4RflUC?Pl@yP9iJJABYTzmkT495{Fe7IuRqyp61VNQl zZ*~8-3+9_K$b0IKx4k=v-SMfPbWbL3QL-T0UMf-N}|A#>^YSxFPiNe;1fPaIdK8>l?6nMi6UWQZHz+mR>>MRPs z)2Lk>(**WEkAx*=V%p@1jl4O42hH*dAct=8l03x{E64{Fv|{o?oW1ayo}mP&wcPFZQMf|BQHkrX6|#B%B7rE*>D%r zyWwV>{a!Je6ZGfX@tb!1CXJ~i4&L zi`M_xI^dhefgm421(4jT=eqr=?#rOQjbw>=4&9-Yu_r5&!2MjxKoa}LE`VhPlD7@g%+7&017Jb_WtnDKZe=KsQ9NFcG0 z=freedkNQ0nq+KP%80C5`LeugOZDLAB@B!>wCg|Bmf5#~{VWj(MPv~pme3QPgzmp= zHo9F0cp?oqX}nMFd~J%-RWx%F@L#0yjHLY1w9O8T(iMc_H+x7<#t@sWd~(bEkpBS< zqb@$saR@nSBA6s{1Snr5v0+n}e)iu>`$PV#5Chu^qjeNDWIv6^qE-HXo%I+F4*0Wn zz@HT1-=D>9&!SB-LBgVoS>Qex=7Xd*J(n6dL$NUA4+i)Unu+i9KPFdwl0Ym0^ZBQ* z&D#y0KOPM$oW}Py4Azz!%_el49Q6fAbzeRdp3EX~&LC6(OGz9~NEa*K`IC7?5+|O~ zA_==VTK1Qz4at3J&+AFdp;Z{6f6 zvuP}ArmXHxkqsA*8#AoWBpUNKW))vP=FvW>_`5OcFB%&%20b!4r>f+lUFWdtXndNp zH1^AzPVI~>|4H8RJBhed38eI&qpxq1aBaT z(v13*x2=Rr66tIO&Ea`8nvT9#I#*G6P2-WAlTmhU^2Gn7ME#q_$aJ)#!Dmy?sGU8d zX*PvB!_}Ef58F&D>fbM{d_)ma*aZ)?S@jF2ot_Q+Fc?@a;K;35Fm2+j?pL9B&bA=r zCVI>n_5@LgyCxN}T>8S%EACnqK#!Upk>Ir$#NvZJ5eF$kfI9iJT{h!u>$3EzOW(zF z&|klx-z6Jj0rLYgzDVZK?E?MN5FZmEVYyYG1o+yGU_Suf{TB7=)ju_KjiCv}DaoL& zF;0ylJs@9kIuzg85aKHPC27kq`++|g8xrspp8SL^aYBxm#)hBu!R>86LvEiL`Q~X9 zk;i5NNRC65I(p$Vcrd8z7@2II6>!m(8j&E)sL`Fz|r z6v0#Eh!PUa2LJ5N;q5#M?>WZm-KVq|(H|@PNsPt#_hcwD4FVhivJP?D_4-KPi7zW2 znC1$m-eSfdF}A&({>LYc|M3=rAdmL#0O;-aLCZ==I={EN z*@nLzkjp%L>r}U-dv0uZTJZA!-mD#U!>+c-hFD}n!1E3KsYv6cNO75!y-ye@3KrA}pntOwC;wXYAn){+c&m(K#(vm7I(|~7+fd9OdapE` z!XfX}oh15k-ZuQ!HvE=e>?pEmEx)Jn7A za%;xrGa()c!WSxR1}>H7>`FF@K&jqs}j?BJkg$U^XNjw+aZ%~(p6$|FW zD4cGDcTVBC^)h2eU*lzvf9KREIV`&Ki?PuA6~JM@&jb^QC4BLL5dW0rg>9N<%cf)d z=9>r^C{S@+Wmh`-UFqmY<5hFY0_UQv`kBYh%{+L9!n^h~{w0e;4R`MbWifrW|oM>D;Gi?CPSK zRc8v^s*JP3%+A4PeaE9T~FYy*B^9F&127UP?T3#R?tAJp%80Kr&3;r{)7Z-C!IJ%aO;d@$;BYtcn4NTlVd} zzBCcrwDHBs<68=2w^PwWD2fnBQc!NTO=X#@1H2p)!iZ23rf_b3arcbzV1I!7TZR7k z%2U{>CK9ieXA9UoTWL&bbf-6p!uFu~ywL@f<@db(pL+XKc()g3*P?i7WYhYHR5Oi1 z+u)mlD4UKw_GL$9J8kTKc)Cw`fk*e!{3yTjZwn6p(OTRcQ&r;lC;rp&(atEuu1hvg z=9+&r;~g<4ez>&LWg2_z{^XQ+8i%%(UY_HliO7?+?qF`{`~~yuI3}N~$?6-5Z-M|q zWAV3q_k@s{xc!I+$1-L^JX!{cele2_2gzW(Ry{l&J@XnilaMq8O+!C6oOluZJ_e$R z{8Ml`4S#G!e|Zb@Ak#nh|Npz*jsM;K!CwPFKboK56v`Z$I)22bB@r~vw3TLL$Sj*} zdD8GaD763UxDLuB6Uwt|rQr4P1RT_%;##v(_k#1JKFMW4%!VDlK}*&ydv_i&u%pa# zc8L4v5DLE&7|%2|Sj&^6x?j@IEyh5}4>mn2;kL59Y7?TrXC3&G+NS`n-KP;4Mi|wMe!|W-~e_MNY{c z3i5ENPb8ysKA{xoEeR3ogku>RU-QWN@%j#u$P%D5o8``**)%({38C=xQ%%=`Y1YkQ zOLD`OcXt!GMYFz<3PeV zNxjXy5I#R=FCy3`UqKfiCi`s*K z-7qct;ANi=UiNVi;y*^;oc%b&F=NE2qx|{8hz(%w3gvKpFzPCIMpjG+@q5JzQp9zu zlr#U_D-BYFU~4jjFdprMZKpc&Pna%9xnMreX&9QjDYL79$d*DQ8d<~aW$QC}gSiJN zeD!GArfp5OG7V3fx1$;KeI;xGN*iHb!T8u4BtePfB#heh^h4O+ag4-z_9<7SK=!iU zjVHWvhQxYV%;F3JzeZ{1ZRg z8B<^)SdfUthpZa^#k%2_?@@$*d$J#)oNAqOo6fl{5k$`)#62pYl~M~ zj1{~85VX!d3g-J3nqYE;I~?77;uwdm}K+o1k$NWAqmTUzPYhxnPzW=#1a(A&JW zx;P{c986(H=WG|j`Lw>NG4fB*05I>%<->?opBh<}eCP;CWP^_fv1?wtwxl{eq53t= zky(qE)rR%d#RC4ZgMlZxwM+FovIpyEBR(rP{_IhgrmgUBTfT=T&>Q0CJ;hcvpkFLq zMdBpi2atLAv-fMs zlalQJgzSG2M33gnd&7bomYOl;n^d~vm<<~hLxt;V z&6u|46#tu`y$swwPq&Z+B8>Aw3NxlC+7in>uU%6x&5<0NFsurgo1dU>Z;|sYJoo*k}ZU-*re#e<)wo`{eqPZ z^C;b@Jl0?@D|FtHLYZCvV#PPdzYEo4WuRV#Gl-9aO2F?=U;`vdJ{rx3~ z|1`em%9TlVow&-4?3t3j$!r+D@_YW70;{p3UpvG;V=)w?-?OJwyERWLzIzh&y%kfw zeb~MIrvIP#Z!y4seBN=r)KQ*V(VaT6o5qR;Zeut_Zenc9m_zd?P}uE2QI$nW>&1!d zk~r(Z{67Th+4v^u;7!L@gq|lZ%`xj6)}Pv!S3u)|MrChsx>=8Y#bTP2GzP)wupO}1 z@Wq{AP#HmC5Ck<<-P~U=s6(loIhw+5?o-~I!|X4B8kNc#IK=0Hyzu{B@7b7pC|ES? z1o-?Bwov9!e_GPNt|Xnp(eV8}9YK3ZOr9*}p^U;;+)$ENn*dJ}6~xNH=Z}JZi{@pb zYv-&a(zrd4nFY(uhE_%1>^bsx`#}KPN+XX7=N-)gyrt;8v`KbdN=5g@%9m!WeEIKp z?lwDA5djb{Y*-~edQV%>L99Rh_k+(KQCLrP#m%Nnt6n|_Ykdy~&yze_6i4H3*~&cm z3a}3Ia%A*J>aSVR)(0=bLLb!pCx#?q$9X*^cB^5$i$4R0R*b>Wz|?|6>_*kK|b zt-5k;ICy;`gcg}~b7Ixeg8`2nMqHvKR~b;513m(%r;1R(&%OG2=JgQo!v&)*;@`gw zfBW-XiV*rNup)v|TebPDjk%y71v+3hZL`Deu!Zg)QUR>+u1#2TKVeNv$UlYVW>xDN zD|(wNZc=|edqJHK@&S|#NG~qER;E z!@Cy*!W$N%Bd1HVzSpVCTG+p92}2tDPw%Ztk~z!TBlCMxD@h{F5Bj!XzRo5@ax8|2 z!C=D`7HQ&nBr#=89vhNcv^#`pV*+Vryfm^p zaYxW*T--5Y@3j#jo(u`eEQUBjJgQhsnji*}3OE(o^g~VaPJ#U@Mi~;R(5CNIr+?}P zyf!YV0F*~>lnH@PFYSeBF#`Np@5A$-QTR8<*4{Z;=+HHT`FFtUt(DTXax_#EZY(V4y&CuI!siuga+Y}&DhTYz5%&Oq6IKI&5cnEq|x+c?rVbhOVq ze!5lv7c(QLRKx{3$A2;%T+{n;;bidg=w^}w>EgS47algpt;UI3~+2Jo` zqpkvd(HsFHvFPW>jsqKT4UH9IpcNH9Q*d&-YC4X}ppE@@K&R@u@N{ zs534sqKwBQA$Ib6Hr*wM!vXwbhKUNgVm@*hOP~*5QsJQghEgKbQ$F!;*TmnJ(AW=M zN8rW%sgjzzyiZDapni=?IWj^;_8)hqe+M{+UGP~)1y=$7=1n&Qf@0qO9|}Qte)Ke(|dFi@`pVGJKT61~y!|*>60^CwW;y z)Lxbxap+~lXOtdnl8X!wu;MYK1a^D95IbKcVUByMZ)5NL=tu6W?Ow&i`rT>d<_(gdIQ} z+NUoCudXgI<7?Ip$Sf*jG!mac5-p&Kfz7o&A+pffYtzYm&ls1`;!(Dns)H}@u>42AFZr;lhv^-Iw% zphKcalmX|@|6S8dcjWTSA})pX)U$5Fv_th+-T!gPeA;Ll>uh=T*r^)zYVD|3Ybl)G zSI|>kY&Hy^?(?6%2lQSF2u9s1&g?0i*^?;aLir-|lw6B8RDW3(n*VUXh^_c9AWxM7 z-Z+;H{OApP-kbdSdw>VuAn;Ccs9eBrG?&EL1JiTl5*vQEqUVYGD;nob_dZNzXk*$m z>}tsWREP**l*aNDbMmHw`!dXO2^AZxnVpL=uPq|+dRQukMK1m9X^MqY6cql=wEUY_ z)fQuIe($I`v1p&Q0|x6 zwL-K>F%Q%SpfE^?Sc&$ZO~0EShj_#;SYgq9vf^OP7#E4haZnm^T1)m@()U}^DIy*A zEgC|5izogfp7{5D%IJxb(y8xN8D3X>|L43=9T=f;rzfFFpm z<pJ)uWh`cC#5dF~Rl;&+_3|A+Un2GLC5}x4rMS{5|3s=fU&HCOkQSo2A z4|G$q2yvWUkFp`ty7Ew+g%2m$b>+N@gm#8D?ve-9X)MYJ)hd~*Fl}V622nOd8KFic zrc3rbw9rAkxes6f`4#U&mHj+3bat2zn+~v21KJ|@kr|_)f8&+P|n6ZTW z2li?O6p)X`SvaljqDjzi<|9+#Jb^ANGAk*;QGXTpC8$NsX+dqU#g zU>Za12Nn(9LgP~u3xj9*Am8ROpk9$HP7(D<`6vFs&hm>M!0&&zCLx>ZS>4D&Q8-DY z0lylFTNz&9>HAR$Wf(hM+Vkpy3%46BOJed!+#_d^LwFRv|76|nm`svL<46TCY9+LV z_E(Qbf%+jh4{7bWRZj-3O9H$<79+AbOa3GWq*4QEynAC+&t2G}3Vl4YDg4=({mZt^ zcN$AL_Ohf;!F^ul;vf!V!Ou&M+z8Sp)XPEr7D~M%E6NW?0bY?!#B-ABWl`6>6Prnb ztW9FXh^PFf`^%eSzoM}XUj&7VW;%6i`QdAYYbYZ60L+d~v0~wcwc<+@MMT7=c>Sm;_2XDjEr56_UONW4A`6>)hs{d*(N@!p)FO*}7* z3T#e%8T??CNL&odTuIR$P+vS+x)StDIVjC>s_qRrScd`q zwGhpL!(65C{QEHAfzs?ao;ZmlxKLOYALtK6z(2}WzIc&hu{Z&59NR z{tx03OPs1-&kT6eH~{#KYI?6v@Tg?Nt`7d|3WZ;4Jp8;VXg2i1g^dmp><691pf-sq9bGCIT`HiB zzkR@kZ;Zx@XTp&wiR)=hDUk(sZ@1xl#NyiiVj91l(ksjz?I|xj+*asmqm12`GjBe* zxue8&V7u$UcB_7GTd->5*Dg)U#NW#X{7z%qV?4oD*g*_^{~o_Gj>L9wGIoOa)9i9P zK)r<#N$G%`CNhsMng{fgE*QZbi=XfS^!w3h z7~o={@-Gtib5K&4L*onQ+!Vg(qzG|bcHm;N z9mm^NzPPal^ve_wM`kIuhl7L=X0!Hrii#t}YmXD-yGqMw&JHcwqckFw~GlKdG zixw-)M5L^6-;gn(^OVPjoSH|gp6y*D27GA=Bb0eI|1bVC0cnI-R-s+IV(;R@0N_(X zGB(FVKmrk$5Be#5hzI;s?;rm5nddp^$MKi|*QRw?xEC!8Nt`W``C;3Zl8J9xCcdes z2>N2Oc(%>1zgahQvTPujuSns=r_k!K+^B6OQlM9m3D6W8yR~A^i`M=WVG;W3TOHQ& z^PqeW^e;jg2_e>ES8YF6Ekfhpo$7 zz_l2Dym&B>Atng{(C10orP@2oviQ(f#;Uvzw)8U^&W z0VGEdXVz7DmNC5!rN!`FN9LP& z(Em?x);YXRU6uTpbLO#E|HOYQ)-mt*jZ03LmcCa4>i_2Qm3QWk_udBge?$r?EP5vo zVun;vL{30dmnJbA{M@qMZ&-l)s^|_xIrYaMz(2GerSNZ7D9R72HLX1q4qZR!y}s99 z*0udq@9Vb|-aCd{_-UB8B=29mA0L$244M?ys|CfrVr3-SJ`uGVP&V}TYo)sw=0R@< zKoxd|T?<9j0^TD?Fs-^qC^D7gQg}_U;96}SO)MTX=uXoTaDFKmG0&|#a(~Q``#**B z%A^qW6t9}Qyj3=wG<3lkY)LAm+TMz86RrjQ9UjS+IkhtY54H;E&2j{_2!+4s=r0>I z2;?bTmqn)w;@e04Dj#09l-_!kd8a9pBq$-v1xwxK%8oTJt^wZX z=P@;jYaN=%=0h`Q>@gc2L6%Dtk~i1oZnu& z?=ckTj(YXO99mZc74&YbsaBpH_2%q|+q99Eepa+&yC1u><+baxHxw=qp~{+KziNIc z{!=))PuX*DqZ#YBw5tE(!J+ft38Q915^qbYvjnWAj7Z_oUi2Kk=sFD6h>y*)s_w^) zTqhby;VZk9y)yg zd9pa(B)dM>@$r85SK#%av>yR^HNqAHo{9+Zig^^?8|c6CIPgygdOeg>xA1m#@GOA0 zo3^gS>(F}p>b-q;&_v75{>t7ar}oy*itm35qp)2ZW&FP;SWJSXi{Zo1P}oC`^1JF* zhw9Mjma+5igL$9?nysMlG4+Mdf)a|z+n$_(@M(SW=$zZrl;FIOcsUYh>G2hNW?iZU z^#r6Irkup<0dE}*uSuNELm^>~qrBO3=H!HsA99=*lGzL&-&=ld={vqZ!ryoG}sK>S~Q=lp7L4!EM* z`E*HmHvjyhexN@hrC^z}?5{@dH-Jx-#^E`IGP90VR2QCKK;k|K^(LYA|M|rcKB0mw zmQaw3M#zk*zw6(yaEVVH7cE#D zEwJc?Q>rJl`>?WzgSip=aw&pDs0?J14evO7@201L)~}a97@l_cF=t7PtmSnJi!26* zV@q@DILcTPRQhcs;J_%9r-C3paUe!yQ<|sy2gN#VCX~5xrKvk5(>1U&Ko zvu4)7^7kLk?lGI3!Q*Elnrt6-?1cZ=+)I(*rx>_=#hbU^C$t0po5&}Yq|hJo?y@I{ zAev}7*`VwWg8u*f$1nTS#<3D~{>*$=Y2wCpi6H(1zGnco>5|3q$>Oo#`#=Csfr!}S z&7~bc4~*u3eo*V;Rq{o0aNkFxMRApz`h|d$H2!O2Xa54mtgfY>)>gLD#EO+NW%m(# zS+gaw*)p3lo;%4q+&R%}D3;PKj# zfM0EklcZTTpU?R*Z1quaeklav1gC!2*%3di4Fh}-UOf!k4F^ZBJQNom(${zcT#ND3 zT~}noeg*k28qH2{s}gd=32B!ArwWk99jeypyQ&UUlLj$~4ioY`YQ-{(0_gi_j>IQ| zNo;2zJtB}s5#m@XLc&<|&7S=r|0M))l2;(JX_BoAlfxE**TZAP2^DI|Yx=$IG==rF ztgT8^S`0t&`^OGi4D{SdIUEVKrjHaF3G%Jy{v#cU4HVv!tX$Z!IHZ^Nain(5)v2pn z7h@D5j7`kr`YfgH*2rI*1QZe2Zi%Sky9|BtE39FM!MrQNXJEVjdO_Y?A?VM*C|@O*K68sPWwasr6Wwpl!;MLecHlz#y~wBnH6A_m^SBAqX*Fube??FY=wadrm_ ztlF0MbX9Xp!SezOL<+Zd)g;3&pWUR1@g1zK{^KqzKeP7_Q?J?ZdQ0Y;$-qyK28}(d z29_wbyxiYF{BLK**-HYc`-V-bSY*l(C*-8TmSTalT5z`s)D2N409(}^ix}onHASpT znj@S|*|qTMvR`Kdj$uM}fbFpB&071ZG>>9@OE(Q1x^K;L}*_K#6p z*4^i4!Q0o7?{}y=i*~Z@F)fs~CRjjNMMroBJf@o)M>-)Q|}3O0v53iY1+Q zzWbRnE);ue+6t_y9ov=PwMEhRPDxd*^Ri0^{P+&_l2}bsW^YVC3cu5o`3(tp(n8cl za%pU9fnOH89Pn#+j2NPDMPue2FOR}&W@vhkMcLJDx&7L5`vDy$j3QZ<@+E`ScEI}* z)FLi1>L@ukRloARG72B#FX)C*oAK0vZ6SRc6F?jysY|E4JMzV~H58G9*kFmkX6SeO zZe;yk3L7}>LO=w0%Gv-wein_zf3$6VJXE1toW)rz4YTNno;j-dRO#0KkUjK=#Vf2B z^r+|W$>{civ-s@`_-!k8X4wri0`(Edk%xvO56#%XdoxF#D%+-S-#Y3K-zXX%7RyZL zRnW$MXZe>~`JwZGfmse!ili#l3F;$YJ~`x<&=}HBcwvc4%(JQPC#-oebtHv9yPA2Y zQR33bV*RXPhppHTJ%9f_xyY?OzZ5&aG>^i~LFMv*20Z61n$HFKP8b9HW7 zZ=LHrjSX-26;1B%&}DlS*}^$AwmYl3VmxXy-TFn`@a+UMPA<7oF^_R{W#~TWf)SfKbROuyeGBla+?$i4PToAU+pLe=TfB1`>BNq# zdN6ejm_HOqa>NQ!f5VG@`fDbL*AkTB+Kj7nhwi%$#{^Z&|#mZ3E!xi%=(r>)7mW>EA}QYxfv$+Y)rQAJoxoA zn_=hGs`oDpwk_Vitngk;aXt0-?6<%4nYp7}^2syF$LA<)#}IGq_(>jh*e1_~Ar4BF zYMGa6T}tbi!~^t%BpQG9%8 z!)A7nM4FK2f|H!ukMG5Pd@q*51&zuV)hwH_4C?!m8VvNH9E1&9^?mV$c4)Iu~B#(JEH8o?m?%)ITKY^+_Zi0Y?Z2 z0saZB$c7PjdE}QJkzfBmitxx8n3rSIbFG6T_U40mMa0Dkt0a_k#fNK!^sBspUD@t zyx4gU{Je|_AQh@%3#Q5!PNj9d3DM`0A&>Fs&qIT2hfzdsi=*G{6q9yv9y_6fM-o0i zk{#e!HN(ETH+)u0$R9fnrLFoD@dIw92*eK-BbM6AW+S`05A6o?ifE32>ot~*d;3eD z#}wgWEIdgXZCcbSk7y-HTp*1ToJA_iA`UdCpZcD{&kt>~PC?8VJBismtR|!%fPlYl zmQcdL5)$hbX$IOh{75L2{4b}lTu zN3>TL@pi>qmO!GSg^6p3a4Ezg!yN9l<0M%tPfw@tnkB~vCU5X)l;6C+wFVuZ93IH-ebl_Nk=!mU@YZL|AOFKFqrcL^Ea0AU=#%J zfc-S;=b*dbN_}v{uwcQdE%}HeaPXARu5R9vS~y-wZdw~1^Mi=xQAQ7;t|JUta3-qt zOeBPFBE#fo!XS&D9_Q(v!`A>^K)JW&j`0#?tUT%V|e8!kPlL7C3ea6g>&)o8;&aa=P$eBeE zyn#6)lyR4V`M*i4fc~1=*}C1X2K0T|5DM$s$Usx<+e>64AIe5PH0vAw&FZ=ccwXZ! zyo|a);k!=;TB?h;mWOa{qbR(6$zs7(Er|aM`&}!d2zI+SfLNWX5I+mVe@hbJ{ek(1 zkiQ)bD+INOMY~=UzA`x+=r0o>813qMW{1?I{cSr^{(fVy`G_cbfHA zgB8P0o(;{rFtE&qzvwjldM*6jJQN?MRAFn*aMs+V2wI-vzX-bvUy}n~lLIJY#(R!o zf#Viks;hQJGvK56A+G>(VkHq5$_};x{XEwPNx(fS4q_wk^fZjfs^5G1{-Qz)P>V6(d8;ibL3(x)2rW>@P zE=E^JVdowxYht!I$^)10k82TA#JV9VRI8W9Z|$mR%jg7t1`Iqq!dgE3!eZ;?bN(hR(yw3yn~O{#kUdkj;HA52{b_@Nv{I!8|G6SEcaDL6@_2RP||*oNVqi}0tH zNx}gkjF3m`ca#)9oHifm`O>`JEU)2fz3G+yCRN@sP1f7Uw``7|wr)>g1<-Tyc=aN; z(bK7}c)Fb~7mTJxR-?|cIPBYzSA15i>ClOiI>C1R<~QF?#P--WbivEgV2ioPRb;&CoJk(>-c&==caYBM9^Id{Oe z$-~dEV18s}2?L{5!UdEO1@0dl8wsO~n3v)K>vjobE`}h8bR~H73(CsQgg06?c?0O% zUl;5u|N2f)*((U~ejq4mk1?n`H4=WG#34wUD~JfFG&7&5%epD!(B9x}>1dDYgnHg* zel}HH#X;#Ny;VK9gcW;LMrt4t#Kh1x73d!wtT!8Alo{~^=+qB*`?Y&R``;Cinv2*8 zSuIJ)7FBOhxpV*cN@c%G`%homLScK(Ux{xz<0@Bu@cZPif2NJ&+Ow|>>2T<{)~rkW z^J(M!(H-Nq>K*tmQ5W(Lw^8`briK-x6DZuA7}qkUf!6glXELwqDSY9y4f*aP6d`WU zf+b>F*Yp02-^5`QF{HH%vgCy27W^H#)LgTWqONkltPg$|@^}Q2gD`@;-uw>e}a}@5L*0k)n zlEUiRGGW98_P>N`eX^It#qAC@7q#i+QjY(^R+8|E zWLYp`E8X2wHyoT-f`Amv_Zh6+*T#QSZ8k;ktV6qDw@L5i{NWn{@?}ySPm=nH(nG+mI=L|P{P0z zv92X6?@Shj@0@a2P&=L?c!RQ0IhRs1Fb|TCrtlRfGHT#_s;Gv8bS#Om;la|S3Hq5% zt@1|Cf^n?J`5?SKZbjemdLx)~&yaF#6(HSP; zf1>)S_vDY4>Mfd@a34RaefQ?&1|9gElg+GUti>DwC4cA$fDygEdo@s^mZG5K|ar)CG+syce z-k@?=hq=7BZqN$Wax)%y(7c8l<}DsP>?q54l-3SQD1csW^lp|fk}KqLT7PB^y7CX1 zRln=or}4+`1O9CA#j$W3uE`x$anA_$r_2R$&1Kd#7q?~{0Qqu?kneSGzDV}FNcN+M zz>qm!B+O>$clk`z?FVKeIGdR=Uf{$E`+a@U-E1L(nZ2m{I!!$9Ii4NUM4DuL4njkA z?YM96AHIA9=!4OE(HwJ0R>a2TlJKu|$ zarA6O(T!FQHsRmnrjBYck862mF|1sAETLc#@Zs~pXb!EfnNv{X zIBV6ILBVs04gYELiT?k6Vl9qnCT9lM(zUc+Fly||AGR)V;U`9H zJF<2dWqg?EVIMx@#;)AC>2~e6sCuUrSo1(XgO6qlQJW4%zqHJ2++sXY_Targ*PBgf zy<|IELKq4Fovd$1m5=<|8vo=(= z1~w`sPKU%#`?Hdhyo%mUixiMoBjnYXP9_C?nH2P;4eRsgIoBr_sTtI#sFiuCEVYN9+;u91P;(!^$Q)-` z>W#lZUO=Np+;s(}ZwA}4{wU8jrq}kHDD;Rls7ALkM|D7W`T$u<=$kc0<@rC+%I`zFl)V4tugM6vJV30AFP(ofWg&q?Kj9`Wl z%rHvk-bYiohUYKx1$iHMDHXDTGGV_zn0kG|R8m7Q!>On+yZpf4c?aI4n^k94b?aAk zP!bz!x6M18%z~g~h+RwO8~w$kzgUaUAJQxeXx7VKic8)oO0;O|)UiB|vFE}8KC)ybI3OBX+~gGr!poQ}~y(V&Do12^7o*UGzQT3R}P zqjGp*Db$`XDP>n|@#f`lVS3Q`_))LowRv69NU6Wjnh~*N;+Do767vm%>bQ1&UiJ92 z>jnm;xnht|Vwnz|^57TK>|-FmU}@gUJW3rf`eD?u0vGr*ymP@F6UJJ=Am94uU64J^r=MKFe*y`O_mA!Ucbae=$uwbC7)*}R} zUe&PF(&-(!Bd@jB$_GzAZv47~<@3zuy-hj(QrnwNJ*BFa1(R2JoZp_mXnZecinA!E zi+VmJfiB6f^_X_|>UAP_>-*hzJR!T{Nm)#I>S0~p?FYfPJ$8}mSHgamBIoLqWiwM) z<@Gw{TT{u~U1>VixUaGg^@a=z(Es>Vg%)KD>tH<1EmWslc5WE)tx?_eE!x$GZO%KV z-tl$%P9kg7!qv}Pz9`C#1%KjnIm51}3_B~*sYW&lMmF8kY9t-KCD0~HJxb*Fqq z)y407-`0;%ZA=Q^m=tD2?I11j)|BtI|NV^0jq?X@^zEaQjk?q}YGs>E{}Sr=vUQ*t zz0lBo;fFiLnq4LDca^-SFcD~G% zSfuYbg|Zy4!#R788Dv#k-&JK7nRCn=17Y3u*A7BEt(`hFkmvwwdv?TyFeUD5^NS63W* zvNERnuStKmk!4vP2mFVOYDk{Af7ma7pHIP;JR4I|>oaogWck3F>1XoRkJ0Y);q{LA zVQ%~8?)J@tXaRmbF(g%dCiN%Oxx>dyp(2d?COU!aQP^Tf+58BXm^a`0z!6Ms; z=LVUV4dQS;umbkqIh=}ovSxW*@bbD~A}`UaCDE&8tG>G7W_85P4d&ft@w>~!|JDAJ z1gOKbu}HL)IjWU8ip(ea3L%ydNB{9h@YK1?ObCLsnt7eok}CtKZ_Lf0;<_-C86fS`7QZ6al%VvExu!8N|H5PV)`$c>*Qx2_x1!UUP* z$^fH!ovQ}1v5HmUi_@JBNug%-i3W%zG^Ta+Z3lJkvTnhT5KBnrlc{2GJT3|-03|o_ zg99=k2-2$uS+DfW%%bqrm=Itm(N@oW?PYTabs`k!{7$09#?KhXgds|e)HEMh$k3{W z-L!AFe%4`Qhivcp{%5iv;CM>?%(-}aV!x?2A831O!=29!&c1~?fq(ey5N7SqI`FBh zA;M>8Ug>2~&j#ly_xc-AYrwS!ob8)W+vHgn9j%_p2K-I-SJ57|q}0Yr;EJM*1=qwI zS5&d|b7>gqd^No(&-LNN4lkQFmdg@7D8F$)<9aYXwO^w?etV?n_=;`=`b~yoCK zv-1F73hwk266(T6b~Vs-SVjkTGHbP{*m_OsbZF6C=IXhXI!YN76*VLRF_PPOf`}PS z8?lzv52k%`SxCo&plKP-Es8ybN1HP4*i}cZT}_)|>js;Lkcg&9O}kBpjOx&0&1vSl znMP7$gN4=QiCRs>)#5Lvib%Aksb#_5zHZ$$|8R;#R~ z--jYnUYaWMXMsLTA4#obJ%wdVS|?rtc(%tR8_WH*sX@*Dqy%vIvLfxptr;}*uo31bP=78ai*hNy4AVIhGu_O290J`dNerumEj8?-0K zA#pl?hy%jL{?U1vLh%kk}p=l2NvW?mUynn!r<5{~><53Up8c~}a-E~Wh>+>500 z!RKK$=+uyREA(-PUM;yY2Nqljun>JTt$j3i zZEK;vccH$uRQ6l**0<);HAbd@&lEHk=Jj7F>c8;h=1h9@6MCA}kO{Gb#Q7@CTG!t= zZrTdsQV7l3L4bHIWcx&@+~aU68;tqq4Ki?@;a}?4g6n3={{8(3ZI-((cZ^oajD-Ai z8q%!^op5Gd3zZJ^W@f3Y6duvZ9s^R)Tv`xLQ@@pD0M2;OM15|1xsWF=gFiRY`>$!v>3QQQquO} zV{Ov*s!A=M$lOPaNZE_NJT(2|sp%wI!w;+O-D1oaL1FRM*GvV4(7VX3@~`5qca@zu5?xThokGOF4QH)MamhF^)~&j;xZ2qiA-RGSOC`SykX)%Ys1aN2z&$k7@_N4oHc16mhiOZoECLDBsXS`pfHFJ*~_9gVPKtn?nhw(jf`P7 zPo1hWL~`woAEB-ndTxg!2ssU>wR$INF(x1KPmR(lhjBgE8+U6}zxMm=ypXFcAbKZ5 z#~x8?^Wc&J%>`Py(~vW@l#@6tT8z=~Cbi48)nN}ki9?>X z>$boTFof2@Wujx4BYSc*PPLnmKjCrao2s=?7;)$K$<^7en_G85yOzwNC+*(U^y;Z z)_|b$`mb3+;kTNKEhB;l(^qDuIFuea(C)V`W5(l|Y4FROX63K*LO++fiZuAg`T{+VI=8ll_{4VpXSu& zYGpJF=|8M*VV=`r-R_ZO$_qGRe_(lygZJ^BD=7re`A?eztcr$PUAuqiLn)p0)~k`D zjal%lJf|*NCr$b>boq*+t?3O5QzF!di9+rOND93Or z8;Cu)LqY9)Pyb`!u*AK!` z2QP4NaLbP~cB*QO~ zp~cK@&Nf(|fS;;U{}?g8p~IoYoz@FE&U$CYJ%88O9R`W8mOB1zSGOKJmx;TZC~-NqbfOt*pOs z*T)i9z5252nxhHC zD2N#bacp%sVjGIoz{$p$UOUsAj_S;%O-CipE-EXw59o_Cr7s(KFyOGnA}{{=^_R=a zsq{JPu5>^`t&+XyvEK!2arUl_H&SPp>k48HIckp1x91UWww7FVm~wue#!J0uwWaUt zoztGsWL12deEm(vFZRq}560il_h!|GPK!k8G_Ad+V=z-)TB+Z%9UaY*GD*-=BUFCJ zB>!rBU-+hjmP^tOb8SBWepjG(7i=ARRXm!Gy71X@@c;b zd!1b+1v0$p;|zu&YiPR$hQ^KQUt zoeH^5HJZEe+u4is^7GN67B5JzT3Wnu#Ft6>3_P0SS1+;UAJ)o7J#8|k-Hzco$J2%R zUwiyDWJRYb^VHkWO|e;e`R>_?zmLe$OQ@?cgLX^IicJB7>N7g^x$STIrZz3ZknR+gdR1XQe`qz}vGTZLx z%nn0>Ruw)`(!owL<*%AMbrs&Y5j}xB4^N$7$dh%y*yJ$lR6`&cO24JEbl;u*Yf6Q# zfXm;A{gBq6eDUry{&Aqb019cjJX=I8Ly5hTVjo93Uk zX*J`bMviYQ0r{D5&_bYLg(^=EEdq5$5SJHcR5|Vq`8~Hch50tOAf5YZ)!6<^z8aWs zK;eg>hgaRHmSFdO!Jhw8rE%C{7w-B^@m@Rq{*0*yaB*8`L1(ZDhP+s{q~BxQY`=EU zZ+hvP<5AnkP1^n(w^f35LzhGM4F||(b-)MdsT)VDl;`k|=kSjt#&5R;hDT~KczyA! zyP!YbAAw+`DlhoiUteAwZB#z*Fcx%n858MR#?@xUZ&H`b_3neHeEsTnefW4 zZd~8$?4B9FJuANV*T3^+ocFeO43{OM)OW?18Zlig9kz6b#92;Yo_sOQ5*hM?CemxC zwhAZ`=189;hPuDFGgigP9baZ$$}(! zkqu&7RFdv#qk9PnbrNjnu}oH}tlPniY|^4>CzD2A+-a2`e@eH$?o#0Sdl0Eu)wX{UpT;-DZKzfxJDNjA3ELJ=7oerN3I*c0DS$yld zL3VMfDAg;MP}|36@x~|Xl$^LPZ#7!W@%8|(6Pw|3)#qVe!BwtuG{z&@@yWG0cflAl zoaUtPz;K%1Zqv(y5t@IK{*S%?U)lfv{QrNq|Nr_2BvR9>*pL+)$)fKqCQv9mi5g_F$QCCryS*-!M74%B^AAf5n$2g1Er?_RJvM}9 z1si2&m6gW93U|K<4YN1q-kM+jyz3`j!GgfCr8^maVPYyYr!J%Q_5M6xI7{qQsh8U#Vm zTXnl#(_XcyT;@nw;Yh1FjVkF-H5F>Y-hKVy<%v*Vj8nts&|#Z#@LD>>gzY`>(KP&= zUNbat`sSGx#7l7XY<_8S5JG2;+kIfQ+hGWwqAymQ# zehF8^fDygw>gj1a5)YGDpdYOh2kVtX-t|Bo0%kSlxo9?-8n@AJ@N zG0hS>W1~##YNF@Ty3{I9x?aNM=2K{3W_H=2i?qV!qB|@Zfzi@0_Pt@N6MGRD#7As!SfTn4TffUaVoJSfvCJA#L`c2AZ}r*- z_y%mowlLpkNoSw#*e`KD#-DIA-j%|SJ!hNC#Nid+$u9MCeSGn;G~4T^yWT(DCDEG5 z0$#ODn`7&H&&Iq*X}Cffe$rg25quvzXqHhnDn>BMt$)R2$HRy=jDR|7 zcX;2!kS*LlK29|+J+hH8w3YE3*PaFULv{WEd-d+B>UMV>6AiZ$iWoR>i|`7rNSeBh zZYELZ!h$Q;d_ev-*d`E?sQ7R~O;6Q-`3U!g} z%Qz@#q+y-pq;yW7TrQ~@Ffs26OL9hgu#AQL37?UUc{SYSa$O>j<2}i|#)kyb2|p-3 zX;92ftJsoJuf-aDoSS|)qn&MIiMYMP@%`Z2Ve$1t*DUcQh3vbe?{6V>dJW{61-}h=wY416N zlmO)$ca7Ky*Yv}#;Y*F-H4aHea~+7M|JCoaRh9h)d-1o*-Cvaiv-CML*DV~dPU7aZ z+F_1P9ct$c&vo}-h0%PGPIY@g`ry~|3ABy{@c{2Zn@navSydV)?DXSyY z676*^d1!RXbv$rfNDd7b{i8SdfzSlh?qEiWE3!a&UK5|taGU!>we`B(U*4$349qs< z2OMEIXV9C$b-7%_^_c-2PQ;Nvev-QI$s4t|LajdUf5$R@Q;i>a!f*D6y4k~px&0#QQ2MEXw_kX2<@MoWko+{J3AgZbinU} zgtSTHxaEL^v<^#+kAfN{Ce52$Zy+J0oZ+tfDwOM+0{>n3pRsr5?8MQdxtaJvi{#Cyk*k_K76{nMv>zB?d z@OSekDL78Aj(AU}Rh8>8*URr+t~>YeHO!FYx?lrpMi1Bdd>2TFl0s5rLW*(G>X4N* zOrX9&iM(Kn#Ncq6JJ@2BoA$prI{GPr*_jAkFE%L8>#{AoYQg?VTqlhDL2<;s;>hO7 z26Vr(PjH&EN26{6_P-E6eqwS$-A7E62o2ak4lrS(zqmU_@?iKe9y74=<&EQA=Q4Vlvk-_yh$3i<4UDNT!4bm}p? zHE-T(+BTEMHM}w#@ShYfc1mo!B;dIaiC{6%7ZbRFHOuP1o}1|`2RcV&{dtpF=8BL+ z%m#c&K1akCQ>dAPGsxYKVpwFZkEh^x0%O*RX_#SDJiO5)Z3BI40*(drMM=*gfCGiqQ;BdK zty4W?3DdkX-F;|4M^UxCR+1VXeGcag3O~sUESi=yYB6(svJcLw0s*F?*tMf~(~)U} zra_RV4dGC^^8^e!1R>D*G4VDwV#scv{-y`;bdz`%u+C%$SHWE&kR|=;jD8QICC_tC z)Noxc7dg2|$RQx;A+e4M1$t)kNl_PHozEjMkiX!@835ndf0h;S-GgJ`I7$)~sok_w zVnC5Ae}8@gKb7Yke>fBSgdg>7WC)tI}61V$}=Fq=3;G|zv zJN=SUFS)zwVZ}x_Z{Fq~ZkbH;L%e^92k{AJg)6jDu|fNOPruI;T3==3&Z;)ZBPqd% zIst`U4S^-jbS*kNZi)5eQnx-DmlaHD%6W}n1e5{27Y6N*n5DNC^;(qNORtfxn7%X7 zQKY{7YR*JoKT@;lbS0NnMCDrc>^*jLJK&PjRGH1J*fb@a6?0FE7F_7+<;?pr*v8o` zWWOznxdAWk3>~{MZOWxnQ@T%Sl^qMOGr6=b*Cq(3``*)PJT})5H#$o+B6VZM=O+|; zXx5yAk4_r%HZEFLc5)Gc>cR|6kysbEoHeJFHRmsaRSM?Es5rAkQ+9JBiTQ`e)Sr(u zeRHf?d@Rz7L`!$}pAp0{E5|hn#{G0kt9hfm^Q8BYXZTq9>BOq9FX9tRUzs-#-R`y% zB_GRW?);pSjDlFnkSBi!j?g_wHA@$~h0E4OvJc}++W?u#ls~2?=G)Y{dUeaK$5*d4 znR4&E^tpZ42h@k=6R}yubAnk5v4xFzyIqHD>cOu=kx(x#WY@S(xZYlNjYW~lIUG8w zoj}Ujh~MNg1h)^w)-5@Oi`&5b>*ezYN)5AC0zE=D*9M#O?CX_V)(;~!Av5y0jcI0d zL&WtB2i_A{47V2-4(^tI^~cw)Pt))@Q2P`nq^HIK`cY{2gs4s2E}e3q zeg5$E2efFx-~ppn95$e7nRot*I6-2x35F4qNe;?yH|T(V3xk4#A7_vG^MUJaO)IG^ zjYKL~ZG(fxITj*C*D<8>`=!hYMe>OsA58!Jz=Sq#?%pqP8FL1IzBl}HAUHpV%jJ|{ z7q*ASQMG7)>Yo!!#+)^^(}eBj<4;6OIwUhTJzE z;;XQ|4{ip$zp$!gSv=h%ra&Jw;#?%yrBPiY#wQbIS{EfAGA7tkXS%I z=yS;@3TN^m7MJ-Sd;kA!|DW5|_Zjc`K?3E*MDjRu5=#U@IkW2p2 zMW^lWzN84qMbMHHRf*%O8zN-yWT=jjl)Mz1%vt=`r9+L5a0OqY7biPCRh9 z>pPR`A-$@-A2cQ$aA#n^jnQfjdePd`z&_W44hm9L8acPaF%57hf{9wOLEe3KnqP9w zGeX3JMf5~kX&C0*^!!KMlg(!a)H13y=kB~i=sRxCwM`&0<~kh`hYv*H90-6_jf%|K zSqKv%P;b~01BndM9!GALmzdJjR2IXtND}4Mwp6haitzR-7P18<)zGy(fV*Ub)w3uTM4{IHAM{xZR6wr(J|q{2J}Uu^Uc?Xf5+d^W6U(a4BJryzx(q6?g{u*-h>@%u1G~* z0!|(*PO2AcH8rPr4v7QsuMl52+$j4T0l`QU(5K+=09Wpv2b6iyN@=8mOWlj}^~zjM zkp#&yVt;(vn*FAao7YUi;YKOEC@CZt@RIArT!^iemEB0&Qci-n3}P0DDCzR>R3Tdr z_TMx8Ilgz(cV=cgQu=fdW9e7zRrT97F4xD)+9^fucri7l5BY=_wagFRiHGwh@AeA; zb;gNwOc>xHBS|oW#607C{o~?D%sb7;1OHAsP zbN|gx`G*^Fidwyz6TK+S zjv1NG^W|3658dZ~yii1<$Vl&7)jKPtTYYcZH{aZ%`e*<6Cl+59nwkgiz{Skam3hIK z7sNER_Rg%r5nCBj)2Njv_G#hzM389ZwH;1aVo~M3UY?yglhOp-tn`~1YE}gL_I=Ft zBs4abxYOZn!rm0%e{2N)6kkO9b3PLB6g;~vqzrv~;N#0XA*g39@Q0b-Dwp7{$GA(k zcTQ-hI7tw^`T~iiz)5giZ|vo$R;E`iRERleJUX@ZbJ4h^^^4a8FRnzt z!bZQ#|3E2b#rEnxC?in&E@)vGRjkOdUS${V1H2$%nRqOTdDavBK`{h2AMothJJHL3 zd~7eBV!_+(A3^=;->gKC7cNmA@^Lm!b&7G09n>q9x?f9gkg6ev71FN=uzre?V8np- zy~myI3wS>)ga^lx@+&VBw!UP5`zxHs7aB3VLZ#eT4S0FsT>m&y?Rg_Fb6X~X@?r6s zFpB~GtD!spr$;2_jpz|pk}3CJ{VI%x!+3DGHcu-C1d5%?f9CV8Uw8ceeU}6!i#(#! zYQ7IIkx&2g!HLgLDNV%eENZ|n#{AGP?gtLNPpPv`WwmZ_nAIB&T;E`grck6UrFnhn z#x$?v4<;XfK&cyM^nD2O_o4o?U!rW8hR!4?}!V;X0RnESoriZBNZc5N%<0a=D9#@Pqp0M0;c^cr* zC6>h+v~pWxn(HqPi7~>H$|`k51@KLWYaD{V6A(-`0a*)%ENh-$7f&qR01bah4!6pK zpE{0=NhUCpj!(lvy{hM|>t&<42t4cJA5ixr@uqUzhda+TSU1*ooz=THZ=3^0Z zCWLr!orLCJUY3%MrJd#Q|87ib%%L2oL!wpE!X#(;zq%O&q*dBjNU8tq|M&y{xAA{M zb#;=}R+$d$7>6kkS!ALCaiRgKlv*27jKzyA>RqAB>w;wZ{s5-^_WdI@QNt0D&7P^ zSY8E*)eB7CvGXnJBVK8_lW7u5hG*6fG8-{xe4a<-q_a4K$7k^P7Ujg#8p>kAEb1e-u6Hyykf_tKd&Z7^CUpNN zr>#;)qFsi9r4@4v)sBo~uTOD6f5%vu!?9^xAK)V%(4Pc|12w@`bys=!o{}pe#Qda? zR4SxF`6k=-9O$S~EHO)3Q8P~B4z(Crmj>e*)byeP);i&g@)u*EhOVw4^6+5jUo z=nLUPT*#n`nEeL+c@q8tRA)o}mV#05|E5z5v9F-MyC6>G4yDWGJpO4diERsu@(vOi zm6F+xxls(aPKlirr`1SSl#lhY5|}SvL<@o`#e)z@&FLNz)kZhWZVDk(rI45^Pcmb3 zJ6JzmiFNCf+gY4KH}5uuM_?vC%!7Ja3!ZHH>B*Mg-S-DAV3-QlPC5JAu`Uu_uuZhQ zPI56*mOM-Ljj>RcdPOEf${#8(Zl7{qJH?DEC^&x0M+1*t9~00ls?hxM;`8$t(@1o| zw+%~m>ww-AUu=U(j2UkC4-W_W0c@IuQ0Rk@%Yr7bU#W*}FogXL{2gX(5k9Z7UTGUj zeGS^>1ixBxVNo7D@htH*gAY+su|=MI(J{KJe4}R9_DP2xOa}9WY>VNU3Pwgf7&q+! z@Hb*90fRzcIZV+pBi#Co2*D@ORX
        4QvMdWT71voAcrlS#b+lV4V_sLiQ4c>&=2` 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 z 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 literal 0 HcmV?d00001 diff --git a/interface/resources/meshes/mannequin/lambert1_Roughness.ktx b/interface/resources/meshes/mannequin/lambert1_Roughness.ktx new file mode 100755 index 0000000000000000000000000000000000000000..fe9b42a54b818f25e4156022780b8d77605703f1 GIT binary patch literal 699260 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

        L%5&fBP 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�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 J?-&6!G$Q?rocCdk+6+z6>8WAuVo-)=e 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

        !v|T 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�-xfMAbDVVQ6Ok z_x~p*Y4o!^KImY=Vq(^WJYP)dqeFzrYf6r1w_aJUP7VpvqgQPG2jdaJw1L+XGS;UD zh#k)iW%2>zl3`tM&2_j?us&UyfZ>FQ;y34_DWm=|Q+iy@)u zALc4xNO#e5NF|3a>ZTkXpOtdXKltW&C|XF-l#PcQ0AiwDD+n1|3W-h)rcQ2df*`3m zv1FnEqfD>;()Icn&;MWIoB#Gc(ICEdhrAJ?St_7}xJ(J7Ab>a>G9@JR&sME?=PDxW zsGD;vdc_T=fkU)} zVUskICcGzM-b#9s#Mhye)b30bn26AtR{>k0Ct`B5liq9VV{*2oo1yH@KnP1^pqCwa zOu=q76=u^lp`6w>?TMk>Fn;v(6{~PfsAR$MZ~AC%r~rDY)6B{Wru=N0VHP{FNggod zYhl16y;GaL8)ETT8;^f*`*@j6&o7UN4-{}nRLW%Piu-bsn{8-O9uy{#+g&~#dlKa= zt$L}MtHh|32MygplR_F1sN47943F{qJhM}8c0sfqcZErXHVSZFOk3~!j9{J%FS%^` zuMpAOi&?jfFTnIv{kL{aJ#5pj&fsYe{b&GrIvl5h%AVzEn%{;-hH z6wl6e0>Y^`p7KZA%_6X>RYV*P7b$=}S6iBoONEcKnr3EZWV~?G@mZ+844&GokHg_Y zL`ywZSk<@*0mZ4tIGvVDW1nB$=@QLe3CoW;1DcSaviO3AlLHYT_@0#;sggqq(+fBp zPEP#uMq`Xo97_BBafVK76y~GlHd?xqK+2L;d?!GIP<{pQFaEdh%3W}{=0p^_Q0vzW z6$%L1%k}heI01d%LjuwC0!V*6p6CQNdH1z8o~xySXvuU5#fL)>BJ(82p9<;t_ecDWKN3-1 z6++9-Sjag$IM9yS%XqKxc;3C$)dZa3gC#sU~~vXNS$*(c3*EnI5D1~BVGqZO!k?0a4 z8ETD>mMHZ5FVwmq{tmTk0_0CvUZ3MFU6n>m@>ptN(xp-^?cu!>-~ajxW);5ExK+>Q zQ5`C@?rZyD>ZAVm9({+z_+8^%{0JN=z`tvL{Qmzi_ugSmWbNPhB*8*QKvZm~5o{BoyaAjVd@v08ceXg_&j`o%g6|= z{^9sagmrY>Vz%c+A;&wSibf{B!f5M_ct*9PfKk=7Ee3Fx613uhOLSN>7JTY1$=G?A#8t`$^vetCl zUD0tP_}KLRv>9P4wl`~8Rj)uwt;bC+oHkB_-f8;r_Jf~QthBig6(N^o?4QMpCE!{i zlx%W-#+QNAlBUwx+-;<05ObR%u z|0RSMtevd$9k-G<=Utie>6hcs@RB84H=JiEIK+lTy<@D5=>+Ka6JsS@XRBQIoBkTE zD+Nv7^Gd}Xf2tv05+H_hJS5Itmt>ri7X&jhAE~iKjpLEzDm7<=T?F8hsOIRk#@ZmN z5~|@g69S&dSOg#Hen!5Op9J4a!#FZd6tqP@8q^Bw^bbBXTkAy2-`Ax1MMMdI`e;0I zE;CYaw=p-x1gW9b3#%sDE|oIxa?z}ju_DgKSxX-k>gCu^AG70s+AW4)Z`?#LdogeM z<{Q4e^mz?hcr|51$p+h_#x#vn?5l^?~IDCdo!`)NcYA})*O zEESP`iXU9Q`~?j&%&9DC3=vRVVmFQH-6UtMSuR~3SEUv(c)_fwFdgrGm&5!vS_IoL z=S|vle>GFaEqgkCJCFK0#clgByofc?LywiYt1!KQ+`Qn60$X4p6dNL?SP7vq-g_NN zpYFBmo=q!{s(;*kbowk=P-^s*j)W@_+^>C8$=w7cCCb|?a(W0FKF^8Z>qOu|&+?qC zo$wgP+84lMfEwjR;yrcv7--`{&lz0jSO_u_^|rtgcGbZLdV9SN?2Q`i^^OoTR-2z> z5JvOJ_dv+BW3PacdhFhn+lc~dS~PAyc0*1wms!tv5Q+u05~(TKMHtoncu#9moQN`> z$Z2B*@MuSYQvc6OWIW)N^K9`I1@F<%IM3cR8Lxv@p||grAwXefVfsET>e^Ztx4u<^ z6j@I>u}PwUuaxDt3(n}UYq6yd_nG9JiZZ9Xloe|J{$uw0+z2|sx7}kmaE`07&N<5* z+Y8m)q8UxKemiyCyRVdy4b@VLp8nBjvR6={fxlW>)q$>4h(^Ifo4B8DN_-0BHo(7=8A*hB7{H-7 z-XQ(#*o;tF+Ip7WUrl+K6z`Rj7%4o}I!3dcqvM}#uCH-VQ&3avzX=>>@@UuO7n8@o z5(K})Tn5^BJi5o`$tSkzHQb!$jAOm2YW|f6Ykqp>6alBssmnk82BDug6OwRx0H)9E zh$Yp1L}_nXj*r^;0w|{)Dxg3z-uoZi-)AZm7%gpoOR=w*Hm5YxeMf^3eBe6f>iAeK zr}w_?KyR4>w%2j?7sks3x$P#L4xeMx~%VDP?wADyG(*YzfaKXZ!W%`jaxPoIyGT4tpiPy1rw z6KkzIoP+|_3m=Epw$n0JnrEzW)k-lZ)rw^|mZRhp(L>s&>o}YtJ~?5vHh&kEnrPvG z&TJk%4<#QnAP-zCdDOBieT(UVODH)y>s*7i4xJuYy*>SO6r(<*{|K)Y4M`Eqx}n;} z_8TiT94e^9m@^e;r%YHbqnF-P{Pc31fStrXHY?3R#y{ocOdgw{Kw1v>L}u*eF@F4W z>$g!c63~67yYi}93A>=PygHBYNK-n?_XCs&=7&9+qhbe*AggMBt?egX=*hs185342 zD6QMdTkJ~tjH5Axhgi0n6SLaIckD8?XgcBR%g}l;%W!;i{>=-#kVb#LaU{s+7!eMH zKZk`{k)J3Xj`93or|jWWN@InctAy_`-g3F@)RwoZ>($36K7ayKDfULHM8IT_eNq-&P;eG>*~E=eD)?<& z(up%Ik>ZC~;$$gb%E%`S6wwD@+WavalFg@KX6(`ab9=QIC%{*6e>_#jTlRL`Bb|d< z@GPurBCkrsQ96EdvcHNkk5X)H%cu&dmQbyAlOqsUt{23C#d|;XZaP&9QPtVJqE{Kh5!nWtsPLR6BI&XleLmZ zQo(quxYO4wl^plkuUf(@)$Gd&HpExeDy(i%CV&;I;SCE{)Zcg#&82F%Eh3!)C0fuwj++Aw)-J*>9Hn%jKK00}6C{D}qoUrHdXizIg@AXd(9jleZ zeZ3#&Xr~bv+CA?+rYiYPU5O5JGa~usPuK5s7HH5Gk+G-IOAR~8Gos%=5}^g$Y}c{t z#N0+ASVX`?&?q@S?coLyY42Z@Y{#ghVpHz_mMWqx z%XA4|jVieGnkEI!FA_Z}OAMTFM$MF+36H$=tDHKuIqq>xhLCMr%Uf8yM@C(Gb;@5? zt(2&&^mE06qY^B=o!0T%Plk9fljnC<@hOE~`SC~HB!PJEhXv#iG$2R5m)SEGjg{>P zSQ?V63-dTr-g>f}7gCjEI}q(CVm_&*rp?Nfz{?BHAv=22$V`lOAepOz?-lj^^^_cK z39_s{L5q2=Mb<|cS7Lb1=b*P@atw3)+N$KeEgEd@v+F6jg2m{M4;=LL=4kX!$CCH2 z|CTW0@kr`OP#Jo+M&IZ`ji3w)O$I+GK4h@bw6Cl*D)54OPm6>a4K9DvN;n6_V~Jne zRn^w9 z^8Jq7o5b3s=6COV6;Jq0jix3QB>#p}@#c?zk$m>H7^d0oY}f8mK$qla=HGXbgQmsG zqC;bpi0d56y^`BfIPlS&?qy~Ld@RX2vAamgXe*7&KNlyZtzEe5mym2R`Of9mNZU9C ziI-TTU+f?y-#L{({-|C+F_&dj9OtVb0}|3BY~?f47;ywUZz+3&G&bU3g*Iejai(5* zQ$#h)iI}IpgN5F`P~IYY$|X$?HPsV;$;e=4=HtBFi%2DAHRF{9+QBTBXV)Bn$4w*pV3XR79flz!j}8jLZq}eZjN3( ziY0;%d8do>B6VWl`P%^^Wl5-c!ArsX$53eeObrDm!a_(5b|j_{qsCXotO^*XU`>wM zbl{P%8ho!q*W@VF2w*q6m9!9Lp5J{XNn_?PnDhphKUSm6y=yZ)oAUXbe$15PO_HJ? zmbekwCJBr`x#=yZRm4gm_*V+aB9OYiDd%>Nid~8Ewya8*ar1(zZpEJwbMZQ0O@vv( zGZG;~HdV~$q@hOZW6NwoQ1mTXxeg}`!P^1=a9hUQOtkpFG6{5;m|_J) zpf6P)6NLo|&S}ghuG?MBF*tZTpY7%`lF~>k@YP6Yor&WoIl~Wo%%Zp&Rwy`YTHQQf z+NRf9wq4gGZshrXOuI z+?ubsubS-@yqj`uUgHa}!Jo z*0gMzXS20Vs+q8JG6NMcob8)*kDu_v^5?`px^V>yZv>Mk9t*}oq8)C0D`-aoca)7j zc@9lftQEdbv(hh>{#1#!Y$;bVk_e3+JFf8AgG+5(_$#I0RJ}2;wOl~mQM`V8Wwr=% zI^LJ?{E>ilkI*0gVSp3n-$s~A%;ZxyG)Q~flNMvk`N60o)~XU4dA9k=(#-2tmO(WK5_I-(rD38*6$J4vZdBBo!l2_S$< z<_9O#6KYnoj5fuFuoMYW^x9i$`;||-cMf@Pm?&dS^hHvRCd+uy@RrRZ3zeM6V9B>P z4q~=?I`Pp-Jsj34JWRZ55|ekeJMLo?#2~!4yT&rgW3gjV0akHOl(eJV>N)Ab0@|I& z1$V!U=J_8v^F-m;!S>aQCuZE=Aqe@gq&v;cQO%u4Ek67fRX~P6a|`Heq|niyt*6wN zD6plZi$DEXEC$D3ce+-KQ^6Zom(a zk1?;oFEtwE=jhUD$_fo?XtC~$xfughh6*N1Le!iWBY_L@Tpbu}y&}6FA0dPs%2PaR z)TpYZId3*a#ov%z005&^@M`tbQ}!hSR;6Q;3lR~p-MVBwgeHN-PPx_#1cD)d`~MYH zu>*5>9oOxn#PT&wO2}@Bvfy&l^R#k7_z$Huw=!A~#zLF>)|R*mnar->^@OraF{upZQD*&hUm(vI!!R zsPxgS5jY7wx6LMn2x%ZIzw{zADutcm2gghMvihxtRy^gpn$CeZZ!dsz4>( zy{`YtTa$$I`EvP)Hai8FoKSFth|_?Hk4-N?2PI_Ee_fh7Q%IS3d12>*6dC1M(w_8h zd3+GitqcrCl{Df52mS33aWG(&*|YJhGVIzMidXhQHS_WIhSI37B9`H9MsQ}d5`hGz z_>tv8TFIi)EFvTbzB9ODsoX{r(kJXE&fSIv&3utt1OVv5L+7AW0Ff~^ysz%Wwu!0n zcBcA^5XSnkwZG>qTS{5>_Ej?8mmA(bn;Nss3l2%(=JEtr*&#~<%im{Lizx@4z=r;d zLZ%bBW{uVhrW|)#z9rcj1qm0+r$G)d9YnJ7MnW9wj5<%wu5o-Sf5Md}5=BdPZHxO5 zZ4)gSyUKbj5s0SWa}1;4|Ay((G1lV1OaYxc6Q0!A%nv(!b;ZjYdL{J4c}-onl^Q$5 z4W`WSl{513C-A@5@u-unecbC-pv+HXQ>`D4&wg`0U0|*j!Z$Q=c2trK-8bt~#+wKM ztP|XB42Xr9#*&8DXGKEz)r$=F+D#HJE+%fGe1(+bP*0fWYm^}y@cnquT8gCaA#Oz^B}SE zK2?XDHut#l=E>k|)8~iY*v6w0=Dw?6&;*9{thh+7ey9yJ>$Mt>@(rrQ_Fk<*Qm(>lTuY{3$n z$^>&Pr=--MrZ#HX8DrecCcTcTvnj-%hg49&hdEgb2KiuM_tb#~cdgj_YDV(B4Y;A1|c^(p!K6EkdJ6bQ;K7I_&oPY_tPE#6da#ko*ILTUmWS|m_>x* zq<x;2|4<*dKFC&?iQr2qh>{^9@_7Q1QS9j_M+HMT`8_-rGjFa1bT zRhNPxDfgl0c7F@PdOE-{9)O&ES|{}OcUUamZ4kU~)<@F}c5V3SZ&3Qhz2i+f97^w< zebF#l2hjoi38M!NW&C0XOroq%B6W;yk&T{G?uc6Jz|T(+hU@5(sHcN$%C#>vIK&fU zFJJ30A~%!IJw(}K(whbFNQj7ckpkKU*W0BBDxo{sIu7! zG7@q;gI{X|7?urY5+OO--expKh3eq=ec7|+Mk$st$`1elF*UDKRvrxr;f)^M zMk1sYU7KVspKMmi-WW`A1tu9>eaZ#^00mq-4`=j%RNQIR4tNhhC5R@J0iyvWcUR!O zw`T@K$cbzfbbzSkc}FJ%OvqA+^BQ~gW|La5PuEy^J6|sTEgQ-rLTcGDLmp%#s*tme zx12p76}(3OzsVnn;xCi(rUdLGL8?kuIbt^>9Mjkl* z7_mmod_KZH&%-(bEm5MSPX!#&t^L+TM*P|;ApXtNc={b8UzqRmv-O1gwBP52; z=C~Z`p0zQIsbk|0xY0Do^jRm{E8Ykxmn9spPmvmS$=!azhFMa`V3Tvgd`k=m+`een zIYkAYzU^7)U5|nj_x^xxSqsBMeih855G;Q&sD|k?IYuIr3T0aMkAPNxaIo*-AWY?T z5qTeplHinRC^s4s@zV_q$VgP6n{VhJcjzU|6dQ}HCV|J~o2xS(3Q$Y_)ku^e&fxM_ zy~{*`Ob?4jmN09lH#mDYK&&y}Csxn{B9x}Z1riXjH7zxpq}=y9rD?HJqk;?o4gfT~ zTFW*A6&%Q-4U9w{3&oa{KFk%Pc`v@p2c3`|ZIKgtwZhVlX1$NDw&)wE zWm|Xq-9Zir4CS%d4ITDVbbx?AG_I02(6MWNl$V${G%gx?c9dm89%^j>tPKEf;Ys@w zmUhU&-13ASCKgTBXc-@(bsMfjMk2~clbM!%HF3c7@9!xDH++>8JK=Fayzg zj1wRf49P))Ib01Pa*cA#r4`{x$^ZHTtkTB*cE@iZdnoTWOi?!Uad7Y_N0eQ+W@VZc zq+)l3HKfh$6M-tebWg%<4R&YXs@3E`#INK;#G*fXxuLDcGSfP65W}>e2;n{Dj7(P? z&IwRSr&*-u94r0&! z8*VPMH%nQ-cbrN?&V6sws6+hn!;9NF$D%nXI@B*rNK^#q?|BaYu8NMAyu>9S!bPVW zdah#uc#E7+_#ganht4rU|LntI`3d2q=N3E+>n|pAs6UgEg16`)n1yo!Mqt43b0G{F ztRO@5@Vr6{OeKP;M2s^;hu1;F_DaHgCE+zgc_=_bNwIH9v2Ovvq4Bw(b*2S3T<%aC z<$fR6YWV#`=ulfJ8RA=j4bfq_4*%cqdw}er`PG~en1x@B8fU3j0UFwu-Gg6t53*T9 z`he}z<~Y#iIIw8Z(7eNx`h9(z04jCpb2@cXHkh6b(uV40036y`@6cKAFf0fDkQ}Ur z>uw_c5WiCCQ2$~2pK-QSG{l!&Hbnp3U;peg)jyxBR72yaxI_F7zqbqt{;t=C|6eAx ztP=2l+Qa+xANs$|9{>P6paE&Z*F=+zjM^JBF*&qaO@rPOIW$kuB5Nxr0Hk8pzJTK` zC3q}0s>+oo4*Yg^@UJrip@BoT1`3QA;})^p4GgQ_G`R&gh0Pw46_-*FtVp2R%0h~M zf8$E-qmV4B%0N_w-tF1g*H@zkjox)eA4ttMMJvzQx5`&wLTm{KFI$Klhjt9K3fj8QLms3T|Lfealwiktvsm=CEo2?ef%XpZV@em0rv*MOn zais`BL>aM)B1bKIx6MILKe4;NFs)C)!TVTZIf-}(Gs8MiEd0)whnQcRI+JT8iue}! z8Ld>oS02`M?fwRbq}ZeY41h(o=)UvBh|pI*?6~rJC58>X4<8+!>M=UiLr9C=VT#>h zlClT;lpDKU)PWTj_SnT`!9jp+rS6mo2{pCheoe6--qXWW%N-niweiy^1xs%>>35ih zG5%kaj@kW++5IZxE?Yj1*DX@gJa&IvNM0mnoPLvkCdWMzc6RJBoO!6g8dlji`B=*t zwRYXu?mj+cECnEV{97v@#_oU82tJg@sLPT4tGkAE*nd!+$a(%%=XsliaI$VxvThW{ znP9+8FyJtj1+xnVAU4i&loSxKa%FW{^JgoV=>~$Y6JANH-|_h5nLy5>EOJ-c{I-CA zA^H6$^@SCOXDSZQ6jMbvm@3L-F{<0~`G*&QVou*)ZC~b8&U`-#!H+^fp+m;mo1AB% zw4n5?(dh<0bIY=zEm1)ds_DBgq88R#e3ma#hVJl8!E_?T@crj(%aE_8WC0YwQ)jEj zQoQHk=S65jYiIbRp@&3)HC?tfUA78nNcSoE=R^K@_r6;I)e^RRxoRil`zBeuB%MIt zWHZ*IR>w}+^|<;cGmmb0AFEpe+PyigmHJSa`swY)!R~P=WN~rIyfsJ>)kH*$8rF(k z;WXiIGTIj5jQ1Vx5Un^Hgf=rkMhgA}V53t}7v#7t?^z=ajZY;NruqMi|DcEnx0nbw zFhI6xtPbbKW_+K|LqK<&uyWd1XCX;|_xz!PNC}--p{JMGgXF>Pje~tt6{2Yd49X{} zLA-ZFRvDz?R((=_&3O5*9zgCKX^(XXlW_>qxYKPy8SGwK9$(xmrfzsC?aoGJ^aVYf zj#>v5fAy2&clmS`o0j(Sht@nf_c(@g@d4ya0HCCdE|;SBjFqwr95Bw z^P&7p$7gL*l2Zt?@Uw7muv;6x*GCD5#M_!M+cE`tVEL#uKMX1{=pzwMCH^P=WkE&P zH%)@yz=2bpC?kSS@F{4%sxJQ?MqRa7YHFtr<9?WGxf{DiZR{EqiRkd30J{{7Y_tM^ zLK7Blv;qwGO&G~&1-L&nA@q9N%h9il66AE;fyTPAV*1JHf8ytz5Yr>N+}k~^HQc30 zKxA6Kf|FHizyAlCn2hb%TR7?fAF+fG1|t8ve*Pb6k%n)bX;+st?mzMVpKYCDV#TJ3 zWw`&w|8t9vLE?dZ2W$HFOcgWT&-xdf4OcKHI8jGM>x8tVMFTPKj&TA28;iR}4}gqB zB-Q_a!oPxg_NWv*it#~bzX;bKu1Yw4nNu%hP8`NR54!3+@2c}WG_-5vvM*bf@@Y)% zC#Loj#@hI4$;STUYGI0FSBgWMjFC$Bv!Z(sg^WNIn8g=T zMp#MTV>~v^IKz{hN`$F{U4#W)IF#l*-J5oLv&2$^AQ6M#{!)MG!1l`2X;p-&LrK=xHuS1NZ@LSbhz-HS8b(a?`x8$XWP z$PG7NELR4)3284W93uFPNdoT?p?ySZ=ynDtlVPo(q!&~zd*C1uai-5SSV0PrZ)P6! zj;KRiYSJHx64hvW2Sb@!C*!0z=z!=#IkM4B`L>oOWlfyXfAWZ@oYvPHUzKYkX8m33 zp5^7F1?Lr)KcDka#41ms&9BADIe07ZFsDfZzkWQ(1~9?NRwj{?@z;sLcB0D!S6jDPjPKlUF9@osSLtang~H%XG5M=ckU z@=D$m-075%?skvg-R=4>{-M)tHl?*TQSfu`Cz10yhV8$MIcgPk+$yR}U|;TJTkfoa z6o+TFrUfhL#YwheUK z+(R20?arw=m2oTYBndTOk+(@#ou`10F(+O3AFJTh+wa$HJuQRBM1zv<{lc)VV)q!r)97G4;1Hz(1NMpp0Et z{9s+BgyG%bR@yM~U;Kktr@Xtl;T;+rv~^|B)|JEf=dcnAN5-d&jN!dpdgs-oJ5tuq zG!HBI(7*V%#5}cOPZ6?_0$s@dSpuU;UKjofTLKrUjnBS(lrm=AL|mUiYV6Lr(K}6% zQfBn!3@iUt8s1|cTG+QB4NZ3Y;_A2kJbKFZhn4zJ78w9ibd#3x$vt~r0@`p)8fdY1 zM3j~p4P|@8@xv;hl>v(#B;;%zCtz%Wgb&~;gf`r8JRoIu_D=qM>5Pnap|j<;%fE6c zr+haYF20}uuSd?x?N0{-SK_^54_88A#hLEK-5Ml3Y2=b5&*Ly@CEumoi6A6hC;6nN zg%8_(5e3T6^IhvK=lUl9M$2ebVAIy_#9=l{(Z-KY2ORqp!oco=Px=n6NECQ-%4!!S z%WU&;JfT_6ID$En{MU#>Jx&=TZJT8DLtVHDT{sCZ>i3u0-YH7X3sUbk>uND{pyP0H z{%r~JakdL_BwoXvr|$psR;q$LDFEOBsJ@@c+|r|D0ah7NW}_Hw8(g*jSf*A10Dzl8 zul*heI6+#uMIU$oTFJ|zCn+|7nh%iL=IyvGC2!m#UHfdj5;AN_H`vvpRF{R*TxfG7 zBwn{u;BsdX_&Vds>x=_JQu>=q>vwi=DgEgO>XA>walkPCm9(?L>sR^uo^8MsH2B`IReTBgXPb>2Hn13woHevf{RRBn2Uj%+>js;+3ogZjlFn zE7c%N9vV-((G=jxbDVZRM=?y>mOp9Kk3uN?LK(7n984Zx+`Q_RnHzfQt+B`l5YTGg zt{_tJLg>Kn#rv+!hN**Jzx)0F*nK{|7{iaH0L(zIu5tbLed1u3dh1TtH5$IYzBO@W zm4>xq+c!%*K;KH9v2E^&}^>kJWTb}eF*n{78O_Lhn=gKcW(66N85 z53ar4sN}zMNOCct8mzZV|1x%shW9$HKlaoe3H)cE=|WYFjG1?&ukn{Y33HrV+_;2H zS*Ysj1To)UNsV1V);U}eurk-xJw32X0?#;iXL{OaCFm)#KPbxh|Ka^F3*IGIN06!1 z!%vGQ%logy*{EoEN>y2gNeu!N6#6)*w&cXp_Y-5lf^+)$dx$zXW&R20rQWKrjbnvp zlF$e!b)GM9#Ggkd9_f!yy&N3XdO_p#zR+}Onw#v9YiVtT~pQ{)KLZ5L#7e?86 zKK9}_qVfIjg0lVoqr%!k`=)tMgzf*eAUQ z1@?fL-LtZ)*U_Y4K$?jiUG`FJjU`3tC8P}H42N+q{r+2(`BrjXrEhhGw>e5kv<61h zLs2rlEdZ2-#7OjWp?i5mVN`TM_RCpu3RHQr`94}Af&I!?pbx6Vj7WU{i3QDK?yoK7 zFJHV=(04YtoU64F(voHjoIJA-gPv&zzC1O-97}!$4h#w#DURq<>yFF-JJF=bYff~t-<7!x~1NSoDi;?t#_B5*59cc0KD zAUnKSdDq}5=CGoCMy}n7h0bdbuCH7l0Z+@{ZpuHRfSnwJQVB!>Gb+Hnv_~T3=*e}& zMQ`ActhN=zA-w7z01Q4L{ujrCH~IdK7*B1atd=VhY@z?ZPR^rqC`;zZoIX1u5EHVN|U*O<6O2MIi_L#nsNN#Q*E z^}Vcx8npAN>OxYwmX=DWRFLbD@Ie2k*GjCVl=gN3)G$uPDQehIWG;>1mVAly&5ad8 zv7^kf)#ot?J91@T)d~rmS@2Le`u@e*kcv|neD=92 zP{PHB%2(AZzvKNh_AlO}kt=V}MiVYtzSxYfy=aPtUN7)UsPIHUfU+WBFA)I&KWpLy zGmm*{1~jSOBxm?){+!s^q#(a>a`f#+HDEpdP2;6nwZy zDom+>reC>QF#ooaB?y0)>QEwLXMpsNDXDzs^5tr^l}e7B3cQh28n5G?lDIf@i{vcj z+$U`rPxx@7Zsifki;tub0eu0Hj~D?EF|OhxfT3wQcUkkJ^g$ZRT%!Pwc`1# zNKpu3zF&cTwji|cr#*A|cp+^BP>9u#WOUC7gkS?t7FKFc0jvN81FCgX9-0t^7SWp( z_GNt1#~l~2Q#pM0p-+kW2NPr*wQ%px@^*fR(dJg;@1+WGz)ASI-bRJJjpmiNhyy?=g9kC3%mwpq0Of}CnBgNW>f3TjG8-w|@ZlKiyG{;383-%Aw#g@1(* zGB{Zq@KQdQS_E#f(s7+9nOBI>*H`odo&ZLNjKog_9T;B3 zYb_dy1H*ZV<|uoBNrK)Dnldg({Cig|d$Y<>hT^2^r%Qh1hc%Wizh?!=7^|JMXWot# zkg8|x=8kfaG45UQe{|=uApC+8_jLOTDR)!C-Yx199(h#|kz$h*$?5yDE3jj<7Fu!o zg3P`Tqb~K0i4I`#Nq}Uq?zWy8VtSm52LP0!4vaY!=%z%b_W%Awb6Y7G=e{k+2T*hO ze~F*=Wrq|j+g-#tW+h-b-nR{Jj~9}XzuKHhGRc@5!#W}l^haP;ylz)sw}4^sQx{G{ zX=5V28K?iT`;2XTCRWyrf~qk-(IkR~kyuNPYgNOA5~Z_0@-+%u-~(A^k~3sf3H)q@VCh zMg;v)d-8_X{z%@WYW+cj^-`#pY-$~Cy_jF}*0Fi|&1eR8*BH&cDP#A(Ft6P`aElnLS-mbo zf~XdC3Z@CDMXU5TC8I^0{j@t}+h0i8GXur@8m2@eHS2k=l5K|Zz8Fe5rZ?Z{k7O8$ zP?X-Rrpl&!uD<69QeS?r?SfRmP;E&8g%wbYCOuh7x*vP;P+o+XKD&EO;9`yv#)JWr z!hJ<7z4zx6_&YrMnJ=Zs;txyNrQL!mCtDG-)+*azTdC#bWwf5EA&EKuf2Li!Q6^+$ zvt!hvDN6Y0)r-{uky363e=73(Mg==Q>_+^q8v^e8#?1Mz+{N4lka3?CAjV9Svw*S& zF{i-$VSPB6$1NyB%(;3IGdB4CM2>?1I@3_~CT?RS;_%Au@_k1!sjKAa*V3<8U}xO1 zv|yQx>G$ipAD`I?5$`vy*ydPq$fDm${{HQhEQDdc-1J8!pRwh2xsZ^=rLB0K)Rg*C zLUqV-eN&quMa{?bfRj*#4K%D%!Z)J0*zS++M~o=_Pj!KIRJ{z`xF;)OoU<7EHM|_N zUJBERC!&H13ssbT6q|q^VFcEJWtHSD)v#X&7p!EjQKDvH@1cq3W%Soa2IJ?|2*N9W z2`x(_i5Z22kUYYIT3pXrRhGmT?!gM4HAO^3CEZhO&nDy<4kai@9U-WSSJB`(A5MXTys_9 zKdwLu-m`0Pt_e`U^C`BZ?(tEKN3i$(g})&|grqeCXUh3uKpEuwnaB%sO0PVrH#4az z#JK$iB19sp$rBr#c?&CR9m`T^a`wyEGZT6v1eCOZtIpGBNl7=x95^Ul#}DzTTK2Wb z1|>Nk-{fqwi65eGa!>eGAmvK*!OtdN=TQth@?R7$UJO^&3+0yw z%8^kUq})0eGv3e0rw#m(*s=xT(_DNVTuMm_2p^;ymt7al-~Yox?LmJjHz51>sXrc4 za5vkq9v7dkZ+;g&4$WEZ&2LhM#=-`P} z>o$+$u>gD0k1h3l_M3+*U)_KdoRoErMj=Pc*)aOXh~GlRFq!X=v4kgPl`Qaeo&_nx z6YsTV`5-b1?@^71S0bOZhF0McghN8UEi(RX3voiPbdu(eLeS9YsNQJrR^}o?yXoyY zh#$D$)%5jYYmdfh5Z}E(?VwM$7ju)t76#NiEyUgAVnlA{MdR#0T!OAn6;x^$Ub`m z4BAE&fr<63(-C7;ko(0$lRF?4w(E~pBjK`^9e<^xW%oA>&T<-Ea33eYzWbrGhU<7@ z&Qe;l)o+es&fWcCtMSb!bdOT!H_k=EjsLAlve-$%4=LM8ykR4xZ-0Dlhv^jTmo`l< zJE76hsze-u2SvqM;awG5{Xj}hSEVjk_lKDDm{)YK(NhlB{UYqkah1_`Jv1tJG+-=% zH|OMs6&z|-_M=M6on()*(eC6dH5zn$NB(wiAp=itCdkf7kv9>Frt_s@Mv6`G#Jde# zYS@Q&fBozr0fV1O(Pv9Ftn}W5fb880UUlf6ol8b)FbSauTp^emu~vSgNpC+fIu$#Fhf1ZwtxJN79|cyrt|2RknKVOhHKKQO9*R zMGDTF7qefji{Mi(ox?c+R2l2~+#>qiJR$8cLW-JEuS0rbRxZzRQ84d=xA1c>i0M%h zR{bV7DOXtSRWTb9Qy%@^n(F9-QNF$6?g_9KQVFE1ggI~2j4iRTn_HHv;fS}pjyKbk z@cB{qUYqm+=o=^Ntz)8sc6Yh9=9#;UG%MX$aq3_Mnm#^iWXx41bdF3u@ymdeh5Rb} ziS355ikCPXVZb6tg%lj~h{Zy)yY}>uDC}bg||;X%>c#JRbdrJ&*1o> z`XzgIc~g1RUs^N0eBxn>8O(Ijk=i>N&RG*5 zsG|gXV`8%l=@h+=^K$r zHV~nxP9jY5uICKq!U*VG20_n>JkUrn))WwVmVAJ|pk2xeh&EaE+tyxcEqp z(B4n6yH5Zy^kD^OKMTNl=xz06tq{JXt8p-&QzFkkua@?VRkL-cnpgf&B?1@zoIa~` zm596b>X=pfz6ki(ecV_Pq!AU`RvLDHivgc63Q;cd7sD4OJSZ;^N)UZPHPKox#2}i* z?(xBjQ#Wr75+y7`heK7uQ!!Mz^&x%T1tpI?G3lY(sR*RA-8t~HK@dLIb9?oTGVZ+m znd6Pqro>Ap*>7_p`zp8>3v=g>dn%#4OQv`Kc}+wq3je}_A88n$lX%av1qu>2H?L*u z20q;th;{e5C1v-V%^=1Z<@Da>UEjXwqLEl{)5KG^#dN^7ynfa;5!dKrU*xle53)G- z1^y!?%$>KN{$;ySia2}|e)F57V0!f?p6PN_AukRw1vAG+BD&JPR_|j{D0W9<*Wo#Q z*7%I>$RoWXDlP1M)`IKN><^!C&+4t^Y>$k`%FtFJwW8FN$}*zh{DLHV3SPu5?{gV= zn5%-%7VbLo`)mnv6k%y5^ozJZY(H>&LZg^7@OkR$a;Hdn-{ch?g}G6J)4wWunkH)4 ze_wvO!tSXQz3}yB-})UQI>E84-r=>3TXF-gx$mGwuFIgD>}(aY0LZAna8MFn=Eptj z$Hln5ZkD?yL=3&sT!PHwQjN3p6J!5M3UGV{JLX{VaAZbgyYZaq&C0rt74XmjaF*_PGtD~n%N!4D`?Z=&>_yi%3UL1Y zoA0zWI^|eZ5Cp;ySDpRZ-5S7+q4_KV4lK|9C3 z$-&sVP1-+wv$ev_6rizfvrf7*y`B?Z6Uk`X{q1l~hzOeWEVIgerIzss?i{m%Y+nRgzQn0C{@2@|mh}o{wTnnV5WYC03ho{6uvPnhu!Jix3 z=_FGY5xRz>Th1eO002TtH;ndPvJwFSE1-N25e1ieL;DOw9#ik#30$iakX?SeI$8Cn zIBbj)C$m?tg=v=S;{j7nUs!FL z?ie7Xo@=L_&R)T1jnETwc(=6Z7TxGyT}yP*vbp8De*Xv-WrknY*lCO@I}Eu{KQn`jbPpgxVxA?1R>d;c2UO!Lz*-u>DI{a+4D; zy!u$=Zzs!G^J4+c>&=QKh?O#@BR5`(4%9hul@&bd%yksEi>2Zq+U#?UXTPavZ@N&g zy%l28>#8a7=VHX9rNJwvpLrr8Kf0mEVStomf1Q5m_uX1!!_Jn z!f3syC%(SQqd4JyNU=R93^km3eDBoe2&BVx-11z8kmGUE*D3@j;jX4tWDx-gx9-D( zds{AuxEEepxd-DEC_Z)eIrxY${Qu+Xy`Q4k)B5JkX*5fvpPM$Dq3puk2(6ciBy3JSQ{y5*MV)VW`M_ot`&4_I$k zt$Nq<7zR|KdtO06;gZU?A1lR-*baN{&D2n&Xb1UB?UhxMku@bx_3stTwR_*EUtc5w zPTZ@G{AsJ8S>k+)jt5A=^AMY_y@*g^ulYX1E`(W|G}BUtQ$>UtA9l@&Fo-^<$zaYh zoRl{ARp{J1TiE0V-kUv{Ug~8}hb_#C2TQjmHRDBs*+rW)1z?$#6aMhJ zkc62gELyZfK#K}OM(ZmDROczH^^*4@pr%P0sbz`@3!H|!mw!<64N}Q2Q6H2X>)z1Q zvv(^&$3^=R%n3p^yC~wMYl4XG*Rh`09)ScutQ4BucZj)q z*_2F!SqRHIdN^k?Pz3a(=B|_K#ea4_wHql)MhV00_oI3hpfJ_Ei=0%jPhRX8P5w*4 zJ!Nr#|1C%jU}#C}O0P)yZU!q}wnxi(NnstOc$NgzLtq&$L(FJe%sPE1TF74bC~ryI zB@xG^=;iwNd!+oWg+(vh4N#u;Vw=U4D>9}_PtwMZ#xhoO%>^e{BMEK9p>STKRtacd z{eBlJTLq^s+5Gp1ODdtxYBFr(R?e#(yAB(}XCJC97xMqx76F~AUPfj=4B?x{WF+Hc( zARKvHG4ScL2gJ;{RICfq^JqB#wWS?XML>v@UF%|{W}Kj_MsKFeiDkHdG@hLh*-Jv5 zyNxVjiIA?l(bpol2Oa8ieje0_^7eTx`4FXHzh!J-EE^Yct z5yQ2>^u9F*X6`Om4{xy)bKei%bQ?@j&>K_O4dawhcJ}?%W*wH{q7QFh+~uAS(GP>s zI>Q(-smy5t-hU7bDY$Q=^rM9XK%aHPNVt)pN_50orXhj^O zw)rIsG)nMf%vR6H{ZL5M`9nvi+4AYXg%}-ax&(Y2u)bF0phg~^GT%*m6b^+qK688R zC7~yj4Sc-ukDTVw2mi3$FQK6O+t71$DChAV^ID$94QVH(l#9q;_a)~EZ^TJ-$=KLK}5Ghj$i8*1?B~w$-L?= z49=WZBn&L&hs+3wf4f7AvQ`J}e_MTwPjIJE-1|Y8oWc^f(;x}A18%;(WJt#HUllV) z%#(qo#8a^k#3EwRwDh-3nUHq1r#7h4L`2<0@w0c0Mkt31W)?aBq8sJ4#)&Yh=7&}sl?U)_M^NDo|p;S(_(IqA!+b-xsZmzL_HI~mb2^b zcOEXhfq+M+j|^8<3E9Ut=0>? zF|^CnKWhjt;>{Y3u4-wMf+dU#6)HzLFm1f~;;%3%J))-N?uJ@1H6X`f6Fpf%!I)Gz zxPKFq<*w-`LsfEy+&lond2vGyLq@hjvO`BjP%z|i?;a=n3gOdZQzB+YDwi34I=UiNOSpk~eoWA~;y&!0P zjec=J9vmpU@GjSUBoxXFJiF=80V(?&+xx6ZJ(n=e9w>y!64JrV&IQU~MaZF6BbNlW zh%jt)I>vYhL~*;9Frz^(V|}%av8p8_tOfYpqr*`Orf8`z%H1cR%heqjO9v1Vdj90n zcSa({&4kr7>3IRG^2FAq3>?f@c9gXuC|O2!iHQ9%8W#pt<;WZRtim{!uA;8f>y(`E zARRVjnUIc7-}ub+q>LJ=8W8gC$f%K_vUj2#D$v4oG}C(poBXe5RjwgMNHx%4@@df` z9?sQEkvt#+)-+45Hm!zPe;Yi*Iz5JgI6>rlc9Dj)>0LZ=;*x}kS@NNPGAw6hqHVT_ ztB6``K1|9^6jQ4#Od5n%C_}UKvi^1mN>6UE`qjjdlf#|HWn0G}deyM;YwMXR$gg(; zH~5I0?da6(u%t{uo6BmNyZQ}}cy*@Lsa_+EAGgi=Dt&#ZK*Ju7pPP;l^C>>h-I@i2 zTp)+WM3E5h(bSACPJc3!OU4R&7{n?teo4y%QWl@>*bqg zmPo1LOHaxDbqKxors~{JyntN$Jg|MqE+N%mT$>-Y8v)2;Ym_TRBFf!g%?pz~q`=mH zS}rJdhr_4sV~$xzsi8BR%n)&`g6(EhIGD8qVXO!@GjocN`&8Fj;Z2S0-a*P2e{=5>|15Tz&tgHYK|uyr!fHR5EyQgM)vC ziURP+x;sW{20*EHG{J~Lqa&XCcN$5VLzDgb#YQ3!|Kf6^Nu!XMS*zVhxDSza3!>9j zV1)FS1M#V5tuS5Zv*jJ?&mlLRGRjD}4~6vCYO(z}Vp0i|6!D=Dp;%OESId(T0Ml9z zP;!-m->WH*dz_gkkjSU%*Fb{k>I3Q4ofX{(v zzn6ImfrW3}Pjfp3^zg_McLP)o{r>0slXRSd6F}xY!$T6ljTpPP2_qzHj8em<6{8H< zwHLP;EGb3%e7wXXnin(~udg?469jk)Db7vCGH|w-p^l!~g+(kFUeH_=%kDJR0|9R3`$7_d-vS%#}RfpVe>nE<{3LllCI>0X}V- z7nJ*G9m*0T`HWSGQXu5Tu8^0#LUv71tZd45ImLA)&NTw7fP6`;4%)O(PH|Sj(SSoL z&MimR63#P(qT87hJZdXx8==i+3UNcp+Oro>m%R7K>rHj+oM+=zPCT(2o zPZ(%@l=|f0G%0I_{(SJ@838lHya?%@C7@$Wx_g%x3z<(X9NzU?s<;Q9H!1}d3Scgw zx!dETnpLZ>cA5LfIo1cehf2f@?X8KjtrJ4p9tOXqb%rcB%&EmH=&_vD@FD%8L!OeS z*`65NvI6BVdGf});)gQ8n$uTWJ%$kC?UMUOXDS0n10);hRvK_#(6i#{6)35I@_Fm! z5rnL|XM@~b#}5E;KhB)lC#N4NG_YC5LP#b?7t;5v6;KZ*Xz3kmq^wNGtakfcl>3VF z!bV4y@x=O^{6+nI!prhmD_fZmv&%S-^Q%zAFn@8ZATUG1u#qHgBikdymy`!3*UROC z=GkXD6syCbsrR+`S$h=FaUZY(by9$+%SM@dw~Dgwox@}aUPOKH>B?7!5;b5x!nqN1 zQ9>GClKj0knMXGwi!)sx!;JWIwc%iZ1l(pxF(26(%HHp)IX5&Z2QhxpY0))u(0wWE zOV2+Fz~e5AFIc2u75gOV?Hgo}ru_2ctOgl){FFg=cd&vJVIH^P$16Fj&bv6bGD*&A z>*QJZ0~(3%sAOZ9e<)XDQg=9XqWq~0^MsEK4kCRC> zKg3Ft7Hbj}E@=E@l;55ciW*{%o}aj)0xWh`eQdcer@5q(ZN-2HOmQo=$@WEA#W)`- z)knZMHY@!?+H5(i-D9ZLqe>7mFEVUV{yvmH>&4A&Yq4_Pk^38?jPE1#tzp%E?Ykum zqgm{cLbi|(U@`hr+W)d%DC9B@8n(VVJ5WNc|8%K&mRty^<0kGXFG*M@sXouW10}pQ{j;M}Wdh3C zQ$w$EqW8jpA=&!V>o_!Uo<8ezBq%4p{5pW}@ZpsA zsc|2yVL46i(b(&`2qIa!wLasy!Auuj(y1d|a^{A+7VMjlhE}}0!rn7L5E5g2zvfXc z%+UrWto+z6X55Xy>_{*`*)wk44!S-lWY|vu7T;Mdx~{8j?ac1Z`UjYYuD@D5wKfsk>drxS0I!3Hoo zR&G8XW?l<*`1jpB8M8v=Si$pv86JWtk%LIYB+RtyYbr#5RRnEkSr$a%m$mV3k77`$k3hn zYvi07$LcO0BQ<+<$d3(3kbvAUrFOth`ms8@vap&M^HMDX8S99!TNfQ00p zEmwrpqKqN`>r+-jFv0jyK5Nec88ZTsK6eS|izK|#Wd;xzU;(*!BN1m^n19c77ECFj zbz2%@_>7FmyiwB@nCj$;ne0gtGI{Jm*VYmV0MJt%+5jo<^MirRsTdJ8nH?uHsX%~@ z#+N#t#34YFF==(kaw%;NbU^!I5yHTpnAud+F9)_=eR2K}Uc$yzW{nJ0h``bWSl*H) z=2!%gDtaws97CP?zMBzhF~0ftD2}9ICI`PN**c+QoQ$jqX@sSmGVf07ixUX*j$+vT zd!Ue_dM8zf7AiQFC%~hsHg@1)Tgt(HffQOeQ#vOgOTyb0G)yweM**|wN`MmSIDT_n#D*5sBahRA@ z@uY0u;8PKCes7%rOe+;Yxlz}(B#R$h53!&0$0IDphL_~EjUq-YHPD(rETMD=XC4yF z6Vk7BXI9*cM|l;`N zS0#v3l@Y|;a1zw*8i7|(%X{Pmmk6$*ZQSd@eK2*&PO}Hw5eaGHVW!{5Pa?lN#A`}P zsxrhY@qqSSx`d*+upK(JNkGVRbj>w8BO)J+B+Xt_sA6t>hnn_DLg~dd9q7_(A@$IW zj@}jf5T;p3P4Col8S|iR*}^#w5oV09nbz(Hk8JW__Z*0#p?V%nk54p_vBIY^WLsvd zVg0%7y3+@R#9r)|1r;r9+E6dY&%_9&%7c6Es-4x;xrufkbY`d^X~Wq$N0VfbcJhGC z*ImxqR9%tVUN2_Eqs)Z*!xGx;>*Wdj`SVGN5LSchqqnogp5~`2$~oTm9Tc- zxm?YcG9R7WA)CHQ%CgRf-;=OHmVHnq#bgYjL*^5u&;OCKQu~BvBdZj_SWe$o$00$8 z%fZBXB3l$$wxf0URJMd2W;$kJvPQxJ;<^#nOFZVWwYv=ex~}x|X-ms~heq%-Zj6N^ zfkMK(*T*izJd{$T=-T@~?{fTE6*|XSau{tCPQ91+11&uMFLnivaDFx`;;$A?EWL=l!DZ z@FaF@w~PZNoN;KE{e3{p zJ?>+Go$4j!v_7oTmUJWB)!rSt;5rVohT62ibuUcezZ}Q87zxOpc6x1gm6T$Y@cPHw z-$F)He=czNr4V#)Flb0<5b@tRw&un7qs;N1%T@to5!mbm;FiTnX`3^vu(g1c-Z<19 zZkjD-GPw&k6V8yh5V%y)U?fu7&s;4 zgqe<6VLiAsAAQ~;WtoKX!_J{9R4fNFvpc%4yR(U_>|{S|)CySHJa;tFP667Rjt zr2IKe(eq}15z;XWFz#u3F_?=7O7mX}fu=JkSC5SRv?@V-Ji@szKReBkKgMMwsRb=sN2a z%xA_Abl6@w)5NsB$!m!6c$v!RmK?C7%#HM zDyYkkSO70U>BAOBPnh|s?(GFB6krG!qVy~t09QtPs-y{~*zFy6Dm`ehGA`pqhzgWpDc9 zWLYuUCX}ZNSokLwlH2E?%!1&>nb<)!d0uMt>(n?ITW1`aVYom+fBP_P{NQE@qv8GR z`k73WXnfk@S3jagZ2dH<+aCOYUX%K=b9H=%^F;DQim{mN(i%FqJygJr%Eh}bGZ3+{ z7!Blo17Q_4$Gu#UD`4iElyX7*h9FCu1h%(xUam*qOls{SouWjt9=EWTPFloex4%E=hjs1PrZcuy{&W8 z$3Q8+X^F;Fr;xI_Pkw*fKPd!yUh%YKBLVBwmv4q<B>~gMw*h0;GU(manfBX_cp*1_I5f_bD3Lx3ZCim# z&B;C2W|8eHW#!XCOaIPA7`$8muRn z3j5Fgd#*(?M6eD%|FSbz6!Nz0nB|#c;*fd6SdU?foZousx?^X!BxLuM+CBO|d-=pl zi^wfv@Rrl7-XJXs_Ph7!OtdoQ@6Loeh_B+4j*mEax4}$z|B~LRIU26rnAYXPUrGUF z?2F$1M+kO2X~`!%Rtkh)M|RHj5zu@Z)}P%z72*MwK&~MR;sK68t|3OneLZeur%4Kz zCi+KnbBSRP#(O-XXI#qu4&f?_Dmmocm%y_bAdApcJB8wMO2fjsj>-7lFts2**2NE$ zGyKLMk8G$>Fp)&&I%pO@gvb^6IZm^TQF=lfQFIR!~sZ6Y(Cu4hs!q(Z61Hn@0uIy${)Lw5>|o zd|l`fVT_XMU1$5LAyOsE03PR|r6?7Du|CE;NI>u1net7@7Y2t0jk?927&g@V&^EL}&;l!&tncj--u8ql2UfU*NbG{fqV+~8(5%{AWh?t^Ec z1i}bpb|7CxUa<6c*^SExcx8^aB6(ax7u%()*Vsx}mB&x8cIV64^At;Lt}hfa?xj}? z4qrp4%Pt??d-)cNP}gMMJ2hb?{Y$@b{qS@dW!Iidm(IPGP(9RsE7_Go);sv2Jm|9+ zh<>3xm4J}~YdHU8dSpqd8{bR(#>|wg*;~ErodV^IszOb3WQ?40%j3ma(@BJKL%`Fn zI)YLg>}=JEws6q3CX2t1LNb9N&3DRQn+Vd1J7BqmG0a?;NIBRGOMr!?BXgCzVa}^A ze4ZgmO^wsn=Ne)n*^}R2f3B>Hq)diSYTVCA2=Vgt8TT!Oj6+_1=sy+teG@}9j~BQa6}lV6D|mqvv#e@`x|=f=-twj%J|wp=v3Tta_- zDbYCvkZ{_ix)Vcza{ktJ6*)y@5q(BO3b-gw0vL@!SqCgMTqmv&L38!LICpsA*~I z8}o$}=LfsTW1b+u9F1n0{bMP$_ynaEvObAJlyf)c1p+K6KbR+(hk_=+i}6dSd_I2n#QTMW)m&V zT67qUEF`UWb~xE`CAAmVT~tvgqYnk%%-!cMqYuo^wu=gt(mqbzzhch;1(O`^D@2x| z#JzW>pIZPbm;(dGt`=+wZTOhOYJsJiivR`NuZ##O!%oC2PyZHCe20?LRyiohZ}|ho z71u<-!T!YUokkL#n;`eb(s3DI^QJr1p#kAXH)t~qF(Qr?8HU~ODH%5LLkA9jkh5;u za%?)*$?3&Qnp@Adi5aoZ=G7#e2z=GF#+m3P;%r@4I4v?m#L*aBsD3`6fD_7IMd;lH zbbs5}AD3dJ%n!OmFB_gZsoZC{!e~JtFVX6_Pn-l?z2SYFyALk}v-40Cuu4u%Y@3}HxfvqtIuW(Bev1ge z>>U||y;0h#b*T&O#A52nkL3sFJZ2MbEv~C>Mnh@l!x+C|V+mtV2=WbMj8YNvuCAcN z65iR};Z4RF2+L3dTs+i`06LfG@rkrh>epVYjgli8a?RGjBAl<3Z7mM9O$}AhTDSV5 z`zJWm=A4Fl{d+O>qD}6pek>9gc-ms{sBsvt;ePUd9YyJ1eDU8f!f%+CmLtnLm?xx` z-Z33&jg_%iU&+Sy8ml3U1s^CQs3D9Y=2ZTjaKzPTC!(zmCj`?GA7-+Ou=sSE_i3$~ z*Vv=~eEFu57QswAp>fdw+JHpM-W^K#>(RhxQ2{CtBc9y!vF7AjFLSCn!Ue8 z{;2}VCc88V@3tUaX%Ver$Gtlf_C0>wkfF~P=4Lz#h^8EA7N=;}iV!?e+@RrcZe-vOO|pLoa{xj|d5=WRci@`x+Sd+dQ|` z1tVikYX2IdVNv?h`v;w~b0zdv{Oa~WAe2??9YE#gDA*~@slVV2bbi_mINg0#cBN00>RqV3;FS@o8P^zQ%w@+JJ#GHk)3Z>FbLY>}_ zx1l*-!Pw6Cp*vFjhq0+Z}eY9z0gS(T=!RXuCoi-x@kj|5Q~s4Yq#QF01t8pHnHu+fyRA3nNHV85oWKn~;H+ z3od+W>P+^BLR*BnI|EnUiVC?;f&#h>HFBY~?hbHkk&Kt@sKMXYO4%1$t(wko<&>Xy zpbaZG!M7cKAe?U~W%C*df5ak| z<=`}AajlK9;wK}1=#Cjec}wE;M@EY%B%E*YwFwQwv!CKF3=@MMQCoex9bu|7>7f%f z5Fs=fvgW<7S0H{xVV;G1QQDFn681xhg!$NqH&;lO(bwEeUENqOVRf7KbY;I%(Z@BC zIQdVRU$4jVm;6Z7*K;M9hapM1t9+p*zji5K7udJ()k7&K2}|mx-AtT}_X9S3D3;s}y8 z=CDd^P3g-ZJOTZel&42cONHo%KjzeTkzkr=T4mF6uTYlX80?<|%NT2~>AanjMdXq* z6|r1zA#HS!ooIJO!9D>Q59lmWDzx+3$A)y2XfAgrUm)

        BBO=w%ZBMwms6s3&xi3@FR?6L*I>z(TLc;oN7gkcs`A=g}viva%}| zhXjhrkM3{abeKy>8MrL_X}jQ%iLd>GPLDZ3)*7V#Up<@teJZBMR?neZE&$FS!9&y% zA2DB}R)h0iF0_Ropv<_zst!dLOvzj_avpJ!Fg-$f@dXibXo`?DHT^BZ!hH%HN#81F z8*XluNGqkxfP8pzm7R#Q@1;-U_m@)2>rvpfj;kgmTpVA@|0eKXlwx3~(I|L6+jAG= zHixoTSDAioPYVSyuxFlKZH9>xG4VqyqGa@qt()o-<#G_Fj$%w30m21mDYj)DM4`zd z+6_*^bYH)4M;A{C3G3Nm|7f`|_)C7=!Zl`G>P%tO_K%Ky!rlkex_i~39OqtOR=ycR z_dd$|&SeT{9RJOwQ)Y=+vrXHY%F1E-%wE7wV<4e8_-pce5eYHV?Q^T!V>?|NWfe@s(1wz=7lF{^lt}r9E$RGi{R*Dg^2j#tl)3{r(XP+;BAAeyH|3}$5>wZ6cpGoyWP(HF-)tA zzmaUfg_zN?`P%|u73XQuIhV)BP!@Mg_hg5ioY(hv?ml~}n0uLf@ukcS1rpqDa6X<8 zvKjyb*{4NPy8M2UHpfuOai{;WYbsg)_3ojtBi7L#d-H$q$p2poxogYtF;^y`|FqUf zxe&O9l8dR-Ld<&a+>9k79IA>e5(eLqQtU5!<-woTB>$OKz#6;N;$BW?`P*k)>ZhHC z#tW@P^e3#E#}BCjx|KQ*!L>&+s?sF>Ys^)^-)Ei&nO6%5ONf`B2P6m>=K9Q|XJZu1 zRd#$2Aw|Txa(7yVfuWN9?_m7KyXIm(=T>XQ?hgpDX?mh%a{-@x#&nY9n9C!&Ys`sN zS^?_|ruEe>od3py#c4zy7+nia+J= zs^|?RaPZ)ghO1X{WmL~iA5VX4R?q~|`8ENS3Yw?g{)_3E2+{OM!qfg4C^@XG4Ko#k z5`j@#gh_TN4P)3=8$XFM&b{q#jI~oz+aG(p#XbzViMhfQnHd}2+s)}W~+^wBg0nt7_s*7w)SCD@9>YfbYrLge(zA)gBCnpc&<1qs21T(4M&mfZbVa}2xn{J{Y zjTopr-^eGHHYP2>7$88_{p)q_Ej4VbQF_wm141zx0-uqVZLvWagV-OM{jcPt zIZB^A?`2|&>rAu0VIvW(dGmqauVXLqXTo{8%}3}&flzt@$d%`%Y_a+!x- znye9XoF0bF zB2~Q+WH2V z^}H$iq&4q7IGM&P-Nej38KhF@i25<|*d(T3az;8LA+@gE{< z5SmLw%q-iRLK=Fm+EG0m$-bar$J^y8z>ddN_^xshr?bhZpY;g=hWg?6!v<>DfyGN{ z&et%m+!bzmm#pF$S>pn%sX{i+Q)F+H0x>@MM7~@}0~p{fyhSq}W&pZ7lSlB%Kb}Lw z1cU#3{zVvU24*_x|2_A}f14`{ggnlzdW=Rd!JNW8d5%J#3 zkdxF-O@Qw^#B9VOhHhD3t`8pP6W?gk;tRxL+SSgB*NdBAfaIOC&7nMk_GQ@8^+0MU zT)98!a`WFpsLk3&q>mG^zSZjO4G1xW%J7y6V@K;YB2Eti$BUW)-;3mGsQTD3YbP(ebk4orZVlUY6C8Eoxp5 zB>G^JDqk^d9#oC%2K+OlcG-@TMZEP@SJq#>&mu-;RWIJUFM{!&=T&ST8M?x%q2Q?d zeJO8Ys(16;zoh=7?VKn5e3Wao%mDwRP|Cx&kW1VBRLrM`^r?vyHP}GgyWoB{3hMSw zpuf7rjOUBbV{l#~j^EGqjX5$Ypb1<9`$`q?)9wp(I;@lx+?H^y(@#XY)g)59OII-S zSy_i7!=%il-J1qo-wQ~iPTdx!yEq}`y_+kjg-UAsK+M8+vVib+4e=i*B1{~JG+Sho zBxDo)cV)WW6auaFT5AjJD#85H-Gq|oC?ECyjpen9*tutKzIo+^g8nllt~POM{%uJ^Fv>~bqC|a@X-BWAg!#|@ z6A!P9syJ%9)YBugWwfuuusO8guZ}{Wp7#=OYlArvrlU%v#etz zEUU{cKDWIEj9kAQS}a~bKVNCZEtnx^oO^Jt_7X)(8|vk`-!zkgF7{7Gx^?!V#fByeNFaGCT79l_x9?Zo5-#Ng< zOg)O3G0Ohq`N_@4|G(t2^tDF)`D=NUjA;k^@2^3~PQ(w^Dp!>sA=IkAmmdnqwhrZ9 z_W}s1WLcc;P9fF*@Q&wL0mzo*#%=5M{_}LMWe3 z4&~d8Mb#DE z0#f~mx<0x@jbct!#U8=S8K~L2Zub|V;>@@Q$JU*ef=+n;o=18q6>{|HhN}Vph3%Bu zCNqTEYRGLhBuFT{K{<|u2`5D*ru_;cgafThz2(oCKwf1$XVK- z`t#=JVb-&1cYT?=g0=3zmBx}QGIG=2RQv6B70h>F+tDCzh^X70`!%18kiCytEjECK zWSujkY>`Y1`dY^e$f$()`}eT>D}RJ?%I?a#e43oKu#n=g!&E}=_H@@R-X#de-65~} zkk1c1S2Z;@gP|696_SkdSwd2BwM&?z3lL=6Yv9sL5rWo{1}-F=kXCX3UJUjh74wu| z)SaRnF#{V=ee$&*On!Dsq?@)wNIldW<9`5Df$x4VAArkHw(ION&teeeSf|%F7oZAu z3e~T~;~1ZDLfgM;;~+|{%CY=0j8(GEI1#IFEK;!i68V$1X&MQJhdHe)Qa}qE@&Dog z8UOijT_eT-CLF@Gw$7-M`R!|)Q%g@pX|nw-4o|%}p4NRf1FINv+9|0tV%b~;<=-o( zin#aTz*}Z+t(jh8@{4@ItQ=F6I=@d~OW!MCt;l`}X7Ta3_3KNQRt%tYu5tqWfi8X&;Q8Oy%w%_M|d9`26k%lQ;#Ng!zxQ9<$e_m!88 zxg31v){40IK#bgdE$67$g_QT-q6d1D5F&6ZuzM5u0yYudQl)7=EC|G!j_BNnLxajw;unpXsTmX}-{R~J zFz6pV``iK}l(x`e_pG(B5Oly1dV@Mt%&N7qjfLhYeKasRC@T*pQO@>!45=0}jQY%f zXxIwDwO))_pQW5N)(*NyuthYVlU86Itb|=k`wCX?M%k&aeQAw39BSQ--?iEGj6cDS zTtm$N$fGUPSx?65(LXI?tc3w8s0qq{u953`mrGHu$96!AaaHt>4rPg!* zyz~G6m`aD;r(n3$=UFd$P2Y=x^Lay4!iQwUr#j)}sMSi|9ArG!{5L>|Xqvs?Bw0dx zG8jc@-!J64Q75R_2^F(3$Kl49P!0ULwiDcSUl4K&+a{~X7Em75nq43ntD)32^V15` z<*X!UyJcG>66)aTO))#tRZzY7_%Zu9lnq{aGTUW0mzG}b@@fAICJoTx@vZ>+$4iHU zFetYP=aXStq!7rr7ogc=5dV)C5R2h+GydZ-m5}-1`tYDL5c$#mo~GbXiN6aZsd(L~ z3VG)C!NziloCdl1Zj1j1A@BG+VH@tJ@FC<_H0QI`oMQK9A30xO)-y-9rWv&`5ONo} zQcIE%(Y+_pT`Q$z3!Jufs#Zu|RGxFxs2E}twXJ`Abh?PH+1YUk_frm9OLAt-6hj23 zbLq>rr%1{CmB_|pwqb%|<+8K;zagv)?-g6USFnR-)Ir845hO5X$Em0pJu89n$Yeh| z6DcLO?9~#}XFS44YV!L|t`u0~kT}gQ38vd`eX_u`O#%45f4FcSMM&K#aXwd zpJ8H(kAst!8Okd4E`W{l1@8KW^suZPO_2Q9+-~0;Ldu?LI|s{OL0%RWZL%6)1>s0O za8Lut*kYuIwxm=*UQsSCGmKGl7R};CADAtpC)%wKohd=VY1EKgglY&-*gcr#Fb$^6 zNicprpcR9$49P&RfsEc|_RR8fIYPLwF|TiYriS!Bf_GAAtfUuT8=DWc27iVhmt&;m2l0?Vb&PrwmJ z=1WA_1po$%LD^_oN9_I(l+~OMkF3u_SM+ABJF`=aP$*N@=(exaNb<-woxet4y3j7C z(=7v}ZoK?TZhQy|z8&(r7v~&C{9wWRPzZ<7Wlm$bpb;MJ!}$2^?k6JBmws?j#BL$a zL9(U)R!#){gO1mi&yzEj?^*t_%tOE;yxDRWJdaRojdOOB~)|utUtc-l0y7{h|`^5{m0*^)1j8VS$%qAC!?Sm4%k#Uyr5cT2z{&Q&^z1ISSxT&!12@=2tURk` zZW=M!pMr#Q9_;^_?*5Zc{}_SYVL^g{tJ_oD{K6Elx^Ug0*hU2>eHRjVvRXoqI$2oz zVkgSOlZ@ahdpZBt<=ZvOJ%!Yd7we-;^dKE@%*JT+DAjJ*;KHy($$Q(l>66Gx$+6FF zv(Ik(pC?4X2OXVr@dhY}TZTCWrJ>-HJ~oWOjpjc5+x#F^?t8n^HUPq=~f`JPap~cr}2N%*a}*W*R-E^X=>2^ zY+q5?5X_J(4+?STxfHXO0}oGG!9jy9uh*Zyr(!PbH8_&O3!{D9>bJntk4LkU9)@~) zgp64;fgKSkFx|qeDHGcp#&b=e42;Jhq&&ZMI9HaC(H3pvGi$#Cc=qui;)Wr%uA$w-`;w$9;-oEc{3Tzremrakx& zQun%BOic|npGe`OJj~GwymS%DEhbsI9Xx~`yZCwoFxf}U3wtlekCs;!n?&<*(#&I?l+zPV;#yxSY6v=OCkE;^gYJs zKdI@ViMAf0u$aczuN~MHigNNp&J2~jhbh_)*=XA|9@F4O2X;ZU3^-l5+Aq{x7KEMt zn6$qK4qm7sJDloMF+Fw0<-Nu#BE_|+)uaa@DQ;Bt?#d3M0*CQWV@>!pqrL+#?`io& z9e$|0W)X$>U*9#I_{S?#WDJMg*w`>c3WbUFZ2jy;Qwgaw;>zUfdYIZIPCO_{k}$tU zvParMd2mca321x+2|}IIKQ*3GBGxN*-T7EAfh4(gAM7;CZ6X~uYKIdGW{uFOhZGb9L$mM=J0*qJ#>-N-)W2&j@hEjUXSY7 zmIMJk?_uB6VU9gvNpabQ4%O1`T;)+>M81YVbjAZlez_y@e{+E8 zr){& zw6x`F^ykN0U{dg-`taR%5r%72n8&Xg33pa{`N7DCa=_EZ4mh|LWp?eZ3p8#&K;lg5&FL+yu~*uzec0Qz?wU$??^l;;6p~vVgM0v^lZ82+7ATm zn!2dk{4pP}57*cC)C(wMA0h>b~|^5xd92 z_+llGiHl>5|6#!0F<*3XI-Q!1VGXZF;?OsfbEbK)e- zv~Vrv=w&j7%Nls$kC}oMj>}9QyYOYi+P3-JcAA1?VO-t?K9sQSk2mK{XF<#v+b^FZ z$I60}&cEuaI1~n!Tbq3yHeSU*%-t+aAA@9rMW*h@@(}P2uy*Cz^-_xEp0?uaEi(4p zh_GY!dqlwVYxTa#;V{$jX5uQeT}ZhLO)pH*$T(d)>cQ79rTm%U9jl2RDC0xqzWjP4 z33r-BBJRuw1Sn;2BMuxEur3N-ox33lW4XN8cQFF1WU;FU63pHs9O|wqXojJL)=$HD zuG=r>U@)eBq9h*OVwW~3-~d8BdVd4|V2Yey(P6s(g^=fIztE<8+Dav<;%0i<;5>x< z$mQ(GC0h{kwyzVanlT|ol&F=aS&BLLWR;yst%9Jl^2#`z8@pOu=GqZ@cH18i^;C%%iDlWYb?14<{9;Dh}R!#5@$%dFpj*!8cK$s{E2|*)E9v*}7`lRxgR*>CIy< zvd0omS>}$T9SQ_I*idSe@f8A)(4mqaH*oTmuF`1z91M6B&7{vYlM0He=8-(+qHK4O z&IODshw>LbdcMsa;)Flb1Qb#*p5R;z>0}JX1Fpu9YGN?ng)9G~{A>TC5>|mXkk>Dg zh=eO$P8r1$yc=({5}7?xiak9YcP$kL07JXu=I4sQQdgV*I_IG)mo}SSjWduz2_Z)g zyO1y{o_e&k?3ltgn>Tbz@KMgFid(lTeaVZ8N|>1fyIZ|VRWUq9wB5{f z!Ucbix6~(GV1CU-SWtrq`mK9v0(xK}NnHnMPQmQvx#Fi&c(|{f=Mvi$=Xl=M-^vOu zMj@PLE$Qm(5hywDK~<%7D7M1nYuw{8Q(R!@xl03~4uX3W?O)Bh_u9A6d( z)3~?r;oGxiJg2Ty`*IgT{6O)Kmfd`mx#pS8wl+A#r^xN4I*_YdMW^ah(tI93LSZ7nPvW+Y|;IHdTEko*~Saw8~CP4#GI% zpLw=MivYGaA_fjZIX9I4#kSZ-3cOZN51ye>vb!sW3+S#g*4N?db7J41D`#a+cgPfk zirp+}E{tF~5NGl(&f^`%j6aQVZzB-HbByLWMnl2=#kBQ)|KSXem%h8fdX%v)`$b~c zY?ReiBPgahAPagLPg}T<LR}1y;Ev~GW9A>ML2sR*hV1|Ei56<-p2Tr{5l=-2uwTibw(_DPRS_07Sj_Ei!mmv z$N#b?8BxD473p7u0%-fEbl1cXLcfKRNkPp@@h@R+ zdSGTpr3`9^`hsX9Xf<|E4YUfaVEVd*&ruey^AEjb$5o;T1CO z+6Y<0z!oVz^2(#1uRbE6=N7>n%hfXe{(~2rTG%rF)MeR2I%JGTI$K+M?GDUxX{Wx* zGA4wxU$kV?icoO8J=*AAu>?vfi4oBJ(ZBP2K;!iPl|mw^H1k_{)cW9_dVVL)Na@%2 zJ90`UEO?zxyf4EA9;&USak@AIo?XQTd;2 ziY2@UjX?*`SYiy(!8BEB9L~=8c1Zt7B*sp0#&0;|QlZhkvfT$pWjtHAOXc4KA>i8` z!-qpUgxD@2`N7NG z)hM-RvD%)y7YdmD!_C4Y3HG1t1?wBQgy2{lfA#i>XZq%JU&wl41W1Q*SYwGHt_&{5+g*oLj=K%rvI~GdAXENH?E0)(SWdxGtI4I8t}j&!`E>Y$7R%lR^xSj<}y*&jUW9w zsW@%6uzm`EOw6KFEVIzm;L$#&&38N zEpn4`Dzbna27n7vbS@?tUW7rdII7DdZHP@AKGiT~vy?gOg@ezNM^Iq(i23{P>*NAm zL@nM-#Q_zEsMN9*Gw;`!|ENQ7=8X62T)vw~cy-l(RQ`K$D#>tNa%wonPH0ue4#*_j zJMwmm0CzbwdE`ll@D{B!WzBU9H#iu5y$^wkHIg6{GwA^z_WPLf_nLb{8Hy*B1qOtb|A0GUo!2V-QMo`~3; zY%MeZUwC1R|C3MEZr1A0(#Sy9UW<~b$8y1+Gj_Qxr%`&d(Qwa#hcYm=KZzH$l}~R` zTRz?iD}eFOld0p{;e7o8eT%uAI3j}IGhuJI5l>tNK3N_Z$0O->B=r2@P=OoWNgNG8 z*%NkPU?N>YGqE%*8;g=rLVP5LyzB{TwCB5%8Gk}VWm~USXW|mBOJ1-ivqnriH~*%= z{bqt`EgON!-V#nMn$!PPHykQx`klY@BLOVh@vjej9^*uXI!T^1O8M6#OP`(_CYT=K z<|S$^h_x3G}MD&zM zwZ?6Fya&QPU-Td@V+`Wxv^K=%_d@`Q0>UE-y$PW$ebHwvD3o$$ z3EVDG0iO=K!)n*1LCvpnwwm3S+)<-y2egN?1t-rDpD4a;}4Y<@CrxAw>&IYG0HlVOpE%Pq&Q1 zge2YChTpCd(UX4uSGBE#Lz)&xGJG!L<(-VtQ8$RmBv-V#P$Aewc22os%h?XNb+bO?r4zCcSdQ;a2Y>q~`Nes<}mp=&Jn!cdFta5(! zulr@T+VbUxxZ2utwGsq7p4d+sp-kZr0NLl4;kIr^BmM|xW(m%~Lk+J^fSabmy zL?T7yy>;TzxQ|@Fm{tIkKfSLSUUo|N23|m;0e2?R4|Bv5;1Vts^cl30lfE_84csdiLH}HKm zx+IYL*?lR+eFUOdw*xL?!EnI0dTZ4#2oC&^^1C(dN)XGVZ@M!YPl%p{{<_1xD4<=P zA8Tf?Kpv>$Ii}04RM9Sk3mQf?D8*)r9Msw#Fz39Bmi^RJgaZfoO^Hc>!RGGk$3ip& zr%z@6Y9dp{JfG5i(sKf1HMGZ;nQ0TE(5A$&>5X!z?n$rvrf7`X<=$!E)PVD?x%+kW zbCuB1*$tAYR2cZ?ZK6#wf;ro@Ba?JVFnjX#4~;HK%)a(}vP+Kyu?N3s50u2fw8_dJ z$rtrSl={z|^@g?o_kZAk&`tZf8Ce{00DckGo|b?G7C4USklP66XET#`8$h{mf#<>n z%KH%ImtID$OFGWn%bRbLmnx?>ZeHs?x=jU{&rfYuE=IX=!t9x8EilvEW7rNn3-dH~ z#a@q};auT5!fiBNPA@iXAgKb9qaY?~%wroA{+->DNM zp6TvoX1ti--kPeFRFbXW#-}}NdfblFZ!R69ySIas;TA>dzDA67d_z@Xq~-=3oOIVpYHyHGoNDZU zp8p;k*zFxN)7nIZCex^AdPRijw;x8@Q>%dD=OTH-?{HrIz|@I>sW`8B{tvKXB}{Ae z2A&K#VcdG*xu+ZwLaQftKGBOp$t`21Uq?)W#H`g}%E2uNInTZJ#{3EydA!xYyA6hE z2V0N@ZvG+MqgYHz;sJ%|q^=*>^z;AuUCIu9y>rgro~s!oQj))`ARvaTadOqi0}IIC z)ztwI%^IQ3`j(=gZhvo|es_b6^C4w4ui9D8p7kyvVjV0K(kuPSd+x#k#aHi_UwT6X z+*~lCEgVrU`6z<7qws3@KgX{;#}zn#=jYs2R2!I1IB!VS-z;R>E~YK)QK3oJa&~O;auDWDFqyG){!OmJAG! zInrR9h6Jps9KA8m4WWMRH~2Ir5;Ima=Oo@@5gfVB10AwA&UWn&>B|xlT#E(6y%m=r zR=oS+c;m+eefqYcsmJ?}fYa02JHKrW6PSC}Av&UUWJ^!VFtcJ1=cq$jCj# ze{)KL@ml)n4p|Qo(8;ID{gsEDI?=x7&$mNze&x0&eSLY#eJ)wFGcvLNjJoA-N^Z-T`}E}_nL zZ)M_&ge^>$;}}olayH3mKgO9yzpq{7&RcHL3Jqk*Wz4$~QO{S$LX2}MKeiZGK>>Yl z9=%r1m(hz3W`78{gVVBBpY`1I2&3@YgpWo{Wq^FeZJOS02|ZfxRZaPE88vY5VEWMG zFfk$=MMM200BNe~#!7FLR_e0WzdjD<&;n20aK)to|CX0TF1QO(Em0NJLvQo;l&TDz~ zs}ccYqD@GPwGg3~{@?j0&bJWtge?Sckkr}`Q=W#CPx|HMl_f|SUSS~)Ib6WMdGRIa z9u_RzjYU4QOOgl@OYd&=yo3X>jvsoH-G$7XbB$%U_sBrt=laww|6u%!tyG92V{(sj{e=(ek*u0zFp5*(}IWqjlOoB3o7t1ObQKM zA!3jMwR&n|kbp;`RcDuuhXAVE=&B=mLE`SphSGq$QjXcQ`doJxg6TdEIb>U-wD{zv zp;KBYsLN=LI6a zMyosb>7>bh3GMc$QPA@Dd$~oJom5Be+bpq z@91vsWgdO`F1v42reT~sqZ=_A)z2$=Bw! zv{yV27GKaTIQ_9u!R~Tvr09#J!rbC7ci$Zn0dr7$WPPS-3I&{? zXj%AbNoW^(4JVqlQRc~%&JVtzLU1&%%oPD7ycvJ4Te?k$0}*l?&9erlwO;wY=F0O3 za^k>7cNB^ctBgv{rVV4brP(f_Z-i9aqWI1O<+9{r#KHvLyL-X4r_bIHELu)l9S4%!sIR;w>20C za%{^zTZq%SwVSx5TgB8bRsSr}OIgFdV7>Me7OMiwmp;idyi9=a_tsV@j-Y~~$#?IQ z{7_yDpku3CAg)bX8& z6?u0nw}UIBZy$$u_DQ5*pITt@P9$e^6_1;HK7<%162tn%1`45dR19-ju99;r;PhKX zEyf2X-!$C&D&~r94j4{Zrx4HDQuWw6REE?m;#E&N6xd*E!}nuO3haM+`}!3aX`VyO z`W4t;UR;tc34?)LC!RJ16Pr^Yr%EpgNHHFn`P54c&U=5QEqo;k=4sh|Y<+=nd;4>A zCC6l-RYZu3Y+NpYifc897RtS0@~t(a1f!nba`?|g2+nkyZm~HNi^5%=@3EdfJ%q=t zURG*KhUpCO_-W}DK0U5R_gkS11x-fu5(f|&leV<=ra>l5+rhH&z78qGZmWw+9yrK3 zcIobT;tY_ z6GGa9SKYiDA&?6vx#-EGAQ65r+adwNcvY0pd3(=dVA6r%Zz+Kwr7{2VcB4`R)J~$# zFFA+@c3WBcOepK|M9-qhSSi=Yb%{!L_hL>o&k+yLgZbM7H5b<=P8i|;5|^RmN= z+^XU(voeobXR{hBrvK--vJe8a7q*eeO9YIXi;vv>lSK@_yo2NoLV}*%3d|liCKz!> zSGy`ZaGKXwu&Ui83nKl5;&SR6^kT@_Toh3(EWy z)^wr60;Nr~+Zf$m8;+FpSGwlt#|aVy?>wcT{PO82j>dN%;Uv z4qBYMevFgGr?0{{p;G|4V6xS`axjVz=(sr0ZpOf%XOxNKv>Fsxe&*Ty6=z|#eUs+g zKUx?+^{AQWTrtLz6~`p$MdF;<@R!+&mlDGnW)z{4vc2V;VJGA6ZQWm%C1D$Pyr?X@O3Fm6P1k-co{pmB^c=VaQYd+;_#}byS-R^`uRB%-3F2uP2 znEso=HDb|4jH~0a(Z6}|^ua@q21!BenKwJ=#y(Qc+5}d_Ewf-44RMkb3`hZsg=5f? z0TH`ve_CEq8_dqHpVHrFB@<6|S@Y7G79uPec@6xT3>LNC(*g=6!^I7iX{WRLLonct z6D9PA1p8l(1(_hsE)Fgy^r|5l>K@GwvGR#vM+lISY7mV@zWbw&ZzQcBo@4sG`zaA4hFsufWt5scH9+U*axu#uo<>^Lv)*<5sSM)0Y!JI$y*)vrQU~^T$k}%dZWvE2W6aytynlU9-*3?_doft zNx})bfR$gjBLv^K9!Hr85@fpCi8L3$5t2GlQx_uxl25hOH3CZB@5v)G{j}r)H^20o z2H8sBWXgBQ)JMv=+;ZZddR>BE<4zu_ez%S@nI+QChNFde#>8slZa!VEG?-NvBV?T> zMLJ2zB4!dpDQP&|Phvem+0dQ{^&SOE-~Mvd_+4`ZY{=Ii-1{SlxiDiqkGuru zzW-L36QQrKly88X5a|)iz*y_Qs)iS6^C$mS7gNuPB6B=ETM4Woesa21J z3+q)qF^2DOF-d&{_%ex$HQprPmlH15OdWMTqKmWa%6)82y->y_^6T?y1Og;-EEZ}V zBS0tjMcSd`IQ{vikU5EfQWzsP*>GVa%52q-*ibiOC2U43(u(pI!vU%_TH`AnOiZ?Y)SFME&rgDVlC@K0~_Sf zkhbT=tI-m0=FLy#9}5Lc+xa2C?u?*pceXG?4a&Kmy#kMM2p5Kx>}kztB=|!qf#)2% zCA>pj+r4$57nEY(Vebh zT3&T1c=AxrtWpV_S5+yw!Evm?;5lI+Sl!O4CPT|@)9Udvi74A4BaDfIuasY8wAi~EW7Jf|)n0H?Q{g6N-)cjZ)8i4^>>n+!mG^`!lQs!CSVsyh zQ>VY4xddgTFpciWy%p4kFs@%eM~S)|1+?N~l>~4uhSc651vFttCQbLtxIMRwfpD3E zaniW^zbhp&rl2k8_uVFl8mNEpTTyi|uXe<=q%%gvDK&f*S@8~GK9lT0@6A9MHPz1! zx%WW8ar?bz3TH_HiVv~=jvS_-ZZ)e{E>ofk{@#$m;}Su6Q~p~A3n8^fBraIC1EObP zR%=EL5bpY-*Yo!oq9B>CvDaTCrfis|NYWBX*(re)Jr}b>_*XvcU$&_jW_QokdwMEg z5U`cabq=H9%=|Na`?@GXRIsz29W;iB3;%boEhf$VyWbAtTT&{8u{}zD>yXohm>xtB zZEGQu?o%?%Onr(x0}FM~BbO`SAnW@vatd>wWwxMNTw?v||9;eOb6bi}R zbqU>zhUASmcqWD2~Dav$*-Z))OMFLCOc5DE5Duss&YPDk8 z5l)JrW&D0HMDZNnmfmI~@67`&*!r{LSwg zM-o7hC(!Mpk#JkmI!HBq3>=u~Ptqe{U{BoEE7P(tdaF?zUg;;Hl=?Moy>tYom`wp* zT=EIx%nT?yCYUdwS*wBPiBwEDpIQ=XJT9TEzd-!!Oh`F}6WX=C20}&xN%V2yz9@Ls zJ8|ELF~Jd3*9L zCGXTkir1zC2$*jWa=%m?q%JKzv1$KQ8PEsTBri%LglFQ+H?K3qd8#RS#HFJIXy-ou zcBzX595%D@4K^nP3(jXe7`jP_O>^gxV-L!NPYzx>&(48>(50bldBg#L+Dq5CUyB$Nx-p)^cQzxaKWN` z`wy00fLS$8hc~orf+_XArjxmR8P$hrQrR(6&OGe7oTmL-DliYTDnyNN;j{Q34WBQG z8FQi!I6O#}GTLePcGHFk`eTX(f50qK@Mhiu3y=2*b+9YvmE`zU1rxGDGclNjdA%c+Z zS0ArEN9bK{jZfSSJ>uz!GG%*r*zVXl7 zj308Q+ve207zqPs_G-=kr&1=ADUP)4T!C_nO>|y2>8Rczdw(9JaQ1%(M!Kj&G6gRra8P^^}sLt;- zS8h~rSN`SwECl|ain$uKQw;x{m=?{tMAMHW=ov>v0eyPN$}U$zeP)l6iW_&=TzMho z7TO9N%xFqMQ~8Tcmv6zq`IADuvUUZx_Q#FS$IBHIH=EcKz5GbY%=@W!_Z?u$(4L!o@eAageCoQcu`?xkG5!@&hn++(5BPND3+Rh!EFG;)|d^M&;Laa`zQ zrt@AkMauYn*M0-lMulk3^<~RjaL(by?+-I#l|Yi^`U+vZ0(df&DO}Z)spjM<&F5F+X(yQu34}*Lq`25GAJ1_kuuZ2ulMVVje=f} z7(Z<_CTJI{Jfnr37}?Y6NZGhGkLmDVN7m&&jP($;-_X7d#;2c?WuPku{V4pGwAEOjEPP^M_Xoo3^U1m|z;QXvfIYycbG#ovpl=gU&e6yXxc$zEU zZ`|~Q*v)$Tle8bm8S5`ttn5H=`o;1rgK29cpt3R0G7MbBj?}w5;z<^gC(I-p??Nc+ z(Cg(}(pm-dV}&zls4gzt8S!k^+Gd1vPUjIt_>mB}<%GBm#o_{H$<(1KnNntN%J;)p z8iRN4i8+M!h;qdSMRD)hg`zRyj4qVDE=%Tf&5mD&g!AgH>Qx+V8HEAAIt?tBZ}E zKB1F)a-3oeN&iokd;pB^spAv8=+ZpGcoEJBY&E=)1&b-F(xZn1Iw9tP7NgBylX1R> zEp-+HQt`Gd`g#7EiP+k?GIlNFm6S0_rZaR2ltE@q|jp zSIjnUKetFC6amq^ga7S43)75lanf$-DEP>NaoWR72|G`}VYU09L~x5`{yXw4#%tEf zhMK%k?xQ~YhwKxC_(nti=dF1N*GUb9U&+FFJuWfpR*^BDc1?`NdZUDqG(SqS=slk` zX_~ey+eyUw+&lR+rwL(et8>SLG&o0xX|_wmSI}kdwdVSV2%3K_Z1fC)87ggmmHQ7N zrE8zL`&WI8?-mhq-7J;hQjF?x!%+xGa+ukEeF{!}7YRByYaz^%4eNJw7(^nUC)SV? zHmW%5b-vCm{(_QA`VxZ1#UemC2YPj{5TTuCZavSmmy3_X-nv4ij9nb?qu6vA2Iw%R zD>IFy!qAN8(T{x*&d>$o)UysktlMy9bbAlR9XYlC!zpuw75My8^!{*+`w5k-voe>7 zyzA}U6O3hyg7X1A#ed`?lR0aB!D5AQQRo*1H%rQV9VU2{6-5B+&loPPhf(r2qmm~F z6JSuM7ky5NLnuFrpA?%e<5R6f`o67tIIGJ&5HA`aSnsSsXKyMF{4-@^QDX_tTG)Nv zI{pp9xG{gUyP`$L9Bb8k)N6zWrYv#O7#)In;Gv%f^+A~ZjM$~KNF@{V?ym7~(365- zS&quokDyJ@2|j9j0HN@&Z{6^+Q_KWxqUNkxqYxFg%?N9Q5YD%$G0?uvVzzCu`-00w za>h%cw=Vsol%JT1=&y=hC6S+K@fdm}X5_EvNH$&$18y(A{#u;@ae2Rfyx!hVFx;$c z+(tpU@PPh_p$oBMR!x#P&pA&HYI|$=w4QL5Q%}R>Dp?TRnD1n7NKyjYa2>p`P0Y1e zS=kZdBWDZVApzGdP{u@q8cY?2@Xw4`dxWoD1-vzV)#ctTpns&Kcz1GPQ15l_e|HH1 z115#jd=nJ>l9^@JU= zFX2Zvu->|sU>uE6l0934ayN?w&D|G7Op?|t$R(Ema_lOm+ffllT#|jw6ho9%1>JX9 zxl6*^(5PABY=ZH&-`$pQpz(iuD$M?WZw&zhv2CNI3OSsZ@6@~rRtTJ)KB+LSfVi3S zKh6KNkYGRf=R_qtQAYncZC|9`4wc}u+HP%|bqHT&>T{!NR7@Q&js00;0dX3JC!6(1 z5HNYdsZNI^7n4-^4bO9MrfsE9NO6FKT-A&H9>B!`YQ7?JcLWT~fv!H6@i6`gGp*Ti zkd$@Ov}f_cd=d2qwyoRq3c>l}MaM(7p& z$v#7eP;lV>^)}^@l#$*a8aP-)fIpjgi<+qzx0(Cui|2$?FhHy;c9=$p{xLl~f3Loj z`^#@@+}^!XuJfw(^?jRyxZCFKHzxrqUdv~vBo{!%n>^gVL7O6_I}3d)b$nQ~zZ@aW z29Vs-+0YQ6#ijPEdUhI;aP}-KvDPXz!6H?TLXLhIJ)o~&yu%dwjgRFSh+7*Z7qLSNogVR|M5OTS-zcT~|KYjaph;x%z zc{6Zvv-Sfe#d$p5z0WQTdSZ}iD_nw7L--T1v){ptS)IFP7Cb@#tALsm(*m4PXvRMh z5kr8LDnXVL73K}KTuk(yE#awkHIWCMP!?&feos3j5ophis^|MEz{5hnJ==f7KqI&3 z-}HwHFySjwf6EXG_)(W-Fzs+CW0r_!wE>V*TMg>E(r)u<L8RI>1=wxnSwAv z8>W10n;{k5f(Of29h8CEE52)t>m?i)gf<&54B~|cH6oI1DL2${v9|F?7)+j;+FE*5 zF6@U}Z+Ew#+}|%7TJJTWg3X!&*G@l_yFU5+*uQ58mP6-(0&o{Xj=p;&V4n#})*Wie z64Xisp8;nl10~K+mTP_8eN8HgioURkTMyGoBvq2hAsN%6HGbXCeiiuoBUguA z5h`i1RzvDjeGj5uxsEwqFc1gEH*BlhcU4A1SLx@( z(O|&VH*v)UbDUm|T3iuv#q4<{_wF5dETJ94Z&(TDD{0s4gT80lhYB52ylg#vg)4k| z%3FR^2pCQGGwSY`L9}H58r_F&5}NOz-lJYU6>p8_xq0sXfBD9(Pgj;n8S}iX!|z@S z;?46B%yTdeVwDxq6DpCmGvT-&1%lIH4fJmRDTn-}>& zZv(|3N$oT_Ir)F}1Pp4joF*S?DFw<|zfkB70YDi~@&Zc*^tE|uvjH=V9J%uD&!*=% z_1FihOO^q_4b5>R^FzayM=WV`!h%JC@>S@W%o(BZjDWUg zlMca(5rg#y&gAmx;_0?QnKK~P)JTW+CmtAmyw&FFfUQ!P&ZW;$vX#I*2i7wP!${B35enelZUpIu3;?XxaM$RxL;-F|tp zm7V?iXW|TGyl(x>WMdbY`IZ`<9gvNJCp`hu$ruE@W;{;0=Evi7ySS5Td{EkM>2?`I zj&ni|-o`z?OBsjmnEh%sgaSrNA8&nF6V90-5$(qIieE_v=QKX=8byia4v_>Po~`HVHu-oqz{VJiJ5< z+bM}n?=OUMhrfkXTd$RiTV4W=ZX_AI-2DfkeNo6-xK8^?-DntVR&-^KEfr%ea82wg zzs;lQem8!lZjdr{Z4Ea>PDoid{Xw&h!MNZ|?xsjkPr72^-GVnd51|!L<^#vFV2HW- zLg3*NKFmJ+V;o)DDrH&oy)7JvCBT1oFa92|l+*t8d<|ah4`qMNiJHD4m{^vZ_Ps0P zH;=L*`Oo6AjX6K@_Mfq+OEsqW$59=BmL9WN>SpRV-5UOqw_F?_w% zf2%xjHWr+<$Q@!?1n<9tUknnMM6KWWE(2o_hT|%oPMo=WP1P&8TQD^>+v58e62-Ew z^dfYIfq=A}Bo8o6$TV4ZIQD&uaXTnX4Urhjd)|?3O{Z(7xSbmNUC2nI#Yb{TrGD^Y+8Q;m(}K zVJC=V?gu!Ja3P^SRYRg^P?3(>$?2#QDkA;WTL@R(vM#xHFV3U5w`)6kBMiwpL7|y3 zMtQREd1+dMoH?3BJBnAJl`C+r@`_&zfv!mnmHw_7IwuNsijXMM{&`k@eCIWDnJ zTo<$&DroXS>8)Jf#jfi==*9}@uY+eF&73M^*afuGqnAq=kNV_S2XMJKNoP69HJ6~5 zuRI@L{Yyln1KG1?q)A0nz4$4BrHYYPIi6b`z@xov<+qPb$NAQ3eK)HkQqca&cwUN+ zoL4ol<-L`?oNvx6vkCPPG7i|SsZnipY0AkE~HR^lp9syk6z}p*{8qBu4 z@=%BD!(~h$8MAY%ai+5h{L~q*M6wX_g&2yAVcyiHF=-B`{`s$9Fv2u~JLA?a9fKB} z4mD+JyIo=XWh0#6pBj|xyJ~AooHh!&{Eab^P$)@vevnMpB``HVOHAlxgV zfD}uE7PS!!OqoyrXt`D@Fn7F{qU|OL=x>hqzHNd9_Ikd0fI|iw1jzSYF!G#A~^vujg=BsYmwKJt8OsobU)RFqOD-n z{S(-4QmCMaiof@-tU>`6cJ%bipE6ceuSspM4#6xvc=bc^cbRXBf5pwfMXLgZUyZ(I z9gY;_&2ww5YLjqw9*eJHXv6gF7Y-XV#_{PC)5dPYy;6qhJIjm#Bm^_K5>s&}gi9$; z37F^370|4Frl3?yC9seRZ*bMfm~l&7|9$+2%X~hBB7%($UIgF>UJixGvA>SAKJnjrDDmkp$v7^QH#U=nxq#rWFXx>++G z!n9|W#%(G<0aU*9?=Pjw$-85R=e$pY8N0S5Wpf_Mm{)FbjoZwEz|izRA9Q?!n8!a{ zpK-iJzNBHm{IeMxfn@0=C9STM0D>2B-mW@0Bk|te^$X63s5-*YnO8a>db*eWmD@xx zjIm;lw;Ic-_fvlDufEJ*u@70(&H$vseZj1?c&Uups^fo_?8{@OKTpgCX2SxPOtZnT zT_{t%sO4>-FV3A9uzl2q%lR{7s@<%UMRf05oI^=^QXtjLG=|-Yv5MwbMY=Cl@OIkf z9eKVP0W5sXoxJ_{D{!MUyJZbBo+qm9K42?j#~ZJxNm(KCvwP^JsT$@lQzVF4e(f05 z`5FKHh_;kv@7`*8zEQ|nvtKgjW=RM@ih>pFWo1!u>zGX>;U!mqWw5nhprvFE#M zLSjmktm9+)nORhXv!wj|7VRH|H_5m)$#i)HWz^E(j5BazBe^nVy+gf85PwMh#lOimaD#H_ph9icXXYvyh4%8jXaNCuHrRnDzLbQ}7SdhMssFQZPM6%}x6x$nw(a&P!#NBgKUnV6|aw z7`RFM?w9la5F1$Hs>?D!SgGG#|CqK3S@h!tXF7wI6xxyH4Y4?1$gQ1hv~)Q8-~ z^z_dSovT|>ngTU{XJ!xt6Ddc(bP#gJzotJgJv@Rk(_j9u5eYDA%>N_!dweS7^eSPlxGhA1KF4`A>=}GH#ka-)EuKABoXEgYIEZH+ZIa)Hl z@e(jJ9xc+c(*UI|S~8&nFf^_LOY+=#Rc{f7;W`(i16e}C?jmSU3`;?8U({ly9}I(2 zxW8#P9$>VWX)Sjoxf00ih;faxRTL98>wvEW^U2fFFM6~L%KaCnI;GlL#|b-Gr6*uN z5!>Y$lzZw7pEl&~#2PZ-(+XYl+d&Nm1{;;6Ebw0L54I9$r)j5*|87b(#I zMz;GQ7npMQm|jA4I?AN@SGwdiM=`H{dH9z0kDR;j$F$kgBofwOj<{r@6(`_ri00#t z)lvM_M60Co0y#a-=wjN{i~KOlux7W~L6mf?Wi?`aTTGk%#O(PKGa>%5*TL6DB`EFw z!>j`rj&P{w!^$Z)UMN`5h-ky8lZ5KX{OY7XA0}pVf(w27B#bfsl)+&ul;&KaTea&c zO5_>6AV;2C%o+PoqJ6eDiXnA(7Q6a-!(Kk^rVf+hY_QA{!xq3vKx^S>dlMI9WMi5>YP!cm)&*&b%bjDiI=9P zdo8xEA2y6-Hu*fTat%NTsq1TOt_1KH`i)6*rfbCPsu8`=>C41yjcH@yRbMfvim|mN zrbclzexLLz15o^>%=`rn$!Ngkj{Q5|*(3<6-mCnV?v`?1Z`RzSpA?Y0j1Hxoz6?V% zU5A~$4`XyOW$#U~B$j@VH))Cu6h##6Jbt=d%OQA&WSu^5DdSF4s%*M*6krnfM`77p z5jlNbedH}G0dwI=;bmp7k? zH$Ds#N`jr1S4(9Ke@EAa>eoCf(5iJ?szX8Dh(f#n7{+#!j&Fp_C5)Bw8k_Cz0`efn zjl4<1m<`rR)244zVD4mJw>Ljga?Oz~@y!}`NLjTs8&`LpPZ_kaTGnPS;tbOziET5KluXn2S;plE+5TY5bnE#7 z+?O6>Z4WGDb~#&Y_eemQf5)0;S!MFbdO^UUo<1H`0|3AfN5pws=eljPOc#FPa8@RYpooR9-A+h^=OB8ZH+cRR*6S4wqHwMw-$#|W)Eu84d*xD@9L zyMA{WGl`Byr*(l|N?KAIHkxrw1(lo)TYha9M(Dow_nTS2lr;DR9?Lfulb4?zCF#$X zQeMbkCU1BrVlU{m+4a3dh{8rVBlFN%FM{H+d%-VCnuhIeuKQx~|{Z|V{jw|2) zOOEIG6D;NfW^FOydy1ghHVg$-a^(-nypKc7!p%pKb{^jLee>JrRS3=Ft+}>mY7|SQ zbo`QUqM{P?7g@Om@ClDe0Vw_nhgxr@{EzEkOc`@tm_#u$0@Wy%9My|SwvYnNijUU`%;FYzd?G03v-7g@wr)edI#S|0KJvE{!` zwF{ZA+H8w&-HPE%AAt_uP7+eqHt*e5p23b-G{++7dYXtc<3h*Vgc>mz7q%v0VTK6w zz79Un?h?{VuZ0A?IL)CtdwKeL+6(ENPhoZ0!3g!yG^dAc#}-5WW2c7?)J8F`=zdo& zE8yVMh;~cfUX6l2Z@6)GKrJC_UuY+M&nQ~m?g?brY;lJ^kF&s!^8rG(R!V=kcR79u zK}6den|KEkh#`H$BUWa?EV5n-(3`T89kgxprVE}M)mRt9uPLfqiDpa8Gd{eE6)YoP zo0*iMM60jdd0Dka#(a2Xf)A8Tw_0DFc`1Wne2=~qKS_BqphYb zeBzFZ3u~Es5MqmH+2?*ejK(Q)de}x0QCD2I4BQzmBGsCI;E|O65Ve4ztglhU@ zy}4QQ?sBO78y!A*r=;Z6pVu0kGGJ=5X#espCj`*Hn`6KeucDF3(&l1WDVOYO>g!!m zCnT-jyYZ~OogD3&l3VEJi1Au70T)pPO81W3EeqqLj2mvbfZiMdDYx0iyx0Z?%QE%e zH!c=)`dsd{hVl4h8Dq5-b()A%{$l-&Nz=qkJ(Di0SH41q(8l&955gFy%y$3#qzevQ zF>g(2Xqpt>Kss$){Z&LstNq&Q*Cq(+{r%6ZxEuv(zyHgRK+Q3H9OEVNk9qoYOmPU$sy*xsISBHW$+YnoWcAQ32WfEo#?m* z1<#q@t2x??vAyDlch61b<4QNj*3xUmI3RL<;o~1LUYj9Z*=w(6RhJx{vsW!)#5Sku zn8%r+WeaJ80ftJ>_Z7lNmS<(q#1Lb`xPq;5TbfirQLxz`4lUo+AZ4yK{a63fq$qZN zaYgE%O zdZk%_gi>wET|LcOgsY?4uV}MYvp8dG8w#A_7!JESN*3Ul5qiwKTh>5A`dKA&u*W<~ z(2})bq|RPM>*$%}>P8eJmHKggPj-u8F6pNpB~8rR08jXLinvhw&qR}LJT~J$`re!g z9}h?a{1586aVOR}&XAZ56~|m1wTEe|wqLc%>p=0nHs*8o)X8ZY(=#wTPt0x*9oalE zN5-%Yd|=&>DgsM0w~xrapb?h(Bkh-46y(_s2?5jhE5es9wjNU&N3$Bu16peW5YmJ0 z(r>1fBK)#pIAbLuB(J#`J1~Wg(c_J{7o3?(ST}qg@XiLaBYL)F)zY{ELT^5QwtyoQ ztPI`+8?F&CB2Ji|GRzdSM;h#chb3aVy7G@?=WUGqqsZDKMPJOgawV`kS0m?8rMcDz zzhbmx47(niEa9ELW#>1|O3botYMy9eqS-#>&lwg7D7ic8=a*MSQ8ymA`FVsSWjR+8 z=Wg07CaZUipYqr67PTcddH5Yc@l^JUj>z8vaLzlkO=GDrCDv^fOzY;-di;DH{C9$Q z?Uaj3*H$@r`JH|GsI{CXGWx5`sutkkKwSH-KLXkjp4pim2xD4(+CDv<7H_l~sY|14u z*=k3drNs!3vhJe;d*C@I67jEYUzCp$EP7Wxe7aY`2pCg)j;T;6|H}@7~=Fg-19F!vF((87g`Zx+f z`vPV48?+{~>gdrLVV`82U0i2;@Zd=4?p;Dtg*oAT!J`*zP6l13F3sbm#t}HcBwX9d8$~!cnQzV=J<$MuvhMFyE6#A zWLtCB#b6Zw{P_nP&Rhj0^h0vF!%;cz`%uQNJsE1I#D7c^5x^$sn_e#?1)}&~OLNa* z4obe@DO9?rq0DavhZl7mRnh>9ADXgAHqO0`yW@)0+SVL%nNM znb(HU%TuN8ZlH(~7ZFMJ9~P6e`T7AVOpG;TS`qg2otSFvU2Rzr%qLnqt85&~MeL`I z)B5wR#GDHaE7v^9yx&TwVUM(7 znv)b3;oA!Jd$34l)gSehHUT8Gx5x9XWVBiDPoGE}W|1h8m4`a2L{!``=R`h7#&#DY z=50(VNi$iTIc1-SsWj1a83*z~ve`>f^A;KI)1@tMDo#l80(^j#Ymg$;PHB8rX)L9b zR5WDn`okhNx<(Yr`-QB9QQq~d_MnvVeo_!6UImT~algkPGIGyZT-w!fHpzXh-}LBQ z7QxDL4;TKm1bR7^R1gEHc{-QDOx#bD>E=~gdU}zFaXR=MN-BaT@T_M20_j`~3y-2G~)WRk4_TJ)^y>4ohQPE$zm z>AWHZ>*}{%T9hQCzw63Sn^h~=qwnLVk1dt6g2l^C->wqST|AQr^&J?rZf1RYu_-_N zZKjc>y9XS3s{ZAtSAW?=SF>D0OMO;kU1(>wVH_K;H)Q;W*-4CIUkuh6CPlGyCz7&v zbD2aj3t%VBg%6st!|C1Y@cIg6WQY$5&oxZmE`)&ak z@2LQ*EoAgh^fd?QtEBXlT-X54l~R6~#Garej5U zia6G-nxy^D#XJDzXxHk*u&Wp0+CDciQhBAoI{&7ap)&;Bo@vEwogt8vp!@Io|Ndv} zpW4_LwUZrr)N_4P@C+2c+TMOiFDB>4=hi5jtD~6$@_gB&Q7OBVe3Rsv%cr8RLZhNT z3kkQ>J{@pC6m|OEBjxM-qX+@T=3cg3HE5+jBqe zIoX|qQU>Uo$@3OtS3xH_RWG`7B%Bez0R2^=bTcF1jtR1*3bR{_T9^ z4ig%^H@ABg35oi(0dF`TqA2y2%j)}2}0RRxQwZ0R2#!`N>FQoH;#7MOn zpfLc%;Qpzlfaxi2MAmV>qi3pwusUP8pTJxS*X$6To5WTzr8fes{TIog8;l1X&r>Dj zdbR(FmjNijfE;9lw4jikdcNJ-W-(#d68SO&%h{QvF~`U-4kf(9()?;!aF82zT<>tCY4Q>;%RbSd>ipvF10w_J!YAk2nzq?cCW(<>K=fEk!2+A}F zNX(UJP^KPqHC>gbWCS&*4R%_fgo;I9PP-Z#CTD8FY%&JQm zA@P3ag4>NEvQ+kt9Q7Na&l*u-vpac&l~2}G+`o-6e1B$n?cNTPN_O_fe@KC6 z^_nf_#8kHN@`4evDB|x&<{cR1jBYqyU?GHx+0UuZpD~FwHG_`xNOCZBB{HgHD0z7M zU7t~7IaqOWO^?xG2{pg$hxA&ti2QX z!Tj2QLT)FQd}95rTk@M+XnBCQk$j=kKgt*I_B7@}{n~q*sf=40z`5 z;yof}z9BF#nLc%6XYx+HA2qpIo~mHo8vCCI#E*SFK=j!Oh}B{={+&`f^WxSWa}bykgeFw&HW3ns z^OHZkhxvF*@9uL(g$&9xXF~poVm?iq^zO%eKup;v-syU4l9bPVJ8@H1h$r6h#t2Jy zsPEuZB|;uBTAS8&QiMC$DqLs_%gNoP(-u@a$e`CIhfaHy$T+z*?;{_$2&nD8qvXgA zJ~`8*PjWO;N}N5r<)1apBJ#Lhf?xM;IrEISw$vnmOVMkZlUa2Hr6s+(PvulqYuq3b>>9ch+UJJi-2`x*yP5bud4G-D1cH#pO)LP;h3K?NVk9$0r_%-t zIhNO28YS;|q%5y>ywe^S{%zx-EALW7WJ_SG!;x4CyUF!tmT#Acn|M4ef^rlADXu|T zerE(E!)3t&a)*@Uf3RxKziNaOGHQMdJuPJ|#t%OUY(&78QOUlH=MUsWe$y+UX> z-?U+fi80}${W`_JGO)Cw^L1ILfF2Z*Fw(Ugp~Uo4E3Z$Na&jXRyiZ?8nd=)j#ZQ_f zp}nbm8E4whW7~knDheQAZlWa4jPwzJm1xC6r?o0UOS(mQOgNwZaAaywt3Jx;3|-+c zsSagK7B?)@u2yp&wSo^?_rSQHXYnb%k5Sxs!6xmmYZCs@udrS3$}#550NuI%Ry6GX z-7{C-XYnJb;0t|b7ebAFcLKP>U=yA@t!ocOCE&t?53W6Y%_AfJ9agpF7^y9V-Bx6z zVms@H%xl<#&>9Zj)^`mMlRy8 z`Jjk-?xbb>$uub|cKtqjco#+q$p8uzToE*U-59zHxgOANYs zYmXXThKVzqMQP$n9}X%_Zrs}1>Ryd6u)YK>1TLm z)84{-s-x?p(|MH=PSj<)*XJgoV8_;5-QYiBs^hiMO#Kla%eQDL+l~mcA?N*?*g}N$ zzOZYB;wzUl;Jrn;?U{=8=ZR&cuux3O^ncb!i$f?&SX-5gXd-s(-DI0Sa}*kwr?;2% z2MO01w4cAfQB2a0Ar?z~l~9MI@|I(zkhyQ&kWm*V~3AFb@Z7e&h0vm$h*g__&$a_+HfC=9LAUueS&g6Rdx z*IgeT5wM1p38unAA)CHD-#&G^l$lc5DcbQ*z00V7lYhhxh>Lh8Z-^A95o8KV$N_q|Ev5*-Ov zgZ;};NRQoKxMZb_w)o>pTVbLK;e4#++FNr8-`u$GO*~lSQZv9N|1!qd`>k*F$22)q z{ZZ=+DKWCUW7+wEW&F@=lhFO%1<~}Y`woW`+em52;U%R;S41?Yi$~lZHo@Sb1(h?# zR3buoOoBExLC*hWe!A57v=F?8+`ZxVNx+*v?ZLE}Z7>Bm9pG3Nz$869!~N>U5mQ%o zpzID*#b{nd_FqB5Sf$6T*H+uh(W30gz1g7{>sNNzsl0AB<(%uGBKm3(f$aS+eAHb{ z`jT%xY{Qi^c=Ou4YXb$8sKko~(z__**V&5+#$hgTN*9#&si|{DgGxfN z80LSmynqQu@A3!3HZwl!yLmtrc;cgJPgF_MgbuB_Ibc~-!< zdLzW`;4~3&tk>~4Um_r->^OF>UKGnyIVH!+%@*_ev=?U@dMG)rlRy34_)A7t>UPH@ z=@7aVP@N?G#UyH!Yu)P11f*lW4UJPaVT>b-ZL@DzNpW9;xDjoZYW`wecig2zQJgFn zAA)|hj1j$En-*TrrQWz*O=FH=;WK3)ig3P4`f$Ga%Mn-&mS%U>TzSf6oQv}fV(Spf zO|kgZifJ%&S&U=s)00wo+0w$0MOi4#>glAz{|1WaMbfLPeZvT22Eq32$*oHSd-{{? zQYI}Cs;?#G8v?Nc=xE!11A-dy_%+^Y45)ddZ)&u89T+%jGMH&TpGD&pxDB&;gMcy|7hw zDMHD&;}N&o7%2q2U6EZDyJNw!+F)dYPdvno>)u!@VnFk{otiJBqKN6W04FlR|5v*r|&r zO}2VID(_;Ua_=*_8Nc=0iORwb{nl#@R?jY?=}qr(GhZxW^5Iy!pk0 z7FvZ+Bku}v5p_1EZ6+%2z`VLri!dRjF{1oX=TelCc|IDmZ;(1RZ} z&saAHrhXnA7>y=c$;UDJ0J#l0raoosU?oTFkUn4Bq1S@aflw z%nlVXM69<_Rb`!eFy+#z{HezXBC`9H(M;D;6^k#2o&+Q11tzaA2wmE#O)E;plieV@Bs=0Qr1e@6Utha5FObP2aAeP-POYV@MjNFX58#U$_M8A&34otqkd-8yPQzw_fsNfi6& zsixC&)k6AQs>Rhs%TWp{4=yGLVc{KcfXDK0B5;nXU_<{D6@9_A_UN1{l(C`t{80CI zK9xwEA!sOu!9VXDMpN`8>;bLCj`?IE&W8O&x8SFMV)(20$o>*Ooe_eOOd8bOA_DL( zMiVbAq-dUxU0T8hoPmbPJ?^}fX`e)GXo;aijI$Wo?Y$z)mMOd;X*wiZ!#C=%(8ay*wT<5N4xPj0YU zqu85yan~J+6avfo{2tY{@BBLXQ^atXzJEYO%hW#Hg&oh#i8Mw z?iRS5jf57IvUL-Fr-7e)tdiei2qE`;lEw|hSjUETY86)nk*AN)5#!r;IYe?VAQV+v*pWQ6+ zFcflX0_=m@tVQJaCi^dxXNcfDsmEfGVHDTW>^)%dM9pElJjgV@ixQ8Qr{)_#7=ab| zuF30wjC>@;*p03cvK)2|M|0cd%sIAJb5!PX#?Y=s+pg&_W`}#!K*%H!^~Q}(H={V1 zIGNL^?~@6Wme?XEc}6Hn3=us)H4N$N;cc;$o;0r;^9T$~`o5WCJPCc{b zA(wDMsW zh6Lj^9IAKu*=@decy!;CWH&DmVRVCO8*hb)3DNg#Jm&*ZyjkatI6d}~G3;WuPg}J# ziuu|+T%8pxU~KZ-B)Tc)I5>TtbNY$2)JtEAL(jeu@Tz>YtaOQ>eodG{Nw<;(%1 z)F%K@p*0uhSn55LbD3tZR_(09Xa>j#*>!}ssQ-cAYoF^<`r>JO{Px$YST0vSNcGR~ zXd(65N8Z<9O65}f`r%mu`tca!vDRHt;Dc6h{j*L19`Sv#-)JSDdWRNgT`v$Z6InVI zXSNVLpyX70<3zN~u!~oIT@o<0NjmKki)dEr$BTm>M2lHZ{GN4H9LLB#W-kXKUkM}Y z+U(8ROrxL;AFT1i7IM7qMAEmL2Lwz209v&H7%|hMvSP3kA;-_st^a8*U`1p;{Fn4i z#AMxEa;Z8-%4jMtaXnd}#-baJSo;i0c!k~(WW7X;=6a^N(9erS+|lq|&xpVeGfXkE zjbTLdoLe6DtIIL^pOzOb*?0~`Bb=3-zaC`-&reueJtYcCqD&e5*exTUat*8CcEU7# zfBfkaEhxBIegFg4E7?<=im*EkN>1yk_{y0_M%tH~oY_ z#0<8f@TQpEeb;4SdncPVqyv3bF}MBpa^H~3DXn4bGxSU#esU>(npEa6*4!HvE#BsYU-)G|A`q}Cm! zwHomAgXMTEuWMUg*EX0x$r6}k3BVIRP5=PN`2oZBh25TO_Fl-ctJg!G<@-9WXWWcoP=T%n$R98JK z;r2@bGdnUy6h06|5t)s~ylUf-dh?A8sfh?<#>;Z|<-;d}barfbw=e`I%xI5mbYmSU*&{&?F78Xs_`}F`&+e3zu_RIv+w zE}i*ArRKTlfB9N-Psn-0H>~=H&%?*f>wYsY9tk_&$oq9{xsqGpuW(_mjs|@t zwDYZKXK=m>((~H8KfGUwoH7ql-dKdt^_i^(F9HOF1F*AU;sXKYL{#wOKwl*>>teYL ztA|77+`E~g_m@LiGHm7BVa^AAXjxV)UyPA>YkFGPVL4QBB`opFR}8BEqZKCH6jFlP z5VLpt<#YfST)9yP(>FZZlQFC(h_rV5r0hN)P5Y5=ez=vWped&m8aJO|Q-*T(Uu@nZ zjA-d0;8u{qDA?5jaV-kWcCf{FRux7riMZ!l^+7}%mEEuG|A$YQ z-FL*}CrQQF<5)HQXD>oqTXSdetUfkLVLP*6i5LcJu3J4n_m6;XBedM&bWFq$d5^gz zJVt4LNsruT-9vCT)q)cG8WES*Z1Gu}DTT)OGKYJt#Pmb|HhsR@j!_;hIedD@MGR^@ z)9mOUz^6@iDmiI?P|SI3o^!*h9S;B88Lu5tOPMEU*R;jONnsoNHGH&o_%x5{7;&oU#9A3{kIk_-$vJWWk2^ZixwjF+b;{XS7)oxWGCegYI6Hh9B(F zt1sdT!sAYF$v3Lz5lwFi1B0z4+`nM7Z&5r(f77-6Q5Q*0w=ApvL`#OL*%imtdjBGX z?ojiWC||&!OS^8TjUZ5N_p-}c0-v%isL*9IBqoj7E&ozv9>dIdYd6xjQ^jlDyjXH- zpPZ@ZJ*4M97bR;v8`^XBNysSU_|3?FVG7_3*!6|-aT9#~?>L_T03hc;AIt)r0qsm3 z%+?qH9(&xx>=&KM+C4Hp_?Xjv_w)dt>frJq(~!WWWJPX44L6C|D+bc{gDEkB0*7t3 zPj^P~?WUPMQ*y*C*YNuA9S_8mWf_RqusMwP8|Jv*f}<%Xi_$)%aQGCp`7J~-$Rrt` zE?sc%2%jO8?SF?75zt{?(~QsaL~H}I=Zl+*Q1Fs?ZA%Q9LpNO1LS2rRawOsnA8aKO z`r101hz?jvAJHb>Gp^;6(yHx7o+P80MV2x+!w9ej z02#UOREwp45T889;r(RSPziZ>UsQ;IDa8I~-bak-74e{aiX73Fg#hQ0WUNs{mpLyd zhTl5^-HAf@RsxBnk`oQbL#0PvvF$=#(V`w?0q!M?0wSOHo$8ug`EsW9}0*LKtUB67ax z>MSpjgi#XKBC_b<(VC9t>24YcX#YgJ?RQ-Y(=yH9XZpR54co+df5UHxOKmlK(awIs zrZ@Lknh~w}gzSj9`mR9;I7G?znjH>msDq4g5_lFt|W#pVj4R5-15vyAS;YMSw&7bbZXO*~4PU2?A-Cln*L z9eh!~)|f}>oqnj;Jw*)pzR>b~B1F_9L`B6NK0@1Xe7ffHHXiNpy}H)zPY_C?b|24Z zwTx1sjmPaVjpjD&S$mDX7NMTn7Jq6BLq`1;`RZHbH7U!dHgIlsAe*vZ%SStRPV6ElcWoWhti?Y=GmH&+*8KrVhju^>_dn+R!FL=Sny&)v; zpVy30W)RF*bfk;Hw-_9B%QBi*PhR-xXds3wvG^O0yThYW8g9i*nJQ#$wO_@b&XPb^ zyBi}PeiX2RJP)dkF)3wX5y`!gC^YG04l#$qP~ z)Q|LOH*FL%^&BJ z11BeaF5-Mhfw3^Z@0{a2a|!d#3NbZ^!o_=bvL&0-ximk;{j!LE5a_7Hum5*1LVuAs zFeQN{1`~`*K31OO(Yyv!ljlCc2$i841S*PVrLNweQEVYcRI6KyU3%r00qUVHcx8?h)B__lMi;B z#~7ZLfB^tt6Zvca@R5);&PfA(hvo3=B)x08p9-$K?q*Y0vVx;JUTM_LUX&lA8!#Jf_-jsDGS!O&g+ z%AEQEBOjT*rhc)#h|vu&oWoqi^eIX}9{|KGrTN{7mT{JQ@t(Ej^Mx#cpmZy)6@{&E z$GB!Xl#TLnX%Y2qUaedj0I-pyV9B(=nBkh}JZ( zr8T!&L@G5r>-s7bp|%3xjQcTS?!4Oz&-{9%q|fYuPTDZ!EQ89?1CIkZ__Xp}Q*#Q1 z^y<_-OMk_SNvn%(78b9KV#JspBqf|1ri%<|am!yl;{TJyebw3ou76-Q?cqKKGsC?#X($2&rf3sB=fbC;UsXT#jJJ6F!mI^A;4#g#|s3Oy9P zWwVI#WqQf7>9f#9i;fGw9Yf^I1O6k~znettVmIJm{(cE^uu-d5bU}ex=il7$TB8sE zJkI#5pK1=bJuE%vnV7TsU|&KY0cJinJ`#-VlY=d-tiL0cF~W!Buu77P1iJQR=;8ZJ zIlODxHM`k&VM1$W5^U7Lp|06cGolD*k)w5;D>M!q(&!(l9RSE_=`T+X_L#^SP$&y9 z1f=*e?_c@8ce(h?5W*~;g<#=x)@LWzR>i`zL&j%Q^yFkwUTFL-tpKl2-4`>jScaQ- z?QtGEn-w|B9dw#INrF4%^T67F5M~DaVpwAT@+lSr*SDlq!X%n_x?E7H=FMdLcCO3C z7-s&J=kl}&BlOZgjs|)dIVixs|K>D=u9>_wW$HC9zUvhGV22f-{@^mx2J1Pt34YI;~ zTA5c-1Oe%e2VTv*EuvT62)0$U3Q4wY)8A4zi0EUoS~I4;g#Ykv_M?mK2vl~o*C%&C zPBDy`x+MiraomEp>-jDcvtHlu2gOfrO_z#!dhR?ucd__C@d6NIfZoKH2prvVb%?7&7?ukG=)0SM znf)Zq${G<8O6HaxXu5|*$Ol$dh2~4BQ2gxSVmlF8vTgHn?G_ZTtNCDM(vA{~%J;qY zz9^%z+boiZvz5%U?C#gO%?Q0he|z7>r6{;2C#ltEn}jx}r0H<{X+EW!2hUm-!lQlv z8NX{pUq!3lWA$Ujas{N;O1{=R$Wf8uy4TPOA$gvEh#R+^N8v7g>S9zQBxOr~Q*eDO zLel=ze1~hJrb2T1 zz}AL+)(V8k=(3}?@gr)suDe%%38uTtZfHOIV2owR>mvh4Fxs@~ohLVjV$4eh6L~cIfCyTNJ;9zs6l? zB@CZ$RL>|!6s#kO+YW&$j9BMe4Hy6z(S3u zuVxCVO;y3I7A+`ff$77V{}6QH(BHjZ(Ll*YhTE5L{9nTsnD;loI@oXWlV2ibB5nw%fl$Az(et=w~EK z!LA*fTTfnrBOEXMo=eD8xi%`h;?p)lLlTnNUJJ#gItQc-d z_LbL{{z{ns=w0mNS3Xl8IFld^=dzq356H%d&#dEXjy*2o(*V~I#J5>Uvcs0%3}Hzj z@9L@HJiY(5|5<=RV`J_u7~=jPqTW0ns{Z}sKZX`$38`o|$exO_&zzY#bI$C`nX}Cd zV@Z}sl9s#fq?J-bwo*z(5fw2-DQVT+f{>*}C8h1A&~}&KqtD~_{r&!W{`daxy58^W zb-k|l75}rwtwI0;*`}@Y3hf~Yh>reL4K zZH+HvqEL)}H-&7J2Aw)x_u1u*nv?MY{d*Z68kDuvD@)&tKs5izIzS4vfdgr_@9*O>tSAE6T+ z$4<}&F;0wcot5KsIk-vqxtaDEV~3sm`^U}kAz5Mjv3lp+nHLO_r2EVp(! zd~w&lU3dQ>m=(Q=?y*%=;J+G~QzjN7Y2^9*@plFO`gl8OPl*(Iu<^88)E1oo{S=O=^O#mn-liFPYM~o5 zzJUZ-Tib#Q8?Ojo=k}q2^~UAE#SDy-EGS7aTPoycd7lA!HY$!4&&j|wMa?;oA6GQY z3}bgsay~Zc0m|M#cY13PMS^iH)Y-2X;rD|f{@o`Dm5&=tj*EY^Ocv&blxVjt#}Jug zw=WWktPp3}8AknIULYksl0-3BMM*n(n(axeF}}?IBI>e{^^WN3JsU;b`* z`bG?2{m0iPAWF&oG+2PV-HEeKxpnuro#gpwCuUf`DKcTT)y~|NDEp=TiT&@w?}pDpIfygzJy^TLXTHSld+bp0;^7M8ABk{N)fH;GyB49pGJkpOoaA&QB?i zL;3fNN5f3IDP-IY;o{o!N`Awn%2#(=<$@XVw+36AWc;R|GH~lfoPXw3r;enBijcxQ zdqfnBMn5;z2NtOL;c2;H^=?XNss=Ea1N?vS5B|CJjh13TZ=XMJ8gmpgXZD_`Jxmva zDc%6G)=wPRV~_!8Vo=a+G_^Q?rHX0kG6EVGE8#cUhO_eG#89(AczT3B0lt}Dc%*$g zAJhbvn>(4S0^MHNBqxL{1M|1~^y>dm!B-A{_2ic+kjS2N*J(urJo47kL~msXck=4R z+%I0Z-v=nY`l2z#(Hlh$V@4D^tP)B*5fZG}25ULgGmJ6ExZ|A1n3OZoOYGINN3l?1 zoGmdK5-p+4K@Mdcr6zPGo(hiuTV%=dnLIeJfBpmV7*X{hZ5G1Z|TyR6A zB4GaMEa!?(1Uup!<>Ix9LOPxA=ey5WvvRbC2NDnpYM69qf1sx%z@{#JnAoS_JN45H zznvl(YgZ}Pk0_P0n78B7UW6$FVtjAMT<({H+tu~t7A?P; z*@MMP;gV)wJ41#Fp zJWUF%85HaE>74yR-(`#^`g`_MTU4Oa%(}1U#uzKfu;ZwQuQ(t;y0$i3Oo85?|2^}g z3}^RC*1G(2TM802$zdlCOM@(2n=F0rkc=?5j-zLNC5(D}t>=j8a`fhF>?n@C`c7NmLPg-*=CmoJ7U9y_n+CFIFL+B6F60?a zSS{sVndag2IUMDV$I@=KdIdxO^~?YMYL0V^8)8meOeZBbpi_`qg2Dw&WJ%@}QsBJx z!C-m}h79)`Pnr`h=cND@^L|cL@~`|Q9?G7imM~_P&CG&BJWv(gOXO zgZ1B`MM!FU)(s)oMW^n`azHTmB_r|?h7l&!9j5n;2mX(0)(OG8f-7!n;ocl{z19|E ztv>$Gc{p4NWnU^rRhLyVg0Olb7N1Wd@VH(hs ztb*Rz^_+A1i(u@4&pirkQZWp8ceeTWl6=o$UZK_AVEFA`?_PZeF7p_=V%T9E$qrp_ zd?7a;^}B04I)6g7)c^3H?17(y5-ecE+fU6?$`au_KAC<0mk%^j!%TW?))@sCXhS}D zoWl8+&Y9}0E?@!EcCMl>tS9)VJ5t==@-+NcCV{5fy^B2YGA+?{V$Lvbi^ z^Eh?60@=Dqr@n6=!7qNE?B0^NOqk{Zw0c*CiF%CICbs@i39n>)HyAZj38F&+`vT4f zGqQuex0(e=gF1Xua@J*rFe`__C04sJpRnU2`58~80fw)6pL+Ae%(udyAtTjc!ZT$K+b-hv)n4h?LavlcF>NP1$KvcZMk|WwQ3QjpM^>nd-bfQ3gBw z_;>G&2T~|o=#9BZg1Kg^EJylG366`;-US)walsTus@;l3atOPYHGFG@MrN32yLru8 zC4Xa6eqHfR3VG1E%WK*`92!mdOL&8zq~5oM7IQL{Xz`p~r{DWh{1iGuy`tktitpIi z7rGGX(Rm?RRw2Cc33_>bi5kg9TDipnBv@Sgi=J=Bz=DSD(s~S{WdX=D#|CFT;gXLZ z>*9F%UG)l@g4Q2J; zAPBB|Qka95MzND`T1+dFYTzeV2KLYUAPWe$8;x=~FAuEY;E9z=Do}YWp!uv1(^vP@ z5%@M1=(}G_k7?COeRbMNP1%4<1e}XQX#YRifV*1(ZGI?kb5366&kG93c#iRc1uTlY z)vZ3uub6}mo~;1JM}-KduZ?@0L{qU6O&%{WTO}=G1tpr3R^Ux%AHDHVL0> zHk~~s3*`>#vXYwemHe4G3hS21YNRY}2jx(MBfFR2E<-5FPAp1#>r#mG30kLCe^|lR z7OPwBAyRzIFK$O$B`*KyfB;%LF8{N4S4)?Pw7GPoN+%XEvgmqRIwl+o#W#Q3OLC*O z{r$Fh7R7mV=3`@^C&Ajf@RUAX6D;ufxc7CxML74})o1TAeh7nxk+l_)Ff7nuB+UM>wPhyld_SL}+u(Vo)St%C8_GUGAtxAF^ntAZ%LfXHcg_u+y$Q~t zj613-zRQ>^G)L+Ok`?grL8IEp3mVAgxK}~Y4+SEC{zko~;K=dwzVl2faBj(u(wV$t zVptv6cj9TilIP4Ya{FsPCIO%xB&>&$j7yeBZi-P#)=cd35Edx;@0`Dsl^s)YB>E!~ zn)m$%X2zEZ2}WR^yfsGy9J;;bK%&&nT`@fw=zhaWiCOGEQtYtNcfY1i538Z z62!mP?XU)v(vrd353dfXr9iXczJjq3Dc}Jd%Fa_uHdj3d?2gL8g(i>dj(??ChL#V9 zKEK2nYQ-vSeFDnTzmxGI!AQ8|-BGjZ1|yUiabZn&+F_X4dacI6%tytl&=~vVJ&tCV zo%MZpJy5|~cHJ%8^%^FayrH}!KbmBl+(uVd%2b>Jx1o9Ghj3}swc5oW_oz5cN&1`L z>{LNdmPEe3X|0AE++SF@&yg?&cU4d>xj4AzvE*0pL;{RT4SXs70r|%Yvw9{1kl$u7 zi*5)L{%OPfs}cHy0?DGEFaZ9?Ke{GIX6M;3=@cP)Va=Ej6|La7(T#V}V+l5^s_US~ zh!V1#utz<;Dg-`hE_xn;gm6~deLc7Drx3I`HqY(e5W$`P;o7$O)p%g#^dn!_PK~CH zL}U~?Y4LzW+E~KgZYkqUo7BEiDo3u(y5rh7U&;E{%G7BH)9~T4BcIdiP&lC?aLwgF z33IqtyJ~$r1e%20rD{-J5Ys%r36Bskz-P4!mF7FR{B% zf;MDE>8PcYmEx?IbMuVlLSr=PV3an?(_Tb*WI1mi)k+5KjHHMcf7JdHR`FjhNS`g

        %@ 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

        21Uz4 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 WlZ@5nB>vCVl_Qh=H`)4sp8p48`x_Pj literal 0 HcmV?d00001 diff --git a/interface/resources/meshes/mannequin/mannequin.baked.fbx b/interface/resources/meshes/mannequin/mannequin.baked.fbx new file mode 100755 index 0000000000000000000000000000000000000000..b405b4cfbb93770603c8f6867b50d00f4cfeec93 GIT binary patch literal 611280 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

        |cCj04zMWjd$`!^UqDvZ(N3U#E=lVdHo6Sd9q5 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 Dx8*gC literal 0 HcmV?d00001 From 2c2f15436078e1eda3fb2f87bce3c318d45b1779 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Thu, 1 Jun 2017 17:13:08 -0700 Subject: [PATCH 211/357] push packet version for default mannequin avatar --- libraries/networking/src/udt/PacketHeaders.cpp | 1 + libraries/networking/src/udt/PacketHeaders.h | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/libraries/networking/src/udt/PacketHeaders.cpp b/libraries/networking/src/udt/PacketHeaders.cpp index 9d970fa318..04ae065b65 100644 --- a/libraries/networking/src/udt/PacketHeaders.cpp +++ b/libraries/networking/src/udt/PacketHeaders.cpp @@ -53,6 +53,7 @@ PacketVersion versionForPacketType(PacketType packetType) { case PacketType::EntityQuery: return static_cast(EntityQueryPacketVersion::JSONFilterWithFamilyTree); case PacketType::AvatarIdentity: + return static_cast(AvatarMixerPacketVersion::MannequinDefaultAvatar); case PacketType::AvatarData: case PacketType::BulkAvatarData: case PacketType::KillAvatar: diff --git a/libraries/networking/src/udt/PacketHeaders.h b/libraries/networking/src/udt/PacketHeaders.h index 2cc3a2c42e..fa1151e0a6 100644 --- a/libraries/networking/src/udt/PacketHeaders.h +++ b/libraries/networking/src/udt/PacketHeaders.h @@ -236,7 +236,8 @@ enum class AvatarMixerPacketVersion : PacketVersion { AvatarAsChildFixes, StickAndBallDefaultAvatar, IdentityPacketsIncludeUpdateTime, - AvatarIdentitySequenceId + AvatarIdentitySequenceId, + MannequinDefaultAvatar }; enum class DomainConnectRequestVersion : PacketVersion { From b9f9cddea0b3206fdb363a76160988c87bba5584 Mon Sep 17 00:00:00 2001 From: Brad Davis Date: Thu, 1 Jun 2017 16:40:16 -0700 Subject: [PATCH 212/357] Add versioning support to the KTX cache --- .../src/model-networking/KTXCache.cpp | 14 ++++++ .../src/model-networking/KTXCache.h | 5 +++ libraries/networking/src/FileCache.cpp | 45 +++++++++++++------ libraries/networking/src/FileCache.h | 16 +++++-- tests/networking/src/FileCacheTests.cpp | 27 ++++++++--- tests/networking/src/FileCacheTests.h | 1 + 6 files changed, 85 insertions(+), 23 deletions(-) diff --git a/libraries/model-networking/src/model-networking/KTXCache.cpp b/libraries/model-networking/src/model-networking/KTXCache.cpp index e0447af8e6..e6d6632571 100644 --- a/libraries/model-networking/src/model-networking/KTXCache.cpp +++ b/libraries/model-networking/src/model-networking/KTXCache.cpp @@ -11,14 +11,28 @@ #include "KTXCache.h" +#include #include using File = cache::File; using FilePointer = cache::FilePointer; +// Whenever a change is made to the serialized format for the KTX cache that isn't backward compatible, +// this value should be incremented. This will force the KTX cache to be wiped +const int KTXCache::CURRENT_VERSION = 0x01; +const int KTXCache::INVALID_VERSION = 0x00; + + KTXCache::KTXCache(const std::string& dir, const std::string& ext) : FileCache(dir, ext) { initialize(); + + Setting::Handle cacheVersionHandle("hifi.ktx.cache_version", KTXCache::INVALID_VERSION); + auto cacheVersion = cacheVersionHandle.get(); + if (cacheVersion != CURRENT_VERSION) { + wipe(); + cacheVersionHandle.set(CURRENT_VERSION); + } } KTXFilePointer KTXCache::writeFile(const char* data, Metadata&& metadata) { diff --git a/libraries/model-networking/src/model-networking/KTXCache.h b/libraries/model-networking/src/model-networking/KTXCache.h index bbf7ceadea..2a3f191b53 100644 --- a/libraries/model-networking/src/model-networking/KTXCache.h +++ b/libraries/model-networking/src/model-networking/KTXCache.h @@ -27,6 +27,11 @@ class KTXCache : public cache::FileCache { Q_OBJECT public: + // Whenever a change is made to the serialized format for the KTX cache that isn't backward compatible, + // this value should be incremented. This will force the KTX cache to be wiped + static const int CURRENT_VERSION; + static const int INVALID_VERSION; + KTXCache(const std::string& dir, const std::string& ext); KTXFilePointer writeFile(const char* data, Metadata&& metadata); diff --git a/libraries/networking/src/FileCache.cpp b/libraries/networking/src/FileCache.cpp index 6cb8cd8f7c..95304e3866 100644 --- a/libraries/networking/src/FileCache.cpp +++ b/libraries/networking/src/FileCache.cpp @@ -236,6 +236,28 @@ namespace cache { }; } +void FileCache::eject(const FilePointer& file) { + file->_cache = nullptr; + const auto& length = file->getLength(); + const auto& key = file->getKey(); + + { + Lock lock(_filesMutex); + if (0 != _files.erase(key)) { + _numTotalFiles -= 1; + _totalFilesSize -= length; + } + } + + { + Lock unusedLock(_unusedFilesMutex); + if (0 != _unusedFiles.erase(file)) { + _numUnusedFiles -= 1; + _unusedFilesSize -= length; + } + } +} + void FileCache::clean() { size_t overbudgetAmount = getOverbudgetAmount(); @@ -250,28 +272,23 @@ void FileCache::clean() { for (const auto& file : _unusedFiles) { queue.push(file); } + while (!queue.empty() && overbudgetAmount > 0) { auto file = queue.top(); queue.pop(); + eject(file); auto length = file->getLength(); - - unusedLock.unlock(); - { - file->_cache = nullptr; - Lock lock(_filesMutex); - _files.erase(file->getKey()); - } - unusedLock.lock(); - - _unusedFiles.erase(file); - _numTotalFiles -= 1; - _numUnusedFiles -= 1; - _totalFilesSize -= length; - _unusedFilesSize -= length; overbudgetAmount -= std::min(length, overbudgetAmount); } } +void FileCache::wipe() { + Lock unusedFilesLock(_unusedFilesMutex); + while (!_unusedFiles.empty()) { + eject(*_unusedFiles.begin()); + } +} + void FileCache::clear() { // Eliminate any overbudget files clean(); diff --git a/libraries/networking/src/FileCache.h b/libraries/networking/src/FileCache.h index 040e1ab592..f29d75f779 100644 --- a/libraries/networking/src/FileCache.h +++ b/libraries/networking/src/FileCache.h @@ -46,6 +46,9 @@ public: FileCache(const std::string& dirname, const std::string& ext, QObject* parent = nullptr); virtual ~FileCache(); + // Remove all unlocked items from the cache + void wipe(); + size_t getNumTotalFiles() const { return _numTotalFiles; } size_t getNumCachedFiles() const { return _numUnusedFiles; } size_t getSizeTotalFiles() const { return _totalFilesSize; } @@ -95,6 +98,9 @@ public: private: using Mutex = std::recursive_mutex; using Lock = std::unique_lock; + using Map = std::unordered_map>; + using Set = std::unordered_set; + using KeySet = std::unordered_set; friend class File; @@ -105,6 +111,8 @@ private: void removeUnusedFile(const FilePointer& file); void clean(); void clear(); + // Remove a file from the cache + void eject(const FilePointer& file); size_t getOverbudgetAmount() const; @@ -122,10 +130,10 @@ private: std::string _dirpath; bool _initialized { false }; - std::unordered_map> _files; + Map _files; Mutex _filesMutex; - std::unordered_set _unusedFiles; + Set _unusedFiles; Mutex _unusedFilesMutex; }; @@ -136,8 +144,8 @@ public: using Key = FileCache::Key; using Metadata = FileCache::Metadata; - Key getKey() const { return _key; } - size_t getLength() const { return _length; } + const Key& getKey() const { return _key; } + const size_t& getLength() const { return _length; } std::string getFilepath() const { return _filepath; } virtual ~File(); diff --git a/tests/networking/src/FileCacheTests.cpp b/tests/networking/src/FileCacheTests.cpp index 0813d05a54..79fe9dee54 100644 --- a/tests/networking/src/FileCacheTests.cpp +++ b/tests/networking/src/FileCacheTests.cpp @@ -113,18 +113,21 @@ void FileCacheTests::testUnusedFiles() { QVERIFY(!file.get()); } - QThread::msleep(1000); // Test files 90 to 99 are present for (int i = 90; i < 100; ++i) { std::string key = getFileKey(i); auto file = cache->getFile(key); QVERIFY(file.get()); inUseFiles.push_back(file); - // Each access touches the file, so we need to sleep here to ensure that the files are - // spaced out in numeric order, otherwise later tests can't reliably determine the order - // for cache ejection - QThread::msleep(1000); + + if (i == 94) { + // Each access touches the file, so we need to sleep here to ensure that the the last 5 files + // have later times for cache ejection priority, otherwise the test runs too fast to reliably + // differentiate + QThread::msleep(1000); + } } + QCOMPARE(cache->getNumCachedFiles(), (size_t)0); QCOMPARE(cache->getNumTotalFiles(), (size_t)10); inUseFiles.clear(); @@ -165,6 +168,20 @@ void FileCacheTests::testFreeSpacePreservation() { } } +void FileCacheTests::testWipe() { + // Reset the cache + auto cache = makeFileCache(_testDir.path()); + QCOMPARE(cache->getNumCachedFiles(), (size_t)5); + QCOMPARE(cache->getNumTotalFiles(), (size_t)5); + cache->wipe(); + QCOMPARE(cache->getNumCachedFiles(), (size_t)0); + QCOMPARE(cache->getNumTotalFiles(), (size_t)0); + QVERIFY(getCacheDirectorySize() > 0); + forceDeletes(); + QCOMPARE(getCacheDirectorySize(), (size_t)0); +} + + void FileCacheTests::cleanupTestCase() { } diff --git a/tests/networking/src/FileCacheTests.h b/tests/networking/src/FileCacheTests.h index 838c15afb8..b34b384855 100644 --- a/tests/networking/src/FileCacheTests.h +++ b/tests/networking/src/FileCacheTests.h @@ -20,6 +20,7 @@ private slots: void testUnusedFiles(); void testFreeSpacePreservation(); void cleanupTestCase(); + void testWipe(); private: size_t getFreeSpace() const; From 2de6162d3871623471c39127fa9e5fc3fa38a70a Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Thu, 1 Jun 2017 17:35:23 -0700 Subject: [PATCH 213/357] change the packet version across the board for avatar mixer --- libraries/networking/src/udt/PacketHeaders.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/libraries/networking/src/udt/PacketHeaders.cpp b/libraries/networking/src/udt/PacketHeaders.cpp index 04ae065b65..d59da2f726 100644 --- a/libraries/networking/src/udt/PacketHeaders.cpp +++ b/libraries/networking/src/udt/PacketHeaders.cpp @@ -53,11 +53,10 @@ PacketVersion versionForPacketType(PacketType packetType) { case PacketType::EntityQuery: return static_cast(EntityQueryPacketVersion::JSONFilterWithFamilyTree); case PacketType::AvatarIdentity: - return static_cast(AvatarMixerPacketVersion::MannequinDefaultAvatar); case PacketType::AvatarData: case PacketType::BulkAvatarData: case PacketType::KillAvatar: - return static_cast(AvatarMixerPacketVersion::AvatarIdentitySequenceId); + return static_cast(AvatarMixerPacketVersion::MannequinDefaultAvatar); case PacketType::MessagesData: return static_cast(MessageDataVersion::TextOrBinaryData); case PacketType::ICEServerHeartbeat: From c56a6c44f85e93ad4014607433bb976fda16ba71 Mon Sep 17 00:00:00 2001 From: Andrew Meadows Date: Thu, 1 Jun 2017 10:03:50 -0700 Subject: [PATCH 214/357] minor formatting fix --- libraries/entities/src/EntityItem.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/libraries/entities/src/EntityItem.cpp b/libraries/entities/src/EntityItem.cpp index 431b87cc61..640eba61d8 100644 --- a/libraries/entities/src/EntityItem.cpp +++ b/libraries/entities/src/EntityItem.cpp @@ -681,7 +681,9 @@ int EntityItem::readEntityDataFromBuffer(const unsigned char* data, int bytesLef // and pretend that we own it (we assume we'll recover it soon) // However, for now, when the server uses a newer time than what we sent, listen to what we're told. - if (overwriteLocalData) weOwnSimulation = false; + if (overwriteLocalData) { + weOwnSimulation = false; + } } else if (_simulationOwner.set(newSimOwner)) { markDirtyFlags(Simulation::DIRTY_SIMULATOR_ID); somethingChanged = true; From e34f979ed925c255eaaaa6e1311105db4256b132 Mon Sep 17 00:00:00 2001 From: Andrew Meadows Date: Thu, 1 Jun 2017 10:04:31 -0700 Subject: [PATCH 215/357] add EntityMotionState::isLocallyOwned() for cleaner logic --- libraries/physics/src/EntityMotionState.cpp | 14 +++++++++----- libraries/physics/src/EntityMotionState.h | 1 + libraries/physics/src/ObjectMotionState.h | 1 + 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/libraries/physics/src/EntityMotionState.cpp b/libraries/physics/src/EntityMotionState.cpp index fdd290bfca..50209a2101 100644 --- a/libraries/physics/src/EntityMotionState.cpp +++ b/libraries/physics/src/EntityMotionState.cpp @@ -84,7 +84,7 @@ EntityMotionState::~EntityMotionState() { void EntityMotionState::updateServerPhysicsVariables() { assert(entityTreeIsLocked()); - if (_entity->getSimulatorID() == Physics::getSessionUUID()) { + if (isLocallyOwned()) { // don't slam these values if we are the simulation owner return; } @@ -135,7 +135,7 @@ void EntityMotionState::handleEasyChanges(uint32_t& flags) { _nextOwnershipBid = usecTimestampNow() + USECS_BETWEEN_OWNERSHIP_BIDS; } _loopsWithoutOwner = 0; - } else if (_entity->getSimulatorID() == Physics::getSessionUUID()) { + } else if (isLocallyOwned()) { // we just inherited ownership, make sure our desired priority matches what we have upgradeOutgoingPriority(_entity->getSimulationPriority()); } else { @@ -315,7 +315,7 @@ bool EntityMotionState::isCandidateForOwnership() const { assert(_entity); assert(entityTreeIsLocked()); return _outgoingPriority != 0 - || Physics::getSessionUUID() == _entity->getSimulatorID() + || isLocallyOwned() || _entity->dynamicDataNeedsTransmit(); } @@ -489,7 +489,7 @@ bool EntityMotionState::shouldSendUpdate(uint32_t simulationStep) { return true; } - if (_entity->getSimulatorID() != Physics::getSessionUUID()) { + if (!isLocallyOwned()) { // we don't own the simulation // NOTE: we do not volunteer to own kinematic or static objects @@ -597,7 +597,7 @@ void EntityMotionState::sendUpdate(OctreeEditPacketSender* packetSender, uint32_ properties.clearSimulationOwner(); _outgoingPriority = 0; _entity->setPendingOwnershipPriority(_outgoingPriority, now); - } else if (Physics::getSessionUUID() != _entity->getSimulatorID()) { + } else if (!isLocallyOwned()) { // we don't own the simulation for this entity yet, but we're sending a bid for it quint8 bidPriority = glm::max(_outgoingPriority, VOLUNTEER_SIMULATION_PRIORITY); properties.setSimulationOwner(Physics::getSessionUUID(), bidPriority); @@ -786,6 +786,10 @@ void EntityMotionState::computeCollisionGroupAndMask(int16_t& group, int16_t& ma _entity->computeCollisionGroupAndFinalMask(group, mask); } +bool EntityMotionState::isLocallyOwned() const { + return _entity->getSimulatorID() == Physics::getSessionUUID(); +} + bool EntityMotionState::shouldBeLocallyOwned() const { return (_outgoingPriority > VOLUNTEER_SIMULATION_PRIORITY && _outgoingPriority > _entity->getSimulationPriority()) || _entity->getSimulatorID() == Physics::getSessionUUID(); diff --git a/libraries/physics/src/EntityMotionState.h b/libraries/physics/src/EntityMotionState.h index 380edf3927..541ad7c93c 100644 --- a/libraries/physics/src/EntityMotionState.h +++ b/libraries/physics/src/EntityMotionState.h @@ -79,6 +79,7 @@ public: virtual void computeCollisionGroupAndMask(int16_t& group, int16_t& mask) const override; + bool isLocallyOwned() const override; bool shouldBeLocallyOwned() const override; friend class PhysicalEntitySimulation; diff --git a/libraries/physics/src/ObjectMotionState.h b/libraries/physics/src/ObjectMotionState.h index 1e582ea854..a12a2eaa01 100644 --- a/libraries/physics/src/ObjectMotionState.h +++ b/libraries/physics/src/ObjectMotionState.h @@ -146,6 +146,7 @@ public: void dirtyInternalKinematicChanges() { _hasInternalKinematicChanges = true; } void clearInternalKinematicChanges() { _hasInternalKinematicChanges = false; } + virtual bool isLocallyOwned() const { return false; } virtual bool shouldBeLocallyOwned() const { return false; } friend class PhysicsEngine; From 74827fc4c802ea3c60a4031818dc76502d80d007 Mon Sep 17 00:00:00 2001 From: Andrew Meadows Date: Thu, 1 Jun 2017 10:05:26 -0700 Subject: [PATCH 216/357] recently moved static objects added to changelist since static objects are not active this will make the interface release ownership of recently changed static objects --- libraries/physics/src/PhysicsEngine.cpp | 43 +++++++++++-------- libraries/physics/src/PhysicsEngine.h | 3 +- .../physics/src/ThreadSafeDynamicsWorld.h | 2 + 3 files changed, 28 insertions(+), 20 deletions(-) diff --git a/libraries/physics/src/PhysicsEngine.cpp b/libraries/physics/src/PhysicsEngine.cpp index 3a02e95e7c..1c6faada1d 100644 --- a/libraries/physics/src/PhysicsEngine.cpp +++ b/libraries/physics/src/PhysicsEngine.cpp @@ -129,6 +129,9 @@ void PhysicsEngine::addObjectToDynamicsWorld(ObjectMotionState* motionState) { } body->setCollisionFlags(btCollisionObject::CF_STATIC_OBJECT); body->updateInertiaTensor(); + if (motionState->isLocallyOwned()) { + _activeStaticBodies.insert(body); + } break; } } @@ -174,19 +177,9 @@ void PhysicsEngine::removeObjects(const VectorOfMotionStates& objects) { // frame (because the framerate is faster than our physics simulation rate). When this happens we must scan // _activeStaticBodies for objects that were recently deleted so we don't try to access a dangling pointer. for (auto object : objects) { - btRigidBody* body = object->getRigidBody(); - - std::vector::reverse_iterator itr = _activeStaticBodies.rbegin(); - while (itr != _activeStaticBodies.rend()) { - if (body == *itr) { - if (*itr != *(_activeStaticBodies.rbegin())) { - // swap with rbegin - *itr = *(_activeStaticBodies.rbegin()); - } - _activeStaticBodies.pop_back(); - break; - } - ++itr; + std::set::iterator itr = _activeStaticBodies.find(object->getRigidBody()); + if (itr != _activeStaticBodies.end()) { + _activeStaticBodies.erase(itr); } } } @@ -245,14 +238,16 @@ VectorOfMotionStates PhysicsEngine::changeObjects(const VectorOfMotionStates& ob object->clearIncomingDirtyFlags(); } if (object->getMotionType() == MOTION_TYPE_STATIC && object->isActive()) { - _activeStaticBodies.push_back(object->getRigidBody()); + _activeStaticBodies.insert(object->getRigidBody()); } } // active static bodies have changed (in an Easy way) and need their Aabbs updated // but we've configured Bullet to NOT update them automatically (for improved performance) // so we must do it ourselves - for (size_t i = 0; i < _activeStaticBodies.size(); ++i) { - _dynamicsWorld->updateSingleAabb(_activeStaticBodies[i]); + std::set::const_iterator itr = _activeStaticBodies.begin(); + while (itr != _activeStaticBodies.end()) { + _dynamicsWorld->updateSingleAabb(*itr); + ++itr; } return stillNeedChange; } @@ -496,13 +491,23 @@ const CollisionEvents& PhysicsEngine::getCollisionEvents() { const VectorOfMotionStates& PhysicsEngine::getChangedMotionStates() { BT_PROFILE("copyOutgoingChanges"); + + _dynamicsWorld->synchronizeMotionStates(); + // Bullet will not deactivate static objects (it doesn't expect them to be active) // so we must deactivate them ourselves - for (size_t i = 0; i < _activeStaticBodies.size(); ++i) { - _activeStaticBodies[i]->forceActivationState(ISLAND_SLEEPING); + std::set::const_iterator itr = _activeStaticBodies.begin(); + while (itr != _activeStaticBodies.end()) { + btRigidBody* body = *itr; + body->forceActivationState(ISLAND_SLEEPING); + ObjectMotionState* motionState = static_cast(body->getUserPointer()); + if (motionState) { + _dynamicsWorld->addChangedMotionState(motionState); + } + ++itr; } _activeStaticBodies.clear(); - _dynamicsWorld->synchronizeMotionStates(); + _hasOutgoingChanges = false; return _dynamicsWorld->getChangedMotionStates(); } diff --git a/libraries/physics/src/PhysicsEngine.h b/libraries/physics/src/PhysicsEngine.h index e9b29a43a4..b20d73f0e6 100644 --- a/libraries/physics/src/PhysicsEngine.h +++ b/libraries/physics/src/PhysicsEngine.h @@ -13,6 +13,7 @@ #define hifi_PhysicsEngine_h #include +#include #include #include @@ -114,7 +115,7 @@ private: CollisionEvents _collisionEvents; QHash _objectDynamics; QHash> _objectDynamicsByBody; - std::vector _activeStaticBodies; + std::set _activeStaticBodies; glm::vec3 _originOffset; diff --git a/libraries/physics/src/ThreadSafeDynamicsWorld.h b/libraries/physics/src/ThreadSafeDynamicsWorld.h index b4fcca8cdb..54c3ddb756 100644 --- a/libraries/physics/src/ThreadSafeDynamicsWorld.h +++ b/libraries/physics/src/ThreadSafeDynamicsWorld.h @@ -51,6 +51,8 @@ public: const VectorOfMotionStates& getChangedMotionStates() const { return _changedMotionStates; } const VectorOfMotionStates& getDeactivatedMotionStates() const { return _deactivatedStates; } + void addChangedMotionState(ObjectMotionState* motionState) { _changedMotionStates.push_back(motionState); } + private: // call this instead of non-virtual btDiscreteDynamicsWorld::synchronizeSingleMotionState() void synchronizeMotionState(btRigidBody* body); From 29a05d7eb4832102b8e6bf65f6a41514c288e63f Mon Sep 17 00:00:00 2001 From: Andrew Meadows Date: Thu, 1 Jun 2017 14:17:14 -0700 Subject: [PATCH 217/357] bid immediately when creating new entity also clear EntityMotionState::_numInactiveUpdates on new ownership --- libraries/entities/src/EntityItem.cpp | 20 ++++------------- libraries/entities/src/EntityItem.h | 4 ++-- .../entities/src/EntityScriptingInterface.cpp | 10 +++++---- libraries/entities/src/SimulationFlags.h | 4 +--- libraries/entities/src/SimulationOwner.cpp | 22 +++++++++---------- libraries/entities/src/SimulationOwner.h | 5 +++-- libraries/physics/src/EntityMotionState.cpp | 21 +++++++++--------- 7 files changed, 38 insertions(+), 48 deletions(-) diff --git a/libraries/entities/src/EntityItem.cpp b/libraries/entities/src/EntityItem.cpp index 640eba61d8..530e356137 100644 --- a/libraries/entities/src/EntityItem.cpp +++ b/libraries/entities/src/EntityItem.cpp @@ -1295,27 +1295,15 @@ void EntityItem::getAllTerseUpdateProperties(EntityItemProperties& properties) c properties._accelerationChanged = true; } -void EntityItem::pokeSimulationOwnership() { - markDirtyFlags(Simulation::DIRTY_SIMULATION_OWNERSHIP_FOR_POKE); +void EntityItem::flagForOwnershipBid(uint8_t priority) { + markDirtyFlags(Simulation::DIRTY_SIMULATION_OWNERSHIP_PRIORITY); auto nodeList = DependencyManager::get(); if (_simulationOwner.matchesValidID(nodeList->getSessionUUID())) { // we already own it - _simulationOwner.promotePriority(SCRIPT_POKE_SIMULATION_PRIORITY); + _simulationOwner.promotePriority(priority); } else { // we don't own it yet - _simulationOwner.setPendingPriority(SCRIPT_POKE_SIMULATION_PRIORITY, usecTimestampNow()); - } -} - -void EntityItem::grabSimulationOwnership() { - markDirtyFlags(Simulation::DIRTY_SIMULATION_OWNERSHIP_FOR_GRAB); - auto nodeList = DependencyManager::get(); - if (_simulationOwner.matchesValidID(nodeList->getSessionUUID())) { - // we already own it - _simulationOwner.promotePriority(SCRIPT_GRAB_SIMULATION_PRIORITY); - } else { - // we don't own it yet - _simulationOwner.setPendingPriority(SCRIPT_GRAB_SIMULATION_PRIORITY, usecTimestampNow()); + _simulationOwner.setPendingPriority(priority, usecTimestampNow()); } } diff --git a/libraries/entities/src/EntityItem.h b/libraries/entities/src/EntityItem.h index 3243f50556..7c08137a1c 100644 --- a/libraries/entities/src/EntityItem.h +++ b/libraries/entities/src/EntityItem.h @@ -321,6 +321,7 @@ public: void updateSimulationOwner(const SimulationOwner& owner); void clearSimulationOwnership(); void setPendingOwnershipPriority(quint8 priority, const quint64& timestamp); + uint8_t getPendingOwnershipPriority() const { return _simulationOwner.getPendingPriority(); } void rememberHasSimulationOwnershipBid() const; QString getMarketplaceID() const; @@ -394,8 +395,7 @@ public: void getAllTerseUpdateProperties(EntityItemProperties& properties) const; - void pokeSimulationOwnership(); - void grabSimulationOwnership(); + void flagForOwnershipBid(uint8_t priority); void flagForMotionStateChange() { _dirtyFlags |= Simulation::DIRTY_MOTION_TYPE; } QString actionsToDebugString(); diff --git a/libraries/entities/src/EntityScriptingInterface.cpp b/libraries/entities/src/EntityScriptingInterface.cpp index b184d648da..90dc6893b4 100644 --- a/libraries/entities/src/EntityScriptingInterface.cpp +++ b/libraries/entities/src/EntityScriptingInterface.cpp @@ -230,6 +230,8 @@ QUuid EntityScriptingInterface::addEntity(const EntityItemProperties& properties } entity->setLastBroadcast(usecTimestampNow()); + // since we're creating this object we will immediately volunteer to own its simulation + entity->flagForOwnershipBid(VOLUNTEER_SIMULATION_PRIORITY); propertiesWithSimID.setLastEdited(entity->getLastEdited()); } else { qCDebug(entities) << "script failed to add new Entity to local Octree"; @@ -440,7 +442,7 @@ QUuid EntityScriptingInterface::editEntity(QUuid id, const EntityItemProperties& } else { // we make a bid for simulation ownership properties.setSimulationOwner(myNodeID, SCRIPT_POKE_SIMULATION_PRIORITY); - entity->pokeSimulationOwnership(); + entity->flagForOwnershipBid(SCRIPT_POKE_SIMULATION_PRIORITY); entity->rememberHasSimulationOwnershipBid(); } } @@ -1194,7 +1196,7 @@ QUuid EntityScriptingInterface::addAction(const QString& actionTypeString, } action->setIsMine(true); success = entity->addAction(simulation, action); - entity->grabSimulationOwnership(); + entity->flagForOwnershipBid(SCRIPT_GRAB_SIMULATION_PRIORITY); return false; // Physics will cause a packet to be sent, so don't send from here. }); if (success) { @@ -1210,7 +1212,7 @@ bool EntityScriptingInterface::updateAction(const QUuid& entityID, const QUuid& return actionWorker(entityID, [&](EntitySimulationPointer simulation, EntityItemPointer entity) { bool success = entity->updateAction(simulation, actionID, arguments); if (success) { - entity->grabSimulationOwnership(); + entity->flagForOwnershipBid(SCRIPT_GRAB_SIMULATION_PRIORITY); } return success; }); @@ -1224,7 +1226,7 @@ bool EntityScriptingInterface::deleteAction(const QUuid& entityID, const QUuid& success = entity->removeAction(simulation, actionID); if (success) { // reduce from grab to poke - entity->pokeSimulationOwnership(); + entity->flagForOwnershipBid(SCRIPT_POKE_SIMULATION_PRIORITY); } return false; // Physics will cause a packet to be sent, so don't send from here. }); diff --git a/libraries/entities/src/SimulationFlags.h b/libraries/entities/src/SimulationFlags.h index dbcf51afc0..e2b2224b4a 100644 --- a/libraries/entities/src/SimulationFlags.h +++ b/libraries/entities/src/SimulationFlags.h @@ -26,12 +26,10 @@ namespace Simulation { const uint32_t DIRTY_MATERIAL = 0x00400; const uint32_t DIRTY_PHYSICS_ACTIVATION = 0x0800; // should activate object in physics engine const uint32_t DIRTY_SIMULATOR_ID = 0x1000; // the simulatorID has changed - const uint32_t DIRTY_SIMULATION_OWNERSHIP_FOR_POKE = 0x2000; // bid for simulation ownership at "poke" - const uint32_t DIRTY_SIMULATION_OWNERSHIP_FOR_GRAB = 0x4000; // bid for simulation ownership at "grab" + const uint32_t DIRTY_SIMULATION_OWNERSHIP_PRIORITY = 0x2000; // our own bid priority has changed const uint32_t DIRTY_TRANSFORM = DIRTY_POSITION | DIRTY_ROTATION; const uint32_t DIRTY_VELOCITIES = DIRTY_LINEAR_VELOCITY | DIRTY_ANGULAR_VELOCITY; - const uint32_t DIRTY_SIMULATION_OWNERSHIP_PRIORITY = DIRTY_SIMULATION_OWNERSHIP_FOR_POKE | DIRTY_SIMULATION_OWNERSHIP_FOR_GRAB; }; #endif // hifi_SimulationFlags_h diff --git a/libraries/entities/src/SimulationOwner.cpp b/libraries/entities/src/SimulationOwner.cpp index 77645a9e62..4398582673 100644 --- a/libraries/entities/src/SimulationOwner.cpp +++ b/libraries/entities/src/SimulationOwner.cpp @@ -26,9 +26,9 @@ const int SimulationOwner::NUM_BYTES_ENCODED = NUM_BYTES_RFC4122_UUID + 1; SimulationOwner::SimulationOwner() : _id(), _expiry(0), - _pendingTimestamp(0), + _pendingBidTimestamp(0), _priority(0), - _pendingPriority(0), + _pendingBidPriority(0), _pendingState(PENDING_STATE_NOTHING) { } @@ -36,9 +36,9 @@ SimulationOwner::SimulationOwner() : SimulationOwner::SimulationOwner(const QUuid& id, quint8 priority) : _id(id), _expiry(0), - _pendingTimestamp(0), + _pendingBidTimestamp(0), _priority(priority), - _pendingPriority(0) + _pendingBidPriority(0) { } @@ -61,9 +61,9 @@ bool SimulationOwner::fromByteArray(const QByteArray& data) { void SimulationOwner::clear() { _id = QUuid(); _expiry = 0; - _pendingTimestamp = 0; + _pendingBidTimestamp = 0; _priority = 0; - _pendingPriority = 0; + _pendingBidPriority = 0; _pendingState = PENDING_STATE_NOTHING; } @@ -102,9 +102,9 @@ bool SimulationOwner::set(const SimulationOwner& owner) { } void SimulationOwner::setPendingPriority(quint8 priority, const quint64& timestamp) { - _pendingPriority = priority; - _pendingTimestamp = timestamp; - _pendingState = (_pendingPriority == 0) ? PENDING_STATE_RELEASE : PENDING_STATE_TAKE; + _pendingBidPriority = priority; + _pendingBidTimestamp = timestamp; + _pendingState = (_pendingBidPriority == 0) ? PENDING_STATE_RELEASE : PENDING_STATE_TAKE; } void SimulationOwner::updateExpiry() { @@ -113,11 +113,11 @@ void SimulationOwner::updateExpiry() { } bool SimulationOwner::pendingRelease(const quint64& timestamp) { - return _pendingPriority == 0 && _pendingState == PENDING_STATE_RELEASE && _pendingTimestamp >= timestamp; + return _pendingBidPriority == 0 && _pendingState == PENDING_STATE_RELEASE && _pendingBidTimestamp >= timestamp; } bool SimulationOwner::pendingTake(const quint64& timestamp) { - return _pendingPriority > 0 && _pendingState == PENDING_STATE_TAKE && _pendingTimestamp >= timestamp; + return _pendingBidPriority > 0 && _pendingState == PENDING_STATE_TAKE && _pendingBidTimestamp >= timestamp; } void SimulationOwner::clearCurrentOwner() { diff --git a/libraries/entities/src/SimulationOwner.h b/libraries/entities/src/SimulationOwner.h index 5f940bbe25..94ed1d9a08 100644 --- a/libraries/entities/src/SimulationOwner.h +++ b/libraries/entities/src/SimulationOwner.h @@ -66,6 +66,7 @@ public: bool hasExpired() const { return usecTimestampNow() > _expiry; } + uint8_t getPendingPriority() const { return _pendingBidPriority; } bool pendingRelease(const quint64& timestamp); // return true if valid pending RELEASE bool pendingTake(const quint64& timestamp); // return true if valid pending TAKE void clearCurrentOwner(); @@ -84,9 +85,9 @@ public: private: QUuid _id; // owner quint64 _expiry; // time when ownership can transition at equal priority - quint64 _pendingTimestamp; // time when pending update was set + quint64 _pendingBidTimestamp; // time when pending bid was set quint8 _priority; // priority of current owner - quint8 _pendingPriority; // priority of pendingTake + quint8 _pendingBidPriority; // priority at which we'd like to own it quint8 _pendingState; // NOTHING, TAKE, or RELEASE }; diff --git a/libraries/physics/src/EntityMotionState.cpp b/libraries/physics/src/EntityMotionState.cpp index 50209a2101..d4be72e699 100644 --- a/libraries/physics/src/EntityMotionState.cpp +++ b/libraries/physics/src/EntityMotionState.cpp @@ -65,8 +65,7 @@ EntityMotionState::EntityMotionState(btCollisionShape* shape, EntityItemPointer _lastStep(0), _loopsWithoutOwner(0), _accelerationNearlyGravityCount(0), - _numInactiveUpdates(1), - _outgoingPriority(0) + _numInactiveUpdates(1) { _type = MOTIONSTATE_TYPE_ENTITY; assert(_entity); @@ -75,6 +74,8 @@ EntityMotionState::EntityMotionState(btCollisionShape* shape, EntityItemPointer // we need the side-effects of EntityMotionState::setShape() so we call it explicitly here // rather than pass the legit shape pointer to the ObjectMotionState ctor above. setShape(shape); + + _outgoingPriority = _entity->getPendingOwnershipPriority(); } EntityMotionState::~EntityMotionState() { @@ -135,23 +136,23 @@ void EntityMotionState::handleEasyChanges(uint32_t& flags) { _nextOwnershipBid = usecTimestampNow() + USECS_BETWEEN_OWNERSHIP_BIDS; } _loopsWithoutOwner = 0; + _numInactiveUpdates = 0; } else if (isLocallyOwned()) { // we just inherited ownership, make sure our desired priority matches what we have upgradeOutgoingPriority(_entity->getSimulationPriority()); } else { _outgoingPriority = 0; _nextOwnershipBid = usecTimestampNow() + USECS_BETWEEN_OWNERSHIP_BIDS; + _numInactiveUpdates = 0; } } if (flags & Simulation::DIRTY_SIMULATION_OWNERSHIP_PRIORITY) { - // The DIRTY_SIMULATOR_OWNERSHIP_PRIORITY bits really mean "we should bid for ownership because - // a local script has been changing physics properties, or we should adjust our own ownership priority". - // The desired priority is determined by which bits were set. - if (flags & Simulation::DIRTY_SIMULATION_OWNERSHIP_FOR_GRAB) { - _outgoingPriority = SCRIPT_GRAB_SIMULATION_PRIORITY; - } else { - _outgoingPriority = SCRIPT_POKE_SIMULATION_PRIORITY; - } + // The DIRTY_SIMULATOR_OWNERSHIP_PRIORITY bit means one of the following: + // (1) we own it but may need to change the priority OR... + // (2) we don't own it but should bid (because a local script has been changing physics properties) + uint8_t newPriority = isLocallyOwned() ? _entity->getSimulationOwner().getPriority() : _entity->getSimulationOwner().getPendingPriority(); + _outgoingPriority = glm::max(_outgoingPriority, newPriority); + // reset bid expiry so that we bid ASAP _nextOwnershipBid = 0; } From 9fad8d1821c93def323e70a675ad8fd1f61291e7 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Thu, 1 Jun 2017 17:52:01 -0700 Subject: [PATCH 218/357] rename ClosureEventSender to CloseEventSender --- interface/src/Application.cpp | 18 +++++++++--------- ...ureEventSender.cpp => CloseEventSender.cpp} | 12 ++++++------ ...ClosureEventSender.h => CloseEventSender.h} | 10 +++++----- 3 files changed, 20 insertions(+), 20 deletions(-) rename interface/src/networking/{ClosureEventSender.cpp => CloseEventSender.cpp} (88%) rename interface/src/networking/{ClosureEventSender.h => CloseEventSender.h} (79%) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index a637f9414b..41b0bcaf04 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -146,7 +146,7 @@ #include "InterfaceLogging.h" #include "LODManager.h" #include "ModelPackager.h" -#include "networking/ClosureEventSender.h" +#include "networking/CloseEventSender.h" #include "networking/HFWebEngineProfile.h" #include "networking/HFTabletWebEngineProfile.h" #include "networking/FileTypeProfile.h" @@ -537,7 +537,7 @@ bool setupEssentials(int& argc, char** argv, bool runningMarkerExisted) { DependencyManager::set(); DependencyManager::set(); DependencyManager::set(); - DependencyManager::set(); + DependencyManager::set(); return previousSessionCrashed; } @@ -1572,12 +1572,12 @@ void Application::aboutToQuit() { getActiveDisplayPlugin()->deactivate(); - // use the ClosureEventSender via a QThread to send an event that says the user asked for the app to close - auto closureEventSender = DependencyManager::get(); + // use the CloseEventSender via a QThread to send an event that says the user asked for the app to close + auto closeEventSender = DependencyManager::get(); QThread* closureEventThread = new QThread(this); - closureEventSender->moveToThread(closureEventThread); + closeEventSender->moveToThread(closureEventThread); // sendQuitEventAsync will bail immediately if the UserActivityLogger is not enabled - connect(closureEventThread, &QThread::started, closureEventSender.data(), &ClosureEventSender::sendQuitEventAsync); + connect(closureEventThread, &QThread::started, closeEventSender.data(), &CloseEventSender::sendQuitEventAsync); closureEventThread->start(); // Hide Running Scripts dialog so that it gets destroyed in an orderly manner; prevents warnings at shutdown. @@ -1745,13 +1745,13 @@ Application::~Application() { _window->deleteLater(); // make sure that the quit event has finished sending before we take the application down - auto closureEventSender = DependencyManager::get(); - while (!closureEventSender->hasFinishedQuitEvent() && !closureEventSender->hasTimedOutQuitEvent()) { + auto closeEventSender = DependencyManager::get(); + while (!closeEventSender->hasFinishedQuitEvent() && !closeEventSender->hasTimedOutQuitEvent()) { // yield so we're not spinning std::this_thread::yield(); } // quit the thread used by the closure event sender - closureEventSender->thread()->quit(); + closeEventSender->thread()->quit(); // Can't log to file passed this point, FileLogger about to be deleted qInstallMessageHandler(LogHandler::verboseMessageHandler); diff --git a/interface/src/networking/ClosureEventSender.cpp b/interface/src/networking/CloseEventSender.cpp similarity index 88% rename from interface/src/networking/ClosureEventSender.cpp rename to interface/src/networking/CloseEventSender.cpp index 238629b809..8c3d6ae888 100644 --- a/interface/src/networking/ClosureEventSender.cpp +++ b/interface/src/networking/CloseEventSender.cpp @@ -1,5 +1,5 @@ // -// ClosureEventSender.cpp +// CloseEventSender.cpp // interface/src/networking // // Created by Stephen Birarda on 5/31/17. @@ -21,7 +21,7 @@ #include #include -#include "ClosureEventSender.h" +#include "CloseEventSender.h" QNetworkRequest createNetworkRequest() { @@ -58,17 +58,17 @@ QNetworkReply* replyForAction(QString action) { return networkAccessManager.post(createNetworkRequest(), postDataForAction(action)); } -void ClosureEventSender::sendQuitEventAsync() { +void CloseEventSender::sendQuitEventAsync() { if (UserActivityLogger::getInstance().isEnabled()) { QNetworkReply* reply = replyForAction("quit"); - connect(reply, &QNetworkReply::finished, this, &ClosureEventSender::handleQuitEventFinished); + connect(reply, &QNetworkReply::finished, this, &CloseEventSender::handleQuitEventFinished); _quitEventStartTimestamp = QDateTime::currentMSecsSinceEpoch(); } else { _hasFinishedQuitEvent = true; } } -void ClosureEventSender::handleQuitEventFinished() { +void CloseEventSender::handleQuitEventFinished() { _hasFinishedQuitEvent = true; auto reply = qobject_cast(sender()); @@ -81,7 +81,7 @@ void ClosureEventSender::handleQuitEventFinished() { reply->deleteLater(); } -bool ClosureEventSender::hasTimedOutQuitEvent() { +bool CloseEventSender::hasTimedOutQuitEvent() { const int CLOSURE_EVENT_TIMEOUT_MS = 5000; return _quitEventStartTimestamp != 0 && QDateTime::currentMSecsSinceEpoch() - _quitEventStartTimestamp > CLOSURE_EVENT_TIMEOUT_MS; diff --git a/interface/src/networking/ClosureEventSender.h b/interface/src/networking/CloseEventSender.h similarity index 79% rename from interface/src/networking/ClosureEventSender.h rename to interface/src/networking/CloseEventSender.h index ea07e55c84..05e6f81ad4 100644 --- a/interface/src/networking/ClosureEventSender.h +++ b/interface/src/networking/CloseEventSender.h @@ -1,5 +1,5 @@ // -// ClosureEventSender.h +// CloseEventSender.h // interface/src/networking // // Created by Stephen Birarda on 5/31/17. @@ -9,8 +9,8 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -#ifndef hifi_ClosureEventSender_h -#define hifi_ClosureEventSender_h +#ifndef hifi_CloseEventSender_h +#define hifi_CloseEventSender_h #include @@ -19,7 +19,7 @@ #include -class ClosureEventSender : public QObject, public Dependency { +class CloseEventSender : public QObject, public Dependency { Q_OBJECT SINGLETON_DEPENDENCY @@ -38,4 +38,4 @@ private: std::atomic _quitEventStartTimestamp; }; -#endif // hifi_ClosureEventSender_h +#endif // hifi_CloseEventSender_h From 6d1bbc389df1aa312c0ad39efdfe74d9ba08a66b Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Thu, 1 Jun 2017 17:57:23 -0700 Subject: [PATCH 219/357] use a sleep instead of a yield waiting for close event --- interface/src/Application.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 41b0bcaf04..27c158322d 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -11,6 +11,7 @@ #include "Application.h" +#include #include #include @@ -1747,8 +1748,8 @@ Application::~Application() { // make sure that the quit event has finished sending before we take the application down auto closeEventSender = DependencyManager::get(); while (!closeEventSender->hasFinishedQuitEvent() && !closeEventSender->hasTimedOutQuitEvent()) { - // yield so we're not spinning - std::this_thread::yield(); + // sleep a little so we're not spinning at 100% + std::this_thread::sleep_for(std::chrono::milliseconds(10)); } // quit the thread used by the closure event sender closeEventSender->thread()->quit(); From c5e9551bab387b854ae71915b38e6494cf583754 Mon Sep 17 00:00:00 2001 From: samcake Date: Thu, 1 Jun 2017 18:05:18 -0700 Subject: [PATCH 220/357] more cleanup --- libraries/render-utils/src/GeometryCache.cpp | 2 +- libraries/render-utils/src/RenderDeferredTask.cpp | 4 ---- libraries/render-utils/src/StencilMaskPass.cpp | 8 ++++++-- libraries/render-utils/src/StencilMaskPass.h | 1 + libraries/render-utils/src/SurfaceGeometryPass.cpp | 4 ++-- libraries/render-utils/src/ToneMappingEffect.cpp | 2 +- libraries/render-utils/src/ZoneRenderer.cpp | 6 +++--- 7 files changed, 14 insertions(+), 13 deletions(-) diff --git a/libraries/render-utils/src/GeometryCache.cpp b/libraries/render-utils/src/GeometryCache.cpp index 5755d5a031..cd87cfdb3d 100644 --- a/libraries/render-utils/src/GeometryCache.cpp +++ b/libraries/render-utils/src/GeometryCache.cpp @@ -1783,7 +1783,7 @@ static void buildWebShader(const std::string& vertShaderText, const std::string& gpu::State::SRC_ALPHA, gpu::State::BLEND_OP_ADD, gpu::State::INV_SRC_ALPHA, gpu::State::FACTOR_ALPHA, gpu::State::BLEND_OP_ADD, gpu::State::ONE); if (blendEnable) { - PrepareStencil::testMaskBlendShape(*state); + PrepareStencil::testMask(*state); } else { PrepareStencil::testMaskDrawShape(*state); } diff --git a/libraries/render-utils/src/RenderDeferredTask.cpp b/libraries/render-utils/src/RenderDeferredTask.cpp index 89b4b72944..1b99fe92ee 100644 --- a/libraries/render-utils/src/RenderDeferredTask.cpp +++ b/libraries/render-utils/src/RenderDeferredTask.cpp @@ -33,7 +33,6 @@ #include "DeferredLightingEffect.h" #include "SurfaceGeometryPass.h" #include "FramebufferCache.h" -#include "HitEffect.h" #include "TextureCache.h" #include "ZoneRenderer.h" @@ -91,9 +90,6 @@ void RenderDeferredTask::build(JobModel& task, const render::Varying& input, ren const auto opaqueInputs = DrawStateSortDeferred::Inputs(opaques, lightingModel).hasVarying(); task.addJob("DrawOpaqueDeferred", opaqueInputs, shapePlumber); - // Once opaque is all rendered create stencil background - task.addJob("DrawOpaqueStencil", primaryFramebuffer); - task.addJob("OpaqueRangeTimer", opaqueRangeTimer); diff --git a/libraries/render-utils/src/StencilMaskPass.cpp b/libraries/render-utils/src/StencilMaskPass.cpp index 44e7a571e8..7a13a2d759 100644 --- a/libraries/render-utils/src/StencilMaskPass.cpp +++ b/libraries/render-utils/src/StencilMaskPass.cpp @@ -45,7 +45,7 @@ gpu::PipelinePointer PrepareStencil::getMeshStencilPipeline() { gpu::Shader::makeProgram((*program)); auto state = std::make_shared(); - drawMask(state); + drawMask(*state); state->setColorWriteMask(0); _meshStencilPipeline = gpu::Pipeline::create(program, state); @@ -61,7 +61,7 @@ gpu::PipelinePointer PrepareStencil::getPaintStencilPipeline() { gpu::Shader::makeProgram((*program)); auto state = std::make_shared(); - drawMask(state); + drawMask(*state); state->setColorWriteMask(0); _paintStencilPipeline = gpu::Pipeline::create(program, state); @@ -113,4 +113,8 @@ void PrepareStencil::testBackground(gpu::State& state) { void PrepareStencil::testMaskDrawShape(gpu::State& state) { state.setStencilTest(true, 0xFF, gpu::State::StencilTest(PrepareStencil::STENCIL_MASK, 0xFF, gpu::NOT_EQUAL, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_ZERO)); +} + +void PrepareStencil::testShape(gpu::State& state) { + state.setStencilTest(true, 0x00, gpu::State::StencilTest(PrepareStencil::STENCIL_SHAPE, 0xFF, gpu::NOT_EQUAL, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP)); } \ No newline at end of file diff --git a/libraries/render-utils/src/StencilMaskPass.h b/libraries/render-utils/src/StencilMaskPass.h index c65788ebf8..d7d6ee448b 100644 --- a/libraries/render-utils/src/StencilMaskPass.h +++ b/libraries/render-utils/src/StencilMaskPass.h @@ -38,6 +38,7 @@ public: static void testMask(gpu::State& state); static void testBackground(gpu::State& state); static void testMaskDrawShape(gpu::State& state); + static void testShape(gpu::State& state); private: diff --git a/libraries/render-utils/src/SurfaceGeometryPass.cpp b/libraries/render-utils/src/SurfaceGeometryPass.cpp index 4b13fa2bf0..de04c31622 100644 --- a/libraries/render-utils/src/SurfaceGeometryPass.cpp +++ b/libraries/render-utils/src/SurfaceGeometryPass.cpp @@ -224,7 +224,7 @@ const gpu::PipelinePointer& LinearDepthPass::getLinearDepthPipeline() { gpu::StatePointer state = gpu::StatePointer(new gpu::State()); // Stencil test the curvature pass for objects pixels only, not the background - state->setStencilTest(true, 0xFF, gpu::State::StencilTest(PrepareStencil::STENCIL_SCENE, 0xFF, gpu::EQUAL, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP)); + PrepareStencil::testShape(*state); state->setColorWriteMask(true, false, false, false); @@ -250,7 +250,7 @@ const gpu::PipelinePointer& LinearDepthPass::getDownsamplePipeline() { gpu::StatePointer state = gpu::StatePointer(new gpu::State()); - state->setStencilTest(true, 0xFF, gpu::State::StencilTest(PrepareStencil::STENCIL_SCENE, 0xFF, gpu::EQUAL, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP)); + PrepareStencil::testShape(*state); state->setColorWriteMask(true, true, true, false); diff --git a/libraries/render-utils/src/ToneMappingEffect.cpp b/libraries/render-utils/src/ToneMappingEffect.cpp index df4e1e0e6a..62ae9147f3 100644 --- a/libraries/render-utils/src/ToneMappingEffect.cpp +++ b/libraries/render-utils/src/ToneMappingEffect.cpp @@ -39,7 +39,7 @@ void ToneMappingEffect::init() { slotBindings.insert(gpu::Shader::Binding(std::string("colorMap"), ToneMappingEffect_LightingMapSlot)); gpu::Shader::makeProgram(*blitProgram, slotBindings); auto blitState = std::make_shared(); - blitState->setStencilTest(true, 0xFF, gpu::State::StencilTest(PrepareStencil::STENCIL_SCENE, 0xFF, gpu::EQUAL, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP)); + PrepareStencil::testShape(*blitState); blitState->setColorWriteMask(true, true, true, true); _blitLightBuffer = gpu::PipelinePointer(gpu::Pipeline::create(blitProgram, blitState)); } diff --git a/libraries/render-utils/src/ZoneRenderer.cpp b/libraries/render-utils/src/ZoneRenderer.cpp index 2fa6805cde..b72e4eac69 100644 --- a/libraries/render-utils/src/ZoneRenderer.cpp +++ b/libraries/render-utils/src/ZoneRenderer.cpp @@ -75,7 +75,7 @@ const gpu::PipelinePointer& DebugZoneLighting::getKeyLightPipeline() { gpu::StatePointer state = gpu::StatePointer(new gpu::State()); - state->setStencilTest(true, 0xFF, gpu::State::StencilTest(PrepareStencil::STENCIL_SCENE, 0xFF, gpu::EQUAL, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP)); + PrepareStencil::testMask(*state); state->setBlendFunction(true, gpu::State::SRC_ALPHA, gpu::State::BLEND_OP_ADD, gpu::State::INV_SRC_ALPHA); _keyLightPipeline = gpu::Pipeline::create(program, state); } @@ -97,7 +97,7 @@ const gpu::PipelinePointer& DebugZoneLighting::getAmbientPipeline() { gpu::StatePointer state = gpu::StatePointer(new gpu::State()); - state->setStencilTest(true, 0xFF, gpu::State::StencilTest(PrepareStencil::STENCIL_SCENE, 0xFF, gpu::EQUAL, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP)); + PrepareStencil::testMask(*state); state->setBlendFunction(true, gpu::State::SRC_ALPHA, gpu::State::BLEND_OP_ADD, gpu::State::INV_SRC_ALPHA); _ambientPipeline = gpu::Pipeline::create(program, state); } @@ -118,7 +118,7 @@ const gpu::PipelinePointer& DebugZoneLighting::getBackgroundPipeline() { gpu::StatePointer state = gpu::StatePointer(new gpu::State()); - state->setStencilTest(true, 0xFF, gpu::State::StencilTest(PrepareStencil::STENCIL_SCENE, 0xFF, gpu::EQUAL, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP)); + PrepareStencil::testMask(*state); state->setBlendFunction(true, gpu::State::SRC_ALPHA, gpu::State::BLEND_OP_ADD, gpu::State::INV_SRC_ALPHA); _backgroundPipeline = gpu::Pipeline::create(program, state); } From aa48f3f063235a9aaa9e6dde0f7652404c8d303b Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Thu, 1 Jun 2017 18:13:27 -0700 Subject: [PATCH 221/357] Rename watchProcessShutdown to shutdownWith --- libraries/networking/src/SandboxUtils.cpp | 3 +-- server-console/src/main.js | 14 +++++++------- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/libraries/networking/src/SandboxUtils.cpp b/libraries/networking/src/SandboxUtils.cpp index c62bd8f982..f6c7634ce5 100644 --- a/libraries/networking/src/SandboxUtils.cpp +++ b/libraries/networking/src/SandboxUtils.cpp @@ -74,8 +74,7 @@ void runLocalSandbox(QString contentPath, bool autoShutdown, bool noUpdater) { if (autoShutdown) { auto pid = qApp->applicationPid(); - qCDebug(networking) << "autoShutdown pid is" << pid; - args << "--watchProcessShutdown" << QString::number(pid); + args << "--shutdownWith" << QString::number(pid); } if (noUpdater) { diff --git a/server-console/src/main.js b/server-console/src/main.js index 55a45a4991..6667a570c8 100644 --- a/server-console/src/main.js +++ b/server-console/src/main.js @@ -890,18 +890,18 @@ function onContentLoaded() { startInterface(); } - if (argv.watchProcessShutdown) { - let pid = argv.watchProcessShutdown; - console.log("Watching process: ", pid); - let watchProcessInterval = setInterval(function() { + // If we were launched with the shutdownWith option, then we need to shutdown when that process (pid) + // is no longer running. + if (argv.shutdownWith) { + let pid = argv.shutdownWith; + console.log("Shutting down with process: ", pid); + let checkProcessInterval = setInterval(function() { let isRunning = isProcessRunning(pid); if (!isRunning) { log.debug("Watched process is no longer running, shutting down"); - clearTimeout(watchProcessInterval); + clearTimeout(checkProcessInterval); forcedShutdown(); } - }, 5000); - } // If we were launched with the shutdownWatcher option, then we need to watch for the interface app // shutting down. The interface app will regularly update a running state file which we will check. From 0536f8974a820e44961938b78e2e86f26bbd6a6b Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Thu, 1 Jun 2017 18:13:40 -0700 Subject: [PATCH 222/357] Remove shutdownWatcher option inside sandbox --- server-console/src/main.js | 26 -------------------------- 1 file changed, 26 deletions(-) diff --git a/server-console/src/main.js b/server-console/src/main.js index 6667a570c8..46cc472e04 100644 --- a/server-console/src/main.js +++ b/server-console/src/main.js @@ -902,32 +902,6 @@ function onContentLoaded() { clearTimeout(checkProcessInterval); forcedShutdown(); } - - // If we were launched with the shutdownWatcher option, then we need to watch for the interface app - // shutting down. The interface app will regularly update a running state file which we will check. - // If the file doesn't exist or stops updating for a significant amount of time, we will shut down. - if (argv.shutdownWatcher) { - log.debug("Shutdown watcher requested... argv.shutdownWatcher:", argv.shutdownWatcher); - var MAX_TIME_SINCE_EDIT = 5000; // 5 seconds between updates - var firstAttemptToCheck = new Date().getTime(); - var shutdownWatchInterval = setInterval(function(){ - var stats = fs.stat(argv.shutdownWatcher, function(err, stats) { - if (err) { - var sinceFirstCheck = new Date().getTime() - firstAttemptToCheck; - if (sinceFirstCheck > MAX_TIME_SINCE_EDIT) { - log.debug("Running state file is missing, assume interface has shutdown... shutting down snadbox."); - forcedShutdown(); - clearTimeout(shutdownWatchInterval); - } - } else { - var sinceEdit = new Date().getTime() - stats.mtime.getTime(); - if (sinceEdit > MAX_TIME_SINCE_EDIT) { - log.debug("Running state of interface hasn't updated in MAX time... shutting down."); - forcedShutdown(); - clearTimeout(shutdownWatchInterval); - } - } - }); }, 1000); } } From 86da91ac8d9f5a523bb24f10ba350a5c82ab5bb1 Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Thu, 1 Jun 2017 18:19:13 -0700 Subject: [PATCH 223/357] Remove the runningMarker timer --- interface/src/main.cpp | 5 +--- libraries/shared/src/RunningMarker.cpp | 35 +------------------------- libraries/shared/src/RunningMarker.h | 12 +-------- 3 files changed, 3 insertions(+), 49 deletions(-) diff --git a/interface/src/main.cpp b/interface/src/main.cpp index 3862bcc52f..a51b8fb55e 100644 --- a/interface/src/main.cpp +++ b/interface/src/main.cpp @@ -191,7 +191,7 @@ int main(int argc, const char* argv[]) { int exitCode; { - RunningMarker runningMarker(nullptr, RUNNING_MARKER_FILENAME); + RunningMarker runningMarker(RUNNING_MARKER_FILENAME); bool runningMarkerExisted = runningMarker.fileExists(); runningMarker.writeRunningMarkerFile(); @@ -205,9 +205,6 @@ int main(int argc, const char* argv[]) { Application app(argc, const_cast(argv), startupTime, runningMarkerExisted); - // Now that the main event loop is setup, launch running marker thread - runningMarker.startRunningMarker(); - // If we failed the OpenGLVersion check, log it. if (override) { auto accountManager = DependencyManager::get(); diff --git a/libraries/shared/src/RunningMarker.cpp b/libraries/shared/src/RunningMarker.cpp index 0c1fd06df8..cb7b39320c 100644 --- a/libraries/shared/src/RunningMarker.cpp +++ b/libraries/shared/src/RunningMarker.cpp @@ -13,44 +13,16 @@ #include #include -#include -#include -#include "NumericalConstants.h" #include "PathUtils.h" -RunningMarker::RunningMarker(QObject* parent, QString name) : - _parent(parent), +RunningMarker::RunningMarker(QString name) : _name(name) { } -void RunningMarker::startRunningMarker() { - static const int RUNNING_STATE_CHECK_IN_MSECS = MSECS_PER_SECOND; - - // start the nodeThread so its event loop is running - _runningMarkerThread = new QThread(_parent); - _runningMarkerThread->setObjectName("Running Marker Thread"); - _runningMarkerThread->start(); - - writeRunningMarkerFile(); // write the first file, even before timer - - _runningMarkerTimer = new QTimer(); - QObject::connect(_runningMarkerTimer, &QTimer::timeout, [=](){ - writeRunningMarkerFile(); - }); - _runningMarkerTimer->start(RUNNING_STATE_CHECK_IN_MSECS); - - // put the time on the thread - _runningMarkerTimer->moveToThread(_runningMarkerThread); -} - RunningMarker::~RunningMarker() { deleteRunningMarkerFile(); - QMetaObject::invokeMethod(_runningMarkerTimer, "stop", Qt::BlockingQueuedConnection); - _runningMarkerThread->quit(); - _runningMarkerTimer->deleteLater(); - _runningMarkerThread->deleteLater(); } bool RunningMarker::fileExists() const { @@ -77,8 +49,3 @@ void RunningMarker::deleteRunningMarkerFile() { QString RunningMarker::getFilePath() const { return QStandardPaths::writableLocation(QStandardPaths::DataLocation) + "/" + _name; } - -QString RunningMarker::getMarkerFilePath(QString name) { - return QStandardPaths::writableLocation(QStandardPaths::DataLocation) + "/" + name; -} - diff --git a/libraries/shared/src/RunningMarker.h b/libraries/shared/src/RunningMarker.h index f9c8e72d37..ae7c550660 100644 --- a/libraries/shared/src/RunningMarker.h +++ b/libraries/shared/src/RunningMarker.h @@ -12,21 +12,14 @@ #ifndef hifi_RunningMarker_h #define hifi_RunningMarker_h -#include #include -class QThread; -class QTimer; - class RunningMarker { public: - RunningMarker(QObject* parent, QString name); + RunningMarker(QString name); ~RunningMarker(); - void startRunningMarker(); - QString getFilePath() const; - static QString getMarkerFilePath(QString name); bool fileExists() const; @@ -34,10 +27,7 @@ public: void deleteRunningMarkerFile(); private: - QObject* _parent { nullptr }; QString _name; - QThread* _runningMarkerThread { nullptr }; - QTimer* _runningMarkerTimer { nullptr }; }; #endif // hifi_RunningMarker_h From 4a419f2d07a4a796834929b85d7aa49dfa24972f Mon Sep 17 00:00:00 2001 From: samcake Date: Thu, 1 Jun 2017 18:25:24 -0700 Subject: [PATCH 224/357] Merging with upstream --- libraries/render-utils/src/RenderPipelines.cpp | 2 +- libraries/render-utils/src/StencilMaskPass.cpp | 6 +++--- libraries/render-utils/src/SurfaceGeometryPass.cpp | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/libraries/render-utils/src/RenderPipelines.cpp b/libraries/render-utils/src/RenderPipelines.cpp index be2bb0efbe..42ed0bdad9 100644 --- a/libraries/render-utils/src/RenderPipelines.cpp +++ b/libraries/render-utils/src/RenderPipelines.cpp @@ -331,7 +331,7 @@ void addPlumberPipeline(ShapePlumber& plumber, bool isWireframed = (i & 4); auto state = std::make_shared(); - state->setStencilTest(true, 0xFF, gpu::State::StencilTest(PrepareStencil::STENCIL_MASK, 0xFF, gpu::NOT_EQUAL, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_ZERO)); + PrepareStencil::testMaskDrawShape(*state); // Depth test depends on transparency state->setDepthTest(true, !key.isTranslucent(), gpu::LESS_EQUAL); diff --git a/libraries/render-utils/src/StencilMaskPass.cpp b/libraries/render-utils/src/StencilMaskPass.cpp index 7a13a2d759..d8a4afbc43 100644 --- a/libraries/render-utils/src/StencilMaskPass.cpp +++ b/libraries/render-utils/src/StencilMaskPass.cpp @@ -104,11 +104,11 @@ void PrepareStencil::drawMask(gpu::State& state) { } void PrepareStencil::testMask(gpu::State& state) { - state.setStencilTest(true, 0x00, gpu::State::StencilTest(PrepareStencil::STENCIL_MASK, 0xFF, gpu::NOT_EQUAL, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP)); + state.setStencilTest(true, 0xFF, gpu::State::StencilTest(PrepareStencil::STENCIL_MASK, 0xFF, gpu::NOT_EQUAL, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP)); } void PrepareStencil::testBackground(gpu::State& state) { - state.setStencilTest(true, 0x00, gpu::State::StencilTest(PrepareStencil::STENCIL_BACKGROUND, 0xFF, gpu::EQUAL, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP)); + state.setStencilTest(true, 0xFF, gpu::State::StencilTest(PrepareStencil::STENCIL_BACKGROUND, 0xFF, gpu::EQUAL, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP)); } void PrepareStencil::testMaskDrawShape(gpu::State& state) { @@ -116,5 +116,5 @@ void PrepareStencil::testMaskDrawShape(gpu::State& state) { } void PrepareStencil::testShape(gpu::State& state) { - state.setStencilTest(true, 0x00, gpu::State::StencilTest(PrepareStencil::STENCIL_SHAPE, 0xFF, gpu::NOT_EQUAL, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP)); + state.setStencilTest(true, 0xFF, gpu::State::StencilTest(PrepareStencil::STENCIL_SHAPE, 0xFF, gpu::NOT_EQUAL, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP)); } \ No newline at end of file diff --git a/libraries/render-utils/src/SurfaceGeometryPass.cpp b/libraries/render-utils/src/SurfaceGeometryPass.cpp index de04c31622..b0c0aa6358 100644 --- a/libraries/render-utils/src/SurfaceGeometryPass.cpp +++ b/libraries/render-utils/src/SurfaceGeometryPass.cpp @@ -555,7 +555,7 @@ const gpu::PipelinePointer& SurfaceGeometryPass::getCurvaturePipeline() { #ifdef USE_STENCIL_TEST // Stencil test the curvature pass for objects pixels only, not the background - state->setStencilTest(true, 0xFF, gpu::State::StencilTest(PrepareStencil::STENCIL_SCENE, 0xFF, gpu::EQUAL, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP)); + PrepareStencil::testMask(*state); #endif // Good to go add the brand new pipeline _curvaturePipeline = gpu::Pipeline::create(program, state); From e76dfe4182141d104adba630b3590883682b1954 Mon Sep 17 00:00:00 2001 From: Menithal Date: Fri, 2 Jun 2017 06:52:37 +0300 Subject: [PATCH 225/357] 21324: Implementation of last feedback - If properties are expanded, the animation wrapper should now use the values - Decimal Values from filled in data now automatically get reduced the 1000th. The fields however will allow one to set smaller values and show it, until the entity is selected again - If particle is locked, keep fields locked. --- .../particle_explorer/hifi-entity-ui.js | 32 ++++++++++++------- 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/scripts/system/particle_explorer/hifi-entity-ui.js b/scripts/system/particle_explorer/hifi-entity-ui.js index 5de1f12393..06adddab6a 100644 --- a/scripts/system/particle_explorer/hifi-entity-ui.js +++ b/scripts/system/particle_explorer/hifi-entity-ui.js @@ -45,6 +45,10 @@ and If there is any changes to either the Entities or properties of var RADIAN = Math.PI / 180; +var roundFloat = function (input) { + return Math.floor(parseFloat(input) * 1000)/1000; +}; + function HifiEntityUI(parent) { this.parent = parent; @@ -140,15 +144,19 @@ HifiEntityUI.prototype = { }, fillFields: function(currentProperties) { var self = this; - var fields = document.getElementsByTagName("input"); - for (var i = 0; i < fields.length; i++) { - fields[i].removeAttribute("disabled"); + + if (!currentProperties.locked) { + for (var i = 0; i < fields.length; i++) { + fields[i].removeAttribute("disabled"); + } } if (self.onSelect) { self.onSelect(); } var keys = Object.keys(currentProperties); + + for (var e in keys) { var value = keys[e]; @@ -178,9 +186,9 @@ HifiEntityUI.prototype = { var red = document.getElementById(value + "-red"); var blue = document.getElementById(value + "-blue"); var green = document.getElementById(value + "-green"); - red.value = property.red; - blue.value = property.blue; - green.value = property.green; + red.value = roundFloat(property.red); + blue.value = roundFloat(property.blue); + green.value = roundFloat(property.green); red.oninput({ target: red @@ -190,17 +198,17 @@ HifiEntityUI.prototype = { var y = document.getElementById(value + "-y"); var z = document.getElementById(value + "-z"); // crashes here. - x.value = property.x; - y.value = property.y; - z.value = property.z; + x.value = roundFloat(property.x); + y.value = roundFloat(property.y); + z.value = roundFloat(property.z); } else if (field.className.indexOf("pyr") !== -1) { var pitch = document.getElementById(value + "-Pitch"); var yaw = document.getElementById(value + "-Yaw"); var roll = document.getElementById(value + "-Roll"); // crashes here. - pitch.value = property.x; - yaw.value = property.y; - roll.value = property.z; + pitch.value = roundFloat(property.x); + yaw.value = roundFloat(property.y); + roll.value = roundFloat(property.z); } } } From f9aa400b951e2a9e18c809973fd434780786393b Mon Sep 17 00:00:00 2001 From: Sam Cake Date: Fri, 2 Jun 2017 00:22:38 -0700 Subject: [PATCH 226/357] Refining the stencil configuration and triggering only in hmd mode --- interface/src/Application.cpp | 3 +++ libraries/model/src/model/Skybox.cpp | 2 +- .../src/procedural/ProceduralSkybox.cpp | 2 +- .../render-utils/src/AntialiasingEffect.cpp | 4 ++-- libraries/render-utils/src/StencilMaskPass.cpp | 17 +++++++++-------- .../render-utils/src/SurfaceGeometryPass.cpp | 2 +- .../render-utils/src/ToneMappingEffect.cpp | 2 +- libraries/render-utils/src/stencil_drawMask.slf | 4 +++- libraries/shared/src/RenderArgs.h | 8 ++++---- tests/shaders/src/main.cpp | 11 ----------- 10 files changed, 25 insertions(+), 30 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 8c6bea0905..f232f8c956 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -2185,6 +2185,9 @@ void Application::paintGL() { }); renderArgs._context->setStereoProjections(eyeProjections); renderArgs._context->setStereoViews(eyeOffsets); + + // Configure the type of display / stereo + renderArgs._displayMode = (isHMDMode() ? RenderArgs::STEREO_HMD : RenderArgs::STEREO_MONITOR); } renderArgs._blitFramebuffer = finalFramebuffer; displaySide(&renderArgs, _myCamera); diff --git a/libraries/model/src/model/Skybox.cpp b/libraries/model/src/model/Skybox.cpp index c47463666e..d327593573 100755 --- a/libraries/model/src/model/Skybox.cpp +++ b/libraries/model/src/model/Skybox.cpp @@ -97,7 +97,7 @@ void Skybox::render(gpu::Batch& batch, const ViewFrustum& viewFrustum, const Sky } auto skyState = std::make_shared(); - skyState->setStencilTest(true, 0x00, gpu::State::StencilTest(1, 0xFF, gpu::EQUAL, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP)); + skyState->setStencilTest(true, 0xFF, gpu::State::StencilTest(1, 0xFF, gpu::EQUAL, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP)); thePipeline = gpu::Pipeline::create(skyShader, skyState); } diff --git a/libraries/procedural/src/procedural/ProceduralSkybox.cpp b/libraries/procedural/src/procedural/ProceduralSkybox.cpp index eaacc5d851..f5feb434fa 100644 --- a/libraries/procedural/src/procedural/ProceduralSkybox.cpp +++ b/libraries/procedural/src/procedural/ProceduralSkybox.cpp @@ -23,7 +23,7 @@ ProceduralSkybox::ProceduralSkybox() : model::Skybox() { _procedural._fragmentSource = skybox_frag; // Adjust the pipeline state for background using the stencil test _procedural.setDoesFade(false); - _procedural._opaqueState->setStencilTest(true, 0x00, gpu::State::StencilTest(1, 0xFF, gpu::EQUAL, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP)); + _procedural._opaqueState->setStencilTest(true, 0xFF, gpu::State::StencilTest(1, 0xFF, gpu::EQUAL, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP)); } bool ProceduralSkybox::empty() { diff --git a/libraries/render-utils/src/AntialiasingEffect.cpp b/libraries/render-utils/src/AntialiasingEffect.cpp index 08f69d07d0..139f1ae091 100644 --- a/libraries/render-utils/src/AntialiasingEffect.cpp +++ b/libraries/render-utils/src/AntialiasingEffect.cpp @@ -71,7 +71,7 @@ const gpu::PipelinePointer& Antialiasing::getAntialiasingPipeline() { gpu::StatePointer state = gpu::StatePointer(new gpu::State()); - PrepareStencil::testShape(*state); + PrepareStencil::testMask(*state); state->setDepthTest(false, false, gpu::LESS_EQUAL); @@ -96,7 +96,7 @@ const gpu::PipelinePointer& Antialiasing::getBlendPipeline() { gpu::StatePointer state = gpu::StatePointer(new gpu::State()); state->setDepthTest(false, false, gpu::LESS_EQUAL); - PrepareStencil::testShape(*state); + PrepareStencil::testMask(*state); // Good to go add the brand new pipeline _blendPipeline = gpu::Pipeline::create(program, state); diff --git a/libraries/render-utils/src/StencilMaskPass.cpp b/libraries/render-utils/src/StencilMaskPass.cpp index d8a4afbc43..dcd994763f 100644 --- a/libraries/render-utils/src/StencilMaskPass.cpp +++ b/libraries/render-utils/src/StencilMaskPass.cpp @@ -70,12 +70,14 @@ gpu::PipelinePointer PrepareStencil::getPaintStencilPipeline() { } void PrepareStencil::run(const RenderContextPointer& renderContext, const gpu::FramebufferPointer& srcFramebuffer) { - assert(renderContext->args); - assert(renderContext->args->_context); - RenderArgs* args = renderContext->args; + + // Only draw the stencil mask if in HMD mode. + if (args->_displayMode != RenderArgs::STEREO_HMD) { + return; + } + doInBatch(args->_context, [&](gpu::Batch& batch) { - args->_batch = &batch; batch.enableStereo(false); batch.setViewportTransform(args->_viewport); @@ -96,7 +98,6 @@ void PrepareStencil::run(const RenderContextPointer& renderContext, const gpu::F batch.draw(gpu::TRIANGLE_STRIP, 4); } }); - args->_batch = nullptr; } void PrepareStencil::drawMask(gpu::State& state) { @@ -104,11 +105,11 @@ void PrepareStencil::drawMask(gpu::State& state) { } void PrepareStencil::testMask(gpu::State& state) { - state.setStencilTest(true, 0xFF, gpu::State::StencilTest(PrepareStencil::STENCIL_MASK, 0xFF, gpu::NOT_EQUAL, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP)); + state.setStencilTest(true, 0x00, gpu::State::StencilTest(PrepareStencil::STENCIL_MASK, 0xFF, gpu::NOT_EQUAL, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP)); } void PrepareStencil::testBackground(gpu::State& state) { - state.setStencilTest(true, 0xFF, gpu::State::StencilTest(PrepareStencil::STENCIL_BACKGROUND, 0xFF, gpu::EQUAL, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP)); + state.setStencilTest(true, 0x00, gpu::State::StencilTest(PrepareStencil::STENCIL_BACKGROUND, 0xFF, gpu::EQUAL, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP)); } void PrepareStencil::testMaskDrawShape(gpu::State& state) { @@ -116,5 +117,5 @@ void PrepareStencil::testMaskDrawShape(gpu::State& state) { } void PrepareStencil::testShape(gpu::State& state) { - state.setStencilTest(true, 0xFF, gpu::State::StencilTest(PrepareStencil::STENCIL_SHAPE, 0xFF, gpu::NOT_EQUAL, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP)); + state.setStencilTest(true, 0x00, gpu::State::StencilTest(PrepareStencil::STENCIL_SHAPE, 0xFF, gpu::EQUAL, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP, gpu::State::STENCIL_OP_KEEP)); } \ No newline at end of file diff --git a/libraries/render-utils/src/SurfaceGeometryPass.cpp b/libraries/render-utils/src/SurfaceGeometryPass.cpp index b0c0aa6358..1941766353 100644 --- a/libraries/render-utils/src/SurfaceGeometryPass.cpp +++ b/libraries/render-utils/src/SurfaceGeometryPass.cpp @@ -555,7 +555,7 @@ const gpu::PipelinePointer& SurfaceGeometryPass::getCurvaturePipeline() { #ifdef USE_STENCIL_TEST // Stencil test the curvature pass for objects pixels only, not the background - PrepareStencil::testMask(*state); + PrepareStencil::testShape(*state); #endif // Good to go add the brand new pipeline _curvaturePipeline = gpu::Pipeline::create(program, state); diff --git a/libraries/render-utils/src/ToneMappingEffect.cpp b/libraries/render-utils/src/ToneMappingEffect.cpp index 62ae9147f3..7a3d868236 100644 --- a/libraries/render-utils/src/ToneMappingEffect.cpp +++ b/libraries/render-utils/src/ToneMappingEffect.cpp @@ -39,7 +39,7 @@ void ToneMappingEffect::init() { slotBindings.insert(gpu::Shader::Binding(std::string("colorMap"), ToneMappingEffect_LightingMapSlot)); gpu::Shader::makeProgram(*blitProgram, slotBindings); auto blitState = std::make_shared(); - PrepareStencil::testShape(*blitState); + PrepareStencil::testMask(*blitState); blitState->setColorWriteMask(true, true, true, true); _blitLightBuffer = gpu::PipelinePointer(gpu::Pipeline::create(blitProgram, blitState)); } diff --git a/libraries/render-utils/src/stencil_drawMask.slf b/libraries/render-utils/src/stencil_drawMask.slf index cc81fca677..3eedeecb82 100644 --- a/libraries/render-utils/src/stencil_drawMask.slf +++ b/libraries/render-utils/src/stencil_drawMask.slf @@ -14,8 +14,10 @@ in vec2 varTexCoord0; +float aspectRatio = 0.95; + void main(void) { vec2 pos = varTexCoord0 * 2.0 - vec2(1.0); - pos.x = pos.x * (pos.x > 0.0 ? 2.0 : -2.0) - 1.0; + pos.x = aspectRatio * (pos.x * (pos.x > 0.0 ? 2.0 : -2.0) - 1.0); if (1.0 - dot(pos.xy, pos.xy) > 0.0 ) discard; } diff --git a/libraries/shared/src/RenderArgs.h b/libraries/shared/src/RenderArgs.h index f44d736e1a..d4d88c26a8 100644 --- a/libraries/shared/src/RenderArgs.h +++ b/libraries/shared/src/RenderArgs.h @@ -76,7 +76,7 @@ public: class RenderArgs { public: enum RenderMode { DEFAULT_RENDER_MODE, SHADOW_RENDER_MODE, DIFFUSE_RENDER_MODE, NORMAL_RENDER_MODE, MIRROR_RENDER_MODE }; - enum RenderSide { MONO, STEREO_LEFT, STEREO_RIGHT }; + enum DisplayMode { MONO, STEREO_MONITOR, STEREO_HMD }; enum DebugFlags { RENDER_DEBUG_NONE = 0, RENDER_DEBUG_HULLS = 1 @@ -87,7 +87,7 @@ public: float sizeScale = 1.0f, int boundaryLevelAdjust = 0, RenderMode renderMode = DEFAULT_RENDER_MODE, - RenderSide renderSide = MONO, + DisplayMode displayMode = MONO, DebugFlags debugFlags = RENDER_DEBUG_NONE, gpu::Batch* batch = nullptr) : _context(context), @@ -95,7 +95,7 @@ public: _sizeScale(sizeScale), _boundaryLevelAdjust(boundaryLevelAdjust), _renderMode(renderMode), - _renderSide(renderSide), + _displayMode(displayMode), _debugFlags(debugFlags), _batch(batch) { } @@ -121,7 +121,7 @@ public: float _sizeScale = 1.0f; int _boundaryLevelAdjust = 0; RenderMode _renderMode = DEFAULT_RENDER_MODE; - RenderSide _renderSide = MONO; + DisplayMode _displayMode = MONO; DebugFlags _debugFlags = RENDER_DEBUG_NONE; gpu::Batch* _batch = nullptr; diff --git a/tests/shaders/src/main.cpp b/tests/shaders/src/main.cpp index 8a239f0728..d10ab1ddbe 100644 --- a/tests/shaders/src/main.cpp +++ b/tests/shaders/src/main.cpp @@ -31,13 +31,9 @@ #include #include -#include #include #include -#include -#include - #include #include @@ -66,9 +62,6 @@ #include #include -#include -#include - #include #include @@ -155,11 +148,8 @@ void QTestWindow::draw() { testShaderBuild(simple_vert, simple_frag); testShaderBuild(simple_vert, simple_textured_frag); testShaderBuild(simple_vert, simple_textured_unlit_frag); - testShaderBuild(deferred_light_vert, directional_light_frag); testShaderBuild(deferred_light_vert, directional_ambient_light_frag); testShaderBuild(deferred_light_vert, directional_skybox_light_frag); - testShaderBuild(deferred_light_point_vert, point_light_frag); - testShaderBuild(deferred_light_spot_vert, spot_light_frag); testShaderBuild(standardTransformPNTC_vert, standardDrawTexture_frag); testShaderBuild(standardTransformPNTC_vert, DrawTextureOpaque_frag); @@ -190,7 +180,6 @@ void QTestWindow::draw() { testShaderBuild(ambient_occlusion_vert, ambient_occlusion_frag); testShaderBuild(ambient_occlusion_vert, occlusion_blend_frag); */ - testShaderBuild(hit_effect_vert, hit_effect_frag); testShaderBuild(overlay3D_vert, overlay3D_frag); From 6228ff19bf2c9315b6edc01747a985301421e436 Mon Sep 17 00:00:00 2001 From: NeetBhagat Date: Fri, 2 Jun 2017 14:37:17 +0530 Subject: [PATCH 227/357] Resolve the reviewed comments of @ZappoMan --- interface/src/Application.cpp | 26 +++++++++---------- interface/src/Application.h | 2 +- .../display-plugins/OpenGLDisplayPlugin.cpp | 3 ++- 3 files changed, 15 insertions(+), 16 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 8384204fb9..a3787847db 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -1349,16 +1349,12 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo _autoSwitchDisplayModeSupportedHMDPlugin->getName(); _previousHMDWornStatus = _autoSwitchDisplayModeSupportedHMDPlugin->isDisplayVisible(); - qCDebug(interfaceapp) << "_autoSwitchModeSupportedPluginName::" - << _autoSwitchDisplayModeSupportedHMDPluginName; break; } } - if (_autoSwitchDisplayModeSupportedHMDPlugin != nullptr) { - // If HMD Plugin is available and current display plugin is not HMD plugin - // then startHMDStandBySession to poll HMD Worn status. - if (getActiveDisplayPlugin()->getName() != _autoSwitchDisplayModeSupportedHMDPluginName && + if (_autoSwitchDisplayModeSupportedHMDPlugin) { + if (getActiveDisplayPlugin() != _autoSwitchDisplayModeSupportedHMDPlugin && !_autoSwitchDisplayModeSupportedHMDPlugin->isStandBySessionActive()) { startHMDStandBySession(); } @@ -1600,7 +1596,7 @@ void Application::aboutToQuit() { } getActiveDisplayPlugin()->deactivate(); - if (_autoSwitchDisplayModeSupportedHMDPlugin != nullptr + if (_autoSwitchDisplayModeSupportedHMDPlugin && _autoSwitchDisplayModeSupportedHMDPlugin->isStandBySessionActive()) { _autoSwitchDisplayModeSupportedHMDPlugin->endStandBySession(); } @@ -6769,18 +6765,20 @@ void Application::updateDisplayMode() { } void Application::switchDisplayMode() { + if (!_autoSwitchDisplayModeSupportedHMDPlugin) { + return; + } bool currentHMDWornStatus = _autoSwitchDisplayModeSupportedHMDPlugin->isDisplayVisible(); if (currentHMDWornStatus != _previousHMDWornStatus) { - // Switch to respective mode as soon as currentHMDWornStatus changes - if (currentHMDWornStatus == false && _previousHMDWornStatus == true) { - qCDebug(interfaceapp) << "Switching from HMD to desktop mode"; - setActiveDisplayPlugin(DESKTOP_DISPLAY_PLUGIN_NAME); - startHMDStandBySession(); - } - if (currentHMDWornStatus == true && _previousHMDWornStatus == false) { + // Switch to respective mode as soon as currentHMDWornStatus changes + if (currentHMDWornStatus) { qCDebug(interfaceapp) << "Switching from Desktop to HMD mode"; endHMDStandBySession(); setActiveDisplayPlugin(_autoSwitchDisplayModeSupportedHMDPluginName); + } else { + qCDebug(interfaceapp) << "Switching from HMD to desktop mode"; + setActiveDisplayPlugin(DESKTOP_DISPLAY_PLUGIN_NAME); + startHMDStandBySession(); } } _previousHMDWornStatus = currentHMDWornStatus; diff --git a/interface/src/Application.h b/interface/src/Application.h index e1fb37ef3a..4cd47ada58 100644 --- a/interface/src/Application.h +++ b/interface/src/Application.h @@ -681,7 +681,7 @@ private: AudioInjector* _snapshotSoundInjector { nullptr }; SharedSoundPointer _snapshotSound; - DisplayPluginPointer _autoSwitchDisplayModeSupportedHMDPlugin = nullptr; + DisplayPluginPointer _autoSwitchDisplayModeSupportedHMDPlugin; QString _autoSwitchDisplayModeSupportedHMDPluginName; bool _previousHMDWornStatus; void startHMDStandBySession(); diff --git a/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.cpp b/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.cpp index 3bdf9a672c..fbdc1ad71e 100644 --- a/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.cpp +++ b/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.cpp @@ -315,6 +315,7 @@ bool OpenGLDisplayPlugin::activate() { if (isHmd() && (getHmdScreen() >= 0)) { _container->showDisplayPluginsTools(); } + return Parent::activate(); } @@ -347,7 +348,7 @@ bool OpenGLDisplayPlugin::startStandBySession() { void OpenGLDisplayPlugin::endStandBySession() { deactivateStandBySession(); - return Parent::endStandBySession(); + Parent::endStandBySession(); } void OpenGLDisplayPlugin::customizeContext() { From 4dae77cd9d382d5d8162f1df5fb7335f4a82d888 Mon Sep 17 00:00:00 2001 From: David Kelly Date: Fri, 2 Jun 2017 08:45:02 -0700 Subject: [PATCH 228/357] make sure we dont log the initial call to onBubbleToggled --- scripts/system/bubble.js | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/scripts/system/bubble.js b/scripts/system/bubble.js index de18bae4cd..1bdc14368c 100644 --- a/scripts/system/bubble.js +++ b/scripts/system/bubble.js @@ -140,11 +140,12 @@ } // When the space bubble is toggled... - function onBubbleToggled() { - var bubbleActive = Users.getIgnoreRadiusEnabled(); - writeButtonProperties(bubbleActive); - UserActivityLogger.bubbleToggled(bubbleActive); - if (bubbleActive) { + function onBubbleToggled(enabled, doNotLog) { + writeButtonProperties(enabled); + if (doNotLog !== true) { + UserActivityLogger.bubbleToggled(enabled); + } + if (enabled) { createOverlays(); } else { hideOverlays(); @@ -165,7 +166,7 @@ sortOrder: 4 }); - onBubbleToggled(); + onBubbleToggled(Users.getIgnoreRadiusEnabled(), true); // pass in true so we don't log this initial one in the UserActivity table button.clicked.connect(Users.toggleIgnoreRadius); Users.ignoreRadiusEnabledChanged.connect(onBubbleToggled); From de2f8bd944701d340238bfd300b50fc987fd5587 Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Fri, 2 Jun 2017 08:58:35 -0700 Subject: [PATCH 229/357] Add clarifying comment to use of kill in isProcessRunning --- server-console/src/main.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/server-console/src/main.js b/server-console/src/main.js index 46cc472e04..408a17bd56 100644 --- a/server-console/src/main.js +++ b/server-console/src/main.js @@ -823,6 +823,9 @@ const notificationIcon = path.join(__dirname, '../resources/console-notification function isProcessRunning(pid) { try { + // Sending a signal of 0 is effectively a NOOP. + // If sending the signal is successful, kill will return true. + // If the process is not running, an exception will be thrown. return process.kill(pid, 0); } catch (e) { } From 2feea16063bd5c958e82773275bf2666e2153490 Mon Sep 17 00:00:00 2001 From: David Kelly Date: Fri, 2 Jun 2017 09:47:03 -0700 Subject: [PATCH 230/357] added comment --- scripts/system/bubble.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/scripts/system/bubble.js b/scripts/system/bubble.js index 1bdc14368c..c2a2f7af40 100644 --- a/scripts/system/bubble.js +++ b/scripts/system/bubble.js @@ -140,6 +140,8 @@ } // When the space bubble is toggled... + // NOTE: the c++ calls this with just the first param -- we added a second + // just for not logging the initial state of the bubble when we startup. function onBubbleToggled(enabled, doNotLog) { writeButtonProperties(enabled); if (doNotLog !== true) { From 8068e7201d764986b4633ae1148610d45c02db3d Mon Sep 17 00:00:00 2001 From: Vladyslav Stelmakhovskyi Date: Fri, 2 Jun 2017 18:58:18 +0200 Subject: [PATCH 231/357] Fix position after rotation. May be fix rotation in HMD mode --- scripts/system/libraries/WebTablet.js | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/scripts/system/libraries/WebTablet.js b/scripts/system/libraries/WebTablet.js index 7545575127..8c3f5d03bb 100644 --- a/scripts/system/libraries/WebTablet.js +++ b/scripts/system/libraries/WebTablet.js @@ -261,11 +261,10 @@ WebTablet.prototype.setLandscape = function(newLandscapeValue) { return; } - var tabletProperties = {}; - tabletProperties.visible = true; this.landscape = newLandscapeValue; - this.calculateTabletAttachmentProperties(NO_HANDS, false, tabletProperties); - Overlays.editOverlay(this.tabletEntityID, tabletProperties); + Overlays.editOverlay(this.tabletEntityID, + { rotation: this.landscape ? Quat.multiply(Camera.orientation, ROT_LANDSCAPE) : + Quat.multiply(Camera.orientation, ROT_Y_180) }); Overlays.editOverlay(this.webOverlayID, { resolution: this.getTabletTextureResolution(), rotation: Quat.multiply(Camera.orientation, ROT_LANDSCAPE_WINDOW) From 0fdbf4a34292d024415d2e30198d9e627845e815 Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Fri, 2 Jun 2017 09:50:23 -0700 Subject: [PATCH 232/357] Add startup_sent_to user activity event --- interface/src/Application.cpp | 36 +++++++++++++++++++++++++++++++---- 1 file changed, 32 insertions(+), 4 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 8c6bea0905..ba9fd45ef7 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -2384,15 +2384,16 @@ void Application::handleSandboxStatus(QNetworkReply* reply) { // Check HMD use (may be technically available without being in use) bool hasHMD = PluginUtils::isHMDAvailable(); - bool isUsingHMD = hasHMD && hasHandControllers && _displayPlugin->isHmd(); + bool isUsingHMD = _displayPlugin->isHmd(); + bool isUsingHMDAndHandControllers = hasHMD && hasHandControllers && isUsingHMD; Setting::Handle tutorialComplete{ "tutorialComplete", false }; Setting::Handle firstRun{ Settings::firstRun, true }; bool isTutorialComplete = tutorialComplete.get(); - bool shouldGoToTutorial = isUsingHMD && hasTutorialContent && !isTutorialComplete; + bool shouldGoToTutorial = isUsingHMDAndHandControllers && hasTutorialContent && !isTutorialComplete; - qCDebug(interfaceapp) << "HMD:" << hasHMD << ", Hand Controllers: " << hasHandControllers << ", Using HMD: " << isUsingHMD; + qCDebug(interfaceapp) << "HMD:" << hasHMD << ", Hand Controllers: " << hasHandControllers << ", Using HMD: " << isUsingHMDAndHandControllers; qCDebug(interfaceapp) << "Tutorial version:" << contentVersion << ", sufficient:" << hasTutorialContent << ", complete:" << isTutorialComplete << ", should go:" << shouldGoToTutorial; @@ -2406,10 +2407,18 @@ void Application::handleSandboxStatus(QNetworkReply* reply) { const QString TUTORIAL_PATH = "/tutorial_begin"; + static const QString SENT_TO_TUTORIAL = "tutorial"; + static const QString SENT_TO_PREVIOUS_LOCATION = "previous_location"; + static const QString SENT_TO_ENTRY = "entry"; + static const QString SENT_TO_SANDBOX = "sandbox"; + + QString sentTo; + if (shouldGoToTutorial) { if (sandboxIsRunning) { qCDebug(interfaceapp) << "Home sandbox appears to be running, going to Home."; DependencyManager::get()->goToLocalSandbox(TUTORIAL_PATH); + sentTo = SENT_TO_TUTORIAL; } else { qCDebug(interfaceapp) << "Home sandbox does not appear to be running, going to Entry."; if (firstRun.get()) { @@ -2417,8 +2426,10 @@ void Application::handleSandboxStatus(QNetworkReply* reply) { } if (addressLookupString.isEmpty()) { DependencyManager::get()->goToEntry(); + sentTo = SENT_TO_ENTRY; } else { DependencyManager::get()->loadSettings(addressLookupString); + sentTo = SENT_TO_PREVIOUS_LOCATION; } } } else { @@ -2431,23 +2442,40 @@ void Application::handleSandboxStatus(QNetworkReply* reply) { // If this is a first run we short-circuit the address passed in if (isFirstRun) { - if (isUsingHMD) { + if (isUsingHMDAndHandControllers) { if (sandboxIsRunning) { qCDebug(interfaceapp) << "Home sandbox appears to be running, going to Home."; DependencyManager::get()->goToLocalSandbox(); + sentTo = SENT_TO_SANDBOX; } else { qCDebug(interfaceapp) << "Home sandbox does not appear to be running, going to Entry."; DependencyManager::get()->goToEntry(); + sentTo = SENT_TO_ENTRY; } } else { DependencyManager::get()->goToEntry(); + sentTo = SENT_TO_ENTRY; } } else { qCDebug(interfaceapp) << "Not first run... going to" << qPrintable(addressLookupString.isEmpty() ? QString("previous location") : addressLookupString); DependencyManager::get()->loadSettings(addressLookupString); + sentTo = SENT_TO_PREVIOUS_LOCATION; } } + UserActivityLogger::getInstance().logAction("startup_sent_to", { + { "sent_to", sentTo }, + { "sandbox_is_running", sandboxIsRunning }, + { "has_hmd", hasHMD }, + { "has_hand_controllers", hasHandControllers }, + { "is_using_hmd", isUsingHMD }, + { "is_using_hmd_and_hand_controllers", isUsingHMDAndHandControllers }, + { "content_version", contentVersion }, + { "is_tutorial_complete", isTutorialComplete }, + { "has_tutorial_content", hasTutorialContent }, + { "should_go_to_tutorial", shouldGoToTutorial } + }); + _connectionMonitor.init(); // After all of the constructor is completed, then set firstRun to false. From 4e61db82638a3e8a0a0114d930b0e30243f13cfe Mon Sep 17 00:00:00 2001 From: Patrick Manalich Date: Thu, 1 Jun 2017 14:07:20 -0700 Subject: [PATCH 233/357] Snapshot will make sound when initially clicked --- interface/src/Application.cpp | 16 ++++++++-------- scripts/system/assets/sounds/snap.wav | Bin 182658 -> 121874 bytes scripts/system/snapshot.js | 9 ++++++++- 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index bdefbc6773..f3924f516f 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -591,8 +591,8 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo _aboutToQuit(false), _notifiedPacketVersionMismatchThisDomain(false), _maxOctreePPS(maxOctreePacketsPerSecond.get()), - _lastFaceTrackerUpdate(0), - _snapshotSound(nullptr) + _lastFaceTrackerUpdate(0)/*, + _snapshotSound(nullptr)*/ { auto steamClient = PluginManager::getInstance()->getSteamClientPlugin(); setProperty(hifi::properties::STEAM, (steamClient && steamClient->isRunning())); @@ -1421,8 +1421,8 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo return entityServerNode && !isPhysicsEnabled(); }); - QFileInfo inf = QFileInfo(PathUtils::resourcesPath() + "sounds/snap.wav"); - _snapshotSound = DependencyManager::get()->getSound(QUrl::fromLocalFile(inf.absoluteFilePath())); + /*QFileInfo inf = QFileInfo(PathUtils::resourcesPath() + "sounds/snap.wav"); + _snapshotSound = DependencyManager::get()->getSound(QUrl::fromLocalFile(inf.absoluteFilePath()));*/ QVariant testProperty = property(hifi::properties::TEST); qDebug() << testProperty; @@ -1656,9 +1656,9 @@ void Application::cleanupBeforeQuit() { // stop QML DependencyManager::destroy(); - if (_snapshotSoundInjector != nullptr) { + /*if (_snapshotSoundInjector != nullptr) { _snapshotSoundInjector->stop(); - } + }*/ // FIXME: something else is holding a reference to AudioClient, // so it must be explicitly synchronously stopped here @@ -6315,7 +6315,7 @@ void Application::takeSnapshot(bool notify, bool includeAnimated, float aspectRa //keep sound thread out of event loop scope - AudioInjectorOptions options; + /*AudioInjectorOptions options; options.localOnly = true; options.stereo = true; @@ -6325,7 +6325,7 @@ void Application::takeSnapshot(bool notify, bool includeAnimated, float aspectRa } else { QByteArray samples = _snapshotSound->getByteArray(); _snapshotSoundInjector = AudioInjector::playSound(samples, options); - } + }*/ postLambdaEvent([notify, includeAnimated, aspectRatio, this] { // Get a screenshot and save it diff --git a/scripts/system/assets/sounds/snap.wav b/scripts/system/assets/sounds/snap.wav index bb562e1db909662f08de66fb8e03c6fb31191ec2..e5b86c0c71c74146b2fbd286c2cb01d5d91ec20a 100644 GIT binary patch literal 121874 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 h^sigF+XHgPW{0v#8S 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%0D%^qTrfRBgS0FA~2* z$Hm-?iU}v-+f8e=#rqmr7o-gS#LlQ$XI7t`Wb4RIx&sq%h1snJ>ryhM{oNSbmsW#A z;wtYic8TnK3m-#9l2U4dEUkW0S8Ned87}`nPxL0c3%P`(U7-_cBrB6j?+ {-WU^<=+*8g7!= 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%0APTr1A7LKSv;~b+E7)-KTba#_1NT>Ju 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 literal 182658 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%0A1dJj(tMi(4$Mso{_DS#fPtjoKMDeM~(Yyj0bmO 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 Date: Thu, 1 Jun 2017 14:26:39 -0700 Subject: [PATCH 234/357] Edit: Snapshot will make sound when initially clicked --- interface/src/Application.cpp | 16 ++++++++-------- scripts/system/snapshot.js | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index f3924f516f..bdefbc6773 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -591,8 +591,8 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo _aboutToQuit(false), _notifiedPacketVersionMismatchThisDomain(false), _maxOctreePPS(maxOctreePacketsPerSecond.get()), - _lastFaceTrackerUpdate(0)/*, - _snapshotSound(nullptr)*/ + _lastFaceTrackerUpdate(0), + _snapshotSound(nullptr) { auto steamClient = PluginManager::getInstance()->getSteamClientPlugin(); setProperty(hifi::properties::STEAM, (steamClient && steamClient->isRunning())); @@ -1421,8 +1421,8 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo return entityServerNode && !isPhysicsEnabled(); }); - /*QFileInfo inf = QFileInfo(PathUtils::resourcesPath() + "sounds/snap.wav"); - _snapshotSound = DependencyManager::get()->getSound(QUrl::fromLocalFile(inf.absoluteFilePath()));*/ + QFileInfo inf = QFileInfo(PathUtils::resourcesPath() + "sounds/snap.wav"); + _snapshotSound = DependencyManager::get()->getSound(QUrl::fromLocalFile(inf.absoluteFilePath())); QVariant testProperty = property(hifi::properties::TEST); qDebug() << testProperty; @@ -1656,9 +1656,9 @@ void Application::cleanupBeforeQuit() { // stop QML DependencyManager::destroy(); - /*if (_snapshotSoundInjector != nullptr) { + if (_snapshotSoundInjector != nullptr) { _snapshotSoundInjector->stop(); - }*/ + } // FIXME: something else is holding a reference to AudioClient, // so it must be explicitly synchronously stopped here @@ -6315,7 +6315,7 @@ void Application::takeSnapshot(bool notify, bool includeAnimated, float aspectRa //keep sound thread out of event loop scope - /*AudioInjectorOptions options; + AudioInjectorOptions options; options.localOnly = true; options.stereo = true; @@ -6325,7 +6325,7 @@ void Application::takeSnapshot(bool notify, bool includeAnimated, float aspectRa } else { QByteArray samples = _snapshotSound->getByteArray(); _snapshotSoundInjector = AudioInjector::playSound(samples, options); - }*/ + } postLambdaEvent([notify, includeAnimated, aspectRatio, this] { // Get a screenshot and save it diff --git a/scripts/system/snapshot.js b/scripts/system/snapshot.js index 62fbf654c3..5591766232 100644 --- a/scripts/system/snapshot.js +++ b/scripts/system/snapshot.js @@ -13,7 +13,7 @@ (function() { // BEGIN LOCAL_SCOPE var SNAPSHOT_DELAY = 500; // 500ms -var FINISH_SOUND_DELAY = 350; //350ms +var FINISH_SOUND_DELAY = 350; var resetOverlays; var reticleVisible; var clearOverlayWhenMoving; From 580c2548e9fcf89327150138ba2848cb6e1f1e82 Mon Sep 17 00:00:00 2001 From: NeetBhagat Date: Fri, 2 Jun 2017 23:04:58 +0530 Subject: [PATCH 235/357] Initial Commit : 1) Resolve a bug when 2 different entity is grabbed in 2 hands. And move your left hand and entity of left hand grow/shrink when you move right/left hand. 2) Resolve right hand-left hand grow-shrink functionality --- scripts/system/controllers/handControllerGrab.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/scripts/system/controllers/handControllerGrab.js b/scripts/system/controllers/handControllerGrab.js index 993cf22d83..ba30b88113 100644 --- a/scripts/system/controllers/handControllerGrab.js +++ b/scripts/system/controllers/handControllerGrab.js @@ -3330,11 +3330,17 @@ function MyController(hand) { return; } + var isSameEntityInBothControllers = false; + if (leftController.grabbedThingID && rightController.grabbedThingID && + leftController.grabbedThingID == rightController.grabbedThingID) { + isSameEntityInBothControllers = true; + } + if (!this.shouldScale) { // If both secondary triggers squeezed, and the non-holding hand is empty, start scaling if (this.secondarySqueezed() && this.getOtherHandController().secondarySqueezed() && - this.getOtherHandController().state === STATE_OFF) { + isSameEntityInBothControllers) { this.scalingStartDistance = Vec3.length(Vec3.subtract(this.getHandPosition(), this.getOtherHandController().getHandPosition())); this.scalingStartDimensions = props.dimensions; From a705e722f192d0f1b1ae8854e3c1b4151ebfc682 Mon Sep 17 00:00:00 2001 From: Patrick Manalich Date: Thu, 1 Jun 2017 17:57:18 -0700 Subject: [PATCH 236/357] Ctrl-S sound feature added --- interface/src/Application.cpp | 13 +++++++++++++ scripts/system/assets/sounds/snap.wav | Bin 121874 -> 0 bytes scripts/system/snapshot.js | 2 +- 3 files changed, 14 insertions(+), 1 deletion(-) delete mode 100644 scripts/system/assets/sounds/snap.wav diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index bdefbc6773..dbf7b7a418 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -1683,6 +1683,9 @@ Application::~Application() { _physicsEngine->setCharacterController(nullptr); + // shutdown render engine + _main3DScene = nullptr; + _renderEngine = nullptr; // the _shapeManager should have zero references _shapeManager.collectGarbage(); assert(_shapeManager.getNumShapes() == 0); @@ -4494,7 +4497,17 @@ void Application::update(float deltaTime) { getEntities()->getTree()->withWriteLock([&] { PerformanceTimer perfTimer("handleOutgoingChanges"); + const VectorOfMotionStates& deactivations = _physicsEngine->getDeactivatedMotionStates(); + _entitySimulation->handleDeactivatedMotionStates(deactivations); + getEntities()->getTree()->withWriteLock([&] { + PerformanceTimer perfTimer("handleOutgoingChanges"); + + + const VectorOfMotionStates& outgoingChanges = _physicsEngine->getChangedMotionStates(); + _entitySimulation->handleChangedMotionStates(outgoingChanges); + avatarManager->handleChangedMotionStates(outgoingChanges); + }); const VectorOfMotionStates& outgoingChanges = _physicsEngine->getChangedMotionStates(); _entitySimulation->handleChangedMotionStates(outgoingChanges); avatarManager->handleChangedMotionStates(outgoingChanges); diff --git a/scripts/system/assets/sounds/snap.wav b/scripts/system/assets/sounds/snap.wav deleted file mode 100644 index e5b86c0c71c74146b2fbd286c2cb01d5d91ec20a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 121874 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 h^sigF+XHgPW{0v#8S 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%0D%^qTrfRBgS0FA~2* z$Hm-?iU}v-+f8e=#rqmr7o-gS#LlQ$XI7t`Wb4RIx&sq%h1snJ>ryhM{oNSbmsW#A z;wtYic8TnK3m-#9l2U4dEUkW0S8Ned87}`nPxL0c3%P`(U7-_cBrB6j?+ {-WU^<=+*8g7!= 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%0APTr1A7LKSv;~b+E7)-KTba#_1NT>Ju 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 diff --git a/scripts/system/snapshot.js b/scripts/system/snapshot.js index 5591766232..e3253f338d 100644 --- a/scripts/system/snapshot.js +++ b/scripts/system/snapshot.js @@ -410,7 +410,7 @@ function takeSnapshot() { Menu.setIsOptionChecked("Overlays", false); } - var snapActivateSound = SoundCache.getSound(Script.resolvePath("assets/sounds/snap.wav")); + var snapActivateSound = SoundCache.getSound(Script.resolvePath("../../resources/sounds/snap.wav")); // take snapshot (with no notification) Script.setTimeout(function () { From 1f478bdf1392a9880c35fbfef1ea181319f7870a Mon Sep 17 00:00:00 2001 From: Patrick Manalich Date: Fri, 2 Jun 2017 10:44:58 -0700 Subject: [PATCH 237/357] Repair Application.cpp --- interface/src/Application.cpp | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index dbf7b7a418..bdefbc6773 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -1683,9 +1683,6 @@ Application::~Application() { _physicsEngine->setCharacterController(nullptr); - // shutdown render engine - _main3DScene = nullptr; - _renderEngine = nullptr; // the _shapeManager should have zero references _shapeManager.collectGarbage(); assert(_shapeManager.getNumShapes() == 0); @@ -4497,17 +4494,7 @@ void Application::update(float deltaTime) { getEntities()->getTree()->withWriteLock([&] { PerformanceTimer perfTimer("handleOutgoingChanges"); - const VectorOfMotionStates& deactivations = _physicsEngine->getDeactivatedMotionStates(); - _entitySimulation->handleDeactivatedMotionStates(deactivations); - getEntities()->getTree()->withWriteLock([&] { - PerformanceTimer perfTimer("handleOutgoingChanges"); - - - const VectorOfMotionStates& outgoingChanges = _physicsEngine->getChangedMotionStates(); - _entitySimulation->handleChangedMotionStates(outgoingChanges); - avatarManager->handleChangedMotionStates(outgoingChanges); - }); const VectorOfMotionStates& outgoingChanges = _physicsEngine->getChangedMotionStates(); _entitySimulation->handleChangedMotionStates(outgoingChanges); avatarManager->handleChangedMotionStates(outgoingChanges); From 655a411865262d872999dc3ba40f8e109240e575 Mon Sep 17 00:00:00 2001 From: seefo Date: Thu, 1 Jun 2017 17:03:29 -0700 Subject: [PATCH 238/357] Cleaned up Polaroid code --- scripts/system/html/SnapshotReview.html | 2 +- scripts/system/html/css/SnapshotReview.css | 25 +++----- scripts/system/html/js/SnapshotReview.js | 39 +++++++----- scripts/system/snapshot.js | 72 ++++++++++------------ 4 files changed, 67 insertions(+), 71 deletions(-) diff --git a/scripts/system/html/SnapshotReview.html b/scripts/system/html/SnapshotReview.html index 42a6b3fc5e..f080cd204a 100644 --- a/scripts/system/html/SnapshotReview.html +++ b/scripts/system/html/SnapshotReview.html @@ -30,7 +30,7 @@

        diff --git a/scripts/system/html/css/SnapshotReview.css b/scripts/system/html/css/SnapshotReview.css index b243d10af6..54d39aaad3 100644 --- a/scripts/system/html/css/SnapshotReview.css +++ b/scripts/system/html/css/SnapshotReview.css @@ -301,30 +301,23 @@ input[type=button].naked:active { outline:none; } -.print-icon-enabled { - background: url(../img/button-snap-print.svg); - background-repeat: no-repeat; +.print-icon { margin: auto; - width: 48px; - height: 48px; +} + +.print-icon-default { + background: url(../img/button-snap-print.svg) no-repeat; + margin-right: -1px; + width: 64px; + height: 64px; } .print-icon-loading { - background: url(../img/loader.gif); - background-repeat: no-repeat; - margin: auto; + background: url(../img/loader.gif) no-repeat; width: 32px; height: 32px; } -.print-icon-disabled { - background: url(../img/button-snap-print.svg); - background-repeat: no-repeat; - margin: auto; - width: 48px; - height: 48px; -} - /* // END polaroid styling */ diff --git a/scripts/system/html/js/SnapshotReview.js b/scripts/system/html/js/SnapshotReview.js index 9f1d62eadf..28e16f2485 100644 --- a/scripts/system/html/js/SnapshotReview.js +++ b/scripts/system/html/js/SnapshotReview.js @@ -311,13 +311,17 @@ function addImage(image_data, isLoggedIn, canShare, isGifLoading, isShowingPrevi if (isShowingPreviousImages && isLoggedIn && image_data.story_id) { updateShareInfo(id, image_data.story_id); } - if(isShowingPreviousImages) { + if (isShowingPreviousImages) { requestPrintButtonUpdate(); } }; img.onerror = function () { img.onload = null; img.src = image_data.errorPath; + EventBridge.emitWebEvent(JSON.stringify({ + type: "snapshot", + action: "alertSnapshotLoadFailed" + })); }; } function showConfirmationMessage(selectedID, destination) { @@ -718,23 +722,30 @@ function takeSnapshot() { } } -function isPrintDisabled() { return document.getElementById('print-icon').className === "print-icon-disabled"; } -function isPrintProcessing() { return document.getElementById('print-icon').className === "print-icon-loading"; } -function isPrintEnabled() { return document.getElementById('print-icon').className === "print-icon-enabled"; } +function isPrintDisabled() { + return document.getElementById('print-icon').className === "print-icon print-icon-default" && + document.getElementById('print-button').disabled; +} +function isPrintProcessing() { + return document.getElementById('print-icon').className === "print-icon print-icon-loading" && + document.getElementById('print-button').disabled; +} +function isPrintEnabled() { + return document.getElementById('print-icon').className === "print-icon print-icon-default" && + !document.getElementById('print-button').disabled; +} function setPrintButtonLoading() { - document.getElementById('print-icon').className = "print-icon-loading"; + document.getElementById('print-icon').className = "print-icon print-icon-loading"; document.getElementById('print-button').disabled = true; } - function setPrintButtonDisabled() { - document.getElementById('print-icon').className = "print-icon-disabled"; + document.getElementById('print-icon').className = "print-icon print-icon-default"; document.getElementById('print-button').disabled = true; } - function setPrintButtonEnabled() { document.getElementById('print-button').disabled = false; - document.getElementById('print-icon').className = "print-icon-enabled"; + document.getElementById('print-icon').className = "print-icon print-icon-default"; } function requestPrintButtonUpdate() { @@ -744,15 +755,12 @@ function requestPrintButtonUpdate() { })); } -function printToPolaroid() { - - if (isPrintEnabled()) { - +function printToPolaroid() { + if (isPrintEnabled()) { EventBridge.emitWebEvent(JSON.stringify({ type: "snapshot", action: "printToPolaroid" - })); - + })); //shareBarHelp.innerHTML = "Printed" //shareBarHelp.style.backgroundColor = "#000000"; //shareBarHelp.style.opacity = "0.5"; @@ -760,6 +768,7 @@ function printToPolaroid() { setPrintButtonLoading(); } } + function testInBrowser(test) { if (test === 0) { showSetupInstructions(); diff --git a/scripts/system/snapshot.js b/scripts/system/snapshot.js index 3209a5e51a..4667893949 100644 --- a/scripts/system/snapshot.js +++ b/scripts/system/snapshot.js @@ -142,13 +142,13 @@ function onMessage(message) { break; case 'shareSnapshotForUrl': isDomainOpen(Settings.getValue("previousSnapshotDomainID"), function (canShare) { - if (canShare) { - isLoggedIn = Account.isLoggedIn(); + var isGif = fileExtensionMatches(message.data, "gif"); + isLoggedIn = Account.isLoggedIn(); + isUploadingPrintableStill = canShare && Account.isLoggedIn() && !isGif; + if (canShare) { if (isLoggedIn) { print('Sharing snapshot with audience "for_url":', message.data); - isUploadingPrintableStill = true; - Window.shareSnapshot(message.data, Settings.getValue("previousSnapshotHref")); - var isGif = fileExtensionMatches(message.data, "gif"); + Window.shareSnapshot(message.data, Settings.getValue("previousSnapshotHref")); if (isGif) { numGifSnapshotUploadsPending++; } else { @@ -156,14 +156,10 @@ function onMessage(message) { } } else { shareAfterLogin = true; - isUploadingPrintableStill = false; snapshotToShareAfterLogin.push({ path: message.data, href: Settings.getValue("previousSnapshotHref") }); } - } else { - isUploadingPrintableStill = false; } - - updatePrintPermissions(); + updatePrintPermissions(); }); break; case 'blastToConnections': @@ -226,13 +222,14 @@ function onMessage(message) { case 'requestPrintButtonUpdate': updatePrintPermissions(); break; - case 'printToPolaroid': - - if(Entities.canRez() || Entities.canRezTmp()) { + case 'printToPolaroid': + if (Entities.canRez() || Entities.canRezTmp()) { printToPolaroid(Settings.getValue("previousStillSnapUrl")); removeFromStoryIDsToMaybeDelete(Settings.getValue("previousStillSnapStoryID")); - } - + } + break; + case 'alertSnapshotLoadFailed': + snapshotFailedToLoad = true; break; case 'shareSnapshotWithEveryone': isLoggedIn = Account.isLoggedIn(); @@ -285,10 +282,9 @@ var polaroid_print_sound = SoundCache.getSound(Script.resolvePath("assets/sounds var model_url = 'http://hifi-content.s3.amazonaws.com/alan/dev/Test/snapshot.fbx'; function printToPolaroid(image_url) { - var polaroid_url = image_url; - var model_pos = Vec3.sum(MyAvatar.position, Vec3.multiply(0.75, Quat.getForward(MyAvatar.orientation))); + var model_pos = Vec3.sum(MyAvatar.position, Vec3.multiply(1.25, Quat.getForward(MyAvatar.orientation))); var model_q1 = MyAvatar.orientation; var model_q2 = Quat.angleAxis(90, Quat.getRight(model_q1)); @@ -297,25 +293,26 @@ function printToPolaroid(image_url) { var properties = { "type": 'Model', "shapeType": 'box', - + "name": "New Snapshot", "description": "Printed from Snaps", "modelURL": model_url, - + "position": model_pos, "rotation": model_rot, - + "textures": JSON.stringify( { "tex.picture": polaroid_url } ), - + "density": 200, "restitution": 0.15, - "gravity": { "x": 0, "y": -1, "z": 0 }, + "gravity": { "x": 0, "y": -4.5, "z": 0 }, - "linear_accleration" : { "x": 0, "y": 2.0, "z": 0 }, - + "velocity": { "x": 0, "y": 3.5, "z": 0 }, + "angularVelocity": { "x": -1.0, "y": 0, "z": -1.3 }, + "dynamic": true, "collisionsWillMove": true, - + "userData": { "grabbableKey": { "grabbable" : true } } @@ -442,7 +439,10 @@ function takeSnapshot() { Settings.setValue("previousAnimatedSnapBlastingDisabled", false); Settings.setValue("previousAnimatedSnapHifiSharingDisabled", false); - isUploadingPrintableStill = false; + // Since we are taking a snapshot, we should make the print button appear to be loading/processing + snapshotFailedToLoad = false; + isUploadingPrintableStill = true; + updatePrintPermissions(); // Raising the desktop for the share dialog at end will interact badly with clearOverlayWhenMoving. // Turn it off now, before we start futzing with things (and possibly moving). @@ -514,7 +514,6 @@ function isDomainOpen(id, callback) { status = response.total_entries ? true : false; } print("Domain open status:", status); - wasPreviousSnapshotShareable = status; callback(status); }); } else { @@ -677,11 +676,8 @@ function onUsernameChanged() { numStillSnapshotUploadsPending++; } }); - isUploadingPrintableStill = true; - } else { - isUploadingPrintableStill = false; } - + isUploadingPrintableStill = canShare; updatePrintPermissions(); }); @@ -704,19 +700,15 @@ function updatePrintPermissions() { processRezPermissionChange(Entities.canRez() || Entities.canRezTmp()); } +var snapshotFailedToLoad = false; var isUploadingPrintableStill = false; function processRezPermissionChange(canRez) { - - print('can we rez0?' + canRez); - print('can we rez1?' + Settings.getValue("previousStillSnapUrl")) ; - print('can we rez2?' + isUploadingPrintableStill); - var action = ""; - if(canRez) { - if(Settings.getValue("previousStillSnapUrl")) { + if (canRez && !snapshotFailedToLoad) { + if (Settings.getValue("previousStillSnapUrl")) { action = 'setPrintButtonEnabled'; - } else if(isUploadingPrintableStill) { + } else if (isUploadingPrintableStill) { action = 'setPrintButtonLoading'; } else { action = 'setPrintButtonDisabled'; @@ -725,6 +717,8 @@ function processRezPermissionChange(canRez) { action = 'setPrintButtonDisabled'; } + print(action); + tablet.emitScriptEvent(JSON.stringify({ type: "snapshot", action : action From 1f95daf5c1b39f9d525b1d207df520e5d2c148c3 Mon Sep 17 00:00:00 2001 From: Brad Davis Date: Fri, 2 Jun 2017 11:19:43 -0700 Subject: [PATCH 239/357] Add dev menu option to wipe KTX cache on next launch --- interface/src/Menu.cpp | 6 ++++++ interface/src/Menu.h | 1 + .../model-networking/src/model-networking/KTXCache.cpp | 4 ++-- libraries/model-networking/src/model-networking/KTXCache.h | 1 + 4 files changed, 10 insertions(+), 2 deletions(-) diff --git a/interface/src/Menu.cpp b/interface/src/Menu.cpp index 4138798484..463069430d 100644 --- a/interface/src/Menu.cpp +++ b/interface/src/Menu.cpp @@ -407,6 +407,12 @@ Menu::Menu() { #endif + { + auto action = addActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::RenderClearKtxCache); + connect(action, &QAction::triggered, []{ + Setting::Handle(KTXCache::SETTING_VERSION_NAME, KTXCache::INVALID_VERSION).set(KTXCache::INVALID_VERSION); + }); + } // Developer > Render > LOD Tools addActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::LodTools, 0, diff --git a/interface/src/Menu.h b/interface/src/Menu.h index b6d72f5446..41bf89a20a 100644 --- a/interface/src/Menu.h +++ b/interface/src/Menu.h @@ -145,6 +145,7 @@ namespace MenuOption { const QString Quit = "Quit"; const QString ReloadAllScripts = "Reload All Scripts"; const QString ReloadContent = "Reload Content (Clears all caches)"; + const QString RenderClearKtxCache = "Clear KTX Cache (requires restart)"; const QString RenderMaxTextureMemory = "Maximum Texture Memory"; const QString RenderMaxTextureAutomatic = "Automatic Texture Memory"; const QString RenderMaxTexture4MB = "4 MB"; diff --git a/libraries/model-networking/src/model-networking/KTXCache.cpp b/libraries/model-networking/src/model-networking/KTXCache.cpp index e6d6632571..6443748920 100644 --- a/libraries/model-networking/src/model-networking/KTXCache.cpp +++ b/libraries/model-networking/src/model-networking/KTXCache.cpp @@ -21,13 +21,13 @@ using FilePointer = cache::FilePointer; // this value should be incremented. This will force the KTX cache to be wiped const int KTXCache::CURRENT_VERSION = 0x01; const int KTXCache::INVALID_VERSION = 0x00; - +const char* KTXCache::SETTING_VERSION_NAME = "hifi.ktx.cache_version"; KTXCache::KTXCache(const std::string& dir, const std::string& ext) : FileCache(dir, ext) { initialize(); - Setting::Handle cacheVersionHandle("hifi.ktx.cache_version", KTXCache::INVALID_VERSION); + Setting::Handle cacheVersionHandle(SETTING_VERSION_NAME, INVALID_VERSION); auto cacheVersion = cacheVersionHandle.get(); if (cacheVersion != CURRENT_VERSION) { wipe(); diff --git a/libraries/model-networking/src/model-networking/KTXCache.h b/libraries/model-networking/src/model-networking/KTXCache.h index 2a3f191b53..5617019c52 100644 --- a/libraries/model-networking/src/model-networking/KTXCache.h +++ b/libraries/model-networking/src/model-networking/KTXCache.h @@ -31,6 +31,7 @@ public: // this value should be incremented. This will force the KTX cache to be wiped static const int CURRENT_VERSION; static const int INVALID_VERSION; + static const char* SETTING_VERSION_NAME; KTXCache(const std::string& dir, const std::string& ext); From 58c4a2f12ad197631cb3f9424c9e03d35aaf59fc Mon Sep 17 00:00:00 2001 From: David Rowe Date: Sat, 3 Jun 2017 06:26:13 +1200 Subject: [PATCH 240/357] Fix icon for polylines in entities editor properties page --- interface/resources/fonts/hifi-glyphs.ttf | Bin 27612 -> 28852 bytes scripts/system/html/js/entityProperties.js | 3 ++- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/interface/resources/fonts/hifi-glyphs.ttf b/interface/resources/fonts/hifi-glyphs.ttf index 93f6fe6d1329139d0eefec86a05fdaed09e80e5d..548f61e1dece1e94381000f4a84d4e9d379d94a2 100644 GIT binary patch delta 2418 zcmZuzYit}>89m>IgETRICb1JY zPSZS^E)^=RkSb7Dl>VTAf>a?=q0)p3BvgTrfFDJPkPs3rD6J4bqNplTLHuYbx@)6? z;I3BRHwS4E)h4%q=8(_QVr&g9f{S+KnUIq}EU%WC0?>El?+Q-23 z;==6IOziFZp8$9lK)A3lTb&X^bPu33fR2TwiWWxPX=0kmEfbZ%;C_H5tv9|ETr6leMT%EcwV_*LL+6QE7jncXRdYib!SYOS&iOW>=0t}^oRdZ?hSa0ETvV6FFAOu<-X1lLlSw`L4MF;lPC_s_ zB$=2|mPsMFR#oX!oXa7Nt9VEg>WP+^z)|`+y@C`5unBu`n6?9zf@4?0O6Ui^=Sy8W zc912@DW;2du}~>g!g6VloWKu!J+GS-SZT+u6h^2N_@1oP35p*0^}u%QO0^z3COIk! z>r|8U`rIhh!!?=$I0eggvdkHB>^8Ekg5}tbWxGr&kZ$QxH(8QA6?ro72gx6#k{|d% z*&p`H>Q@TNrErA8N-3-il`ErFs)Ut z7>j6(>jq;&6sp9Cn5HoyNC?4+OU?z8EG{&e)VQ9sbxoM2#-)r4bAuHZLW@TtRxDyjJR?@lx%B6=b$IE|WMf`~I>#3Uoqh!~S5Q~Ohu z2@=E`oP=Q{T2i{kNj+Y~IFTxih=d|WiILE>SWIJ_)Etpei>YPVDsGLS_E`he$()q^ zkHIv~BgYg~*Wy(oCZ(=PPm!3$xD>k5L1U^w<8u*RXq1fTTw{C9hNNH#GiFN8_gN_| z&h>cAGGfLa=_YfGyRBX>nT$n;+cK3@cSGvprVUMYvxrJFuD3`QXF}ClZ-7SyV-!!+ z_fMKpCoPDW&eS;)JRvzT&D6QlN=QMBaVbeKiYv7uN&=?fjIpTdn=6Uc5RCD<99${L zloUd*D@wE`%V)|mqN-xAD)?^|nJE$g2p)FOJMLmSBEaI_mVEXyk80nw#(XR zGnJK_mR^34ynNcz(|OCb>|!A-`CeY?-T>8KTE#-8Sa7mpBUM6m4%SH3pqKJVvg#)| zEcx_8wvY9sob9@L&p3@~*X?rIj~KaKuA5FKRU0Oe-I5y^$hGycFR{LC-F3u3inNr~ zVZ|9yMxj%QRkWqRfAZaEaVN2a+m*?rBdS>zO=pHPU9LgYsF3UWxAb?oZfF0N{^YQT zwWd=l$r@WST^WNK7*hb$zCF_w_;_yhdkcXWe!1prh~fU4FA*cN_Q6bhFpdrCn=GOb zu#QB0J;?hJ)^5%Avi`94-t0)JWp56N6=^s;*zOs0FX7<8LWcmE!mBrKNX64HHCoW9S*1mo=7hDHH V0Bbh^b)mxBBRB5+_f2CG{{kY%Uzh*@ delta 1153 zcmZvbT}Yc(9L9eqdEYk)vW+rLr+K6K@J-@J{HhvPrlhS#qgK;uZL796e#dCcs`F!( zx{lry#u$Bj(TjGt(VNj-bU3sZWq36xY-1C;uX^D|DKa|nViPuo9f`8t^uXc&@ITN0 zIp=}reEy5r_(3cpfR}g&Bau+3^Z3j{(-Oqj0JX8cA;c#r5MKfu?H#2R?GIY}K%4=( z1}37(A1$?wV7Lc{`jO~V^7(U&5WfkSN5p~&^qeizs)D!&g7L|L=<1cFTOj=b{5=t!OY)OA527aZphR?H=vmEb z7Yr_eSWZq(O@E=intkdLIz3ApQcHrV&d8-J2vAhjOlu5ayC!}`{BQ7bO#b>f`J z(Qk>{Lepyuv!$eLq_>(@LDXSPBNa)wQuZ*jCwF->M}K1QHUv3B6UV5hgGRzM(?S^$ zifH9HBa9N_D0Kv=p_)^)(M}gCcJdg)fs;51Jz~@>C+OiM4Rq?4je*+J^m3MN&Tx+N z^l^bG{R}Y3Ffqm$XM#zRyvaqTnC2~Jm}QQ6-ey7HF%};V9%(vO-_aOuZYhftwH_ZC z4IQlu)Ks5pYwuF+c|#6oJmGTZYaXw!ps=#oUs76CUUBF|&&h^Py;rhHr+d$K>sO?! z`UjGt%kunUc4l@c`@QU+b6h!NIcqt;*<7}M+c&mtYXyUP0#mGTyPL+*KmWU1fa1x%`6O!IV~(yXxBDL&YS^vN>##6lGC1 z&+G()Vr4yOQe;^%h4+deRZU7b#Z^pqg2A1Hrse Date: Fri, 2 Jun 2017 11:35:56 -0700 Subject: [PATCH 241/357] Final touches to Polaroids --- scripts/system/snapshot.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/scripts/system/snapshot.js b/scripts/system/snapshot.js index 4667893949..bda18b75e9 100644 --- a/scripts/system/snapshot.js +++ b/scripts/system/snapshot.js @@ -278,8 +278,8 @@ function onMessage(message) { } } -var polaroid_print_sound = SoundCache.getSound(Script.resolvePath("assets/sounds/sound-print-photo.wav")); -var model_url = 'http://hifi-content.s3.amazonaws.com/alan/dev/Test/snapshot.fbx'; +var POLAROID_PRINT_SOUND = SoundCache.getSound(Script.resolvePath("assets/sounds/sound-print-photo.wav")); +var POLAROID_MODEL_URL = 'http://hifi-content.s3.amazonaws.com/alan/dev/Test/snapshot.fbx'; function printToPolaroid(image_url) { var polaroid_url = image_url; @@ -296,7 +296,7 @@ function printToPolaroid(image_url) { "name": "New Snapshot", "description": "Printed from Snaps", - "modelURL": model_url, + "modelURL": POLAROID_MODEL_URL, "position": model_pos, "rotation": model_rot, @@ -319,7 +319,7 @@ function printToPolaroid(image_url) { }; var polaroid = Entities.addEntity(properties); - Audio.playSound(polaroid_print_sound, { + Audio.playSound(POLAROID_PRINT_SOUND, { position: model_pos, localOnly: false, volume: 0.2 From f5d732f3329132b5b604242261ec785c08be7f6b Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Wed, 31 May 2017 19:00:41 -0700 Subject: [PATCH 242/357] initial version of the ClosureEventSender using std::thread --- interface/src/Application.cpp | 6 ++ interface/src/Application.h | 3 + interface/src/main.cpp | 7 ++ .../src/networking/ClosureEventSender.cpp | 71 +++++++++++++++++++ interface/src/networking/ClosureEventSender.h | 35 +++++++++ libraries/networking/src/AccountManager.cpp | 1 - libraries/networking/src/AccountManager.h | 1 + .../networking/src/UserActivityLogger.cpp | 2 - libraries/networking/src/UserActivityLogger.h | 2 + 9 files changed, 125 insertions(+), 3 deletions(-) create mode 100644 interface/src/networking/ClosureEventSender.cpp create mode 100644 interface/src/networking/ClosureEventSender.h diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 46c4c0bd4e..297ee943fa 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -144,6 +144,7 @@ #include "InterfaceLogging.h" #include "LODManager.h" #include "ModelPackager.h" +#include "networking/ClosureEventSender.h" #include "networking/HFWebEngineProfile.h" #include "networking/HFTabletWebEngineProfile.h" #include "networking/FileTypeProfile.h" @@ -534,6 +535,7 @@ bool setupEssentials(int& argc, char** argv, bool runningMarkerExisted) { DependencyManager::set(); DependencyManager::set(); DependencyManager::set(); + DependencyManager::set(); return previousSessionCrashed; } @@ -1568,6 +1570,10 @@ void Application::aboutToQuit() { getActiveDisplayPlugin()->deactivate(); + // use the ClosureEventSender via an std::thread (to not use QThread while the application is going down) + // to send an event that says the user asked for the app to close + _userQuitThread = std::thread { &ClosureEventSender::sendQuitStart, DependencyManager::get() }; + // Hide Running Scripts dialog so that it gets destroyed in an orderly manner; prevents warnings at shutdown. DependencyManager::get()->hide("RunningScripts"); diff --git a/interface/src/Application.h b/interface/src/Application.h index 9cf03f1cef..23673399f6 100644 --- a/interface/src/Application.h +++ b/interface/src/Application.h @@ -13,6 +13,7 @@ #define hifi_Application_h #include +#include #include #include @@ -680,6 +681,8 @@ private: FileScriptingInterface* _fileDownload; AudioInjector* _snapshotSoundInjector { nullptr }; SharedSoundPointer _snapshotSound; + + std::thread _userQuitThread; }; diff --git a/interface/src/main.cpp b/interface/src/main.cpp index 49517eb38e..68525dfd1e 100644 --- a/interface/src/main.cpp +++ b/interface/src/main.cpp @@ -30,6 +30,7 @@ #include "InterfaceLogging.h" #include "UserActivityLogger.h" #include "MainWindow.h" +#include "networking/ClosureEventSender.h" #ifdef HAS_BUGSPLAT #include @@ -267,6 +268,12 @@ int main(int argc, const char* argv[]) { Application::shutdownPlugins(); + if (UserActivityLogger::getInstance().isEnabled()) { + // send a quit finished event here to indicate that this session closed cleanly + std::thread quitCompleteThread { &::ClosureEventSender::sendQuitFinish, DependencyManager::get() }; + quitCompleteThread.join(); + } + qCDebug(interfaceapp, "Normal exit."); #if !defined(DEBUG) && !defined(Q_OS_LINUX) // HACK: exit immediately (don't handle shutdown callbacks) for Release build diff --git a/interface/src/networking/ClosureEventSender.cpp b/interface/src/networking/ClosureEventSender.cpp new file mode 100644 index 0000000000..f514fa17b6 --- /dev/null +++ b/interface/src/networking/ClosureEventSender.cpp @@ -0,0 +1,71 @@ +// +// ClosureEventSender.cpp +// interface/src/networking +// +// Created by Stephen Birarda on 5/31/17. +// Copyright 2017 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#include "ClosureEventSender.h" + +QNetworkRequest createNetworkRequest() { + + QNetworkRequest request; + + QUrl requestURL = NetworkingConstants::METAVERSE_SERVER_URL; + requestURL.setPath(USER_ACTIVITY_URL); + + request.setUrl(requestURL); + + auto accountManager = DependencyManager::get(); + + if (accountManager->hasValidAccessToken()) { + request.setRawHeader(ACCESS_TOKEN_AUTHORIZATION_HEADER, + accountManager->getAccountInfo().getAccessToken().authorizationHeaderValue()); + } + + request.setRawHeader(METAVERSE_SESSION_ID_HEADER, + uuidStringWithoutCurlyBraces(accountManager->getSessionID()).toLocal8Bit()); + + request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json"); + + return request; +} + +QByteArray postDataForAction(QString action) { + return QString("{\"action\": \"" + action + "\"}").toUtf8(); +} + +QNetworkReply* replyForAction(QString action) { + QNetworkAccessManager& networkAccessManager = NetworkAccessManager::getInstance(); + return networkAccessManager.post(createNetworkRequest(), postDataForAction(action)); +} + +void ClosureEventSender::sendQuitStart() { + + QNetworkReply* reply = replyForAction("quit_start"); + + QEventLoop loop; + QObject::connect(reply, &QNetworkReply::finished, &loop, &QEventLoop::quit); +} + +void ClosureEventSender::sendQuitFinish() { + QNetworkReply* reply = replyForAction("quit_finish"); + + QEventLoop loop; + QObject::connect(reply, &QNetworkReply::finished, &loop, &QEventLoop::quit); +} diff --git a/interface/src/networking/ClosureEventSender.h b/interface/src/networking/ClosureEventSender.h new file mode 100644 index 0000000000..dc726fc386 --- /dev/null +++ b/interface/src/networking/ClosureEventSender.h @@ -0,0 +1,35 @@ +// +// ClosureEventSender.h +// interface/src/networking +// +// Created by Stephen Birarda on 5/31/17. +// Copyright 2017 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +#ifndef hifi_ClosureEventSender_h +#define hifi_ClosureEventSender_h + +#include +#include + +#include + +class ClosureEventSender : public Dependency { + SINGLETON_DEPENDENCY + +public: + void setSessionID(QUuid sessionID) { _sessionID = sessionID; } + + void sendQuitStart(); + void sendQuitFinish(); + void sendCrashEvent(); + +private: + QUuid _sessionID; + QString _accessToken; +}; + +#endif // hifi_ClosureEventSender_h diff --git a/libraries/networking/src/AccountManager.cpp b/libraries/networking/src/AccountManager.cpp index 6266ad0f89..2457d0ac42 100644 --- a/libraries/networking/src/AccountManager.cpp +++ b/libraries/networking/src/AccountManager.cpp @@ -45,7 +45,6 @@ Q_DECLARE_METATYPE(QNetworkAccessManager::Operation) Q_DECLARE_METATYPE(JSONCallbackParameters) const QString ACCOUNTS_GROUP = "accounts"; -static const auto METAVERSE_SESSION_ID_HEADER = QString("HFM-SessionID").toLocal8Bit(); JSONCallbackParameters::JSONCallbackParameters(QObject* jsonCallbackReceiver, const QString& jsonCallbackMethod, QObject* errorCallbackReceiver, const QString& errorCallbackMethod, diff --git a/libraries/networking/src/AccountManager.h b/libraries/networking/src/AccountManager.h index dd2216957f..bd452646f6 100644 --- a/libraries/networking/src/AccountManager.h +++ b/libraries/networking/src/AccountManager.h @@ -52,6 +52,7 @@ namespace AccountManagerAuth { Q_DECLARE_METATYPE(AccountManagerAuth::Type); const QByteArray ACCESS_TOKEN_AUTHORIZATION_HEADER = "Authorization"; +const auto METAVERSE_SESSION_ID_HEADER = QString("HFM-SessionID").toLocal8Bit(); using UserAgentGetter = std::function; diff --git a/libraries/networking/src/UserActivityLogger.cpp b/libraries/networking/src/UserActivityLogger.cpp index e2dd110cfd..28117c0933 100644 --- a/libraries/networking/src/UserActivityLogger.cpp +++ b/libraries/networking/src/UserActivityLogger.cpp @@ -20,8 +20,6 @@ #include #include "AddressManager.h" -static const QString USER_ACTIVITY_URL = "/api/v1/user_activities"; - UserActivityLogger& UserActivityLogger::getInstance() { static UserActivityLogger sharedInstance; return sharedInstance; diff --git a/libraries/networking/src/UserActivityLogger.h b/libraries/networking/src/UserActivityLogger.h index b41960a8ad..9fad498b86 100644 --- a/libraries/networking/src/UserActivityLogger.h +++ b/libraries/networking/src/UserActivityLogger.h @@ -22,6 +22,8 @@ #include #include "AddressManager.h" +const QString USER_ACTIVITY_URL = "/api/v1/user_activities"; + class UserActivityLogger : public QObject { Q_OBJECT From 40dfcb1e6e5e8d18f8285d2e52ad14ea3f8cbfc2 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Thu, 1 Jun 2017 10:43:47 -0700 Subject: [PATCH 243/357] send quit event during shutdown on thread, with timeout --- interface/src/Application.cpp | 21 +++++++-- interface/src/Application.h | 3 -- interface/src/main.cpp | 8 ---- .../src/networking/ClosureEventSender.cpp | 43 +++++++++++++------ interface/src/networking/ClosureEventSender.h | 22 +++++++--- 5 files changed, 64 insertions(+), 33 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 297ee943fa..a637f9414b 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -11,6 +11,8 @@ #include "Application.h" +#include + #include #include #include @@ -1570,9 +1572,13 @@ void Application::aboutToQuit() { getActiveDisplayPlugin()->deactivate(); - // use the ClosureEventSender via an std::thread (to not use QThread while the application is going down) - // to send an event that says the user asked for the app to close - _userQuitThread = std::thread { &ClosureEventSender::sendQuitStart, DependencyManager::get() }; + // use the ClosureEventSender via a QThread to send an event that says the user asked for the app to close + auto closureEventSender = DependencyManager::get(); + QThread* closureEventThread = new QThread(this); + closureEventSender->moveToThread(closureEventThread); + // sendQuitEventAsync will bail immediately if the UserActivityLogger is not enabled + connect(closureEventThread, &QThread::started, closureEventSender.data(), &ClosureEventSender::sendQuitEventAsync); + closureEventThread->start(); // Hide Running Scripts dialog so that it gets destroyed in an orderly manner; prevents warnings at shutdown. DependencyManager::get()->hide("RunningScripts"); @@ -1738,6 +1744,15 @@ Application::~Application() { _window->deleteLater(); + // make sure that the quit event has finished sending before we take the application down + auto closureEventSender = DependencyManager::get(); + while (!closureEventSender->hasFinishedQuitEvent() && !closureEventSender->hasTimedOutQuitEvent()) { + // yield so we're not spinning + std::this_thread::yield(); + } + // quit the thread used by the closure event sender + closureEventSender->thread()->quit(); + // Can't log to file passed this point, FileLogger about to be deleted qInstallMessageHandler(LogHandler::verboseMessageHandler); } diff --git a/interface/src/Application.h b/interface/src/Application.h index 23673399f6..9cf03f1cef 100644 --- a/interface/src/Application.h +++ b/interface/src/Application.h @@ -13,7 +13,6 @@ #define hifi_Application_h #include -#include #include #include @@ -681,8 +680,6 @@ private: FileScriptingInterface* _fileDownload; AudioInjector* _snapshotSoundInjector { nullptr }; SharedSoundPointer _snapshotSound; - - std::thread _userQuitThread; }; diff --git a/interface/src/main.cpp b/interface/src/main.cpp index 68525dfd1e..63738d2d91 100644 --- a/interface/src/main.cpp +++ b/interface/src/main.cpp @@ -24,13 +24,11 @@ #include #include - #include "AddressManager.h" #include "Application.h" #include "InterfaceLogging.h" #include "UserActivityLogger.h" #include "MainWindow.h" -#include "networking/ClosureEventSender.h" #ifdef HAS_BUGSPLAT #include @@ -268,12 +266,6 @@ int main(int argc, const char* argv[]) { Application::shutdownPlugins(); - if (UserActivityLogger::getInstance().isEnabled()) { - // send a quit finished event here to indicate that this session closed cleanly - std::thread quitCompleteThread { &::ClosureEventSender::sendQuitFinish, DependencyManager::get() }; - quitCompleteThread.join(); - } - qCDebug(interfaceapp, "Normal exit."); #if !defined(DEBUG) && !defined(Q_OS_LINUX) // HACK: exit immediately (don't handle shutdown callbacks) for Release build diff --git a/interface/src/networking/ClosureEventSender.cpp b/interface/src/networking/ClosureEventSender.cpp index f514fa17b6..238629b809 100644 --- a/interface/src/networking/ClosureEventSender.cpp +++ b/interface/src/networking/ClosureEventSender.cpp @@ -9,14 +9,15 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // +#include #include #include -#include #include #include #include #include +#include #include #include @@ -43,11 +44,13 @@ QNetworkRequest createNetworkRequest() { request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json"); + request.setPriority(QNetworkRequest::HighPriority); + return request; } QByteArray postDataForAction(QString action) { - return QString("{\"action\": \"" + action + "\"}").toUtf8(); + return QString("{\"action_name\": \"" + action + "\"}").toUtf8(); } QNetworkReply* replyForAction(QString action) { @@ -55,17 +58,33 @@ QNetworkReply* replyForAction(QString action) { return networkAccessManager.post(createNetworkRequest(), postDataForAction(action)); } -void ClosureEventSender::sendQuitStart() { - - QNetworkReply* reply = replyForAction("quit_start"); - - QEventLoop loop; - QObject::connect(reply, &QNetworkReply::finished, &loop, &QEventLoop::quit); +void ClosureEventSender::sendQuitEventAsync() { + if (UserActivityLogger::getInstance().isEnabled()) { + QNetworkReply* reply = replyForAction("quit"); + connect(reply, &QNetworkReply::finished, this, &ClosureEventSender::handleQuitEventFinished); + _quitEventStartTimestamp = QDateTime::currentMSecsSinceEpoch(); + } else { + _hasFinishedQuitEvent = true; + } } -void ClosureEventSender::sendQuitFinish() { - QNetworkReply* reply = replyForAction("quit_finish"); +void ClosureEventSender::handleQuitEventFinished() { + _hasFinishedQuitEvent = true; - QEventLoop loop; - QObject::connect(reply, &QNetworkReply::finished, &loop, &QEventLoop::quit); + auto reply = qobject_cast(sender()); + if (reply->error() == QNetworkReply::NoError) { + qCDebug(networking) << "Quit event sent successfully"; + } else { + qCDebug(networking) << "Failed to send quit event -" << reply->errorString(); + } + + reply->deleteLater(); } + +bool ClosureEventSender::hasTimedOutQuitEvent() { + const int CLOSURE_EVENT_TIMEOUT_MS = 5000; + return _quitEventStartTimestamp != 0 + && QDateTime::currentMSecsSinceEpoch() - _quitEventStartTimestamp > CLOSURE_EVENT_TIMEOUT_MS; +} + + diff --git a/interface/src/networking/ClosureEventSender.h b/interface/src/networking/ClosureEventSender.h index dc726fc386..be2daca12b 100644 --- a/interface/src/networking/ClosureEventSender.h +++ b/interface/src/networking/ClosureEventSender.h @@ -12,24 +12,32 @@ #ifndef hifi_ClosureEventSender_h #define hifi_ClosureEventSender_h +#include + #include #include #include -class ClosureEventSender : public Dependency { +class ClosureEventSender : public QObject, public Dependency { + Q_OBJECT SINGLETON_DEPENDENCY public: - void setSessionID(QUuid sessionID) { _sessionID = sessionID; } + void sendCrashEventSync(); - void sendQuitStart(); - void sendQuitFinish(); - void sendCrashEvent(); + bool hasTimedOutQuitEvent(); + bool hasFinishedQuitEvent() { return _hasFinishedQuitEvent; } + +public slots: + void sendQuitEventAsync(); + +private slots: + void handleQuitEventFinished(); private: - QUuid _sessionID; - QString _accessToken; + std::atomic _hasFinishedQuitEvent { false }; + std::atomic _quitEventStartTimestamp; }; #endif // hifi_ClosureEventSender_h From ecc697dbe1a467b6448a3b3af77eca645d0de35c Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Thu, 1 Jun 2017 13:40:50 -0700 Subject: [PATCH 244/357] remove crash event definition for now --- interface/src/networking/ClosureEventSender.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/interface/src/networking/ClosureEventSender.h b/interface/src/networking/ClosureEventSender.h index be2daca12b..ea07e55c84 100644 --- a/interface/src/networking/ClosureEventSender.h +++ b/interface/src/networking/ClosureEventSender.h @@ -24,8 +24,6 @@ class ClosureEventSender : public QObject, public Dependency { SINGLETON_DEPENDENCY public: - void sendCrashEventSync(); - bool hasTimedOutQuitEvent(); bool hasFinishedQuitEvent() { return _hasFinishedQuitEvent; } From e3d8229abe032dc997522d4b5e7a0784d577acc4 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Thu, 1 Jun 2017 17:52:01 -0700 Subject: [PATCH 245/357] rename ClosureEventSender to CloseEventSender --- interface/src/Application.cpp | 18 +++++++++--------- ...ureEventSender.cpp => CloseEventSender.cpp} | 12 ++++++------ ...ClosureEventSender.h => CloseEventSender.h} | 10 +++++----- 3 files changed, 20 insertions(+), 20 deletions(-) rename interface/src/networking/{ClosureEventSender.cpp => CloseEventSender.cpp} (88%) rename interface/src/networking/{ClosureEventSender.h => CloseEventSender.h} (79%) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index a637f9414b..41b0bcaf04 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -146,7 +146,7 @@ #include "InterfaceLogging.h" #include "LODManager.h" #include "ModelPackager.h" -#include "networking/ClosureEventSender.h" +#include "networking/CloseEventSender.h" #include "networking/HFWebEngineProfile.h" #include "networking/HFTabletWebEngineProfile.h" #include "networking/FileTypeProfile.h" @@ -537,7 +537,7 @@ bool setupEssentials(int& argc, char** argv, bool runningMarkerExisted) { DependencyManager::set(); DependencyManager::set(); DependencyManager::set(); - DependencyManager::set(); + DependencyManager::set(); return previousSessionCrashed; } @@ -1572,12 +1572,12 @@ void Application::aboutToQuit() { getActiveDisplayPlugin()->deactivate(); - // use the ClosureEventSender via a QThread to send an event that says the user asked for the app to close - auto closureEventSender = DependencyManager::get(); + // use the CloseEventSender via a QThread to send an event that says the user asked for the app to close + auto closeEventSender = DependencyManager::get(); QThread* closureEventThread = new QThread(this); - closureEventSender->moveToThread(closureEventThread); + closeEventSender->moveToThread(closureEventThread); // sendQuitEventAsync will bail immediately if the UserActivityLogger is not enabled - connect(closureEventThread, &QThread::started, closureEventSender.data(), &ClosureEventSender::sendQuitEventAsync); + connect(closureEventThread, &QThread::started, closeEventSender.data(), &CloseEventSender::sendQuitEventAsync); closureEventThread->start(); // Hide Running Scripts dialog so that it gets destroyed in an orderly manner; prevents warnings at shutdown. @@ -1745,13 +1745,13 @@ Application::~Application() { _window->deleteLater(); // make sure that the quit event has finished sending before we take the application down - auto closureEventSender = DependencyManager::get(); - while (!closureEventSender->hasFinishedQuitEvent() && !closureEventSender->hasTimedOutQuitEvent()) { + auto closeEventSender = DependencyManager::get(); + while (!closeEventSender->hasFinishedQuitEvent() && !closeEventSender->hasTimedOutQuitEvent()) { // yield so we're not spinning std::this_thread::yield(); } // quit the thread used by the closure event sender - closureEventSender->thread()->quit(); + closeEventSender->thread()->quit(); // Can't log to file passed this point, FileLogger about to be deleted qInstallMessageHandler(LogHandler::verboseMessageHandler); diff --git a/interface/src/networking/ClosureEventSender.cpp b/interface/src/networking/CloseEventSender.cpp similarity index 88% rename from interface/src/networking/ClosureEventSender.cpp rename to interface/src/networking/CloseEventSender.cpp index 238629b809..8c3d6ae888 100644 --- a/interface/src/networking/ClosureEventSender.cpp +++ b/interface/src/networking/CloseEventSender.cpp @@ -1,5 +1,5 @@ // -// ClosureEventSender.cpp +// CloseEventSender.cpp // interface/src/networking // // Created by Stephen Birarda on 5/31/17. @@ -21,7 +21,7 @@ #include #include -#include "ClosureEventSender.h" +#include "CloseEventSender.h" QNetworkRequest createNetworkRequest() { @@ -58,17 +58,17 @@ QNetworkReply* replyForAction(QString action) { return networkAccessManager.post(createNetworkRequest(), postDataForAction(action)); } -void ClosureEventSender::sendQuitEventAsync() { +void CloseEventSender::sendQuitEventAsync() { if (UserActivityLogger::getInstance().isEnabled()) { QNetworkReply* reply = replyForAction("quit"); - connect(reply, &QNetworkReply::finished, this, &ClosureEventSender::handleQuitEventFinished); + connect(reply, &QNetworkReply::finished, this, &CloseEventSender::handleQuitEventFinished); _quitEventStartTimestamp = QDateTime::currentMSecsSinceEpoch(); } else { _hasFinishedQuitEvent = true; } } -void ClosureEventSender::handleQuitEventFinished() { +void CloseEventSender::handleQuitEventFinished() { _hasFinishedQuitEvent = true; auto reply = qobject_cast(sender()); @@ -81,7 +81,7 @@ void ClosureEventSender::handleQuitEventFinished() { reply->deleteLater(); } -bool ClosureEventSender::hasTimedOutQuitEvent() { +bool CloseEventSender::hasTimedOutQuitEvent() { const int CLOSURE_EVENT_TIMEOUT_MS = 5000; return _quitEventStartTimestamp != 0 && QDateTime::currentMSecsSinceEpoch() - _quitEventStartTimestamp > CLOSURE_EVENT_TIMEOUT_MS; diff --git a/interface/src/networking/ClosureEventSender.h b/interface/src/networking/CloseEventSender.h similarity index 79% rename from interface/src/networking/ClosureEventSender.h rename to interface/src/networking/CloseEventSender.h index ea07e55c84..05e6f81ad4 100644 --- a/interface/src/networking/ClosureEventSender.h +++ b/interface/src/networking/CloseEventSender.h @@ -1,5 +1,5 @@ // -// ClosureEventSender.h +// CloseEventSender.h // interface/src/networking // // Created by Stephen Birarda on 5/31/17. @@ -9,8 +9,8 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -#ifndef hifi_ClosureEventSender_h -#define hifi_ClosureEventSender_h +#ifndef hifi_CloseEventSender_h +#define hifi_CloseEventSender_h #include @@ -19,7 +19,7 @@ #include -class ClosureEventSender : public QObject, public Dependency { +class CloseEventSender : public QObject, public Dependency { Q_OBJECT SINGLETON_DEPENDENCY @@ -38,4 +38,4 @@ private: std::atomic _quitEventStartTimestamp; }; -#endif // hifi_ClosureEventSender_h +#endif // hifi_CloseEventSender_h From d89febac7197d7e840150bc62ef3118167981572 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Thu, 1 Jun 2017 17:57:23 -0700 Subject: [PATCH 246/357] use a sleep instead of a yield waiting for close event --- interface/src/Application.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 41b0bcaf04..27c158322d 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -11,6 +11,7 @@ #include "Application.h" +#include #include #include @@ -1747,8 +1748,8 @@ Application::~Application() { // make sure that the quit event has finished sending before we take the application down auto closeEventSender = DependencyManager::get(); while (!closeEventSender->hasFinishedQuitEvent() && !closeEventSender->hasTimedOutQuitEvent()) { - // yield so we're not spinning - std::this_thread::yield(); + // sleep a little so we're not spinning at 100% + std::this_thread::sleep_for(std::chrono::milliseconds(10)); } // quit the thread used by the closure event sender closeEventSender->thread()->quit(); From fa726f43a6718525dbf270e832d5ab65ff60bd46 Mon Sep 17 00:00:00 2001 From: seefo Date: Fri, 2 Jun 2017 13:47:58 -0700 Subject: [PATCH 247/357] Fixed a bug in Polaroid canRez listener --- scripts/system/snapshot.js | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/scripts/system/snapshot.js b/scripts/system/snapshot.js index bda18b75e9..6dc2e8ef3d 100644 --- a/scripts/system/snapshot.js +++ b/scripts/system/snapshot.js @@ -717,8 +717,6 @@ function processRezPermissionChange(canRez) { action = 'setPrintButtonDisabled'; } - print(action); - tablet.emitScriptEvent(JSON.stringify({ type: "snapshot", action : action @@ -733,8 +731,8 @@ tablet.screenChanged.connect(onTabletScreenChanged); GlobalServices.myUsernameChanged.connect(onUsernameChanged); Snapshot.snapshotLocationSet.connect(snapshotLocationSet); -Entities.canRezChanged.connect(processRezPermissionChange); -Entities.canRezTmpChanged.connect(processRezPermissionChange); +Entities.canRezChanged.connect(updatePrintPermissions); +Entities.canRezTmpChanged.connect(updatePrintPermissions); Script.scriptEnding.connect(function () { if (buttonConnected) { From a5296d50fc295a45d9fe0faf24d424ef0d81a7dc Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Fri, 2 Jun 2017 13:51:39 -0700 Subject: [PATCH 248/357] Replace static use of qApp with QCoreApplication --- libraries/networking/src/SandboxUtils.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/networking/src/SandboxUtils.cpp b/libraries/networking/src/SandboxUtils.cpp index f6c7634ce5..4a348b0662 100644 --- a/libraries/networking/src/SandboxUtils.cpp +++ b/libraries/networking/src/SandboxUtils.cpp @@ -73,7 +73,7 @@ void runLocalSandbox(QString contentPath, bool autoShutdown, bool noUpdater) { } if (autoShutdown) { - auto pid = qApp->applicationPid(); + auto pid = QCoreApplication::applicationPid(); args << "--shutdownWith" << QString::number(pid); } From 9088e288e09c02184eb60932398f83967d7677bd Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Fri, 2 Jun 2017 13:57:53 -0700 Subject: [PATCH 249/357] don't worry about head controller being enabled, just check to see if head pose is valid --- interface/src/Application.cpp | 18 +------------- interface/src/Application.h | 1 - interface/src/avatar/MyAvatar.cpp | 8 +++++-- interface/src/avatar/MySkeletonModel.cpp | 24 +++++++------------ .../oculus/src/OculusControllerManager.cpp | 20 +++++++++------- plugins/oculus/src/OculusControllerManager.h | 3 ++- plugins/openvr/src/ViveControllerManager.cpp | 4 ++-- plugins/openvr/src/ViveControllerManager.h | 5 ++-- 8 files changed, 33 insertions(+), 50 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 673813b0db..35a8f65c06 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -4429,9 +4429,7 @@ void Application::update(float deltaTime) { myAvatar->setSpineControllerPosesInSensorFrame(hipsPose.transform(avatarToSensorMatrix), spine2Pose.transform(avatarToSensorMatrix)); controller::Pose headPose = userInputMapper->getPoseState(controller::Action::HEAD); - if (headPose.isValid()) { - myAvatar->setHeadControllerPoseInSensorFrame(headPose.transform(avatarToSensorMatrix)); - } + myAvatar->setHeadControllerPoseInSensorFrame(headPose.transform(avatarToSensorMatrix)); controller::Pose leftArmPose = userInputMapper->getPoseState(controller::Action::LEFT_ARM); controller::Pose rightArmPose = userInputMapper->getPoseState(controller::Action::RIGHT_ARM); @@ -4867,20 +4865,6 @@ bool Application::isHMDMode() const { return getActiveDisplayPlugin()->isHmd(); } -bool Application::isHeadControllerEnabled() const { - auto pluginManager = PluginManager::getInstance(); - if (!pluginManager) { - return false; - } - const InputPluginList& inputPlugins = pluginManager->getInputPlugins(); - for (auto& ip : inputPlugins) { - if (ip && ip->isActive() && ip->isHeadController()) { - return true; - } - } - return false; -} - float Application::getTargetFrameRate() const { return getActiveDisplayPlugin()->getTargetFrameRate(); } QRect Application::getDesirableApplicationGeometry() const { diff --git a/interface/src/Application.h b/interface/src/Application.h index ec3792ea75..9cf03f1cef 100644 --- a/interface/src/Application.h +++ b/interface/src/Application.h @@ -248,7 +248,6 @@ public: // rendering of several elements depend on that // TODO: carry that information on the Camera as a setting virtual bool isHMDMode() const override; - bool isHeadControllerEnabled() const; glm::mat4 getHMDSensorPose() const; glm::mat4 getEyeOffset(int eye) const; glm::mat4 getEyeProjection(int eye) const; diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index c26cdf0b01..7e998b11c0 100755 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -641,9 +641,13 @@ void MyAvatar::updateFromHMDSensorMatrix(const glm::mat4& hmdSensorMatrix) { // Ignore unreasonable HMD sensor data return; } + _hmdSensorPosition = newHmdSensorPosition; _hmdSensorOrientation = glm::quat_cast(hmdSensorMatrix); - _headControllerFacing = getFacingDir2D(_headControllerPoseInSensorFrameCache.get().rotation); + auto headPose = _headControllerPoseInSensorFrameCache.get(); + if (headPose.isValid()) { + _headControllerFacing = getFacingDir2D(headPose.rotation); + } } void MyAvatar::updateJointFromController(controller::Action poseKey, ThreadSafeValueCache& matrixCache) { @@ -1884,7 +1888,7 @@ void MyAvatar::updateOrientation(float deltaTime) { getHead()->setBasePitch(getHead()->getBasePitch() + getDriveKey(PITCH) * _pitchSpeed * deltaTime); - if (qApp->isHeadControllerEnabled()) { + if (getHeadControllerPoseInAvatarFrame().isValid()) { glm::quat localOrientation = getHeadControllerPoseInAvatarFrame().rotation; // these angles will be in radians // ... so they need to be converted to degrees before we do math... diff --git a/interface/src/avatar/MySkeletonModel.cpp b/interface/src/avatar/MySkeletonModel.cpp index 3721eea569..e74df4cf0f 100644 --- a/interface/src/avatar/MySkeletonModel.cpp +++ b/interface/src/avatar/MySkeletonModel.cpp @@ -52,26 +52,18 @@ void MySkeletonModel::updateRig(float deltaTime, glm::mat4 parentTransform) { // input action is the highest priority source for head orientation. auto avatarHeadPose = myAvatar->getHeadControllerPoseInAvatarFrame(); if (avatarHeadPose.isValid()) { - glm::mat4 rigHeadMat = Matrices::Y_180 * createMatFromQuatAndPos(avatarHeadPose.getRotation(), avatarHeadPose.getTranslation()); + glm::mat4 rigHeadMat = Matrices::Y_180 * + createMatFromQuatAndPos(avatarHeadPose.getRotation(), avatarHeadPose.getTranslation()); headParams.rigHeadPosition = extractTranslation(rigHeadMat); headParams.rigHeadOrientation = glmExtractRotation(rigHeadMat); headParams.headEnabled = true; } else { - if (qApp->isHMDMode()) { - // get HMD position from sensor space into world space, and back into rig space - glm::mat4 worldHMDMat = myAvatar->getHeadControllerPoseInWorldFrame().getMatrix(); - glm::mat4 rigToWorld = createMatFromQuatAndPos(getRotation(), getTranslation()); - glm::mat4 worldToRig = glm::inverse(rigToWorld); - glm::mat4 rigHMDMat = worldToRig * worldHMDMat; - _rig.computeHeadFromHMD(AnimPose(rigHMDMat), headParams.rigHeadPosition, headParams.rigHeadOrientation); - headParams.headEnabled = true; - } else { - // even though full head IK is disabled, the rig still needs the head orientation to rotate the head up and down in desktop mode. - // preMult 180 is necessary to convert from avatar to rig coordinates. - // postMult 180 is necessary to convert head from -z forward to z forward. - headParams.rigHeadOrientation = Quaternions::Y_180 * head->getFinalOrientationInLocalFrame() * Quaternions::Y_180; - headParams.headEnabled = false; - } + // even though full head IK is disabled, the rig still needs the head orientation to rotate the head up and + // down in desktop mode. + // preMult 180 is necessary to convert from avatar to rig coordinates. + // postMult 180 is necessary to convert head from -z forward to z forward. + headParams.rigHeadOrientation = Quaternions::Y_180 * head->getFinalOrientationInLocalFrame() * Quaternions::Y_180; + headParams.headEnabled = false; } auto avatarHipsPose = myAvatar->getHipsControllerPoseInAvatarFrame(); diff --git a/plugins/oculus/src/OculusControllerManager.cpp b/plugins/oculus/src/OculusControllerManager.cpp index ff3e614077..4b7873c86d 100644 --- a/plugins/oculus/src/OculusControllerManager.cpp +++ b/plugins/oculus/src/OculusControllerManager.cpp @@ -210,10 +210,8 @@ void OculusControllerManager::RemoteDevice::focusOutEvent() { _buttonPressedMap.clear(); } -bool OculusControllerManager::isHeadController() const { - // this plugin is a head controller if the HMD is mounted. +bool OculusControllerManager::isHeadControllerMounted() const { ovrSessionStatus status; - bool success = OVR_SUCCESS(ovr_GetSessionStatus(_session, &status)); if (!success) { return false; @@ -224,12 +222,12 @@ bool OculusControllerManager::isHeadController() const { void OculusControllerManager::TouchDevice::update(float deltaTime, const controller::InputCalibrationData& inputCalibrationData) { _buttonPressedMap.clear(); - _poseStateMap.erase(controller::HEAD); + // _poseStateMap.erase(controller::HEAD); - if (!_parent.isHeadController()) { - // if the HMD isn't on someone's head, don't take input from the controllers - return; - } + // if (!_parent.isHeadControllerMounted()) { + // // if the HMD isn't on someone's head, don't take input from the controllers + // return; + // } int numTrackedControllers = 0; quint64 currentTime = usecTimestampNow(); @@ -261,7 +259,11 @@ void OculusControllerManager::TouchDevice::update(float deltaTime, handleRotationForUntrackedHand(inputCalibrationData, hand, tracking.HandPoses[hand]); }); - handleHeadPose(deltaTime, inputCalibrationData, tracking.HeadPose); + if (_parent.isHeadControllerMounted()) { + handleHeadPose(deltaTime, inputCalibrationData, tracking.HeadPose); + } else { + _poseStateMap[controller::HEAD].valid = false; + } using namespace controller; // Axes diff --git a/plugins/oculus/src/OculusControllerManager.h b/plugins/oculus/src/OculusControllerManager.h index 54237645eb..69187f94a6 100644 --- a/plugins/oculus/src/OculusControllerManager.h +++ b/plugins/oculus/src/OculusControllerManager.h @@ -28,7 +28,8 @@ public: const QString getName() const override { return NAME; } bool isHandController() const override { return _touch != nullptr; } - bool isHeadController() const override; + bool isHeadController() const override { return true; } + bool isHeadControllerMounted() const; QStringList getSubdeviceNames() override; bool activate() override; diff --git a/plugins/openvr/src/ViveControllerManager.cpp b/plugins/openvr/src/ViveControllerManager.cpp index abff0770a7..b5fa7cadad 100644 --- a/plugins/openvr/src/ViveControllerManager.cpp +++ b/plugins/openvr/src/ViveControllerManager.cpp @@ -164,8 +164,8 @@ void ViveControllerManager::deactivate() { _registeredWithInputMapper = false; } -bool ViveControllerManager::isHeadController() const { - if (_inputDevice && _inputDevice->isHeadController()) { +bool ViveControllerManager::isHeadControllerMounted() const { + if (_inputDevice && _inputDevice->isHeadControllerMounted()) { return true; } vr::EDeviceActivityLevel activityLevel = _system->GetTrackedDeviceActivityLevel(vr::k_unTrackedDeviceIndex_Hmd); diff --git a/plugins/openvr/src/ViveControllerManager.h b/plugins/openvr/src/ViveControllerManager.h index d03818ea34..35ad2df359 100644 --- a/plugins/openvr/src/ViveControllerManager.h +++ b/plugins/openvr/src/ViveControllerManager.h @@ -41,7 +41,8 @@ public: const QString getName() const override { return NAME; } bool isHandController() const override { return true; } - bool isHeadController() const override; + bool isHeadController() const override { return true; } + bool isHeadControllerMounted() const; bool activate() override; void deactivate() override; @@ -55,7 +56,7 @@ private: class InputDevice : public controller::InputDevice { public: InputDevice(vr::IVRSystem*& system); - bool isHeadController() const { return _overrideHead; } + bool isHeadControllerMounted() const { return _overrideHead; } private: // Device functions controller::Input::NamedVector getAvailableInputs() const override; From 76901f5bf91dec7520448b15184dd22d32c70e6c Mon Sep 17 00:00:00 2001 From: Patrick Manalich Date: Fri, 2 Jun 2017 14:08:56 -0700 Subject: [PATCH 250/357] Final Application.cpp change --- interface/src/Application.cpp | 26 +++++++++++--------------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index bdefbc6773..d3ad850733 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -2780,6 +2780,17 @@ void Application::keyPressEvent(QKeyEvent* event) { if (isShifted && isMeta && !isOption) { Menu::getInstance()->triggerOption(MenuOption::SuppressShortTimings); } else if (!isOption && !isShifted && isMeta) { + AudioInjectorOptions options; + options.localOnly = true; + options.stereo = true; + + if (_snapshotSoundInjector) { + _snapshotSoundInjector->setOptions(options); + _snapshotSoundInjector->restart(); + } else { + QByteArray samples = _snapshotSound->getByteArray(); + _snapshotSoundInjector = AudioInjector::playSound(samples, options); + } takeSnapshot(true); } break; @@ -6312,21 +6323,6 @@ void Application::loadAddAvatarBookmarkDialog() const { } void Application::takeSnapshot(bool notify, bool includeAnimated, float aspectRatio) { - - //keep sound thread out of event loop scope - - AudioInjectorOptions options; - options.localOnly = true; - options.stereo = true; - - if (_snapshotSoundInjector) { - _snapshotSoundInjector->setOptions(options); - _snapshotSoundInjector->restart(); - } else { - QByteArray samples = _snapshotSound->getByteArray(); - _snapshotSoundInjector = AudioInjector::playSound(samples, options); - } - postLambdaEvent([notify, includeAnimated, aspectRatio, this] { // Get a screenshot and save it QString path = Snapshot::saveSnapshot(getActiveDisplayPlugin()->getScreenshot(aspectRatio)); From f9e1f028882492fc5a5e9ccc17416660e69cdfb4 Mon Sep 17 00:00:00 2001 From: David Kelly Date: Fri, 2 Jun 2017 14:59:27 -0700 Subject: [PATCH 251/357] protect _text member of Text3DOverlay with mutex --- interface/src/ui/overlays/Text3DOverlay.cpp | 19 +++++++++++++++---- interface/src/ui/overlays/Text3DOverlay.h | 13 +++++++------ 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/interface/src/ui/overlays/Text3DOverlay.cpp b/interface/src/ui/overlays/Text3DOverlay.cpp index 2e2d586abc..d7e4edb197 100644 --- a/interface/src/ui/overlays/Text3DOverlay.cpp +++ b/interface/src/ui/overlays/Text3DOverlay.cpp @@ -23,12 +23,13 @@ const float LINE_SCALE_RATIO = 1.2f; QString const Text3DOverlay::TYPE = "text3d"; -Text3DOverlay::Text3DOverlay() { +Text3DOverlay::Text3DOverlay() : _mutex() { _textRenderer = TextRenderer3D::getInstance(SANS_FONT_FAMILY, FIXED_FONT_POINT_SIZE); _geometryId = DependencyManager::get()->allocateID(); } Text3DOverlay::Text3DOverlay(const Text3DOverlay* text3DOverlay) : + _mutex(), Billboard3DOverlay(text3DOverlay), _text(text3DOverlay->_text), _backgroundColor(text3DOverlay->_backgroundColor), @@ -51,6 +52,16 @@ Text3DOverlay::~Text3DOverlay() { } } +const QString Text3DOverlay::getText() const { + QMutexLocker lock(&_mutex); + return _text; +} + +void Text3DOverlay::setText(const QString& text) { + QMutexLocker lock(&_mutex); + _text = text; +} + xColor Text3DOverlay::getBackgroundColor() { if (_colorPulse == 0.0f) { return _backgroundColor; @@ -125,7 +136,7 @@ void Text3DOverlay::render(RenderArgs* args) { // FIXME: Factor out textRenderer so that Text3DOverlay overlay parts can be grouped by pipeline // for a gpu performance increase. Currently, // Text renderer sets its own pipeline, - _textRenderer->draw(batch, 0, 0, _text, textColor, glm::vec2(-1.0f), getDrawInFront()); + _textRenderer->draw(batch, 0, 0, getText(), textColor, glm::vec2(-1.0f), getDrawInFront()); // so before we continue, we must reset the pipeline batch.setPipeline(args->_pipeline->pipeline); args->_pipeline->prepare(batch); @@ -188,7 +199,7 @@ void Text3DOverlay::setProperties(const QVariantMap& properties) { QVariant Text3DOverlay::getProperty(const QString& property) { if (property == "text") { - return _text; + return getText(); } if (property == "textAlpha") { return _textAlpha; @@ -231,7 +242,7 @@ QSizeF Text3DOverlay::textSize(const QString& text) const { return QSizeF(extents.x, extents.y) * pointToWorldScale; } -bool Text3DOverlay::findRayIntersection(const glm::vec3 &origin, const glm::vec3 &direction, float &distance, +bool Text3DOverlay::findRayIntersection(const glm::vec3 &origin, const glm::vec3 &direction, float &distance, BoxFace &face, glm::vec3& surfaceNormal) { Transform transform = getTransform(); applyTransformTo(transform, true); diff --git a/interface/src/ui/overlays/Text3DOverlay.h b/interface/src/ui/overlays/Text3DOverlay.h index 5ba4fe5939..e7b09c9040 100644 --- a/interface/src/ui/overlays/Text3DOverlay.h +++ b/interface/src/ui/overlays/Text3DOverlay.h @@ -12,14 +12,14 @@ #define hifi_Text3DOverlay_h #include - +#include #include "Billboard3DOverlay.h" class TextRenderer3D; class Text3DOverlay : public Billboard3DOverlay { Q_OBJECT - + public: static QString const TYPE; virtual QString getType() const override { return TYPE; } @@ -34,7 +34,7 @@ public: virtual const render::ShapeKey getShapeKey() override; // getters - const QString& getText() const { return _text; } + const QString getText() const; float getLineHeight() const { return _lineHeight; } float getLeftMargin() const { return _leftMargin; } float getTopMargin() const { return _topMargin; } @@ -45,7 +45,7 @@ public: float getBackgroundAlpha() { return getAlpha(); } // setters - void setText(const QString& text) { _text = text; } + void setText(const QString& text); void setTextAlpha(float alpha) { _textAlpha = alpha; } void setLineHeight(float value) { _lineHeight = value; } void setLeftMargin(float margin) { _leftMargin = margin; } @@ -58,15 +58,16 @@ public: QSizeF textSize(const QString& test) const; // Meters - virtual bool findRayIntersection(const glm::vec3& origin, const glm::vec3& direction, float& distance, + virtual bool findRayIntersection(const glm::vec3& origin, const glm::vec3& direction, float& distance, BoxFace& face, glm::vec3& surfaceNormal) override; virtual Text3DOverlay* createClone() const override; private: TextRenderer3D* _textRenderer = nullptr; - + QString _text; + mutable QMutex _mutex; // used to make get/setText threadsafe, mutable so can be used in const functions xColor _backgroundColor = xColor { 0, 0, 0 }; float _textAlpha { 1.0f }; float _lineHeight { 1.0f }; From 3359a0a794f276efd12286c21ea67cdaca8ca593 Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Fri, 2 Jun 2017 15:29:20 -0700 Subject: [PATCH 252/357] work on fixing some head to eye offsets. MyHead::getHmdOrientation to MyHead::getHeadOrientation --- interface/src/Application.cpp | 8 +-- interface/src/avatar/MyAvatar.cpp | 50 ++++++++++--------- interface/src/avatar/MyHead.cpp | 17 ++++--- interface/src/avatar/MyHead.h | 2 +- .../oculus/src/OculusControllerManager.cpp | 27 ++++++---- 5 files changed, 57 insertions(+), 47 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 9245c58760..55666d521e 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -2091,7 +2091,7 @@ void Application::paintGL() { _myCamera.setOrientation(glm::quat_cast(camMat)); } else { _myCamera.setPosition(myAvatar->getDefaultEyePosition()); - _myCamera.setOrientation(myAvatar->getMyHead()->getCameraOrientation()); + _myCamera.setOrientation(myAvatar->getMyHead()->getHeadOrientation()); } } else if (_myCamera.getMode() == CAMERA_MODE_THIRD_PERSON) { if (isHMDMode()) { @@ -4047,9 +4047,9 @@ void Application::updateMyAvatarLookAtPosition() { } else { // I am not looking at anyone else, so just look forward if (isHMD) { - glm::mat4 worldHMDMat = myAvatar->getSensorToWorldMatrix() * - myAvatar->getHeadControllerPoseInSensorFrame().getMatrix() * Matrices::Y_180; - lookAtSpot = transformPoint(worldHMDMat, glm::vec3(0.0f, 0.0f, -TREE_SCALE)); + glm::mat4 worldHeadMat = myAvatar->getSensorToWorldMatrix() * + myAvatar->getHeadControllerPoseInSensorFrame().getMatrix(); + lookAtSpot = transformPoint(worldHeadMat, glm::vec3(0.0f, 0.0f, TREE_SCALE)); } else { lookAtSpot = myAvatar->getHead()->getEyePosition() + (myAvatar->getHead()->getFinalOrientationInWorldFrame() * glm::vec3(0.0f, 0.0f, -TREE_SCALE)); diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index 7e998b11c0..826a6a00ac 100755 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -644,9 +644,12 @@ void MyAvatar::updateFromHMDSensorMatrix(const glm::mat4& hmdSensorMatrix) { _hmdSensorPosition = newHmdSensorPosition; _hmdSensorOrientation = glm::quat_cast(hmdSensorMatrix); + // _headControllerFacing = getFacingDir2D(_hmdSensorOrientation); auto headPose = _headControllerPoseInSensorFrameCache.get(); if (headPose.isValid()) { _headControllerFacing = getFacingDir2D(headPose.rotation); + } else { + _headControllerFacing = glm::vec2(1.0f, 0.0f); } } @@ -1481,12 +1484,12 @@ void MyAvatar::updateMotors() { if (_motionBehaviors & AVATAR_MOTION_ACTION_MOTOR_ENABLED) { if (_characterController.getState() == CharacterController::State::Hover || _characterController.computeCollisionGroup() == BULLET_COLLISION_GROUP_COLLISIONLESS) { - motorRotation = getMyHead()->getCameraOrientation(); + motorRotation = getMyHead()->getHeadOrientation(); } else { // non-hovering = walking: follow camera twist about vertical but not lift // so we decompose camera's rotation and store the twist part in motorRotation glm::quat liftRotation; - swingTwistDecomposition(getMyHead()->getCameraOrientation(), _worldUpDirection, liftRotation, motorRotation); + swingTwistDecomposition(getMyHead()->getHeadOrientation(), _worldUpDirection, liftRotation, motorRotation); } const float DEFAULT_MOTOR_TIMESCALE = 0.2f; const float INVALID_MOTOR_TIMESCALE = 1.0e6f; @@ -1500,7 +1503,7 @@ void MyAvatar::updateMotors() { } if (_motionBehaviors & AVATAR_MOTION_SCRIPTED_MOTOR_ENABLED) { if (_scriptedMotorFrame == SCRIPTED_MOTOR_CAMERA_FRAME) { - motorRotation = getMyHead()->getCameraOrientation() * glm::angleAxis(PI, Vectors::UNIT_Y); + motorRotation = getMyHead()->getHeadOrientation() * glm::angleAxis(PI, Vectors::UNIT_Y); } else if (_scriptedMotorFrame == SCRIPTED_MOTOR_AVATAR_FRAME) { motorRotation = getOrientation() * glm::angleAxis(PI, Vectors::UNIT_Y); } else { @@ -1849,7 +1852,7 @@ void MyAvatar::updateOrientation(float deltaTime) { if (getCharacterController()->getState() == CharacterController::State::Hover) { // This is the direction the user desires to fly in. - glm::vec3 desiredFacing = getMyHead()->getCameraOrientation() * Vectors::UNIT_Z; + glm::vec3 desiredFacing = getMyHead()->getHeadOrientation() * Vectors::UNIT_Z; desiredFacing.y = 0.0f; // This is our reference frame, it is captured when the user begins to move. @@ -1888,8 +1891,9 @@ void MyAvatar::updateOrientation(float deltaTime) { getHead()->setBasePitch(getHead()->getBasePitch() + getDriveKey(PITCH) * _pitchSpeed * deltaTime); - if (getHeadControllerPoseInAvatarFrame().isValid()) { - glm::quat localOrientation = getHeadControllerPoseInAvatarFrame().rotation; + auto headPose = getHeadControllerPoseInAvatarFrame(); + if (headPose.isValid()) { + glm::quat localOrientation = headPose.rotation; // these angles will be in radians // ... so they need to be converted to degrees before we do math... glm::vec3 euler = glm::eulerAngles(localOrientation) * DEGREES_PER_RADIAN; @@ -2003,11 +2007,14 @@ void MyAvatar::updatePosition(float deltaTime) { } // capture the head rotation, in sensor space, when the user first indicates they would like to move/fly. - if (!_hoverReferenceCameraFacingIsCaptured && (fabs(getDriveKey(TRANSLATE_Z)) > 0.1f || fabs(getDriveKey(TRANSLATE_X)) > 0.1f)) { + if (!_hoverReferenceCameraFacingIsCaptured && + (fabs(getDriveKey(TRANSLATE_Z)) > 0.1f || fabs(getDriveKey(TRANSLATE_X)) > 0.1f)) { _hoverReferenceCameraFacingIsCaptured = true; // transform the camera facing vector into sensor space. - _hoverReferenceCameraFacing = transformVectorFast(glm::inverse(_sensorToWorldMatrix), getMyHead()->getCameraOrientation() * Vectors::UNIT_Z); - } else if (_hoverReferenceCameraFacingIsCaptured && (fabs(getDriveKey(TRANSLATE_Z)) <= 0.1f && fabs(getDriveKey(TRANSLATE_X)) <= 0.1f)) { + _hoverReferenceCameraFacing = transformVectorFast(glm::inverse(_sensorToWorldMatrix), + getMyHead()->getHeadOrientation() * Vectors::UNIT_Z); + } else if (_hoverReferenceCameraFacingIsCaptured && + (fabs(getDriveKey(TRANSLATE_Z)) <= 0.1f && fabs(getDriveKey(TRANSLATE_X)) <= 0.1f)) { _hoverReferenceCameraFacingIsCaptured = false; } } @@ -2332,35 +2339,32 @@ glm::quat MyAvatar::getWorldBodyOrientation() const { // old school meat hook style glm::mat4 MyAvatar::deriveBodyFromHMDSensor() const { + // HMD is in sensor space. const glm::vec3 headPosition = getHeadControllerPoseInSensorFrame().translation; const glm::quat headOrientation = getHeadControllerPoseInSensorFrame().rotation * Quaternions::Y_180; const glm::quat headOrientationYawOnly = cancelOutRollAndPitch(headOrientation); const Rig& rig = _skeletonModel->getRig(); - int rightEyeIndex = rig.indexOfJoint("RightEye"); - int leftEyeIndex = rig.indexOfJoint("LeftEye"); + int headIndex = rig.indexOfJoint("Head"); int neckIndex = rig.indexOfJoint("Neck"); int hipsIndex = rig.indexOfJoint("Hips"); - glm::vec3 rigMiddleEyePos = DEFAULT_AVATAR_MIDDLE_EYE_POS; - if (leftEyeIndex >= 0 && rightEyeIndex >= 0) { - rigMiddleEyePos = (rig.getAbsoluteDefaultPose(leftEyeIndex).trans() + rig.getAbsoluteDefaultPose(rightEyeIndex).trans()) / 2.0f; - } + glm::vec3 rigHeadPos = headIndex != -1 ? rig.getAbsoluteDefaultPose(headIndex).trans() : DEFAULT_AVATAR_HEAD_POS; glm::vec3 rigNeckPos = neckIndex != -1 ? rig.getAbsoluteDefaultPose(neckIndex).trans() : DEFAULT_AVATAR_NECK_POS; glm::vec3 rigHipsPos = hipsIndex != -1 ? rig.getAbsoluteDefaultPose(hipsIndex).trans() : DEFAULT_AVATAR_HIPS_POS; - glm::vec3 localEyes = (rigMiddleEyePos - rigHipsPos); + glm::vec3 localHead = (rigHeadPos - rigHipsPos); glm::vec3 localNeck = (rigNeckPos - rigHipsPos); // apply simplistic head/neck model // figure out where the avatar body should be by applying offsets from the avatar's neck & head joints. - // eyeToNeck offset is relative to head's full orientation, - // while neckToRoot offset is only relative to head's yaw. - // Y_180 is necessary because rig is z forward and headOrientation is -z forward - glm::vec3 eyeToNeck = headOrientation * Quaternions::Y_180 * (localNeck - localEyes); - glm::vec3 neckToRoot = headOrientationYawOnly * Quaternions::Y_180 * -localNeck; - glm::vec3 bodyPos = headPosition + eyeToNeck + neckToRoot; + // eyeToNeck offset is relative full HMD orientation. + // while neckToRoot offset is only relative to HMDs yaw. + // Y_180 is necessary because rig is z forward and hmdOrientation is -z forward + glm::vec3 headToNeck = headOrientation * Quaternions::Y_180 * (localNeck - localHead); + glm::vec3 neckToRoot = headOrientationYawOnly * Quaternions::Y_180 * -localNeck; + glm::vec3 bodyPos = headPosition + headToNeck + neckToRoot; return createMatFromQuatAndPos(headOrientationYawOnly, bodyPos); } @@ -2478,7 +2482,7 @@ bool MyAvatar::FollowHelper::shouldActivateRotation(const MyAvatar& myAvatar, co } else { const float FOLLOW_ROTATION_THRESHOLD = cosf(PI / 6.0f); // 30 degrees glm::vec2 bodyFacing = getFacingDir2D(currentBodyMatrix); - return glm::dot(myAvatar.getHeadControllerFacingMovingAverage() * -1.0f, bodyFacing) < FOLLOW_ROTATION_THRESHOLD; + return glm::dot(-myAvatar.getHeadControllerFacingMovingAverage(), bodyFacing) < FOLLOW_ROTATION_THRESHOLD; } } diff --git a/interface/src/avatar/MyHead.cpp b/interface/src/avatar/MyHead.cpp index f02aefec5b..9f2d080cd6 100644 --- a/interface/src/avatar/MyHead.cpp +++ b/interface/src/avatar/MyHead.cpp @@ -26,19 +26,20 @@ using namespace std; MyHead::MyHead(MyAvatar* owningAvatar) : Head(owningAvatar) { } -glm::quat MyHead::getCameraOrientation() const { - // NOTE: Head::getCameraOrientation() is not used for orienting the camera "view" while in Oculus mode, so +glm::quat MyHead::getHeadOrientation() const { + // NOTE: Head::getHeadOrientation() is not used for orienting the camera "view" while in Oculus mode, so // you may wonder why this code is here. This method will be called while in Oculus mode to determine how // to change the driving direction while in Oculus mode. It is used to support driving toward where you're // head is looking. Note that in oculus mode, your actual camera view and where your head is looking is not // always the same. - if (qApp->isHMDMode()) { - MyAvatar* myAvatar = static_cast(_owningAvatar); - return glm::quat_cast(myAvatar->getSensorToWorldMatrix()) * myAvatar->getHMDSensorOrientation(); - } else { - Avatar* owningAvatar = static_cast(_owningAvatar); - return owningAvatar->getWorldAlignedOrientation() * glm::quat(glm::radians(glm::vec3(_basePitch, 0.0f, 0.0f))); + + MyAvatar* myAvatar = static_cast(_owningAvatar); + auto headPose = myAvatar->getHeadControllerPoseInWorldFrame(); + if (headPose.isValid()) { + return headPose.rotation * Quaternions::Y_180; } + + return myAvatar->getWorldAlignedOrientation() * glm::quat(glm::radians(glm::vec3(_basePitch, 0.0f, 0.0f))); } void MyHead::simulate(float deltaTime) { diff --git a/interface/src/avatar/MyHead.h b/interface/src/avatar/MyHead.h index 097415153c..c999311b80 100644 --- a/interface/src/avatar/MyHead.h +++ b/interface/src/avatar/MyHead.h @@ -18,7 +18,7 @@ public: explicit MyHead(MyAvatar* owningAvatar); /// \return orientationBody * orientationBasePitch - glm::quat getCameraOrientation() const; + glm::quat getHeadOrientation() const; void simulate(float deltaTime) override; private: diff --git a/plugins/oculus/src/OculusControllerManager.cpp b/plugins/oculus/src/OculusControllerManager.cpp index 4b7873c86d..dee9f1082e 100644 --- a/plugins/oculus/src/OculusControllerManager.cpp +++ b/plugins/oculus/src/OculusControllerManager.cpp @@ -326,19 +326,24 @@ void OculusControllerManager::TouchDevice::handlePose(float deltaTime, void OculusControllerManager::TouchDevice::handleHeadPose(float deltaTime, const controller::InputCalibrationData& inputCalibrationData, const ovrPoseStatef& headPose) { - auto poseId = controller::HEAD; - auto& pose = _poseStateMap[poseId]; + glm::mat4 mat = createMatFromQuatAndPos(toGlm(headPose.ThePose.Orientation), + toGlm(headPose.ThePose.Position)); + + //perform a 180 flip to make the HMD face the +z instead of -z, beacuse the head faces +z + glm::mat4 matYFlip = mat * Matrices::Y_180; + controller::Pose pose(extractTranslation(matYFlip), + glmExtractRotation(matYFlip), + toGlm(headPose.LinearVelocity), // XXX * matYFlip ? + toGlm(headPose.AngularVelocity)); + + glm::mat4 sensorToAvatar = glm::inverse(inputCalibrationData.avatarMat) * inputCalibrationData.sensorToWorldMat; + glm::mat4 defaultHeadOffset = glm::inverse(inputCalibrationData.defaultCenterEyeMat) * + inputCalibrationData.defaultHeadMat; + + controller::Pose hmdHeadPose = pose.transform(sensorToAvatar); - static const glm::quat yFlip = glm::angleAxis(PI, Vectors::UNIT_Y); - pose.translation = toGlm(headPose.ThePose.Position); - pose.rotation = toGlm(headPose.ThePose.Orientation) * yFlip; - pose.angularVelocity = toGlm(headPose.AngularVelocity); - pose.velocity = toGlm(headPose.LinearVelocity); pose.valid = true; - - // transform into avatar frame - glm::mat4 controllerToAvatar = glm::inverse(inputCalibrationData.avatarMat) * inputCalibrationData.sensorToWorldMat; - pose = pose.transform(controllerToAvatar); + _poseStateMap[controller::HEAD] = hmdHeadPose.postTransform(defaultHeadOffset); } void OculusControllerManager::TouchDevice::handleRotationForUntrackedHand(const controller::InputCalibrationData& inputCalibrationData, From 9b34abeb40f200a708285e3f6d8ae76103510ca4 Mon Sep 17 00:00:00 2001 From: David Kelly Date: Fri, 2 Jun 2017 15:43:29 -0700 Subject: [PATCH 253/357] oops initializer order... --- interface/src/ui/overlays/Text3DOverlay.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/src/ui/overlays/Text3DOverlay.cpp b/interface/src/ui/overlays/Text3DOverlay.cpp index d7e4edb197..9df8d2beb9 100644 --- a/interface/src/ui/overlays/Text3DOverlay.cpp +++ b/interface/src/ui/overlays/Text3DOverlay.cpp @@ -29,9 +29,9 @@ Text3DOverlay::Text3DOverlay() : _mutex() { } Text3DOverlay::Text3DOverlay(const Text3DOverlay* text3DOverlay) : - _mutex(), Billboard3DOverlay(text3DOverlay), _text(text3DOverlay->_text), + _mutex(), _backgroundColor(text3DOverlay->_backgroundColor), _textAlpha(text3DOverlay->_textAlpha), _lineHeight(text3DOverlay->_lineHeight), From 2422c7e1bb73e76b3a1a53bb106aff74b4c17d03 Mon Sep 17 00:00:00 2001 From: "Anthony J. Thibault" Date: Fri, 2 Jun 2017 15:47:51 -0700 Subject: [PATCH 254/357] code review feedback --- .../animation/src/AnimInverseKinematics.cpp | 31 +++++++++++-------- .../animation/src/TranslationAccumulator.h | 10 +++--- libraries/shared/src/CubicHermiteSpline.h | 6 ++-- 3 files changed, 26 insertions(+), 21 deletions(-) diff --git a/libraries/animation/src/AnimInverseKinematics.cpp b/libraries/animation/src/AnimInverseKinematics.cpp index 12d480a578..c155f4733f 100644 --- a/libraries/animation/src/AnimInverseKinematics.cpp +++ b/libraries/animation/src/AnimInverseKinematics.cpp @@ -540,16 +540,21 @@ void AnimInverseKinematics::solveTargetWithSpline(const AnimContext& context, co if (splineJointInfo.jointIndex != _hipsIndex) { // constrain the amount the spine can stretch or compress float length = glm::length(relPose.trans()); - float defaultLength = glm::length(_skeleton->getRelativeDefaultPose(splineJointInfo.jointIndex).trans()); - const float STRETCH_COMPRESS_PERCENTAGE = 0.15f; - const float MAX_LENGTH = defaultLength * (1.0f + STRETCH_COMPRESS_PERCENTAGE); - const float MIN_LENGTH = defaultLength * (1.0f - STRETCH_COMPRESS_PERCENTAGE); - if (length > MAX_LENGTH) { - relPose.trans() = (relPose.trans() / length) * MAX_LENGTH; - constrained = true; - } else if (length < MIN_LENGTH) { - relPose.trans() = (relPose.trans() / length) * MIN_LENGTH; - constrained = true; + const float EPSILON = 0.0001f; + if (length > EPSILON) { + float defaultLength = glm::length(_skeleton->getRelativeDefaultPose(splineJointInfo.jointIndex).trans()); + const float STRETCH_COMPRESS_PERCENTAGE = 0.15f; + const float MAX_LENGTH = defaultLength * (1.0f + STRETCH_COMPRESS_PERCENTAGE); + const float MIN_LENGTH = defaultLength * (1.0f - STRETCH_COMPRESS_PERCENTAGE); + if (length > MAX_LENGTH) { + relPose.trans() = (relPose.trans() / length) * MAX_LENGTH; + constrained = true; + } else if (length < MIN_LENGTH) { + relPose.trans() = (relPose.trans() / length) * MIN_LENGTH; + constrained = true; + } + } else { + relPose.trans() = glm::vec3(0.0f); } } @@ -1521,10 +1526,10 @@ void AnimInverseKinematics::debugDrawSpineSplines(const AnimContext& context, co // draw red and white stripped spline, parameterized by arc length. // i.e. each stripe should be the same length. AnimPose geomToWorldPose = AnimPose(context.getRigToWorldMatrix() * context.getGeometryToRigMatrix()); - int NUM_SUBDIVISIONS = 20; - const float dArcLength = totalArcLength / NUM_SUBDIVISIONS; + const int NUM_SEGMENTS = 20; + const float dArcLength = totalArcLength / NUM_SEGMENTS; float arcLength = 0.0f; - for (int i = 0; i < NUM_SUBDIVISIONS; i++) { + for (int i = 0; i < NUM_SEGMENTS; i++) { float prevT = spline.arcLengthInverse(arcLength); float nextT = spline.arcLengthInverse(arcLength + dArcLength); DebugDraw::getInstance().drawRay(geomToWorldPose.xformPoint(spline(prevT)), geomToWorldPose.xformPoint(spline(nextT)), (i % 2) == 0 ? RED : WHITE); diff --git a/libraries/animation/src/TranslationAccumulator.h b/libraries/animation/src/TranslationAccumulator.h index 65f8a0dc97..18cac5ec7a 100644 --- a/libraries/animation/src/TranslationAccumulator.h +++ b/libraries/animation/src/TranslationAccumulator.h @@ -18,19 +18,19 @@ public: int size() const { return _totalWeight > 0.0f; } - /// \param rotation rotation to add - /// \param weight contribution factor of this rotation to total accumulation + /// \param translation translation to add + /// \param weight contribution factor of this translation to total accumulation void add(const glm::vec3& translation, float weight = 1.0f); glm::vec3 getAverage(); - /// \return true if any rotations were accumulated + /// \return true if any translation were accumulated bool isDirty() const { return _isDirty; } - /// \brief clear accumulated rotation but don't change _isDirty + /// \brief clear accumulated translation but don't change _isDirty void clear(); - /// \brief clear accumulated rotation and set _isDirty to false + /// \brief clear accumulated translation and set _isDirty to false void clearAndClean(); private: diff --git a/libraries/shared/src/CubicHermiteSpline.h b/libraries/shared/src/CubicHermiteSpline.h index d03136867a..a393e4c51f 100644 --- a/libraries/shared/src/CubicHermiteSpline.h +++ b/libraries/shared/src/CubicHermiteSpline.h @@ -23,8 +23,8 @@ public: // evalute the hermite curve at parameter t (0..1) glm::vec3 operator()(float t) const { - float t3 = t * t * t; float t2 = t * t; + float t3 = t2 * t; float w0 = 2.0f * t3 - 3.0f * t2 + 1.0f; float w1 = t3 - 2.0f * t2 + t; float w2 = -2.0f * t3 + 3.0f * t2; @@ -63,7 +63,7 @@ public: enum Constants { NUM_SUBDIVISIONS = 30 }; CubicHermiteSplineFunctorWithArcLength() : CubicHermiteSplineFunctor() { - memset(_values, 0, sizeof(float) * NUM_SUBDIVISIONS + 1); + memset(_values, 0, sizeof(float) * (NUM_SUBDIVISIONS + 1)); } CubicHermiteSplineFunctorWithArcLength(const glm::vec3& p0, const glm::vec3& m0, const glm::vec3& p1, const glm::vec3& m1) : CubicHermiteSplineFunctor(p0, m0, p1, m1) { // initialize _values with the accumulated arcLength along the spline. @@ -80,7 +80,7 @@ public: } CubicHermiteSplineFunctorWithArcLength(const CubicHermiteSplineFunctorWithArcLength& orig) : CubicHermiteSplineFunctor(orig) { - memcpy(_values, orig._values, sizeof(float) * NUM_SUBDIVISIONS + 1); + memcpy(_values, orig._values, sizeof(float) * (NUM_SUBDIVISIONS + 1)); } // given the spline parameter (0..1) output the arcLength of the spline up to that point. From 12cbc206d2fc94f87e0df6916f27cf81df6b0a0e Mon Sep 17 00:00:00 2001 From: David Kelly Date: Fri, 2 Jun 2017 15:59:15 -0700 Subject: [PATCH 255/357] cr feedback --- interface/src/ui/overlays/Text3DOverlay.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/interface/src/ui/overlays/Text3DOverlay.cpp b/interface/src/ui/overlays/Text3DOverlay.cpp index 9df8d2beb9..ebc28ca86a 100644 --- a/interface/src/ui/overlays/Text3DOverlay.cpp +++ b/interface/src/ui/overlays/Text3DOverlay.cpp @@ -23,7 +23,7 @@ const float LINE_SCALE_RATIO = 1.2f; QString const Text3DOverlay::TYPE = "text3d"; -Text3DOverlay::Text3DOverlay() : _mutex() { +Text3DOverlay::Text3DOverlay() { _textRenderer = TextRenderer3D::getInstance(SANS_FONT_FAMILY, FIXED_FONT_POINT_SIZE); _geometryId = DependencyManager::get()->allocateID(); } @@ -31,7 +31,6 @@ Text3DOverlay::Text3DOverlay() : _mutex() { Text3DOverlay::Text3DOverlay(const Text3DOverlay* text3DOverlay) : Billboard3DOverlay(text3DOverlay), _text(text3DOverlay->_text), - _mutex(), _backgroundColor(text3DOverlay->_backgroundColor), _textAlpha(text3DOverlay->_textAlpha), _lineHeight(text3DOverlay->_lineHeight), From 0b2de18e8eeafed9af559252d4bfbc1f7d2f5969 Mon Sep 17 00:00:00 2001 From: Patrick Manalich Date: Fri, 2 Jun 2017 16:04:03 -0700 Subject: [PATCH 256/357] Volume Change --- scripts/system/snapshot.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/system/snapshot.js b/scripts/system/snapshot.js index e3253f338d..2d3aaffdbf 100644 --- a/scripts/system/snapshot.js +++ b/scripts/system/snapshot.js @@ -417,7 +417,7 @@ function takeSnapshot() { Audio.playSound(snapActivateSound, { position: { x: MyAvatar.position.x, y: MyAvatar.position.y, z: MyAvatar.position.z }, localOnly: true, - volume: 0.2 + volume: 1.0 }); HMD.closeTablet(); Script.setTimeout(function () { From 9654e007a6833a6e0ef1bc74982fe41b5640385b Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Fri, 2 Jun 2017 16:31:08 -0700 Subject: [PATCH 257/357] most input plugins are not head or hand controllers --- .../input-plugins/src/input-plugins/KeyboardMouseDevice.h | 3 --- libraries/input-plugins/src/input-plugins/TouchscreenDevice.h | 3 --- libraries/plugins/src/plugins/InputPlugin.h | 4 ++-- plugins/hifiNeuron/src/NeuronPlugin.h | 3 --- plugins/hifiSdl2/src/SDL2Manager.h | 2 -- plugins/hifiSixense/src/SixenseManager.h | 3 +-- 6 files changed, 3 insertions(+), 15 deletions(-) diff --git a/libraries/input-plugins/src/input-plugins/KeyboardMouseDevice.h b/libraries/input-plugins/src/input-plugins/KeyboardMouseDevice.h index a0e216c904..b94acb8b71 100644 --- a/libraries/input-plugins/src/input-plugins/KeyboardMouseDevice.h +++ b/libraries/input-plugins/src/input-plugins/KeyboardMouseDevice.h @@ -70,9 +70,6 @@ public: bool isSupported() const override { return true; } const QString getName() const override { return NAME; } - bool isHandController() const override { return false; } - bool isHeadController() const override { return false; } - void pluginFocusOutEvent() override { _inputDevice->focusOutEvent(); } void pluginUpdate(float deltaTime, const controller::InputCalibrationData& inputCalibrationData) override; diff --git a/libraries/input-plugins/src/input-plugins/TouchscreenDevice.h b/libraries/input-plugins/src/input-plugins/TouchscreenDevice.h index 926f9dbdca..02dcbe4664 100644 --- a/libraries/input-plugins/src/input-plugins/TouchscreenDevice.h +++ b/libraries/input-plugins/src/input-plugins/TouchscreenDevice.h @@ -39,9 +39,6 @@ public: virtual bool isSupported() const override; virtual const QString getName() const override { return NAME; } - bool isHandController() const override { return false; } - bool isHeadController() const override { return false; } - virtual void pluginFocusOutEvent() override { _inputDevice->focusOutEvent(); } virtual void pluginUpdate(float deltaTime, const controller::InputCalibrationData& inputCalibrationData) override; diff --git a/libraries/plugins/src/plugins/InputPlugin.h b/libraries/plugins/src/plugins/InputPlugin.h index 0519ed776d..2a4737b5a1 100644 --- a/libraries/plugins/src/plugins/InputPlugin.h +++ b/libraries/plugins/src/plugins/InputPlugin.h @@ -24,7 +24,7 @@ public: // Some input plugins are comprised of multiple subdevices (SDL2, for instance). // If an input plugin is only a single device, it will only return it's primary name. virtual QStringList getSubdeviceNames() { return { getName() }; }; - virtual bool isHandController() const = 0; - virtual bool isHeadController() const = 0; + virtual bool isHandController() const { return false; } + virtual bool isHeadController() const { return false; } }; diff --git a/plugins/hifiNeuron/src/NeuronPlugin.h b/plugins/hifiNeuron/src/NeuronPlugin.h index 41c2322465..34d084160f 100644 --- a/plugins/hifiNeuron/src/NeuronPlugin.h +++ b/plugins/hifiNeuron/src/NeuronPlugin.h @@ -25,9 +25,6 @@ class NeuronPlugin : public InputPlugin { public: friend void FrameDataReceivedCallback(void* context, void* sender, _BvhDataHeaderEx* header, float* data); - bool isHandController() const override { return false; } - bool isHeadController() const override { return false; } - // Plugin functions virtual void init() override; virtual bool isSupported() const override; diff --git a/plugins/hifiSdl2/src/SDL2Manager.h b/plugins/hifiSdl2/src/SDL2Manager.h index d2bbe8265e..9cb4d268c0 100644 --- a/plugins/hifiSdl2/src/SDL2Manager.h +++ b/plugins/hifiSdl2/src/SDL2Manager.h @@ -27,8 +27,6 @@ public: const QString getName() const override { return NAME; } QStringList getSubdeviceNames() override; - bool isHandController() const override { return false; } - bool isHeadController() const override { return false; } void init() override; void deinit() override; diff --git a/plugins/hifiSixense/src/SixenseManager.h b/plugins/hifiSixense/src/SixenseManager.h index 889f6c3bad..5b2c140868 100644 --- a/plugins/hifiSixense/src/SixenseManager.h +++ b/plugins/hifiSixense/src/SixenseManager.h @@ -33,8 +33,7 @@ public: // Sixense always seems to initialize even if the hydras are not present. Is there // a way we can properly detect whether the hydras are present? - bool isHandController() const override { return false; } - bool isHeadController() const override { return false; } + // bool isHandController() const override { return true; } virtual bool activate() override; virtual void deactivate() override; From f70702beb7a63618a515a33a825db2bcec32f5e0 Mon Sep 17 00:00:00 2001 From: samcake Date: Fri, 2 Jun 2017 17:54:41 -0700 Subject: [PATCH 258/357] Introducing debug flags --- .../render-utils/src/StencilMaskPass.cpp | 11 ++++++--- libraries/render-utils/src/StencilMaskPass.h | 24 +++++++++++++++---- .../render-utils/src/ToneMappingEffect.cpp | 1 - 3 files changed, 27 insertions(+), 9 deletions(-) diff --git a/libraries/render-utils/src/StencilMaskPass.cpp b/libraries/render-utils/src/StencilMaskPass.cpp index dcd994763f..2374f24211 100644 --- a/libraries/render-utils/src/StencilMaskPass.cpp +++ b/libraries/render-utils/src/StencilMaskPass.cpp @@ -22,6 +22,11 @@ using namespace render; +void PrepareStencil::configure(const Config& config) { + _maskMode = config.maskMode; + _forceDraw = config.forceDraw; +} + model::MeshPointer PrepareStencil::getMesh() { if (!_mesh) { @@ -72,8 +77,8 @@ gpu::PipelinePointer PrepareStencil::getPaintStencilPipeline() { void PrepareStencil::run(const RenderContextPointer& renderContext, const gpu::FramebufferPointer& srcFramebuffer) { RenderArgs* args = renderContext->args; - // Only draw the stencil mask if in HMD mode. - if (args->_displayMode != RenderArgs::STEREO_HMD) { + // Only draw the stencil mask if in HMD mode or not forced. + if (!_forceDraw && (args->_displayMode != RenderArgs::STEREO_HMD)) { return; } @@ -82,7 +87,7 @@ void PrepareStencil::run(const RenderContextPointer& renderContext, const gpu::F batch.setViewportTransform(args->_viewport); - if (false) { + if (_maskMode < 0) { batch.setPipeline(getMeshStencilPipeline()); auto mesh = getMesh(); diff --git a/libraries/render-utils/src/StencilMaskPass.h b/libraries/render-utils/src/StencilMaskPass.h index d7d6ee448b..01601d1ae6 100644 --- a/libraries/render-utils/src/StencilMaskPass.h +++ b/libraries/render-utils/src/StencilMaskPass.h @@ -16,16 +16,28 @@ #include #include +class PrepareStencilConfig : public render::Job::Config { + Q_OBJECT + Q_PROPERTY(int maskMode MEMBER maskMode NOTIFY dirty) + Q_PROPERTY(bool forceDraw MEMBER forceDraw NOTIFY dirty) + +public: + PrepareStencilConfig(bool enabled = true) : JobConfig(enabled) {} + + int maskMode { 0 }; + bool forceDraw { false }; + +signals: + void dirty(); +}; + class PrepareStencil { public: - class Config : public render::JobConfig { - public: - Config(bool enabled = true) : JobConfig(enabled) {} - }; + using Config = PrepareStencilConfig; using JobModel = render::Job::ModelI; - void configure(const Config& config) {} + void configure(const Config& config); void run(const render::RenderContextPointer& renderContext, const gpu::FramebufferPointer& dstFramebuffer); @@ -51,6 +63,8 @@ private: model::MeshPointer _mesh; model::MeshPointer getMesh(); + int _maskMode { 0 }; + bool _forceDraw { false }; }; diff --git a/libraries/render-utils/src/ToneMappingEffect.cpp b/libraries/render-utils/src/ToneMappingEffect.cpp index 7a3d868236..ce41cf16fa 100644 --- a/libraries/render-utils/src/ToneMappingEffect.cpp +++ b/libraries/render-utils/src/ToneMappingEffect.cpp @@ -39,7 +39,6 @@ void ToneMappingEffect::init() { slotBindings.insert(gpu::Shader::Binding(std::string("colorMap"), ToneMappingEffect_LightingMapSlot)); gpu::Shader::makeProgram(*blitProgram, slotBindings); auto blitState = std::make_shared(); - PrepareStencil::testMask(*blitState); blitState->setColorWriteMask(true, true, true, true); _blitLightBuffer = gpu::PipelinePointer(gpu::Pipeline::create(blitProgram, blitState)); } From 52c60b35df8d68c945f86c3d5c281b499c6e9ae6 Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Fri, 2 Jun 2017 09:50:23 -0700 Subject: [PATCH 259/357] Add startup_sent_to user activity event --- interface/src/Application.cpp | 36 +++++++++++++++++++++++++++++++---- 1 file changed, 32 insertions(+), 4 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 27c158322d..bf578fb28e 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -2404,15 +2404,16 @@ void Application::handleSandboxStatus(QNetworkReply* reply) { // Check HMD use (may be technically available without being in use) bool hasHMD = PluginUtils::isHMDAvailable(); - bool isUsingHMD = hasHMD && hasHandControllers && _displayPlugin->isHmd(); + bool isUsingHMD = _displayPlugin->isHmd(); + bool isUsingHMDAndHandControllers = hasHMD && hasHandControllers && isUsingHMD; Setting::Handle tutorialComplete{ "tutorialComplete", false }; Setting::Handle firstRun{ Settings::firstRun, true }; bool isTutorialComplete = tutorialComplete.get(); - bool shouldGoToTutorial = isUsingHMD && hasTutorialContent && !isTutorialComplete; + bool shouldGoToTutorial = isUsingHMDAndHandControllers && hasTutorialContent && !isTutorialComplete; - qCDebug(interfaceapp) << "HMD:" << hasHMD << ", Hand Controllers: " << hasHandControllers << ", Using HMD: " << isUsingHMD; + qCDebug(interfaceapp) << "HMD:" << hasHMD << ", Hand Controllers: " << hasHandControllers << ", Using HMD: " << isUsingHMDAndHandControllers; qCDebug(interfaceapp) << "Tutorial version:" << contentVersion << ", sufficient:" << hasTutorialContent << ", complete:" << isTutorialComplete << ", should go:" << shouldGoToTutorial; @@ -2426,10 +2427,18 @@ void Application::handleSandboxStatus(QNetworkReply* reply) { const QString TUTORIAL_PATH = "/tutorial_begin"; + static const QString SENT_TO_TUTORIAL = "tutorial"; + static const QString SENT_TO_PREVIOUS_LOCATION = "previous_location"; + static const QString SENT_TO_ENTRY = "entry"; + static const QString SENT_TO_SANDBOX = "sandbox"; + + QString sentTo; + if (shouldGoToTutorial) { if (sandboxIsRunning) { qCDebug(interfaceapp) << "Home sandbox appears to be running, going to Home."; DependencyManager::get()->goToLocalSandbox(TUTORIAL_PATH); + sentTo = SENT_TO_TUTORIAL; } else { qCDebug(interfaceapp) << "Home sandbox does not appear to be running, going to Entry."; if (firstRun.get()) { @@ -2437,8 +2446,10 @@ void Application::handleSandboxStatus(QNetworkReply* reply) { } if (addressLookupString.isEmpty()) { DependencyManager::get()->goToEntry(); + sentTo = SENT_TO_ENTRY; } else { DependencyManager::get()->loadSettings(addressLookupString); + sentTo = SENT_TO_PREVIOUS_LOCATION; } } } else { @@ -2451,23 +2462,40 @@ void Application::handleSandboxStatus(QNetworkReply* reply) { // If this is a first run we short-circuit the address passed in if (isFirstRun) { - if (isUsingHMD) { + if (isUsingHMDAndHandControllers) { if (sandboxIsRunning) { qCDebug(interfaceapp) << "Home sandbox appears to be running, going to Home."; DependencyManager::get()->goToLocalSandbox(); + sentTo = SENT_TO_SANDBOX; } else { qCDebug(interfaceapp) << "Home sandbox does not appear to be running, going to Entry."; DependencyManager::get()->goToEntry(); + sentTo = SENT_TO_ENTRY; } } else { DependencyManager::get()->goToEntry(); + sentTo = SENT_TO_ENTRY; } } else { qCDebug(interfaceapp) << "Not first run... going to" << qPrintable(addressLookupString.isEmpty() ? QString("previous location") : addressLookupString); DependencyManager::get()->loadSettings(addressLookupString); + sentTo = SENT_TO_PREVIOUS_LOCATION; } } + UserActivityLogger::getInstance().logAction("startup_sent_to", { + { "sent_to", sentTo }, + { "sandbox_is_running", sandboxIsRunning }, + { "has_hmd", hasHMD }, + { "has_hand_controllers", hasHandControllers }, + { "is_using_hmd", isUsingHMD }, + { "is_using_hmd_and_hand_controllers", isUsingHMDAndHandControllers }, + { "content_version", contentVersion }, + { "is_tutorial_complete", isTutorialComplete }, + { "has_tutorial_content", hasTutorialContent }, + { "should_go_to_tutorial", shouldGoToTutorial } + }); + _connectionMonitor.init(); // After all of the constructor is completed, then set firstRun to false. From 7da73d0ff11832b66ed8a5e81e0e650391da4ae1 Mon Sep 17 00:00:00 2001 From: "Anthony J. Thibault" Date: Fri, 2 Jun 2017 18:01:40 -0700 Subject: [PATCH 260/357] teleport.js should still function on avatars with no feet. --- scripts/system/controllers/teleport.js | 52 ++++++++------------------ 1 file changed, 16 insertions(+), 36 deletions(-) diff --git a/scripts/system/controllers/teleport.js b/scripts/system/controllers/teleport.js index dcbcaeb621..d6248fc6e0 100644 --- a/scripts/system/controllers/teleport.js +++ b/scripts/system/controllers/teleport.js @@ -366,45 +366,25 @@ function Teleporter() { } // related to repositioning the avatar after you teleport +var FOOT_JOINT_NAMES = ["RightToe_End", "RightToeBase", "RightFoot"]; +var DEFAULT_ROOT_TO_FOOT_OFFSET = 0.5; function getAvatarFootOffset() { - var data = getJointData(); - var upperLeg, lowerLeg, foot, toe, toeTop; - data.forEach(function(d) { - var jointName = d.joint; - if (jointName === "RightUpLeg") { - upperLeg = d.translation.y; - } else if (jointName === "RightLeg") { - lowerLeg = d.translation.y; - } else if (jointName === "RightFoot") { - foot = d.translation.y; - } else if (jointName === "RightToeBase") { - toe = d.translation.y; - } else if (jointName === "RightToe_End") { - toeTop = d.translation.y; + // find a valid foot jointIndex + var footJointIndex = -1; + var i, l = FOOT_JOINT_NAMES.length; + for (i = 0; i < l; i++) { + footJointIndex = MyAvatar.getJointIndex(FOOT_JOINT_NAMES[i]); + if (footJointIndex != -1) { + break; } - }); - - var offset = upperLeg + lowerLeg + foot + toe + toeTop; - offset = offset / 100; - return offset; -} - -function getJointData() { - var allJointData = []; - var jointNames = MyAvatar.jointNames; - jointNames.forEach(function(joint, index) { - var translation = MyAvatar.getJointTranslation(index); - var rotation = MyAvatar.getJointRotation(index); - allJointData.push({ - joint: joint, - index: index, - translation: translation, - rotation: rotation - }); - }); - - return allJointData; + } + if (footJointIndex != -1) { + // default vertical offset from foot to avatar root. + return -MyAvatar.getAbsoluteDefaultJointTranslationInObjectFrame(footJointIndex).y; + } else { + return DEFAULT_ROOT_TO_FOOT_OFFSET; + } } var leftPad = new ThumbPad('left'); From 1a8f6b8de00c379f6efb35167382b7734afd8ea8 Mon Sep 17 00:00:00 2001 From: "Anthony J. Thibault" Date: Fri, 2 Jun 2017 18:16:14 -0700 Subject: [PATCH 261/357] Readability improvement --- libraries/shared/src/CubicHermiteSpline.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libraries/shared/src/CubicHermiteSpline.h b/libraries/shared/src/CubicHermiteSpline.h index a393e4c51f..da2ed26de4 100644 --- a/libraries/shared/src/CubicHermiteSpline.h +++ b/libraries/shared/src/CubicHermiteSpline.h @@ -71,11 +71,11 @@ public: float alpha = 0.0f; float accum = 0.0f; _values[0] = 0.0f; - for (int i = 0; i < NUM_SUBDIVISIONS; i++) { + for (int i = 1; i < NUM_SUBDIVISIONS + 1; i++) { accum += glm::distance(this->operator()(alpha), this->operator()(alpha + DELTA)); alpha += DELTA; - _values[i + 1] = accum; + _values[i] = accum; } } From 4dbe646c17000e1a58ca6c362f4f211a5b888c4a Mon Sep 17 00:00:00 2001 From: Vladyslav Stelmakhovskyi Date: Sat, 3 Jun 2017 15:40:25 +0200 Subject: [PATCH 262/357] Set ective button property isActive before Home menu redraw. Makes sure redraw will read proper value of isActive property --- scripts/system/edit.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/system/edit.js b/scripts/system/edit.js index 3c687f2f29..ea2b108016 100644 --- a/scripts/system/edit.js +++ b/scripts/system/edit.js @@ -618,7 +618,6 @@ var toolBar = (function () { that.toggle = function () { that.setActive(!isActive); - activeButton.editProperties({isActive: isActive}); if (!isActive) { tablet.gotoHomeScreen(); } @@ -642,6 +641,8 @@ var toolBar = (function () { enabled: active })); isActive = active; + activeButton.editProperties({isActive: isActive}); + if (!isActive) { entityListTool.setVisible(false); gridTool.setVisible(false); From d38a396e9d8b67e976646595e20dd856e4460893 Mon Sep 17 00:00:00 2001 From: Sam Cake Date: Sat, 3 Jun 2017 08:59:47 -0700 Subject: [PATCH 263/357] Fixing warning --- libraries/model/src/model/Geometry.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/model/src/model/Geometry.cpp b/libraries/model/src/model/Geometry.cpp index 2525491460..f88c8233ea 100755 --- a/libraries/model/src/model/Geometry.cpp +++ b/libraries/model/src/model/Geometry.cpp @@ -257,7 +257,7 @@ MeshPointer Mesh::createIndexedTriangles_P3F(uint32_t numVertices, uint32_t numI int16_t* shortIndices = nullptr; if (indices) { shortIndicesVector.resize(numIndices); - for (int i = 0; i < numIndices; i++) { + for (uint32_t i = 0; i < numIndices; i++) { shortIndicesVector[i] = indices[i]; } shortIndices = shortIndicesVector.data(); From 4842de8f070f79d3be11254dceeafda6ab9cccf3 Mon Sep 17 00:00:00 2001 From: Menithal Date: Sun, 4 Jun 2017 00:03:14 +0300 Subject: [PATCH 264/357] Fixed issue with orientation --- scripts/system/edit.js | 22 ++++---------- .../particle_explorer/hifi-entity-ui.js | 30 ++++++++++--------- .../particle_explorer/particleExplorer.html | 2 +- .../particle_explorer/particleExplorer.js | 6 +++- .../particle_explorer/particleExplorerTool.js | 8 ++++- 5 files changed, 35 insertions(+), 33 deletions(-) diff --git a/scripts/system/edit.js b/scripts/system/edit.js index 1c4e41da60..1af928c64a 100644 --- a/scripts/system/edit.js +++ b/scripts/system/edit.js @@ -80,22 +80,7 @@ selectionManager.addEventListener(function () { } var type = Entities.getEntityProperties(selectedEntityID, "type").type; if (type === "ParticleEffect") { - // Destroy the old particles web view first - particleExplorerTool.destroyWebView(); - particleExplorerTool.createWebView(); - var properties = Entities.getEntityProperties(selectedEntityID); - var particleData = { - messageType: "particle_settings", - currentProperties: properties - }; - selectedParticleEntityID = selectedEntityID; - particleExplorerTool.setActiveParticleEntity(selectedParticleEntityID); - particleData.emitOrientation = Quat.safeEulerAngles(particleData.emitOrientation); - particleExplorerTool.webView.emitScriptEvent(JSON.stringify(particleData)); - - // Switch to particle explorer - var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system"); - tablet.sendToQml({method: 'selectTab', params: {id: 'particle'}}); + selectParticleEntity(selectedEntityID); } else { needToDestroyParticleExplorer = true; } @@ -2078,6 +2063,10 @@ var selectedParticleEntityID = null; function selectParticleEntity(entityID) { var properties = Entities.getEntityProperties(entityID); + + if(properties.emitOrientation) { + properties.emitOrientation = Quat.safeEulerAngles(properties.emitOrientation); + } var particleData = { messageType: "particle_settings", currentProperties: properties @@ -2087,6 +2076,7 @@ function selectParticleEntity(entityID) { selectedParticleEntity = entityID; particleExplorerTool.setActiveParticleEntity(entityID); + particleExplorerTool.webView.emitScriptEvent(JSON.stringify(particleData)); // Switch to particle explorer diff --git a/scripts/system/particle_explorer/hifi-entity-ui.js b/scripts/system/particle_explorer/hifi-entity-ui.js index 06adddab6a..66f8e74b1c 100644 --- a/scripts/system/particle_explorer/hifi-entity-ui.js +++ b/scripts/system/particle_explorer/hifi-entity-ui.js @@ -45,8 +45,9 @@ and If there is any changes to either the Entities or properties of var RADIAN = Math.PI / 180; -var roundFloat = function (input) { - return Math.floor(parseFloat(input) * 1000)/1000; +var roundFloat = function (input, round) { + round = round ? round: 1000; + return Math.round(parseFloat(input) * round)/round; }; function HifiEntityUI(parent) { @@ -186,9 +187,9 @@ HifiEntityUI.prototype = { var red = document.getElementById(value + "-red"); var blue = document.getElementById(value + "-blue"); var green = document.getElementById(value + "-green"); - red.value = roundFloat(property.red); - blue.value = roundFloat(property.blue); - green.value = roundFloat(property.green); + red.value = parseInt(property.red); + blue.value = parseInt(property.blue); + green.value = parseInt(property.green); red.oninput({ target: red @@ -197,18 +198,19 @@ HifiEntityUI.prototype = { var x = document.getElementById(value + "-x"); var y = document.getElementById(value + "-y"); var z = document.getElementById(value + "-z"); - // crashes here. - x.value = roundFloat(property.x); - y.value = roundFloat(property.y); - z.value = roundFloat(property.z); + + x.value = roundFloat(property.x, 100); + y.value = roundFloat(property.y, 100); + z.value = roundFloat(property.z, 100); } else if (field.className.indexOf("pyr") !== -1) { var pitch = document.getElementById(value + "-Pitch"); var yaw = document.getElementById(value + "-Yaw"); var roll = document.getElementById(value + "-Roll"); - // crashes here. - pitch.value = roundFloat(property.x); - yaw.value = roundFloat(property.y); - roll.value = roundFloat(property.z); + + pitch.value = roundFloat(property.x, 100); + yaw.value = roundFloat(property.y, 100); + roll.value = roundFloat(property.z, 100); + } } } @@ -301,7 +303,7 @@ HifiEntityUI.prototype = { sectionDivBody.style.maxHeight = "0px"; } else { sectionDivBody.className += " visible"; - sectionDivBody.style.maxHeight = height; + sectionDivBody.style.maxHeight = (animationWrapper.clientHeight) + "px"; } // sectionDivBody.style.display = collapsed ? "none": "block"; dropDown.innerHTML = collapsed ? "L" : "M"; diff --git a/scripts/system/particle_explorer/particleExplorer.html b/scripts/system/particle_explorer/particleExplorer.html index f1afc25d82..0f014e9fa8 100644 --- a/scripts/system/particle_explorer/particleExplorer.html +++ b/scripts/system/particle_explorer/particleExplorer.html @@ -23,7 +23,7 @@ - + diff --git a/scripts/system/particle_explorer/particleExplorer.js b/scripts/system/particle_explorer/particleExplorer.js index c16ac79b82..82c74da0f5 100644 --- a/scripts/system/particle_explorer/particleExplorer.js +++ b/scripts/system/particle_explorer/particleExplorer.js @@ -149,7 +149,11 @@ id: "emitOrientation", unit: "deg", name: "Emit Orientation", - type: "VectorQuaternion" + type: "VectorQuaternion", + defaultRange: { + min: 0, + step: 0.01 + } }, { type: "Row" }, { diff --git a/scripts/system/particle_explorer/particleExplorerTool.js b/scripts/system/particle_explorer/particleExplorerTool.js index 46bc0323c5..0603583e2b 100644 --- a/scripts/system/particle_explorer/particleExplorerTool.js +++ b/scripts/system/particle_explorer/particleExplorerTool.js @@ -37,8 +37,14 @@ ParticleExplorerTool = function() { that.webEventReceived = function(data) { var data = JSON.parse(data); if (data.messageType === "settings_update") { - data.updatedSettings.emitOrientation = Quat.fromVec3Degrees(data.updatedSettings.emitOrientation); + if (data.updatedSettings.emitOrientation) { + data.updatedSettings.emitOrientation = Quat.fromVec3Degrees(data.updatedSettings.emitOrientation); + } Entities.editEntity(that.activeParticleEntity, data.updatedSettings); + + if ( data.updatedSettings.emitOrientation ) { + print('-settings-udate- ' + that.activeParticleEntity + ' - ' + JSON.stringify(data.updatedSettings)); + } } } From 02c46080f7fb3e624523c5f72caeca53f78c600a Mon Sep 17 00:00:00 2001 From: Howard Stearns Date: Sat, 3 Jun 2017 15:43:14 -0700 Subject: [PATCH 265/357] we don't need to force, but we do need some extra room for confined spaces --- interface/src/avatar/MyAvatar.cpp | 28 +++++++++++++--------------- interface/src/avatar/MyAvatar.h | 4 ++-- 2 files changed, 15 insertions(+), 17 deletions(-) diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index 5a3c00b1ec..3c7f1e7d8d 100755 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -439,7 +439,7 @@ void MyAvatar::update(float deltaTime) { } if (_physicsSafetyPending && qApp->isPhysicsEnabled() && _characterController.isEnabledAndReady()) { // fix only when needed and ready _physicsSafetyPending = false; - safeLanding(_goToPosition, _characterController.isStuck()); // no-op if already safe + safeLanding(_goToPosition); // no-op if already safe } Head* head = getHead(); @@ -1555,11 +1555,11 @@ void MyAvatar::harvestResultsFromPhysicsSimulation(float deltaTime) { if (_characterController.isEnabledAndReady()) { setVelocity(_characterController.getLinearVelocity() + _characterController.getFollowVelocity()); - if (_characterController.isStuck()) { + /*FIXME if (_characterController.isStuck()) { _physicsSafetyPending = true; _goToPosition = getPosition(); qDebug() << "FIXME setting safety test at:" << _goToPosition; - } + }*/ } else { setVelocity(getVelocity() + _characterController.getFollowVelocity()); } @@ -2236,7 +2236,7 @@ void MyAvatar::goToLocationAndEnableCollisions(const glm::vec3& position) { // S goToLocation(position); QMetaObject::invokeMethod(this, "setCollisionsEnabled", Qt::QueuedConnection, Q_ARG(bool, true)); } -bool MyAvatar::safeLanding(const glm::vec3& position, bool force) { +bool MyAvatar::safeLanding(const glm::vec3& position) { // Considers all collision hull or non-collisionless primitive intersections on a vertical line through the point. // There needs to be a "landing" if: // a) the closest above and the closest below are less than the avatar capsule height apart, or @@ -2253,7 +2253,7 @@ bool MyAvatar::safeLanding(const glm::vec3& position, bool force) { return result; } glm::vec3 better; - if (!requiresSafeLanding(position, better, force)) { + if (!requiresSafeLanding(position, better)) { return false; } qDebug() << "rechecking" << position << " => " << better << " collisions:" << getCollisionsEnabled() << " physics:" << qApp->isPhysicsEnabled(); @@ -2269,7 +2269,7 @@ bool MyAvatar::safeLanding(const glm::vec3& position, bool force) { } // If position is not reliably safe from being stuck by physics, answer true and place a candidate better position in betterPositionOut. -bool MyAvatar::requiresSafeLanding(const glm::vec3& positionIn, glm::vec3& betterPositionOut, bool force) { +bool MyAvatar::requiresSafeLanding(const glm::vec3& positionIn, glm::vec3& betterPositionOut) { // We could repeat this whole test for each of the four corners of our bounding box, in case the surface is uneven. However: // 1) This is only meant to cover the most important cases, and even the four corners won't handle random spikes in the surfaces or avatar. // 2) My feeling is that this code is already at the limit of what can realistically be reviewed and maintained. @@ -2302,7 +2302,8 @@ bool MyAvatar::requiresSafeLanding(const glm::vec3& positionIn, glm::vec3& bette float distance; BoxFace face; const bool visibleOnly = false; - // FIXME: this doesn't do what we want here. findRayIntersection always works on mesh, skipping entirely based on collidable. What we really want is to use the collision hull! See CharacterGhostObject::rayTest? + // This isn't quite what we really want here. findRayIntersection always works on mesh, skipping entirely based on collidable. + // What we really want is to use the collision hull! // See https://highfidelity.fogbugz.com/f/cases/5003/findRayIntersection-has-option-to-use-collidableOnly-but-doesn-t-actually-use-colliders const bool collidableOnly = true; const bool precisionPicking = true; @@ -2324,11 +2325,7 @@ bool MyAvatar::requiresSafeLanding(const glm::vec3& positionIn, glm::vec3& bette if (!findIntersection(capsuleCenter, up, upperIntersection, upperId, upperNormal)) { // We currently believe that physics will reliably push us out if our feet are embedded, // as long as our capsule center is out and there's room above us. Here we have those - // conditions, so no need to check our feet below, unless forced. - if (force) { - upperIntersection = capsuleCenter; - return mustMove(); - } + // conditions, so no need to check our feet below. return ok("nothing above"); } @@ -2342,7 +2339,8 @@ bool MyAvatar::requiresSafeLanding(const glm::vec3& positionIn, glm::vec3& bette // The surface above us is the bottom of something, and the surface below us it the top of something. // I.e., we are in a clearing between two objects. auto delta = glm::distance(upperIntersection, lowerIntersection); - if (delta > (2 * halfHeight)) { + const float halfHeightFactor = 2.5f; // Until case 5003 is fixed (and maybe after?), we need a fudge factor. Also account for content modelers not being precise. + if (delta > (halfHeightFactor * halfHeight)) { // There is room for us to fit in that clearing. If there wasn't, physics would oscilate us between the objects above and below. // We're now going to iterate upwards through successive upperIntersections, testing to see if we're contained within the top surface of some entity. // There will be one of two outcomes: @@ -2368,11 +2366,11 @@ bool MyAvatar::requiresSafeLanding(const glm::vec3& positionIn, glm::vec3& bette } } - qDebug() << "FIXME need to compute safe landing for" << capsuleCenter << " based on " << (isDown(upperNormal) ? "down " : "up ") << upperIntersection << "@" << upperId << " and " << (isUp(lowerNormal) ? "up " : "down ") << lowerIntersection << "@" << lowerId; + include.push_back(upperId); // We're now looking for the intersection from above onto this entity. const float big = (float)TREE_SCALE; const auto skyHigh = up * big; auto fromAbove = capsuleCenter + skyHigh; - include.push_back(upperId); // We're looking for the intersection from above onto this entity. + qDebug() << "FIXME need to compute safe landing for" << capsuleCenter << " based on " << (isDown(upperNormal) ? "down " : "up ") << upperIntersection << "@" << upperId << " and " << (isUp(lowerNormal) ? "up " : "down ") << lowerIntersection << "@" << lowerId; if (!findIntersection(fromAbove, down, upperIntersection, upperId, upperNormal)) { return ok("Unable to find a landing"); } diff --git a/interface/src/avatar/MyAvatar.h b/interface/src/avatar/MyAvatar.h index d9a2c03c38..efab177a04 100644 --- a/interface/src/avatar/MyAvatar.h +++ b/interface/src/avatar/MyAvatar.h @@ -523,7 +523,7 @@ public slots: bool shouldFaceLocation = false); void goToLocation(const QVariant& properties); void goToLocationAndEnableCollisions(const glm::vec3& newPosition); - bool safeLanding(const glm::vec3& position, bool force = false); + bool safeLanding(const glm::vec3& position); void restrictScaleFromDomainSettings(const QJsonObject& domainSettingsObject); void clearScaleRestriction(); @@ -571,7 +571,7 @@ private: glm::vec3 getWorldBodyPosition() const; glm::quat getWorldBodyOrientation() const; - bool requiresSafeLanding(const glm::vec3& positionIn, glm::vec3& positionOut, bool force = false); + bool requiresSafeLanding(const glm::vec3& positionIn, glm::vec3& positionOut); virtual QByteArray toByteArrayStateful(AvatarDataDetail dataDetail) override; From 556dcd69ac1bbb934ecc3eb77ddad4337cd00b29 Mon Sep 17 00:00:00 2001 From: Howard Stearns Date: Sat, 3 Jun 2017 15:48:48 -0700 Subject: [PATCH 266/357] wording change regarding use of exact for floors --- interface/resources/qml/AssetServer.qml | 2 +- interface/resources/qml/hifi/dialogs/TabletAssetServer.qml | 2 +- interface/resources/qml/hifi/tablet/NewModelDialog.qml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/interface/resources/qml/AssetServer.qml b/interface/resources/qml/AssetServer.qml index bf46ba121c..eb47afc951 100644 --- a/interface/resources/qml/AssetServer.qml +++ b/interface/resources/qml/AssetServer.qml @@ -177,7 +177,7 @@ ScrollingWindow { SHAPE_TYPE_STATIC_MESH ], checkStateOnDisable: false, - warningOnDisable: "Models with 'Exact' automatic collisions cannot be dynamic" + warningOnDisable: "Models with 'Exact' automatic collisions cannot be dynamic, and should not be used as floors" } }); diff --git a/interface/resources/qml/hifi/dialogs/TabletAssetServer.qml b/interface/resources/qml/hifi/dialogs/TabletAssetServer.qml index 85f8a2f59e..6e0263787b 100644 --- a/interface/resources/qml/hifi/dialogs/TabletAssetServer.qml +++ b/interface/resources/qml/hifi/dialogs/TabletAssetServer.qml @@ -179,7 +179,7 @@ Rectangle { SHAPE_TYPE_STATIC_MESH ], checkStateOnDisable: false, - warningOnDisable: "Models with 'Exact' automatic collisions cannot be dynamic" + warningOnDisable: "Models with 'Exact' automatic collisions cannot be dynamic, and should not be used as floors" } }); diff --git a/interface/resources/qml/hifi/tablet/NewModelDialog.qml b/interface/resources/qml/hifi/tablet/NewModelDialog.qml index 5dbb733872..2d9d121209 100644 --- a/interface/resources/qml/hifi/tablet/NewModelDialog.qml +++ b/interface/resources/qml/hifi/tablet/NewModelDialog.qml @@ -118,7 +118,7 @@ Rectangle { id: text2 width: 160 color: "#ffffff" - text: qsTr("Models with automatic collisions set to 'Exact' cannot be dynamic") + text: qsTr("Models with automatic collisions set to 'Exact' cannot be dynamic, and should not be used as floors") wrapMode: Text.WordWrap font.pixelSize: 12 } From fd01258c76705bbd04cfb091db9e7a77689fa9d3 Mon Sep 17 00:00:00 2001 From: Howard Stearns Date: Sat, 3 Jun 2017 16:02:58 -0700 Subject: [PATCH 267/357] cleanup --- interface/src/avatar/MyAvatar.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index 3c7f1e7d8d..a14fd71f9b 100755 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -1555,11 +1555,11 @@ void MyAvatar::harvestResultsFromPhysicsSimulation(float deltaTime) { if (_characterController.isEnabledAndReady()) { setVelocity(_characterController.getLinearVelocity() + _characterController.getFollowVelocity()); - /*FIXME if (_characterController.isStuck()) { + if (_characterController.isStuck()) { _physicsSafetyPending = true; _goToPosition = getPosition(); qDebug() << "FIXME setting safety test at:" << _goToPosition; - }*/ + } } else { setVelocity(getVelocity() + _characterController.getFollowVelocity()); } @@ -2258,12 +2258,12 @@ bool MyAvatar::safeLanding(const glm::vec3& position) { } qDebug() << "rechecking" << position << " => " << better << " collisions:" << getCollisionsEnabled() << " physics:" << qApp->isPhysicsEnabled(); if (!getCollisionsEnabled()) { - goToLocation(better); // recurses + goToLocation(better); // recurses on next update } else { // If you try to go while stuck, physics will keep you stuck. setCollisionsEnabled(false); // Don't goToLocation just yet. Yield so that physics can act on the above. QMetaObject::invokeMethod(this, "goToLocationAndEnableCollisions", Qt::QueuedConnection, // The equivalent of javascript nextTick - Q_ARG(glm::vec3, better)); // I.e., capsuleCenter - offset + Q_ARG(glm::vec3, better)); } return true; } From 3d62900daf5840ec5ede6c6c6f16a4c0d247875d Mon Sep 17 00:00:00 2001 From: Howard Stearns Date: Sat, 3 Jun 2017 16:49:16 -0700 Subject: [PATCH 268/357] When we do precision detailed picking on a model, check the back faces, too. In other words, precision picking from inside a model works. --- .../src/RenderableModelEntityItem.cpp | 2 +- libraries/render-utils/src/Model.cpp | 4 ++-- libraries/render-utils/src/Model.h | 2 +- libraries/shared/src/GeometryUtil.cpp | 4 ++-- libraries/shared/src/GeometryUtil.h | 6 +++--- libraries/shared/src/TriangleSet.cpp | 10 +++++----- libraries/shared/src/TriangleSet.h | 6 +++--- 7 files changed, 17 insertions(+), 17 deletions(-) diff --git a/libraries/entities-renderer/src/RenderableModelEntityItem.cpp b/libraries/entities-renderer/src/RenderableModelEntityItem.cpp index 36273c1f07..eab0e3011e 100644 --- a/libraries/entities-renderer/src/RenderableModelEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableModelEntityItem.cpp @@ -605,7 +605,7 @@ bool RenderableModelEntityItem::findDetailedRayIntersection(const glm::vec3& ori QString extraInfo; return _model->findRayIntersectionAgainstSubMeshes(origin, direction, distance, - face, surfaceNormal, extraInfo, precisionPicking); + face, surfaceNormal, extraInfo, precisionPicking, precisionPicking); } void RenderableModelEntityItem::getCollisionGeometryResource() { diff --git a/libraries/render-utils/src/Model.cpp b/libraries/render-utils/src/Model.cpp index e5a25d733e..447d0e37bd 100644 --- a/libraries/render-utils/src/Model.cpp +++ b/libraries/render-utils/src/Model.cpp @@ -332,7 +332,7 @@ void Model::initJointStates() { bool Model::findRayIntersectionAgainstSubMeshes(const glm::vec3& origin, const glm::vec3& direction, float& distance, BoxFace& face, glm::vec3& surfaceNormal, - QString& extraInfo, bool pickAgainstTriangles) { + QString& extraInfo, bool pickAgainstTriangles, bool allowBackface) { bool intersectedSomething = false; @@ -381,7 +381,7 @@ bool Model::findRayIntersectionAgainstSubMeshes(const glm::vec3& origin, const g float triangleSetDistance = 0.0f; BoxFace triangleSetFace; glm::vec3 triangleSetNormal; - if (triangleSet.findRayIntersection(meshFrameOrigin, meshFrameDirection, triangleSetDistance, triangleSetFace, triangleSetNormal, pickAgainstTriangles)) { + if (triangleSet.findRayIntersection(meshFrameOrigin, meshFrameDirection, triangleSetDistance, triangleSetFace, triangleSetNormal, pickAgainstTriangles, allowBackface)) { glm::vec3 meshIntersectionPoint = meshFrameOrigin + (meshFrameDirection * triangleSetDistance); glm::vec3 worldIntersectionPoint = glm::vec3(meshToWorldMatrix * glm::vec4(meshIntersectionPoint, 1.0f)); diff --git a/libraries/render-utils/src/Model.h b/libraries/render-utils/src/Model.h index d718145d66..53d446d306 100644 --- a/libraries/render-utils/src/Model.h +++ b/libraries/render-utils/src/Model.h @@ -156,7 +156,7 @@ public: bool findRayIntersectionAgainstSubMeshes(const glm::vec3& origin, const glm::vec3& direction, float& distance, BoxFace& face, glm::vec3& surfaceNormal, - QString& extraInfo, bool pickAgainstTriangles = false); + QString& extraInfo, bool pickAgainstTriangles = false, bool allowBackface = false); void setOffset(const glm::vec3& offset); const glm::vec3& getOffset() const { return _offset; } diff --git a/libraries/shared/src/GeometryUtil.cpp b/libraries/shared/src/GeometryUtil.cpp index c137ebd438..f853240fe3 100644 --- a/libraries/shared/src/GeometryUtil.cpp +++ b/libraries/shared/src/GeometryUtil.cpp @@ -290,12 +290,12 @@ glm::vec3 Triangle::getNormal() const { } bool findRayTriangleIntersection(const glm::vec3& origin, const glm::vec3& direction, - const glm::vec3& v0, const glm::vec3& v1, const glm::vec3& v2, float& distance) { + const glm::vec3& v0, const glm::vec3& v1, const glm::vec3& v2, float& distance, bool allowBackface) { glm::vec3 firstSide = v0 - v1; glm::vec3 secondSide = v2 - v1; glm::vec3 normal = glm::cross(secondSide, firstSide); float dividend = glm::dot(normal, v1) - glm::dot(origin, normal); - if (dividend > 0.0f) { + if (!allowBackface && dividend > 0.0f) { return false; // origin below plane } float divisor = glm::dot(normal, direction); diff --git a/libraries/shared/src/GeometryUtil.h b/libraries/shared/src/GeometryUtil.h index 2fdc1aa25f..857d423896 100644 --- a/libraries/shared/src/GeometryUtil.h +++ b/libraries/shared/src/GeometryUtil.h @@ -83,7 +83,7 @@ bool findRayRectangleIntersection(const glm::vec3& origin, const glm::vec3& dire const glm::vec3& position, const glm::vec2& dimensions, float& distance); bool findRayTriangleIntersection(const glm::vec3& origin, const glm::vec3& direction, - const glm::vec3& v0, const glm::vec3& v1, const glm::vec3& v2, float& distance); + const glm::vec3& v0, const glm::vec3& v1, const glm::vec3& v2, float& distance, bool allowBackface = false); /// \brief decomposes rotation into its components such that: rotation = swing * twist /// \param rotation[in] rotation to decompose @@ -104,8 +104,8 @@ public: }; inline bool findRayTriangleIntersection(const glm::vec3& origin, const glm::vec3& direction, - const Triangle& triangle, float& distance) { - return findRayTriangleIntersection(origin, direction, triangle.v0, triangle.v1, triangle.v2, distance); + const Triangle& triangle, float& distance, bool allowBackface = false) { + return findRayTriangleIntersection(origin, direction, triangle.v0, triangle.v1, triangle.v2, distance, allowBackface); } diff --git a/libraries/shared/src/TriangleSet.cpp b/libraries/shared/src/TriangleSet.cpp index aa21aa5cc0..61ad811a4d 100644 --- a/libraries/shared/src/TriangleSet.cpp +++ b/libraries/shared/src/TriangleSet.cpp @@ -31,7 +31,7 @@ void TriangleSet::clear() { } bool TriangleSet::findRayIntersection(const glm::vec3& origin, const glm::vec3& direction, - float& distance, BoxFace& face, glm::vec3& surfaceNormal, bool precision) { + float& distance, BoxFace& face, glm::vec3& surfaceNormal, bool precision, bool allowBackface) { // reset our distance to be the max possible, lower level tests will store best distance here distance = std::numeric_limits::max(); @@ -95,7 +95,7 @@ void TriangleSet::balanceOctree() { // Determine of the given ray (origin/direction) in model space intersects with any triangles // in the set. If an intersection occurs, the distance and surface normal will be provided. bool TriangleSet::TriangleOctreeCell::findRayIntersectionInternal(const glm::vec3& origin, const glm::vec3& direction, - float& distance, BoxFace& face, glm::vec3& surfaceNormal, bool precision, int& trianglesTouched) { + float& distance, BoxFace& face, glm::vec3& surfaceNormal, bool precision, int& trianglesTouched, bool allowBackface) { bool intersectedSomething = false; float boxDistance = distance; @@ -114,7 +114,7 @@ bool TriangleSet::TriangleOctreeCell::findRayIntersectionInternal(const glm::vec const auto& triangle = _allTriangles[triangleIndex]; float thisTriangleDistance; trianglesTouched++; - if (findRayTriangleIntersection(origin, direction, triangle, thisTriangleDistance)) { + if (findRayTriangleIntersection(origin, direction, triangle, thisTriangleDistance, allowBackface)) { if (thisTriangleDistance < bestDistance) { bestDistance = thisTriangleDistance; intersectedSomething = true; @@ -203,7 +203,7 @@ void TriangleSet::TriangleOctreeCell::insert(size_t triangleIndex) { } bool TriangleSet::TriangleOctreeCell::findRayIntersection(const glm::vec3& origin, const glm::vec3& direction, - float& distance, BoxFace& face, glm::vec3& surfaceNormal, bool precision, int& trianglesTouched) { + float& distance, BoxFace& face, glm::vec3& surfaceNormal, bool precision, int& trianglesTouched, bool allowBackface) { if (_population < 1) { return false; // no triangles below here, so we can't intersect @@ -247,7 +247,7 @@ bool TriangleSet::TriangleOctreeCell::findRayIntersection(const glm::vec3& origi } } // also check our local triangle set - if (findRayIntersectionInternal(origin, direction, childDistance, childFace, childNormal, precision, trianglesTouched)) { + if (findRayIntersectionInternal(origin, direction, childDistance, childFace, childNormal, precision, trianglesTouched, allowBackface)) { if (childDistance < bestLocalDistance) { bestLocalDistance = childDistance; bestLocalFace = childFace; diff --git a/libraries/shared/src/TriangleSet.h b/libraries/shared/src/TriangleSet.h index 6cedc4da7e..3b0b33d7d5 100644 --- a/libraries/shared/src/TriangleSet.h +++ b/libraries/shared/src/TriangleSet.h @@ -27,7 +27,7 @@ class TriangleSet { void clear(); bool findRayIntersection(const glm::vec3& origin, const glm::vec3& direction, - float& distance, BoxFace& face, glm::vec3& surfaceNormal, bool precision, int& trianglesTouched); + float& distance, BoxFace& face, glm::vec3& surfaceNormal, bool precision, int& trianglesTouched, bool allowBackface = false); const AABox& getBounds() const { return _bounds; } @@ -38,7 +38,7 @@ class TriangleSet { // checks our internal list of triangles bool findRayIntersectionInternal(const glm::vec3& origin, const glm::vec3& direction, - float& distance, BoxFace& face, glm::vec3& surfaceNormal, bool precision, int& trianglesTouched); + float& distance, BoxFace& face, glm::vec3& surfaceNormal, bool precision, int& trianglesTouched, bool allowBackface = false); std::vector& _allTriangles; std::map _children; @@ -60,7 +60,7 @@ public: void insert(const Triangle& t); bool findRayIntersection(const glm::vec3& origin, const glm::vec3& direction, - float& distance, BoxFace& face, glm::vec3& surfaceNormal, bool precision); + float& distance, BoxFace& face, glm::vec3& surfaceNormal, bool precision, bool allowBackface = false); void balanceOctree(); From a0ea306aedb88c9a3d10d51fb4487922ffd51028 Mon Sep 17 00:00:00 2001 From: Howard Stearns Date: Sun, 4 Jun 2017 07:55:23 -0700 Subject: [PATCH 269/357] cleanup, and include missing allowBackface parameter --- interface/src/avatar/MyAvatar.cpp | 7 +------ libraries/physics/src/CharacterController.cpp | 4 +--- libraries/shared/src/TriangleSet.cpp | 2 +- 3 files changed, 3 insertions(+), 10 deletions(-) diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index a14fd71f9b..c12b6ebdee 100755 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -1558,7 +1558,6 @@ void MyAvatar::harvestResultsFromPhysicsSimulation(float deltaTime) { if (_characterController.isStuck()) { _physicsSafetyPending = true; _goToPosition = getPosition(); - qDebug() << "FIXME setting safety test at:" << _goToPosition; } } else { setVelocity(getVelocity() + _characterController.getFollowVelocity()); @@ -2232,7 +2231,6 @@ void MyAvatar::goToLocation(const glm::vec3& newPosition, } void MyAvatar::goToLocationAndEnableCollisions(const glm::vec3& position) { // See use case in safeLanding. - // FIXME: Doesn't work 100% of time. Need to figure out what isn't happening fast enough. E.g., don't goToLocation until confirmed removed from physics? goToLocation(position); QMetaObject::invokeMethod(this, "setCollisionsEnabled", Qt::QueuedConnection, Q_ARG(bool, true)); } @@ -2274,7 +2272,7 @@ bool MyAvatar::requiresSafeLanding(const glm::vec3& positionIn, glm::vec3& bette // 1) This is only meant to cover the most important cases, and even the four corners won't handle random spikes in the surfaces or avatar. // 2) My feeling is that this code is already at the limit of what can realistically be reviewed and maintained. auto ok = [&](const char* label) { // position is good to go, or at least, we cannot do better - qDebug() << "Already safe" << label << positionIn << " collisions:" << getCollisionsEnabled() << " physics:" << qApp->isPhysicsEnabled(); + //qDebug() << "Already safe" << label << positionIn << " collisions:" << getCollisionsEnabled() << " physics:" << qApp->isPhysicsEnabled(); return false; }; auto halfHeight = _characterController.getCapsuleHalfHeight(); @@ -2350,14 +2348,12 @@ bool MyAvatar::requiresSafeLanding(const glm::vec3& positionIn, glm::vec3& bette ignore.push_back(upperId); if (!findIntersection(upperIntersection, up, upperIntersection, upperId, upperNormal)) { // We're not inside an entity, and from the nested tests, we have room between what is above and below. So position is good! - //qDebug() << "FIXME upper:" << upperId << upperIntersection << " n:" << upperNormal.y << " lower:" << lowerId << lowerIntersection << " n:" << lowerNormal.y << " delta:" << delta << " halfHeight:" << halfHeight; return ok("enough room"); } if (isUp(upperNormal)) { // This new intersection is the top surface of an entity that we have not yet seen, which means we're contained within it. // We could break here and recurse from the top of the original ceiling, but since we've already done the work to find the top // of the enclosing entity, let's put our feet at upperIntersection and start over. - qDebug() << "FIXME inside above:" << upperId << " below:" << lowerId; return mustMove(); } // We found a new bottom surface, which we're not interested in. @@ -2370,7 +2366,6 @@ bool MyAvatar::requiresSafeLanding(const glm::vec3& positionIn, glm::vec3& bette const float big = (float)TREE_SCALE; const auto skyHigh = up * big; auto fromAbove = capsuleCenter + skyHigh; - qDebug() << "FIXME need to compute safe landing for" << capsuleCenter << " based on " << (isDown(upperNormal) ? "down " : "up ") << upperIntersection << "@" << upperId << " and " << (isUp(lowerNormal) ? "up " : "down ") << lowerIntersection << "@" << lowerId; if (!findIntersection(fromAbove, down, upperIntersection, upperId, upperNormal)) { return ok("Unable to find a landing"); } diff --git a/libraries/physics/src/CharacterController.cpp b/libraries/physics/src/CharacterController.cpp index 06c211e2f3..bd4d1201c7 100755 --- a/libraries/physics/src/CharacterController.cpp +++ b/libraries/physics/src/CharacterController.cpp @@ -175,9 +175,7 @@ bool CharacterController::checkForSupport(btCollisionWorld* collisionWorld) { const float STUCK_PENETRATION = -0.05f; // always negative into the object. const float STUCK_IMPULSE = 500.0f; const int STUCK_LIFETIME = 3; - //if (contact.getDistance() < STUCK_PENETRATION) qDebug() << "FIXME checking contact:" << contact.getDistance() << " impulse:" << contact.getAppliedImpulse() << " lifetime:" << contact.getLifeTime(); if ((contact.getDistance() < STUCK_PENETRATION) && (contact.getAppliedImpulse() > STUCK_IMPULSE) && (contact.getLifeTime() > STUCK_LIFETIME)) { - qDebug() << "FIXME stuck contact:" << contact.getDistance() << " impulse:" << contact.getAppliedImpulse() << " lifetime:" << contact.getLifeTime(); isStuck = true; // latch on } if (hitHeight < _maxStepHeight && normal.dot(_currentUp) > _minFloorNormalDotUp) { @@ -193,7 +191,7 @@ bool CharacterController::checkForSupport(btCollisionWorld* collisionWorld) { if (!_stepUpEnabled || hitHeight > _maxStepHeight) { // this manifold is invalidated by point that is too high stepContactIndex = -1; - qDebug() << "FIXME breaking early"; break; + break; } else if (hitHeight > highestStep && normal.dot(_targetVelocity) < 0.0f ) { highestStep = hitHeight; stepContactIndex = j; diff --git a/libraries/shared/src/TriangleSet.cpp b/libraries/shared/src/TriangleSet.cpp index 61ad811a4d..68c99a9753 100644 --- a/libraries/shared/src/TriangleSet.cpp +++ b/libraries/shared/src/TriangleSet.cpp @@ -41,7 +41,7 @@ bool TriangleSet::findRayIntersection(const glm::vec3& origin, const glm::vec3& } int trianglesTouched = 0; - auto result = _triangleOctree.findRayIntersection(origin, direction, distance, face, surfaceNormal, precision, trianglesTouched); + auto result = _triangleOctree.findRayIntersection(origin, direction, distance, face, surfaceNormal, precision, trianglesTouched, allowBackface); #if WANT_DEBUGGING if (precision) { From 05f41fb4f81c65db3687f4a518b720afc769e5c9 Mon Sep 17 00:00:00 2001 From: Howard Stearns Date: Sun, 4 Jun 2017 08:13:12 -0700 Subject: [PATCH 270/357] cleanup --- interface/src/avatar/MyAvatar.cpp | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index c12b6ebdee..3ee43def87 100755 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -435,9 +435,11 @@ void MyAvatar::update(float deltaTime) { // so we update now. It's ok if it updates again in the normal way. updateSensorToWorldMatrix(); emit positionGoneTo(); - _physicsSafetyPending = getCollisionsEnabled(); // Run safety tests as soon as we can after goToLocation, or clear if we're not colliding. + // Run safety tests as soon as we can after goToLocation, or clear if we're not colliding. + _physicsSafetyPending = getCollisionsEnabled(); } - if (_physicsSafetyPending && qApp->isPhysicsEnabled() && _characterController.isEnabledAndReady()) { // fix only when needed and ready + if (_physicsSafetyPending && qApp->isPhysicsEnabled() && _characterController.isEnabledAndReady()) { + // When needed and ready, arrange to check and fix. _physicsSafetyPending = false; safeLanding(_goToPosition); // no-op if already safe } @@ -2268,9 +2270,7 @@ bool MyAvatar::safeLanding(const glm::vec3& position) { // If position is not reliably safe from being stuck by physics, answer true and place a candidate better position in betterPositionOut. bool MyAvatar::requiresSafeLanding(const glm::vec3& positionIn, glm::vec3& betterPositionOut) { - // We could repeat this whole test for each of the four corners of our bounding box, in case the surface is uneven. However: - // 1) This is only meant to cover the most important cases, and even the four corners won't handle random spikes in the surfaces or avatar. - // 2) My feeling is that this code is already at the limit of what can realistically be reviewed and maintained. + // We begin with utilities and tests. The Algorithm in four parts is below. auto ok = [&](const char* label) { // position is good to go, or at least, we cannot do better //qDebug() << "Already safe" << label << positionIn << " collisions:" << getCollisionsEnabled() << " physics:" << qApp->isPhysicsEnabled(); return false; @@ -2283,7 +2283,7 @@ bool MyAvatar::requiresSafeLanding(const glm::vec3& positionIn, glm::vec3& bette if (!entityTree) { return ok("no entity tree"); } - + // More utilities. const auto offset = getOrientation() *_characterController.getCapsuleLocalOffset(); const auto capsuleCenter = positionIn + offset; const auto up = _worldUpDirection, down = -up; @@ -2391,7 +2391,6 @@ void MyAvatar::updateMotionBehaviorFromMenu() { } else { _motionBehaviors &= ~AVATAR_MOTION_SCRIPTED_MOTOR_ENABLED; } - qDebug() << "FIXME updateMotionBehaviorFromMenu collisions:" << menu->isOptionChecked(MenuOption::EnableAvatarCollisions) << "physics:" << qApp->isPhysicsEnabled(); setCollisionsEnabled(menu->isOptionChecked(MenuOption::EnableAvatarCollisions)); } From 024499bdc440acd1112946935244af1b6b5fc79d Mon Sep 17 00:00:00 2001 From: Ken Cooke Date: Sun, 4 Jun 2017 12:59:15 -0700 Subject: [PATCH 271/357] Optimized NVTT library with fast gamma conversion --- cmake/externals/nvtt/CMakeLists.txt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/cmake/externals/nvtt/CMakeLists.txt b/cmake/externals/nvtt/CMakeLists.txt index 0e1c240c77..91e63e6324 100644 --- a/cmake/externals/nvtt/CMakeLists.txt +++ b/cmake/externals/nvtt/CMakeLists.txt @@ -8,8 +8,8 @@ string(TOUPPER ${EXTERNAL_NAME} EXTERNAL_NAME_UPPER) if (WIN32) ExternalProject_Add( ${EXTERNAL_NAME} - URL http://s3.amazonaws.com/hifi-public/dependencies/nvtt-win-2.1.0.zip - URL_MD5 3ea6eeadbcc69071acf9c49ba565760e + URL http://s3.amazonaws.com/hifi-public/dependencies/nvtt-win-2.1.0.hifi.zip + URL_MD5 907f2c683e2bcf8b8089576ec38747b4 CONFIGURE_COMMAND "" BUILD_COMMAND "" INSTALL_COMMAND "" @@ -29,8 +29,8 @@ else () ExternalProject_Add( ${EXTERNAL_NAME} - URL http://hifi-public.s3.amazonaws.com/dependencies/nvidia-texture-tools-2.1.0.zip - URL_MD5 81b8fa6a9ee3f986088eb6e2215d6a57 + URL http://hifi-public.s3.amazonaws.com/dependencies/nvidia-texture-tools-2.1.0.hifi.zip + URL_MD5 cda96482825225511d3effabbc1ddc7e CONFIGURE_COMMAND CMAKE_ARGS ${ANDROID_CMAKE_ARGS} -DNVTT_SHARED=1 -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DCMAKE_INSTALL_PREFIX:PATH= LOG_DOWNLOAD 1 LOG_CONFIGURE 1 From 2ce72d554bd34200259ef9d8ed517c28963c92e5 Mon Sep 17 00:00:00 2001 From: NeetBhagat Date: Mon, 5 Jun 2017 14:11:53 +0530 Subject: [PATCH 272/357] Resolve 2 issues: 1) Entity can grow/shrink if it is grabbed by first right hand then left hand. 2) Stop unwanted grow/shrink of an entity. --- scripts/system/controllers/handControllerGrab.js | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/scripts/system/controllers/handControllerGrab.js b/scripts/system/controllers/handControllerGrab.js index ba30b88113..04921fe14d 100644 --- a/scripts/system/controllers/handControllerGrab.js +++ b/scripts/system/controllers/handControllerGrab.js @@ -3330,17 +3330,12 @@ function MyController(hand) { return; } - var isSameEntityInBothControllers = false; - if (leftController.grabbedThingID && rightController.grabbedThingID && - leftController.grabbedThingID == rightController.grabbedThingID) { - isSameEntityInBothControllers = true; - } - if (!this.shouldScale) { // If both secondary triggers squeezed, and the non-holding hand is empty, start scaling if (this.secondarySqueezed() && this.getOtherHandController().secondarySqueezed() && - isSameEntityInBothControllers) { + this.grabbedThingID && this.getOtherHandController().grabbedThingID && + this.grabbedThingID == this.getOtherHandController().grabbedThingID) { this.scalingStartDistance = Vec3.length(Vec3.subtract(this.getHandPosition(), this.getOtherHandController().getHandPosition())); this.scalingStartDimensions = props.dimensions; From ca526e07765cd316d91d7e50a87d1a9544a257de Mon Sep 17 00:00:00 2001 From: Howard Stearns Date: Mon, 5 Jun 2017 07:11:25 -0700 Subject: [PATCH 273/357] git rid of a lambda --- interface/src/avatar/MyAvatar.cpp | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index 3ee43def87..0370acaf05 100755 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -2271,17 +2271,13 @@ bool MyAvatar::safeLanding(const glm::vec3& position) { // If position is not reliably safe from being stuck by physics, answer true and place a candidate better position in betterPositionOut. bool MyAvatar::requiresSafeLanding(const glm::vec3& positionIn, glm::vec3& betterPositionOut) { // We begin with utilities and tests. The Algorithm in four parts is below. - auto ok = [&](const char* label) { // position is good to go, or at least, we cannot do better - //qDebug() << "Already safe" << label << positionIn << " collisions:" << getCollisionsEnabled() << " physics:" << qApp->isPhysicsEnabled(); - return false; - }; auto halfHeight = _characterController.getCapsuleHalfHeight(); if (halfHeight == 0) { - return ok("zero height avatar"); + return false; // zero height avatar } auto entityTree = DependencyManager::get()->getTree(); if (!entityTree) { - return ok("no entity tree"); + return false; // no entity tree } // More utilities. const auto offset = getOrientation() *_characterController.getCapsuleLocalOffset(); @@ -2324,12 +2320,12 @@ bool MyAvatar::requiresSafeLanding(const glm::vec3& positionIn, glm::vec3& bette // We currently believe that physics will reliably push us out if our feet are embedded, // as long as our capsule center is out and there's room above us. Here we have those // conditions, so no need to check our feet below. - return ok("nothing above"); + return false; // nothing above } if (!findIntersection(capsuleCenter, down, lowerIntersection, lowerId, lowerNormal)) { // Our head may be embedded, but our center is out and there's room below. See corresponding comment above. - return ok("nothing below"); + return false; // nothing below } // See if we have room between entities above and below, but that we are not contained. @@ -2348,7 +2344,7 @@ bool MyAvatar::requiresSafeLanding(const glm::vec3& positionIn, glm::vec3& bette ignore.push_back(upperId); if (!findIntersection(upperIntersection, up, upperIntersection, upperId, upperNormal)) { // We're not inside an entity, and from the nested tests, we have room between what is above and below. So position is good! - return ok("enough room"); + return false; // enough room } if (isUp(upperNormal)) { // This new intersection is the top surface of an entity that we have not yet seen, which means we're contained within it. @@ -2367,7 +2363,7 @@ bool MyAvatar::requiresSafeLanding(const glm::vec3& positionIn, glm::vec3& bette const auto skyHigh = up * big; auto fromAbove = capsuleCenter + skyHigh; if (!findIntersection(fromAbove, down, upperIntersection, upperId, upperNormal)) { - return ok("Unable to find a landing"); + return false; // Unable to find a landing } // Our arbitrary rule is to always go up. There's no need to look down or sideways for a "closer" safe candidate. return mustMove(); From 347104204e40ff2f2939ea67db3f36f2128f4e51 Mon Sep 17 00:00:00 2001 From: Andrew Meadows Date: Wed, 31 May 2017 09:56:39 -0700 Subject: [PATCH 274/357] fix StorageTests on linux --- tests/shared/src/StorageTests.cpp | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/tests/shared/src/StorageTests.cpp b/tests/shared/src/StorageTests.cpp index fa538f6911..48e6b91900 100644 --- a/tests/shared/src/StorageTests.cpp +++ b/tests/shared/src/StorageTests.cpp @@ -8,6 +8,8 @@ #include "StorageTests.h" +#include + QTEST_MAIN(StorageTests) using namespace storage; @@ -32,8 +34,8 @@ void StorageTests::testConversion() { QFileInfo fileInfo(_testFile); QCOMPARE(fileInfo.exists(), false); } - StoragePointer storagePointer = std::make_unique(_testData.size(), _testData.data()); - QCOMPARE(storagePointer->size(), (quint64)_testData.size()); + StoragePointer storagePointer = std::unique_ptr(new MemoryStorage(_testData.size(), _testData.data())); + QCOMPARE(storagePointer->size(), _testData.size()); QCOMPARE(memcmp(_testData.data(), storagePointer->data(), _testData.size()), 0); // Convert to a file storagePointer = storagePointer->toFileStorage(_testFile); @@ -42,12 +44,12 @@ void StorageTests::testConversion() { QCOMPARE(fileInfo.exists(), true); QCOMPARE(fileInfo.size(), (qint64)_testData.size()); } - QCOMPARE(storagePointer->size(), (quint64)_testData.size()); + QCOMPARE(storagePointer->size(), _testData.size()); QCOMPARE(memcmp(_testData.data(), storagePointer->data(), _testData.size()), 0); // Convert to memory storagePointer = storagePointer->toMemoryStorage(); - QCOMPARE(storagePointer->size(), (quint64)_testData.size()); + QCOMPARE(storagePointer->size(), _testData.size()); QCOMPARE(memcmp(_testData.data(), storagePointer->data(), _testData.size()), 0); { // ensure the file is unaffected @@ -58,13 +60,13 @@ void StorageTests::testConversion() { // truncate the data as a new memory object auto newSize = _testData.size() / 2; - storagePointer = std::make_unique(newSize, storagePointer->data()); - QCOMPARE(storagePointer->size(), (quint64)newSize); + storagePointer = std::unique_ptr(new MemoryStorage(newSize, storagePointer->data())); + QCOMPARE(storagePointer->size(), newSize); QCOMPARE(memcmp(_testData.data(), storagePointer->data(), newSize), 0); // Convert back to file storagePointer = storagePointer->toFileStorage(_testFile); - QCOMPARE(storagePointer->size(), (quint64)newSize); + QCOMPARE(storagePointer->size(), newSize); QCOMPARE(memcmp(_testData.data(), storagePointer->data(), newSize), 0); { // ensure the file is truncated From 81764f0f7165167480804decfe93062dd4d97683 Mon Sep 17 00:00:00 2001 From: Andrew Meadows Date: Wed, 31 May 2017 09:57:54 -0700 Subject: [PATCH 275/357] fix GLMHelpers::generateBasisVectors() --- libraries/shared/src/GLMHelpers.cpp | 42 ++++++++++++++--------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/libraries/shared/src/GLMHelpers.cpp b/libraries/shared/src/GLMHelpers.cpp index 70237e8ff6..10c73d6c6a 100644 --- a/libraries/shared/src/GLMHelpers.cpp +++ b/libraries/shared/src/GLMHelpers.cpp @@ -49,7 +49,7 @@ const mat4 Matrices::Z_180 { createMatFromQuatAndPos(Quaternions::Z_180, Vectors glm::quat safeMix(const glm::quat& q1, const glm::quat& q2, float proportion) { float cosa = q1.x * q2.x + q1.y * q2.y + q1.z * q2.z + q1.w * q2.w; float ox = q2.x, oy = q2.y, oz = q2.z, ow = q2.w, s0, s1; - + // adjust signs if necessary if (cosa < 0.0f) { cosa = -cosa; @@ -58,19 +58,19 @@ glm::quat safeMix(const glm::quat& q1, const glm::quat& q2, float proportion) { oz = -oz; ow = -ow; } - + // calculate coefficients; if the angle is too close to zero, we must fall back // to linear interpolation if ((1.0f - cosa) > EPSILON) { float angle = acosf(cosa), sina = sinf(angle); s0 = sinf((1.0f - proportion) * angle) / sina; s1 = sinf(proportion * angle) / sina; - + } else { s0 = 1.0f - proportion; s1 = proportion; } - + return glm::normalize(glm::quat(s0 * q1.w + s1 * ow, s0 * q1.x + s1 * ox, s0 * q1.y + s1 * oy, s0 * q1.z + s1 * oz)); } @@ -105,10 +105,10 @@ int unpackFloatVec3FromSignedTwoByteFixed(const unsigned char* sourceBuffer, glm int packFloatAngleToTwoByte(unsigned char* buffer, float degrees) { const float ANGLE_CONVERSION_RATIO = (std::numeric_limits::max() / 360.0f); - + uint16_t angleHolder = floorf((degrees + 180.0f) * ANGLE_CONVERSION_RATIO); memcpy(buffer, &angleHolder, sizeof(uint16_t)); - + return sizeof(uint16_t); } @@ -125,7 +125,7 @@ int packOrientationQuatToBytes(unsigned char* buffer, const glm::quat& quatInput quatParts[1] = floorf((quatNormalized.y + 1.0f) * QUAT_PART_CONVERSION_RATIO); quatParts[2] = floorf((quatNormalized.z + 1.0f) * QUAT_PART_CONVERSION_RATIO); quatParts[3] = floorf((quatNormalized.w + 1.0f) * QUAT_PART_CONVERSION_RATIO); - + memcpy(buffer, &quatParts, sizeof(quatParts)); return sizeof(quatParts); } @@ -133,12 +133,12 @@ int packOrientationQuatToBytes(unsigned char* buffer, const glm::quat& quatInput int unpackOrientationQuatFromBytes(const unsigned char* buffer, glm::quat& quatOutput) { uint16_t quatParts[4]; memcpy(&quatParts, buffer, sizeof(quatParts)); - + quatOutput.x = ((quatParts[0] / (float) std::numeric_limits::max()) * 2.0f) - 1.0f; quatOutput.y = ((quatParts[1] / (float) std::numeric_limits::max()) * 2.0f) - 1.0f; quatOutput.z = ((quatParts[2] / (float) std::numeric_limits::max()) * 2.0f) - 1.0f; quatOutput.w = ((quatParts[3] / (float) std::numeric_limits::max()) * 2.0f) - 1.0f; - + return sizeof(quatParts); } @@ -235,7 +235,7 @@ glm::vec3 safeEulerAngles(const glm::quat& q) { atan2f(q.y * q.z + q.x * q.w, 0.5f - (q.x * q.x + q.y * q.y)), asinf(sy), atan2f(q.x * q.y + q.z * q.w, 0.5f - (q.y * q.y + q.z * q.z))); - + } else { // not a unique solution; x + z = atan2(-m21, m11) eulers = glm::vec3( @@ -250,7 +250,7 @@ glm::vec3 safeEulerAngles(const glm::quat& q) { PI_OVER_TWO, -atan2f(q.x * q.w - q.y * q.z, 0.5f - (q.x * q.x + q.z * q.z))); } - + // adjust so that z, rather than y, is in [-pi/2, pi/2] if (eulers.z < -PI_OVER_TWO) { if (eulers.x < 0.0f) { @@ -265,7 +265,7 @@ glm::vec3 safeEulerAngles(const glm::quat& q) { eulers.y -= PI; } eulers.z += PI; - + } else if (eulers.z > PI_OVER_TWO) { if (eulers.x < 0.0f) { eulers.x += PI; @@ -320,7 +320,7 @@ glm::quat extractRotation(const glm::mat4& matrix, bool assumeOrthogonal) { for (int i = 0; i < 10; i++) { // store the results of the previous iteration glm::mat3 previous = upper; - + // compute average of the matrix with its inverse transpose float sd00 = previous[1][1] * previous[2][2] - previous[2][1] * previous[1][2]; float sd10 = previous[0][1] * previous[2][2] - previous[2][1] * previous[0][2]; @@ -334,15 +334,15 @@ glm::quat extractRotation(const glm::mat4& matrix, bool assumeOrthogonal) { upper[0][0] = +sd00 * hrdet + previous[0][0] * 0.5f; upper[1][0] = -sd10 * hrdet + previous[1][0] * 0.5f; upper[2][0] = +sd20 * hrdet + previous[2][0] * 0.5f; - + upper[0][1] = -(previous[1][0] * previous[2][2] - previous[2][0] * previous[1][2]) * hrdet + previous[0][1] * 0.5f; upper[1][1] = +(previous[0][0] * previous[2][2] - previous[2][0] * previous[0][2]) * hrdet + previous[1][1] * 0.5f; upper[2][1] = -(previous[0][0] * previous[1][2] - previous[1][0] * previous[0][2]) * hrdet + previous[2][1] * 0.5f; - + upper[0][2] = +(previous[1][0] * previous[2][1] - previous[2][0] * previous[1][1]) * hrdet + previous[0][2] * 0.5f; upper[1][2] = -(previous[0][0] * previous[2][1] - previous[2][0] * previous[0][1]) * hrdet + previous[1][2] * 0.5f; upper[2][2] = +(previous[0][0] * previous[1][1] - previous[1][0] * previous[0][1]) * hrdet + previous[2][2] * 0.5f; - + // compute the difference; if it's small enough, we're done glm::mat3 diff = upper - previous; if (diff[0][0] * diff[0][0] + diff[1][0] * diff[1][0] + diff[2][0] * diff[2][0] + diff[0][1] * diff[0][1] + @@ -352,7 +352,7 @@ glm::quat extractRotation(const glm::mat4& matrix, bool assumeOrthogonal) { } } } - + // now that we have a nice orthogonal matrix, we can extract the rotation quaternion // using the method described in http://en.wikipedia.org/wiki/Rotation_matrix#Conversions float x2 = fabs(1.0f + upper[0][0] - upper[1][1] - upper[2][2]); @@ -473,7 +473,7 @@ glm::mat4 createMatFromScaleQuatAndPos(const glm::vec3& scale, const glm::quat& glm::vec4(zAxis, 0.0f), glm::vec4(trans, 1.0f)); } -// cancel out roll +// cancel out roll glm::quat cancelOutRoll(const glm::quat& q) { glm::vec3 forward = q * Vectors::FRONT; return glm::quat_cast(glm::inverse(glm::lookAt(Vectors::ZERO, forward, Vectors::UP))); @@ -540,15 +540,15 @@ void generateBasisVectors(const glm::vec3& primaryAxis, const glm::vec3& seconda // if secondaryAxis is parallel with the primaryAxis, pick another axis. const float EPSILON = 1.0e-4f; - if (fabsf(fabsf(glm::dot(uAxisOut, secondaryAxis)) - 1.0f) > EPSILON) { + if (fabsf(fabsf(glm::dot(uAxisOut, secondaryAxis)) - 1.0f) < EPSILON) { // pick a better secondaryAxis. normSecondary = glm::vec3(1.0f, 0.0f, 0.0f); - if (fabsf(fabsf(glm::dot(uAxisOut, secondaryAxis)) - 1.0f) > EPSILON) { + if (fabsf(fabsf(glm::dot(uAxisOut, secondaryAxis)) - 1.0f) < EPSILON) { normSecondary = glm::vec3(0.0f, 1.0f, 0.0f); } } - wAxisOut = glm::normalize(glm::cross(uAxisOut, secondaryAxis)); + wAxisOut = glm::normalize(glm::cross(uAxisOut, normSecondary)); vAxisOut = glm::cross(wAxisOut, uAxisOut); } From 1621d31a8e38b3ea72e8972bd9b27fcea9e5cfee Mon Sep 17 00:00:00 2001 From: Andrew Meadows Date: Wed, 31 May 2017 09:58:58 -0700 Subject: [PATCH 276/357] cleanup usage of GLMHelpers::generateBasisVectors() --- libraries/animation/src/Rig.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/animation/src/Rig.cpp b/libraries/animation/src/Rig.cpp index add3a461af..4a22aa1df1 100644 --- a/libraries/animation/src/Rig.cpp +++ b/libraries/animation/src/Rig.cpp @@ -1137,7 +1137,7 @@ void Rig::updateEyeJoint(int index, const glm::vec3& modelTranslation, const glm glm::vec3 headUp = headQuat * Vectors::UNIT_Y; glm::vec3 z, y, x; generateBasisVectors(lookAtVector, headUp, z, y, x); - glm::mat3 m(glm::cross(y, z), y, z); + glm::mat3 m(-x, y, z); glm::quat desiredQuat = glm::normalize(glm::quat_cast(m)); glm::quat deltaQuat = desiredQuat * glm::inverse(headQuat); From 506f522802245d2421c21030b7e1217c384f02a0 Mon Sep 17 00:00:00 2001 From: Andrew Meadows Date: Wed, 31 May 2017 09:59:14 -0700 Subject: [PATCH 277/357] use correct format for float literals --- libraries/render-utils/src/AnimDebugDraw.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/render-utils/src/AnimDebugDraw.cpp b/libraries/render-utils/src/AnimDebugDraw.cpp index 162745e76f..4f7f9ef5c4 100644 --- a/libraries/render-utils/src/AnimDebugDraw.cpp +++ b/libraries/render-utils/src/AnimDebugDraw.cpp @@ -260,7 +260,7 @@ static void addLink(const AnimPose& rootPose, const AnimPose& pose, const AnimPo // there is room, so lets draw a nice bone glm::vec3 uAxis, vAxis, wAxis; - generateBasisVectors(boneAxis0, glm::vec3(1, 0, 0), uAxis, vAxis, wAxis); + generateBasisVectors(boneAxis0, glm::vec3(1.0f, 0.0f, 0.0f), uAxis, vAxis, wAxis); glm::vec3 boneBaseCorners[NUM_BASE_CORNERS]; boneBaseCorners[0] = pose0 * ((uAxis * radius) + (vAxis * radius) + (wAxis * radius)); From 205e5d730927a3852cf914bcedfcc94e3f4549c2 Mon Sep 17 00:00:00 2001 From: Andrew Meadows Date: Wed, 31 May 2017 11:24:36 -0700 Subject: [PATCH 278/357] add unit tests and fix final bugs --- libraries/shared/src/GLMHelpers.cpp | 7 ++- tests/shared/src/GLMHelpersTests.cpp | 74 ++++++++++++++++++++++++++++ tests/shared/src/GLMHelpersTests.h | 1 + 3 files changed, 78 insertions(+), 4 deletions(-) diff --git a/libraries/shared/src/GLMHelpers.cpp b/libraries/shared/src/GLMHelpers.cpp index 10c73d6c6a..7ebaa11da6 100644 --- a/libraries/shared/src/GLMHelpers.cpp +++ b/libraries/shared/src/GLMHelpers.cpp @@ -538,12 +538,11 @@ void generateBasisVectors(const glm::vec3& primaryAxis, const glm::vec3& seconda uAxisOut = glm::normalize(primaryAxis); glm::vec3 normSecondary = glm::normalize(secondaryAxis); - // if secondaryAxis is parallel with the primaryAxis, pick another axis. + // if normSecondary is parallel with the primaryAxis, pick another secondary. const float EPSILON = 1.0e-4f; - if (fabsf(fabsf(glm::dot(uAxisOut, secondaryAxis)) - 1.0f) < EPSILON) { - // pick a better secondaryAxis. + if (fabsf(fabsf(glm::dot(uAxisOut, normSecondary)) - 1.0f) < EPSILON) { normSecondary = glm::vec3(1.0f, 0.0f, 0.0f); - if (fabsf(fabsf(glm::dot(uAxisOut, secondaryAxis)) - 1.0f) < EPSILON) { + if (fabsf(fabsf(glm::dot(uAxisOut, normSecondary)) - 1.0f) < EPSILON) { normSecondary = glm::vec3(0.0f, 1.0f, 0.0f); } } diff --git a/tests/shared/src/GLMHelpersTests.cpp b/tests/shared/src/GLMHelpersTests.cpp index b4af4729a3..83a294ee1d 100644 --- a/tests/shared/src/GLMHelpersTests.cpp +++ b/tests/shared/src/GLMHelpersTests.cpp @@ -140,3 +140,77 @@ void GLMHelpersTests::testSimd() { } qDebug() << "Done "; } + +void GLMHelpersTests::testGenerateBasisVectors() { + { // very simple case: primary along X, secondary is linear combination of X and Y + glm::vec3 u(1.0f, 0.0f, 0.0f); + glm::vec3 v(1.0f, 1.0f, 0.0f); + glm::vec3 w; + + generateBasisVectors(u, v, u, v, w); + + QCOMPARE_WITH_ABS_ERROR(u, Vectors::UNIT_X, EPSILON); + QCOMPARE_WITH_ABS_ERROR(v, Vectors::UNIT_Y, EPSILON); + QCOMPARE_WITH_ABS_ERROR(w, Vectors::UNIT_Z, EPSILON); + } + + { // point primary along Y instead of X + glm::vec3 u(0.0f, 1.0f, 0.0f); + glm::vec3 v(1.0f, 1.0f, 0.0f); + glm::vec3 w; + + generateBasisVectors(u, v, u, v, w); + + QCOMPARE_WITH_ABS_ERROR(u, Vectors::UNIT_Y, EPSILON); + QCOMPARE_WITH_ABS_ERROR(v, Vectors::UNIT_X, EPSILON); + QCOMPARE_WITH_ABS_ERROR(w, -Vectors::UNIT_Z, EPSILON); + } + + { // pass bad data (both vectors along Y). The helper will guess X for secondary. + glm::vec3 u(0.0f, 1.0f, 0.0f); + glm::vec3 v(0.0f, 1.0f, 0.0f); + glm::vec3 w; + + generateBasisVectors(u, v, u, v, w); + + QCOMPARE_WITH_ABS_ERROR(u, Vectors::UNIT_Y, EPSILON); + QCOMPARE_WITH_ABS_ERROR(v, Vectors::UNIT_X, EPSILON); + QCOMPARE_WITH_ABS_ERROR(w, -Vectors::UNIT_Z, EPSILON); + } + + { // pass bad data (both vectors along X). The helper will guess X for secondary, fail, then guess Y. + glm::vec3 u(1.0f, 0.0f, 0.0f); + glm::vec3 v(1.0f, 0.0f, 0.0f); + glm::vec3 w; + + generateBasisVectors(u, v, u, v, w); + + QCOMPARE_WITH_ABS_ERROR(u, Vectors::UNIT_X, EPSILON); + QCOMPARE_WITH_ABS_ERROR(v, Vectors::UNIT_Y, EPSILON); + QCOMPARE_WITH_ABS_ERROR(w, Vectors::UNIT_Z, EPSILON); + } + + { // general case for arbitrary rotation + float angle = 1.234f; + glm::vec3 axis = glm::normalize(glm::vec3(1.0f, 2.0f, 3.0f)); + glm::quat rotation = glm::angleAxis(angle, axis); + + // expected values + glm::vec3 x = rotation * Vectors::UNIT_X; + glm::vec3 y = rotation * Vectors::UNIT_Y; + glm::vec3 z = rotation * Vectors::UNIT_Z; + + // primary is along x + // secondary is linear combination of x and y + // tertiary is unknown + glm::vec3 u = 1.23f * x; + glm::vec3 v = 2.34f * x + 3.45f * y; + glm::vec3 w; + + generateBasisVectors(u, v, u, v, w); + + QCOMPARE_WITH_ABS_ERROR(u, x, EPSILON); + QCOMPARE_WITH_ABS_ERROR(v, y, EPSILON); + QCOMPARE_WITH_ABS_ERROR(w, z, EPSILON); + } +} diff --git a/tests/shared/src/GLMHelpersTests.h b/tests/shared/src/GLMHelpersTests.h index acc7b533f5..030f2d477f 100644 --- a/tests/shared/src/GLMHelpersTests.h +++ b/tests/shared/src/GLMHelpersTests.h @@ -21,6 +21,7 @@ private slots: void testEulerDecomposition(); void testSixByteOrientationCompression(); void testSimd(); + void testGenerateBasisVectors(); }; float getErrorDifference(const float& a, const float& b); From 6970576bb8e8fd8b6a95cb0aa672f5e1ef2e2982 Mon Sep 17 00:00:00 2001 From: Andrew Meadows Date: Wed, 31 May 2017 11:51:35 -0700 Subject: [PATCH 279/357] use helper constants in helper code --- libraries/shared/src/GLMHelpers.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libraries/shared/src/GLMHelpers.cpp b/libraries/shared/src/GLMHelpers.cpp index 7ebaa11da6..394517aac4 100644 --- a/libraries/shared/src/GLMHelpers.cpp +++ b/libraries/shared/src/GLMHelpers.cpp @@ -541,9 +541,9 @@ void generateBasisVectors(const glm::vec3& primaryAxis, const glm::vec3& seconda // if normSecondary is parallel with the primaryAxis, pick another secondary. const float EPSILON = 1.0e-4f; if (fabsf(fabsf(glm::dot(uAxisOut, normSecondary)) - 1.0f) < EPSILON) { - normSecondary = glm::vec3(1.0f, 0.0f, 0.0f); + normSecondary = Vectors::UNIT_X; if (fabsf(fabsf(glm::dot(uAxisOut, normSecondary)) - 1.0f) < EPSILON) { - normSecondary = glm::vec3(0.0f, 1.0f, 0.0f); + normSecondary = Vectors::UNIT_Y; } } From 27669d44a7458e270abb5209599e2fa126fb4391 Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Mon, 5 Jun 2017 08:58:40 -0700 Subject: [PATCH 280/357] in deriveBodyFromHMDSensor, avoid using invalid head pose --- interface/src/avatar/MyAvatar.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index 826a6a00ac..64914a7ec1 100755 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -2338,10 +2338,13 @@ glm::quat MyAvatar::getWorldBodyOrientation() const { // old school meat hook style glm::mat4 MyAvatar::deriveBodyFromHMDSensor() const { - - // HMD is in sensor space. - const glm::vec3 headPosition = getHeadControllerPoseInSensorFrame().translation; - const glm::quat headOrientation = getHeadControllerPoseInSensorFrame().rotation * Quaternions::Y_180; + glm::vec3 headPosition; + glm::quat headOrientation; + auto headPose = getHeadControllerPoseInSensorFrame(); + if (headPose.isValid()) { + headPosition = getHeadControllerPoseInSensorFrame().translation; + headOrientation = getHeadControllerPoseInSensorFrame().rotation * Quaternions::Y_180; + } const glm::quat headOrientationYawOnly = cancelOutRollAndPitch(headOrientation); const Rig& rig = _skeletonModel->getRig(); From 793ed1313d7b83c87248d529f38c6da77e1883e5 Mon Sep 17 00:00:00 2001 From: Andrew Meadows Date: Mon, 5 Jun 2017 10:30:52 -0700 Subject: [PATCH 281/357] change variable name for more readable code --- libraries/animation/src/Rig.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/libraries/animation/src/Rig.cpp b/libraries/animation/src/Rig.cpp index 4a22aa1df1..2d37213c7a 100644 --- a/libraries/animation/src/Rig.cpp +++ b/libraries/animation/src/Rig.cpp @@ -1135,9 +1135,9 @@ void Rig::updateEyeJoint(int index, const glm::vec3& modelTranslation, const glm } glm::vec3 headUp = headQuat * Vectors::UNIT_Y; - glm::vec3 z, y, x; - generateBasisVectors(lookAtVector, headUp, z, y, x); - glm::mat3 m(-x, y, z); + glm::vec3 z, y, zCrossY; + generateBasisVectors(lookAtVector, headUp, z, y, zCrossY); + glm::mat3 m(-zCrossY, y, z); glm::quat desiredQuat = glm::normalize(glm::quat_cast(m)); glm::quat deltaQuat = desiredQuat * glm::inverse(headQuat); From 45db8c3befd31102e98069127b7df4a4985e1ebc Mon Sep 17 00:00:00 2001 From: Ken Cooke Date: Mon, 5 Jun 2017 11:18:54 -0700 Subject: [PATCH 282/357] Rebase optimizations on NVTT 2.1.0 instead of master --- cmake/externals/nvtt/CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cmake/externals/nvtt/CMakeLists.txt b/cmake/externals/nvtt/CMakeLists.txt index 91e63e6324..fa9d7b5ea1 100644 --- a/cmake/externals/nvtt/CMakeLists.txt +++ b/cmake/externals/nvtt/CMakeLists.txt @@ -9,7 +9,7 @@ if (WIN32) ExternalProject_Add( ${EXTERNAL_NAME} URL http://s3.amazonaws.com/hifi-public/dependencies/nvtt-win-2.1.0.hifi.zip - URL_MD5 907f2c683e2bcf8b8089576ec38747b4 + URL_MD5 10da01cf601f88f6dc12a6bc13c89136 CONFIGURE_COMMAND "" BUILD_COMMAND "" INSTALL_COMMAND "" @@ -30,7 +30,7 @@ else () ExternalProject_Add( ${EXTERNAL_NAME} URL http://hifi-public.s3.amazonaws.com/dependencies/nvidia-texture-tools-2.1.0.hifi.zip - URL_MD5 cda96482825225511d3effabbc1ddc7e + URL_MD5 5794b950f8b265a9a41b2839b3bf7ebb CONFIGURE_COMMAND CMAKE_ARGS ${ANDROID_CMAKE_ARGS} -DNVTT_SHARED=1 -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DCMAKE_INSTALL_PREFIX:PATH= LOG_DOWNLOAD 1 LOG_CONFIGURE 1 From 3ab67cf27ed459cd7f19f38c24d53acee64784ab Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Mon, 5 Jun 2017 11:44:27 -0700 Subject: [PATCH 283/357] fix forward gaze in HMD while not looking at anyone --- interface/src/Application.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 5b9e46f549..c83ca9b2ff 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -4060,7 +4060,7 @@ void Application::updateMyAvatarLookAtPosition() { if (isHMD) { glm::mat4 worldHeadMat = myAvatar->getSensorToWorldMatrix() * myAvatar->getHeadControllerPoseInSensorFrame().getMatrix(); - lookAtSpot = transformPoint(worldHeadMat, glm::vec3(0.0f, 0.0f, TREE_SCALE)); + lookAtSpot = transformPoint(worldHeadMat, glm::vec3(0.0f, 0.0f, -TREE_SCALE)); } else { lookAtSpot = myAvatar->getHead()->getEyePosition() + (myAvatar->getHead()->getFinalOrientationInWorldFrame() * glm::vec3(0.0f, 0.0f, -TREE_SCALE)); From 995fe11c05437f54e9a3eed78e809ac3dbb060c0 Mon Sep 17 00:00:00 2001 From: Bradley Austin Davis Date: Mon, 5 Jun 2017 14:03:20 -0700 Subject: [PATCH 284/357] Migrate to single QML engine --- interface/resources/qml/Browser.qml | 6 +- interface/resources/qml/TabletBrowser.qml | 6 +- .../qml/controls-uit/BaseWebView.qml | 3 - .../qml/controls/TabletWebScreen.qml | 6 +- .../resources/qml/controls/TabletWebView.qml | 6 +- .../resources/qml/controls/WebEntityView.qml | 6 +- interface/resources/qml/controls/WebView.qml | 6 +- interface/resources/qml/hifi/Desktop.qml | 6 - .../resources/qml/hifi/tablet/EditTabView.qml | 1 - .../resources/qml/hifi/tablet/TabletMenu.qml | 1 - .../resources/qml/hifi/tablet/TabletRoot.qml | 1 - interface/src/Application.cpp | 120 ++++++------- interface/src/ui/overlays/Web3DOverlay.cpp | 63 ++++--- .../src/RenderableWebEntityItem.cpp | 8 +- libraries/gl/CMakeLists.txt | 2 +- libraries/gl/src/gl/OffscreenQmlSurface.cpp | 163 ++++++++++++------ libraries/gl/src/gl/OffscreenQmlSurface.h | 5 +- .../gl/src/gl/OffscreenQmlSurfaceCache.cpp | 1 - libraries/networking/CMakeLists.txt | 2 +- .../networking/src}/FileTypeProfile.cpp | 0 .../networking/src}/FileTypeProfile.h | 0 .../src}/FileTypeRequestInterceptor.cpp | 0 .../src}/FileTypeRequestInterceptor.h | 0 .../src}/HFTabletWebEngineProfile.cpp | 1 + .../src}/HFTabletWebEngineProfile.h | 0 .../HFTabletWebEngineRequestInterceptor.cpp | 2 +- .../HFTabletWebEngineRequestInterceptor.h | 0 .../networking/src}/HFWebEngineProfile.cpp | 1 + .../networking/src}/HFWebEngineProfile.h | 0 .../src}/HFWebEngineRequestInterceptor.cpp | 2 +- .../src}/HFWebEngineRequestInterceptor.h | 0 .../networking/src}/RequestFilters.cpp | 2 +- .../networking/src}/RequestFilters.h | 0 libraries/ui/src/OffscreenUi.cpp | 16 +- libraries/ui/src/VrMenu.cpp | 2 +- 35 files changed, 223 insertions(+), 215 deletions(-) rename {interface/src/networking => libraries/networking/src}/FileTypeProfile.cpp (100%) rename {interface/src/networking => libraries/networking/src}/FileTypeProfile.h (100%) rename {interface/src/networking => libraries/networking/src}/FileTypeRequestInterceptor.cpp (100%) rename {interface/src/networking => libraries/networking/src}/FileTypeRequestInterceptor.h (100%) rename {interface/src/networking => libraries/networking/src}/HFTabletWebEngineProfile.cpp (95%) rename {interface/src/networking => libraries/networking/src}/HFTabletWebEngineProfile.h (100%) rename {interface/src/networking => libraries/networking/src}/HFTabletWebEngineRequestInterceptor.cpp (98%) rename {interface/src/networking => libraries/networking/src}/HFTabletWebEngineRequestInterceptor.h (100%) rename {interface/src/networking => libraries/networking/src}/HFWebEngineProfile.cpp (94%) rename {interface/src/networking => libraries/networking/src}/HFWebEngineProfile.h (100%) rename {interface/src/networking => libraries/networking/src}/HFWebEngineRequestInterceptor.cpp (95%) rename {interface/src/networking => libraries/networking/src}/HFWebEngineRequestInterceptor.h (100%) rename {interface/src/networking => libraries/networking/src}/RequestFilters.cpp (98%) rename {interface/src/networking => libraries/networking/src}/RequestFilters.h (100%) diff --git a/interface/resources/qml/Browser.qml b/interface/resources/qml/Browser.qml index 47fb610469..4f7639dd0e 100644 --- a/interface/resources/qml/Browser.qml +++ b/interface/resources/qml/Browser.qml @@ -2,7 +2,6 @@ import QtQuick 2.5 import QtQuick.Controls 1.2 import QtWebChannel 1.0 import QtWebEngine 1.2 -import FileTypeProfile 1.0 import "controls-uit" import "styles" as HifiStyles @@ -209,6 +208,7 @@ ScrollingWindow { WebView { id: webview url: "https://highfidelity.com/" + profile: FileTypeProfile; property alias eventBridgeWrapper: eventBridgeWrapper @@ -218,10 +218,6 @@ ScrollingWindow { property var eventBridge; } - profile: FileTypeProfile { - id: webviewProfile - storageName: "qmlWebEngine" - } webChannel.registeredObjects: [eventBridgeWrapper] diff --git a/interface/resources/qml/TabletBrowser.qml b/interface/resources/qml/TabletBrowser.qml index ee4d05a701..d89aa8626f 100644 --- a/interface/resources/qml/TabletBrowser.qml +++ b/interface/resources/qml/TabletBrowser.qml @@ -8,7 +8,6 @@ import "controls-uit" as HifiControls import "styles" as HifiStyles import "styles-uit" import "windows" -import HFTabletWebEngineProfile 1.0 Item { id: root @@ -47,10 +46,7 @@ Item { width: parent.width height: keyboardEnabled && keyboardRaised ? parent.height - keyboard.height : parent.height - profile: HFTabletWebEngineProfile { - id: webviewTabletProfile - storageName: "qmlTabletWebEngine" - } + profile: HFTabletWebEngineProfile; property string userScriptUrl: "" diff --git a/interface/resources/qml/controls-uit/BaseWebView.qml b/interface/resources/qml/controls-uit/BaseWebView.qml index 670aea71aa..3ca57f03bf 100644 --- a/interface/resources/qml/controls-uit/BaseWebView.qml +++ b/interface/resources/qml/controls-uit/BaseWebView.qml @@ -10,13 +10,10 @@ import QtQuick 2.5 import QtWebEngine 1.2 -import HFWebEngineProfile 1.0 WebEngineView { id: root - // profile: desktop.browserProfile - Component.onCompleted: { console.log("Connecting JS messaging to Hifi Logging") // Ensure the JS from the web-engine makes it to our logging diff --git a/interface/resources/qml/controls/TabletWebScreen.qml b/interface/resources/qml/controls/TabletWebScreen.qml index 93ded724a1..0b265f6fbb 100644 --- a/interface/resources/qml/controls/TabletWebScreen.qml +++ b/interface/resources/qml/controls/TabletWebScreen.qml @@ -2,7 +2,6 @@ import QtQuick 2.5 import QtWebEngine 1.1 import QtWebChannel 1.0 import "../controls-uit" as HiFiControls -import HFTabletWebEngineProfile 1.0 Item { property alias url: root.url @@ -39,10 +38,7 @@ Item { width: parent.width height: keyboardEnabled && keyboardRaised ? parent.height - keyboard.height : parent.height - profile: HFTabletWebEngineProfile { - id: webviewProfile - storageName: "qmlTabletWebEngine" - } + profile: HFTabletWebEngineProfile; property string userScriptUrl: "" diff --git a/interface/resources/qml/controls/TabletWebView.qml b/interface/resources/qml/controls/TabletWebView.qml index 215ac68ac0..3b23cbc19e 100644 --- a/interface/resources/qml/controls/TabletWebView.qml +++ b/interface/resources/qml/controls/TabletWebView.qml @@ -2,7 +2,6 @@ import QtQuick 2.5 import QtQuick.Controls 1.4 import QtWebEngine 1.2 import QtWebChannel 1.0 -import HFTabletWebEngineProfile 1.0 import "../controls-uit" as HiFiControls import "../styles" as HifiStyles import "../styles-uit" @@ -150,10 +149,7 @@ Item { width: parent.width height: keyboardEnabled && keyboardRaised ? parent.height - keyboard.height - web.headerHeight : parent.height - web.headerHeight anchors.top: buttons.bottom - profile: HFTabletWebEngineProfile { - id: webviewTabletProfile - storageName: "qmlTabletWebEngine" - } + profile: HFTabletWebEngineProfile; property string userScriptUrl: "" diff --git a/interface/resources/qml/controls/WebEntityView.qml b/interface/resources/qml/controls/WebEntityView.qml index a3d5fe903b..3bd6aad053 100644 --- a/interface/resources/qml/controls/WebEntityView.qml +++ b/interface/resources/qml/controls/WebEntityView.qml @@ -10,13 +10,9 @@ import QtQuick 2.5 import "." -import FileTypeProfile 1.0 WebView { - viewProfile: FileTypeProfile { - id: webviewProfile - storageName: "qmlWebEngine" - } + viewProfile: FileTypeProfile; urlTag: "noDownload=true"; } diff --git a/interface/resources/qml/controls/WebView.qml b/interface/resources/qml/controls/WebView.qml index 06766fa6ef..d08562eea3 100644 --- a/interface/resources/qml/controls/WebView.qml +++ b/interface/resources/qml/controls/WebView.qml @@ -2,7 +2,6 @@ import QtQuick 2.5 import QtWebEngine 1.1 import QtWebChannel 1.0 import "../controls-uit" as HiFiControls -import HFWebEngineProfile 1.0 Item { property alias url: root.url @@ -39,10 +38,7 @@ Item { width: parent.width height: keyboardEnabled && keyboardRaised ? parent.height - keyboard.height : parent.height - profile: HFWebEngineProfile { - id: webviewProfile - storageName: "qmlWebEngine" - } + profile: HFWebEngineProfile; property string userScriptUrl: "" diff --git a/interface/resources/qml/hifi/Desktop.qml b/interface/resources/qml/hifi/Desktop.qml index 7857eda3c2..ea9ec2f6c9 100644 --- a/interface/resources/qml/hifi/Desktop.qml +++ b/interface/resources/qml/hifi/Desktop.qml @@ -2,7 +2,6 @@ import QtQuick 2.5 import QtQuick.Controls 1.4 import QtWebEngine 1.1; import Qt.labs.settings 1.0 -import HFWebEngineProfile 1.0 import "../desktop" as OriginalDesktop import ".." @@ -27,11 +26,6 @@ OriginalDesktop.Desktop { property alias toolWindow: toolWindow ToolWindow { id: toolWindow } - property var browserProfile: HFWebEngineProfile { - id: webviewProfile - storageName: "qmlWebEngine" - } - Action { text: "Open Browser" shortcut: "Ctrl+B" diff --git a/interface/resources/qml/hifi/tablet/EditTabView.qml b/interface/resources/qml/hifi/tablet/EditTabView.qml index 35f2b82f0f..d084f1c7b3 100644 --- a/interface/resources/qml/hifi/tablet/EditTabView.qml +++ b/interface/resources/qml/hifi/tablet/EditTabView.qml @@ -5,7 +5,6 @@ import QtWebChannel 1.0 import QtQuick.Controls.Styles 1.4 import "../../controls" import "../toolbars" -import HFWebEngineProfile 1.0 import QtGraphicalEffects 1.0 import "../../controls-uit" as HifiControls import "../../styles-uit" diff --git a/interface/resources/qml/hifi/tablet/TabletMenu.qml b/interface/resources/qml/hifi/tablet/TabletMenu.qml index af36f72c82..62b61d129b 100644 --- a/interface/resources/qml/hifi/tablet/TabletMenu.qml +++ b/interface/resources/qml/hifi/tablet/TabletMenu.qml @@ -4,7 +4,6 @@ import QtQuick.Controls 1.4 import QtQml 2.2 import QtWebChannel 1.0 import QtWebEngine 1.1 -import HFWebEngineProfile 1.0 import "." diff --git a/interface/resources/qml/hifi/tablet/TabletRoot.qml b/interface/resources/qml/hifi/tablet/TabletRoot.qml index 97c8854c86..e7654d9ff1 100644 --- a/interface/resources/qml/hifi/tablet/TabletRoot.qml +++ b/interface/resources/qml/hifi/tablet/TabletRoot.qml @@ -1,7 +1,6 @@ import QtQuick 2.0 import Hifi 1.0 import QtQuick.Controls 1.4 -import HFTabletWebEngineProfile 1.0 import "../../dialogs" import "../../controls" diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 851c07c501..d6475c4b00 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -148,9 +148,6 @@ #include "LODManager.h" #include "ModelPackager.h" #include "networking/CloseEventSender.h" -#include "networking/HFWebEngineProfile.h" -#include "networking/HFTabletWebEngineProfile.h" -#include "networking/FileTypeProfile.h" #include "scripting/TestScriptingInterface.h" #include "scripting/AccountScriptingInterface.h" #include "scripting/AssetMappingsScriptingInterface.h" @@ -1852,14 +1849,10 @@ void Application::initializeUi() { UpdateDialog::registerType(); qmlRegisterType("Hifi", 1, 0, "Preference"); - qmlRegisterType("HFWebEngineProfile", 1, 0, "HFWebEngineProfile"); - qmlRegisterType("HFTabletWebEngineProfile", 1, 0, "HFTabletWebEngineProfile"); - qmlRegisterType("FileTypeProfile", 1, 0, "FileTypeProfile"); - auto offscreenUi = DependencyManager::get(); offscreenUi->create(_glWidget->qglContext()); - auto rootContext = offscreenUi->getRootContext(); + auto surfaceContext = offscreenUi->getSurfaceContext(); offscreenUi->setProxyWindow(_window->windowHandle()); offscreenUi->setBaseUrl(QUrl::fromLocalFile(PathUtils::resourcesPath() + "/qml/")); @@ -1871,7 +1864,7 @@ void Application::initializeUi() { // do better detection in the offscreen UI of what has focus offscreenUi->setNavigationFocused(false); - auto engine = rootContext->engine(); + auto engine = surfaceContext->engine(); connect(engine, &QQmlEngine::quit, [] { qApp->quit(); }); @@ -1880,79 +1873,78 @@ void Application::initializeUi() { // For some reason there is already an "Application" object in the QML context, // though I can't find it. Hence, "ApplicationInterface" - rootContext->setContextProperty("ApplicationInterface", this); - rootContext->setContextProperty("Audio", DependencyManager::get().data()); - rootContext->setContextProperty("AudioStats", DependencyManager::get()->getStats().data()); - rootContext->setContextProperty("AudioScope", DependencyManager::get().data()); + surfaceContext->setContextProperty("Audio", DependencyManager::get().data()); + surfaceContext->setContextProperty("AudioStats", DependencyManager::get()->getStats().data()); + surfaceContext->setContextProperty("AudioScope", DependencyManager::get().data()); - rootContext->setContextProperty("Controller", DependencyManager::get().data()); - rootContext->setContextProperty("Entities", DependencyManager::get().data()); + surfaceContext->setContextProperty("Controller", DependencyManager::get().data()); + surfaceContext->setContextProperty("Entities", DependencyManager::get().data()); _fileDownload = new FileScriptingInterface(engine); - rootContext->setContextProperty("File", _fileDownload); + surfaceContext->setContextProperty("File", _fileDownload); connect(_fileDownload, &FileScriptingInterface::unzipResult, this, &Application::handleUnzip); - rootContext->setContextProperty("MyAvatar", getMyAvatar().get()); - rootContext->setContextProperty("Messages", DependencyManager::get().data()); - rootContext->setContextProperty("Recording", DependencyManager::get().data()); - rootContext->setContextProperty("Preferences", DependencyManager::get().data()); - rootContext->setContextProperty("AddressManager", DependencyManager::get().data()); - rootContext->setContextProperty("FrameTimings", &_frameTimingsScriptingInterface); - rootContext->setContextProperty("Rates", new RatesScriptingInterface(this)); - rootContext->setContextProperty("pathToFonts", "../../"); + surfaceContext->setContextProperty("MyAvatar", getMyAvatar().get()); + surfaceContext->setContextProperty("Messages", DependencyManager::get().data()); + surfaceContext->setContextProperty("Recording", DependencyManager::get().data()); + surfaceContext->setContextProperty("Preferences", DependencyManager::get().data()); + surfaceContext->setContextProperty("AddressManager", DependencyManager::get().data()); + surfaceContext->setContextProperty("FrameTimings", &_frameTimingsScriptingInterface); + surfaceContext->setContextProperty("Rates", new RatesScriptingInterface(this)); - rootContext->setContextProperty("TREE_SCALE", TREE_SCALE); - rootContext->setContextProperty("Quat", new Quat()); - rootContext->setContextProperty("Vec3", new Vec3()); - rootContext->setContextProperty("Uuid", new ScriptUUID()); - rootContext->setContextProperty("Assets", DependencyManager::get().data()); + surfaceContext->setContextProperty("TREE_SCALE", TREE_SCALE); + // FIXME Quat and Vec3 won't work with QJSEngine used by QML + surfaceContext->setContextProperty("Quat", new Quat()); + surfaceContext->setContextProperty("Vec3", new Vec3()); + surfaceContext->setContextProperty("Uuid", new ScriptUUID()); + surfaceContext->setContextProperty("Assets", DependencyManager::get().data()); - rootContext->setContextProperty("AvatarList", DependencyManager::get().data()); - rootContext->setContextProperty("Users", DependencyManager::get().data()); + surfaceContext->setContextProperty("AvatarList", DependencyManager::get().data()); + surfaceContext->setContextProperty("Users", DependencyManager::get().data()); - rootContext->setContextProperty("UserActivityLogger", DependencyManager::get().data()); + surfaceContext->setContextProperty("UserActivityLogger", DependencyManager::get().data()); - rootContext->setContextProperty("Camera", &_myCamera); + surfaceContext->setContextProperty("Camera", &_myCamera); #if defined(Q_OS_MAC) || defined(Q_OS_WIN) - rootContext->setContextProperty("SpeechRecognizer", DependencyManager::get().data()); + surfaceContext->setContextProperty("SpeechRecognizer", DependencyManager::get().data()); #endif - rootContext->setContextProperty("Overlays", &_overlays); - rootContext->setContextProperty("Window", DependencyManager::get().data()); - rootContext->setContextProperty("MenuInterface", MenuScriptingInterface::getInstance()); - rootContext->setContextProperty("Stats", Stats::getInstance()); - rootContext->setContextProperty("Settings", SettingsScriptingInterface::getInstance()); - rootContext->setContextProperty("ScriptDiscoveryService", DependencyManager::get().data()); - rootContext->setContextProperty("AudioDevice", AudioDeviceScriptingInterface::getInstance()); - rootContext->setContextProperty("AvatarBookmarks", DependencyManager::get().data()); - rootContext->setContextProperty("LocationBookmarks", DependencyManager::get().data()); + surfaceContext->setContextProperty("Overlays", &_overlays); + surfaceContext->setContextProperty("Window", DependencyManager::get().data()); + surfaceContext->setContextProperty("MenuInterface", MenuScriptingInterface::getInstance()); + surfaceContext->setContextProperty("Stats", Stats::getInstance()); + surfaceContext->setContextProperty("Settings", SettingsScriptingInterface::getInstance()); + surfaceContext->setContextProperty("ScriptDiscoveryService", DependencyManager::get().data()); + surfaceContext->setContextProperty("AudioDevice", AudioDeviceScriptingInterface::getInstance()); + surfaceContext->setContextProperty("AvatarBookmarks", DependencyManager::get().data()); + surfaceContext->setContextProperty("LocationBookmarks", DependencyManager::get().data()); // Caches - rootContext->setContextProperty("AnimationCache", DependencyManager::get().data()); - rootContext->setContextProperty("TextureCache", DependencyManager::get().data()); - rootContext->setContextProperty("ModelCache", DependencyManager::get().data()); - rootContext->setContextProperty("SoundCache", DependencyManager::get().data()); + surfaceContext->setContextProperty("AnimationCache", DependencyManager::get().data()); + surfaceContext->setContextProperty("TextureCache", DependencyManager::get().data()); + surfaceContext->setContextProperty("ModelCache", DependencyManager::get().data()); + surfaceContext->setContextProperty("SoundCache", DependencyManager::get().data()); - rootContext->setContextProperty("Account", AccountScriptingInterface::getInstance()); - rootContext->setContextProperty("Tablet", DependencyManager::get().data()); - rootContext->setContextProperty("DialogsManager", _dialogsManagerScriptingInterface); - rootContext->setContextProperty("GlobalServices", GlobalServicesScriptingInterface::getInstance()); - rootContext->setContextProperty("FaceTracker", DependencyManager::get().data()); - rootContext->setContextProperty("AvatarManager", DependencyManager::get().data()); - rootContext->setContextProperty("UndoStack", &_undoStackScriptingInterface); - rootContext->setContextProperty("LODManager", DependencyManager::get().data()); - rootContext->setContextProperty("Paths", DependencyManager::get().data()); - rootContext->setContextProperty("HMD", DependencyManager::get().data()); - rootContext->setContextProperty("Scene", DependencyManager::get().data()); - rootContext->setContextProperty("Render", _renderEngine->getConfiguration().get()); - rootContext->setContextProperty("Reticle", getApplicationCompositor().getReticleInterface()); - rootContext->setContextProperty("Snapshot", DependencyManager::get().data()); + surfaceContext->setContextProperty("Account", AccountScriptingInterface::getInstance()); + surfaceContext->setContextProperty("Tablet", DependencyManager::get().data()); + surfaceContext->setContextProperty("DialogsManager", _dialogsManagerScriptingInterface); + surfaceContext->setContextProperty("GlobalServices", GlobalServicesScriptingInterface::getInstance()); + surfaceContext->setContextProperty("FaceTracker", DependencyManager::get().data()); + surfaceContext->setContextProperty("AvatarManager", DependencyManager::get().data()); + surfaceContext->setContextProperty("UndoStack", &_undoStackScriptingInterface); + surfaceContext->setContextProperty("LODManager", DependencyManager::get().data()); + surfaceContext->setContextProperty("Paths", DependencyManager::get().data()); + surfaceContext->setContextProperty("HMD", DependencyManager::get().data()); + surfaceContext->setContextProperty("Scene", DependencyManager::get().data()); + surfaceContext->setContextProperty("Render", _renderEngine->getConfiguration().get()); + surfaceContext->setContextProperty("Reticle", getApplicationCompositor().getReticleInterface()); + surfaceContext->setContextProperty("Snapshot", DependencyManager::get().data()); - rootContext->setContextProperty("ApplicationCompositor", &getApplicationCompositor()); + surfaceContext->setContextProperty("ApplicationCompositor", &getApplicationCompositor()); - rootContext->setContextProperty("AvatarInputs", AvatarInputs::getInstance()); + surfaceContext->setContextProperty("AvatarInputs", AvatarInputs::getInstance()); if (auto steamClient = PluginManager::getInstance()->getSteamClientPlugin()) { - rootContext->setContextProperty("Steam", new SteamScriptingInterface(engine, steamClient.get())); + surfaceContext->setContextProperty("Steam", new SteamScriptingInterface(engine, steamClient.get())); } diff --git a/interface/src/ui/overlays/Web3DOverlay.cpp b/interface/src/ui/overlays/Web3DOverlay.cpp index 75c793bf77..e26a641206 100644 --- a/interface/src/ui/overlays/Web3DOverlay.cpp +++ b/interface/src/ui/overlays/Web3DOverlay.cpp @@ -135,7 +135,7 @@ Web3DOverlay::~Web3DOverlay() { void Web3DOverlay::update(float deltatime) { if (_webSurface) { // update globalPosition - _webSurface->getRootContext()->setContextProperty("globalPosition", vec3toVariant(getPosition())); + _webSurface->getSurfaceContext()->setContextProperty("globalPosition", vec3toVariant(getPosition())); } } @@ -163,57 +163,56 @@ void Web3DOverlay::loadSourceURL() { _webSurface->resume(); _webSurface->getRootItem()->setProperty("url", _url); _webSurface->getRootItem()->setProperty("scriptURL", _scriptURL); - _webSurface->getRootContext()->setContextProperty("ApplicationInterface", qApp); } else { _webSurface->setBaseUrl(QUrl::fromLocalFile(PathUtils::resourcesPath())); _webSurface->load(_url, [&](QQmlContext* context, QObject* obj) {}); _webSurface->resume(); - _webSurface->getRootContext()->setContextProperty("Users", DependencyManager::get().data()); - _webSurface->getRootContext()->setContextProperty("HMD", DependencyManager::get().data()); - _webSurface->getRootContext()->setContextProperty("UserActivityLogger", DependencyManager::get().data()); - _webSurface->getRootContext()->setContextProperty("Preferences", DependencyManager::get().data()); - _webSurface->getRootContext()->setContextProperty("Vec3", new Vec3()); - _webSurface->getRootContext()->setContextProperty("Quat", new Quat()); - _webSurface->getRootContext()->setContextProperty("MyAvatar", DependencyManager::get()->getMyAvatar().get()); - _webSurface->getRootContext()->setContextProperty("Entities", DependencyManager::get().data()); - _webSurface->getRootContext()->setContextProperty("Snapshot", DependencyManager::get().data()); + _webSurface->getSurfaceContext()->setContextProperty("Users", DependencyManager::get().data()); + _webSurface->getSurfaceContext()->setContextProperty("HMD", DependencyManager::get().data()); + _webSurface->getSurfaceContext()->setContextProperty("UserActivityLogger", DependencyManager::get().data()); + _webSurface->getSurfaceContext()->setContextProperty("Preferences", DependencyManager::get().data()); + _webSurface->getSurfaceContext()->setContextProperty("Vec3", new Vec3()); + _webSurface->getSurfaceContext()->setContextProperty("Quat", new Quat()); + _webSurface->getSurfaceContext()->setContextProperty("MyAvatar", DependencyManager::get()->getMyAvatar().get()); + _webSurface->getSurfaceContext()->setContextProperty("Entities", DependencyManager::get().data()); + _webSurface->getSurfaceContext()->setContextProperty("Snapshot", DependencyManager::get().data()); if (_webSurface->getRootItem() && _webSurface->getRootItem()->objectName() == "tabletRoot") { auto tabletScriptingInterface = DependencyManager::get(); auto flags = tabletScriptingInterface->getFlags(); - _webSurface->getRootContext()->setContextProperty("offscreenFlags", flags); - _webSurface->getRootContext()->setContextProperty("AddressManager", DependencyManager::get().data()); - _webSurface->getRootContext()->setContextProperty("Account", AccountScriptingInterface::getInstance()); - _webSurface->getRootContext()->setContextProperty("AudioStats", DependencyManager::get()->getStats().data()); - _webSurface->getRootContext()->setContextProperty("HMD", DependencyManager::get().data()); - _webSurface->getRootContext()->setContextProperty("fileDialogHelper", new FileDialogHelper()); - _webSurface->getRootContext()->setContextProperty("MyAvatar", DependencyManager::get()->getMyAvatar().get()); - _webSurface->getRootContext()->setContextProperty("ScriptDiscoveryService", DependencyManager::get().data()); - _webSurface->getRootContext()->setContextProperty("Tablet", DependencyManager::get().data()); - _webSurface->getRootContext()->setContextProperty("Assets", DependencyManager::get().data()); - _webSurface->getRootContext()->setContextProperty("LODManager", DependencyManager::get().data()); - _webSurface->getRootContext()->setContextProperty("OctreeStats", DependencyManager::get().data()); - _webSurface->getRootContext()->setContextProperty("DCModel", DependencyManager::get().data()); - _webSurface->getRootContext()->setContextProperty("AudioDevice", AudioDeviceScriptingInterface::getInstance()); - _webSurface->getRootContext()->setContextProperty("AvatarInputs", AvatarInputs::getInstance()); - _webSurface->getRootContext()->setContextProperty("GlobalServices", GlobalServicesScriptingInterface::getInstance()); - _webSurface->getRootContext()->setContextProperty("AvatarList", DependencyManager::get().data()); - _webSurface->getRootContext()->setContextProperty("DialogsManager", DialogsManagerScriptingInterface::getInstance()); + _webSurface->getSurfaceContext()->setContextProperty("offscreenFlags", flags); + _webSurface->getSurfaceContext()->setContextProperty("AddressManager", DependencyManager::get().data()); + _webSurface->getSurfaceContext()->setContextProperty("Account", AccountScriptingInterface::getInstance()); + _webSurface->getSurfaceContext()->setContextProperty("AudioStats", DependencyManager::get()->getStats().data()); + _webSurface->getSurfaceContext()->setContextProperty("HMD", DependencyManager::get().data()); + _webSurface->getSurfaceContext()->setContextProperty("fileDialogHelper", new FileDialogHelper()); + _webSurface->getSurfaceContext()->setContextProperty("MyAvatar", DependencyManager::get()->getMyAvatar().get()); + _webSurface->getSurfaceContext()->setContextProperty("ScriptDiscoveryService", DependencyManager::get().data()); + _webSurface->getSurfaceContext()->setContextProperty("Tablet", DependencyManager::get().data()); + _webSurface->getSurfaceContext()->setContextProperty("Assets", DependencyManager::get().data()); + _webSurface->getSurfaceContext()->setContextProperty("LODManager", DependencyManager::get().data()); + _webSurface->getSurfaceContext()->setContextProperty("OctreeStats", DependencyManager::get().data()); + _webSurface->getSurfaceContext()->setContextProperty("DCModel", DependencyManager::get().data()); + _webSurface->getSurfaceContext()->setContextProperty("AudioDevice", AudioDeviceScriptingInterface::getInstance()); + _webSurface->getSurfaceContext()->setContextProperty("AvatarInputs", AvatarInputs::getInstance()); + _webSurface->getSurfaceContext()->setContextProperty("GlobalServices", GlobalServicesScriptingInterface::getInstance()); + _webSurface->getSurfaceContext()->setContextProperty("AvatarList", DependencyManager::get().data()); + _webSurface->getSurfaceContext()->setContextProperty("DialogsManager", DialogsManagerScriptingInterface::getInstance()); - _webSurface->getRootContext()->setContextProperty("pathToFonts", "../../"); + _webSurface->getSurfaceContext()->setContextProperty("pathToFonts", "../../"); tabletScriptingInterface->setQmlTabletRoot("com.highfidelity.interface.tablet.system", _webSurface->getRootItem(), _webSurface.data()); // mark the TabletProxy object as cpp ownership. QObject* tablet = tabletScriptingInterface->getTablet("com.highfidelity.interface.tablet.system"); - _webSurface->getRootContext()->engine()->setObjectOwnership(tablet, QQmlEngine::CppOwnership); + _webSurface->getSurfaceContext()->engine()->setObjectOwnership(tablet, QQmlEngine::CppOwnership); // Override min fps for tablet UI, for silky smooth scrolling setMaxFPS(90); } } - _webSurface->getRootContext()->setContextProperty("globalPosition", vec3toVariant(getPosition())); + _webSurface->getSurfaceContext()->setContextProperty("globalPosition", vec3toVariant(getPosition())); } void Web3DOverlay::setMaxFPS(uint8_t maxFPS) { diff --git a/libraries/entities-renderer/src/RenderableWebEntityItem.cpp b/libraries/entities-renderer/src/RenderableWebEntityItem.cpp index 0d286c46eb..3b3480443d 100644 --- a/libraries/entities-renderer/src/RenderableWebEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableWebEntityItem.cpp @@ -127,7 +127,7 @@ bool RenderableWebEntityItem::buildWebSurface(QSharedPointer _webSurface->resume(); _webSurface->getRootItem()->setProperty("url", _sourceUrl); - _webSurface->getRootContext()->setContextProperty("desktop", QVariant()); + _webSurface->getSurfaceContext()->setContextProperty("desktop", QVariant()); // FIXME - Keyboard HMD only: Possibly add "HMDinfo" object to context for WebView.qml. // forward web events to EntityScriptingInterface @@ -271,7 +271,7 @@ void RenderableWebEntityItem::loadSourceURL() { }); _webSurface->getRootItem()->setProperty("url", _sourceUrl); - _webSurface->getRootContext()->setContextProperty("desktop", QVariant()); + _webSurface->getSurfaceContext()->setContextProperty("desktop", QVariant()); } else { _contentType = qmlContent; @@ -284,7 +284,7 @@ void RenderableWebEntityItem::loadSourceURL() { _webSurface->getRootItem(), _webSurface.data()); } } - _webSurface->getRootContext()->setContextProperty("globalPosition", vec3toVariant(getPosition())); + _webSurface->getSurfaceContext()->setContextProperty("globalPosition", vec3toVariant(getPosition())); } @@ -420,7 +420,7 @@ void RenderableWebEntityItem::update(const quint64& now) { if (_webSurface) { // update globalPosition - _webSurface->getRootContext()->setContextProperty("globalPosition", vec3toVariant(getPosition())); + _webSurface->getSurfaceContext()->setContextProperty("globalPosition", vec3toVariant(getPosition())); } auto interval = now - _lastRenderTime; diff --git a/libraries/gl/CMakeLists.txt b/libraries/gl/CMakeLists.txt index 3e2097e89e..fd3197410b 100644 --- a/libraries/gl/CMakeLists.txt +++ b/libraries/gl/CMakeLists.txt @@ -1,6 +1,6 @@ set(TARGET_NAME gl) setup_hifi_library(OpenGL Qml Quick) -link_hifi_libraries(shared) +link_hifi_libraries(shared networking) target_opengl() diff --git a/libraries/gl/src/gl/OffscreenQmlSurface.cpp b/libraries/gl/src/gl/OffscreenQmlSurface.cpp index 3bbd26e010..65c311424f 100644 --- a/libraries/gl/src/gl/OffscreenQmlSurface.cpp +++ b/libraries/gl/src/gl/OffscreenQmlSurface.cpp @@ -33,6 +33,9 @@ #include #include #include +#include +#include +#include #include "OffscreenGLCanvas.h" #include "GLHelpers.h" @@ -41,6 +44,7 @@ Q_LOGGING_CATEGORY(trace_render_qml, "trace.render.qml") Q_LOGGING_CATEGORY(trace_render_qml_gl, "trace.render.qml.gl") +Q_LOGGING_CATEGORY(offscreenFocus, "hifi.offscreen.focus") struct TextureSet { // The number of surfaces with this size @@ -254,8 +258,72 @@ QNetworkAccessManager* QmlNetworkAccessManagerFactory::create(QObject* parent) { return new QmlNetworkAccessManager(parent); } -Q_DECLARE_LOGGING_CATEGORY(offscreenFocus) -Q_LOGGING_CATEGORY(offscreenFocus, "hifi.offscreen.focus") +static QQmlEngine* globalEngine { nullptr }; +static size_t globalEngineRefCount { 0 }; + +QString getEventBridgeJavascript() { + // FIXME: Refactor with similar code in RenderableWebEntityItem + QString javaScriptToInject; + QFile webChannelFile(":qtwebchannel/qwebchannel.js"); + QFile createGlobalEventBridgeFile(PathUtils::resourcesPath() + "/html/createGlobalEventBridge.js"); + if (webChannelFile.open(QFile::ReadOnly | QFile::Text) && + createGlobalEventBridgeFile.open(QFile::ReadOnly | QFile::Text)) { + QString webChannelStr = QTextStream(&webChannelFile).readAll(); + QString createGlobalEventBridgeStr = QTextStream(&createGlobalEventBridgeFile).readAll(); + javaScriptToInject = webChannelStr + createGlobalEventBridgeStr; + } else { + qCWarning(glLogging) << "Unable to find qwebchannel.js or createGlobalEventBridge.js"; + } + return javaScriptToInject; +} + + +QQmlEngine* acquireEngine(QQuickWindow* window) { + Q_ASSERT(QThread::currentThread() == qApp->thread()); + if (!globalEngine) { + Q_ASSERT(0 == globalEngineRefCount); + globalEngine = new QQmlEngine(); + globalEngine->setNetworkAccessManagerFactory(new QmlNetworkAccessManagerFactory); + + auto importList = globalEngine->importPathList(); + importList.insert(importList.begin(), PathUtils::resourcesPath()); + globalEngine->setImportPathList(importList); + for (const auto& path : importList) { + qDebug() << path; + } + + if (!globalEngine->incubationController()) { + globalEngine->setIncubationController(window->incubationController()); + } + auto rootContext = globalEngine->rootContext(); + rootContext->setContextProperty("GL", ::getGLContextData()); + rootContext->setContextProperty("urlHandler", new UrlHandler()); + rootContext->setContextProperty("resourceDirectoryUrl", QUrl::fromLocalFile(PathUtils::resourcesPath())); + rootContext->setContextProperty("pathToFonts", "../../"); + rootContext->setContextProperty("ApplicationInterface", qApp); + auto javaScriptToInject = getEventBridgeJavascript(); + if (!javaScriptToInject.isEmpty()) { + rootContext->setContextProperty("eventBridgeJavaScriptToInject", QVariant(javaScriptToInject)); + } + rootContext->setContextProperty("FileTypeProfile", new FileTypeProfile(rootContext)); + rootContext->setContextProperty("HFWebEngineProfile", new HFWebEngineProfile(rootContext)); + rootContext->setContextProperty("HFTabletWebEngineProfile", new HFTabletWebEngineProfile(rootContext)); + + + } + + ++globalEngineRefCount; + return globalEngine; +} + +void releaseEngine() { + Q_ASSERT(QThread::currentThread() == qApp->thread()); + Q_ASSERT(0 != globalEngineRefCount); + if (0 == --globalEngineRefCount) { + globalEngine->deleteLater(); + globalEngine = nullptr; + } +} void OffscreenQmlSurface::cleanup() { _canvas->makeCurrent(); @@ -294,6 +362,7 @@ void OffscreenQmlSurface::render() { GLuint texture = offscreenTextures.getNextTexture(_size); glBindFramebuffer(GL_DRAW_FRAMEBUFFER, _fbo); glFramebufferTexture(GL_DRAW_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, texture, 0); + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); _renderControl->render(); glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0); glBindTexture(GL_TEXTURE_2D, texture); @@ -362,8 +431,8 @@ OffscreenQmlSurface::~OffscreenQmlSurface() { _canvas->deleteLater(); _rootItem->deleteLater(); _qmlComponent->deleteLater(); - _qmlEngine->deleteLater(); _quickWindow->deleteLater(); + releaseEngine(); } void OffscreenQmlSurface::onAboutToQuit() { @@ -375,6 +444,8 @@ void OffscreenQmlSurface::create(QOpenGLContext* shareContext) { qCDebug(glLogging) << "Building QML surface"; _renderControl = new QMyQuickRenderControl(); + connect(_renderControl, &QQuickRenderControl::renderRequested, this, [this] { _render = true; }); + connect(_renderControl, &QQuickRenderControl::sceneChanged, this, [this] { _render = _polish = true; }); QQuickWindow::setDefaultAlphaBuffer(true); @@ -385,7 +456,7 @@ void OffscreenQmlSurface::create(QOpenGLContext* shareContext) { // so we wait until after its ctor to move object/context to this thread. _quickWindow = new QQuickWindow(_renderControl); _quickWindow->setColor(QColor(255, 255, 255, 0)); - _quickWindow->setFlags(_quickWindow->flags() | static_cast(Qt::WA_TranslucentBackground)); + _quickWindow->setClearBeforeRendering(false); _renderControl->_renderWindow = _proxyWindow; @@ -398,32 +469,20 @@ void OffscreenQmlSurface::create(QOpenGLContext* shareContext) { connect(_quickWindow, &QQuickWindow::focusObjectChanged, this, &OffscreenQmlSurface::onFocusObjectChanged); // Create a QML engine. - _qmlEngine = new QQmlEngine; + auto qmlEngine = acquireEngine(_quickWindow); + _qmlContext = new QQmlContext(qmlEngine->rootContext()); - _qmlEngine->setNetworkAccessManagerFactory(new QmlNetworkAccessManagerFactory); + _qmlContext->setContextProperty("offscreenWindow", QVariant::fromValue(getWindow())); + _qmlContext->setContextProperty("globalEventBridge", this); + _qmlContext->setContextProperty("webEntity", this); - auto importList = _qmlEngine->importPathList(); - importList.insert(importList.begin(), PathUtils::resourcesPath()); - _qmlEngine->setImportPathList(importList); - if (!_qmlEngine->incubationController()) { - _qmlEngine->setIncubationController(_quickWindow->incubationController()); - } + _qmlComponent = new QQmlComponent(qmlEngine); - // FIXME - _glData = ::getGLContextData(); // Initialize JSON structure so that it can be filled in later and then used in QML. - _qmlEngine->rootContext()->setContextProperty("GL", _glData); - _qmlEngine->rootContext()->setContextProperty("offscreenWindow", QVariant::fromValue(getWindow())); - _qmlComponent = new QQmlComponent(_qmlEngine); - - - connect(_renderControl, &QQuickRenderControl::renderRequested, this, [this] { _render = true; }); - connect(_renderControl, &QQuickRenderControl::sceneChanged, this, [this] { _render = _polish = true; }); if (!_canvas->makeCurrent()) { qWarning("Failed to make context current for QML Renderer"); return; } - _glData = ::getGLContextData(); _renderControl->initialize(_canvas->getContext()); // When Quick says there is a need to render, we will not render immediately. Instead, @@ -433,11 +492,6 @@ void OffscreenQmlSurface::create(QOpenGLContext* shareContext) { _updateTimer.setTimerType(Qt::PreciseTimer); _updateTimer.setInterval(MIN_TIMER_MS); // 5ms, Qt::PreciseTimer required _updateTimer.start(); - - auto rootContext = getRootContext(); - rootContext->setContextProperty("urlHandler", new UrlHandler()); - rootContext->setContextProperty("resourceDirectoryUrl", QUrl::fromLocalFile(PathUtils::resourcesPath())); - rootContext->setContextProperty("pathToFonts", "../../"); } static uvec2 clampSize(const uvec2& size, uint32_t maxDimension) { @@ -460,7 +514,7 @@ void OffscreenQmlSurface::resize(const QSize& newSize_, bool forceResize) { return; } - _qmlEngine->rootContext()->setContextProperty("surfaceSize", newSize); + _qmlContext->setContextProperty("surfaceSize", newSize); if (_rootItem) { _rootItem->setSize(newSize); @@ -520,14 +574,19 @@ QQuickItem* OffscreenQmlSurface::getRootItem() { } void OffscreenQmlSurface::setBaseUrl(const QUrl& baseUrl) { - _qmlEngine->setBaseUrl(baseUrl); + _qmlContext->setBaseUrl(baseUrl); } QObject* OffscreenQmlSurface::load(const QUrl& qmlSource, std::function f) { // Synchronous loading may take a while; restart the deadlock timer QMetaObject::invokeMethod(qApp, "updateHeartbeat", Qt::DirectConnection); - _qmlComponent->loadUrl(qmlSource, QQmlComponent::PreferSynchronous); + if ((qmlSource.isRelative() && !qmlSource.isEmpty()) || qmlSource.scheme() == QLatin1String("file")) { + _qmlComponent->loadUrl(_qmlContext->resolvedUrl(qmlSource), QQmlComponent::PreferSynchronous); + } else { + _qmlComponent->loadUrl(qmlSource, QQmlComponent::PreferSynchronous); + } + if (_qmlComponent->isLoading()) { connect(_qmlComponent, &QQmlComponent::statusChanged, this, @@ -541,10 +600,22 @@ QObject* OffscreenQmlSurface::load(const QUrl& qmlSource, std::functionengine()->clearComponentCache(); + _qmlContext->engine()->clearComponentCache(); } QObject* OffscreenQmlSurface::finishQmlLoad(std::function f) { +#if 0 + if (!_rootItem) { + QQmlComponent component(_qmlContext->engine()); + component.setData(R"QML( +import QtQuick 2.0 +import QtWebChannel 1.0 +Item { Component.onCompleted: globalEventBridge.WebChannel.id = "globalEventBridge"; } +)QML", QUrl()); + QObject *helper = component.create(_qmlContext); + qDebug() << "Created helper"; + } +#endif disconnect(_qmlComponent, &QQmlComponent::statusChanged, this, 0); if (_qmlComponent->isError()) { QList errorList = _qmlComponent->errors(); @@ -554,21 +625,8 @@ QObject* OffscreenQmlSurface::finishQmlLoad(std::functionbeginCreate(newContext); + QObject* newObject = _qmlComponent->beginCreate(_qmlContext); if (_qmlComponent->isError()) { QList errorList = _qmlComponent->errors(); foreach(const QQmlError& error, errorList) @@ -579,12 +637,10 @@ QObject* OffscreenQmlSurface::finishQmlLoad(std::functionsetObjectOwnership(this, QQmlEngine::CppOwnership); + _qmlContext->engine()->setObjectOwnership(this, QQmlEngine::CppOwnership); newObject->setProperty("eventBridge", QVariant::fromValue(this)); - newContext->setContextProperty("eventBridgeJavaScriptToInject", QVariant(javaScriptToInject)); - - f(newContext, newObject); + f(_qmlContext, newObject); _qmlComponent->completeCreate(); @@ -735,7 +791,7 @@ bool OffscreenQmlSurface::eventFilter(QObject* originalDestination, QEvent* even mouseEvent->screenPos(), mouseEvent->button(), mouseEvent->buttons(), mouseEvent->modifiers()); if (event->type() == QEvent::MouseMove) { - _qmlEngine->rootContext()->setContextProperty("lastMousePosition", transformedPos); + _qmlContext->setContextProperty("lastMousePosition", transformedPos); } mappedEvent.ignore(); if (QCoreApplication::sendEvent(_quickWindow, &mappedEvent)) { @@ -762,9 +818,6 @@ void OffscreenQmlSurface::resume() { if (getRootItem()) { getRootItem()->setProperty("eventBridge", QVariant::fromValue(this)); } - if (getRootContext()) { - getRootContext()->setContextProperty("webEntity", this); - } } bool OffscreenQmlSurface::isPaused() const { @@ -790,8 +843,8 @@ QSize OffscreenQmlSurface::size() const { return _quickWindow->geometry().size(); } -QQmlContext* OffscreenQmlSurface::getRootContext() { - return _qmlEngine->rootContext(); +QQmlContext* OffscreenQmlSurface::getSurfaceContext() { + return _qmlContext; } Q_DECLARE_METATYPE(std::function); diff --git a/libraries/gl/src/gl/OffscreenQmlSurface.h b/libraries/gl/src/gl/OffscreenQmlSurface.h index efd35fce8b..2a078d2b4f 100644 --- a/libraries/gl/src/gl/OffscreenQmlSurface.h +++ b/libraries/gl/src/gl/OffscreenQmlSurface.h @@ -73,7 +73,7 @@ public: QQuickItem* getRootItem(); QQuickWindow* getWindow(); QObject* getEventHandler(); - QQmlContext* getRootContext(); + QQmlContext* getSurfaceContext(); QPointF mapToVirtualScreen(const QPointF& originalPoint, QObject* originalWidget); bool eventFilter(QObject* originalDestination, QEvent* event) override; @@ -133,11 +133,10 @@ private slots: private: QQuickWindow* _quickWindow { nullptr }; QMyQuickRenderControl* _renderControl{ nullptr }; - QQmlEngine* _qmlEngine { nullptr }; + QQmlContext* _qmlContext { nullptr }; QQmlComponent* _qmlComponent { nullptr }; QQuickItem* _rootItem { nullptr }; OffscreenGLCanvas* _canvas { nullptr }; - QJsonObject _glData; QTimer _updateTimer; uint32_t _fbo { 0 }; diff --git a/libraries/gl/src/gl/OffscreenQmlSurfaceCache.cpp b/libraries/gl/src/gl/OffscreenQmlSurfaceCache.cpp index ad370a1f43..c047738e77 100644 --- a/libraries/gl/src/gl/OffscreenQmlSurfaceCache.cpp +++ b/libraries/gl/src/gl/OffscreenQmlSurfaceCache.cpp @@ -49,7 +49,6 @@ QSharedPointer OffscreenQmlSurfaceCache::buildSurface(const surface->create(currentContext); surface->setBaseUrl(QUrl::fromLocalFile(PathUtils::resourcesPath() + "/qml/")); surface->load(rootSource); - surface->getRootContext()->setContextProperty("ApplicationInterface", qApp); surface->resize(QSize(100, 100)); currentContext->makeCurrent(currentSurface); return surface; diff --git a/libraries/networking/CMakeLists.txt b/libraries/networking/CMakeLists.txt index 288e98d5a5..ff9a05b959 100644 --- a/libraries/networking/CMakeLists.txt +++ b/libraries/networking/CMakeLists.txt @@ -1,5 +1,5 @@ set(TARGET_NAME networking) -setup_hifi_library(Network) +setup_hifi_library(Network WebEngine) link_hifi_libraries(shared) target_include_directories(${TARGET_NAME} PRIVATE "${CMAKE_BINARY_DIR}/includes") diff --git a/interface/src/networking/FileTypeProfile.cpp b/libraries/networking/src/FileTypeProfile.cpp similarity index 100% rename from interface/src/networking/FileTypeProfile.cpp rename to libraries/networking/src/FileTypeProfile.cpp diff --git a/interface/src/networking/FileTypeProfile.h b/libraries/networking/src/FileTypeProfile.h similarity index 100% rename from interface/src/networking/FileTypeProfile.h rename to libraries/networking/src/FileTypeProfile.h diff --git a/interface/src/networking/FileTypeRequestInterceptor.cpp b/libraries/networking/src/FileTypeRequestInterceptor.cpp similarity index 100% rename from interface/src/networking/FileTypeRequestInterceptor.cpp rename to libraries/networking/src/FileTypeRequestInterceptor.cpp diff --git a/interface/src/networking/FileTypeRequestInterceptor.h b/libraries/networking/src/FileTypeRequestInterceptor.h similarity index 100% rename from interface/src/networking/FileTypeRequestInterceptor.h rename to libraries/networking/src/FileTypeRequestInterceptor.h diff --git a/interface/src/networking/HFTabletWebEngineProfile.cpp b/libraries/networking/src/HFTabletWebEngineProfile.cpp similarity index 95% rename from interface/src/networking/HFTabletWebEngineProfile.cpp rename to libraries/networking/src/HFTabletWebEngineProfile.cpp index 46634299bb..a3e3906497 100644 --- a/interface/src/networking/HFTabletWebEngineProfile.cpp +++ b/libraries/networking/src/HFTabletWebEngineProfile.cpp @@ -19,6 +19,7 @@ HFTabletWebEngineProfile::HFTabletWebEngineProfile(QObject* parent) : QQuickWebE static const QString WEB_ENGINE_USER_AGENT = "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Mobile Safari/537.36"; setHttpUserAgent(WEB_ENGINE_USER_AGENT); + setStorageName(QML_WEB_ENGINE_NAME); auto requestInterceptor = new HFTabletWebEngineRequestInterceptor(this); setRequestInterceptor(requestInterceptor); diff --git a/interface/src/networking/HFTabletWebEngineProfile.h b/libraries/networking/src/HFTabletWebEngineProfile.h similarity index 100% rename from interface/src/networking/HFTabletWebEngineProfile.h rename to libraries/networking/src/HFTabletWebEngineProfile.h diff --git a/interface/src/networking/HFTabletWebEngineRequestInterceptor.cpp b/libraries/networking/src/HFTabletWebEngineRequestInterceptor.cpp similarity index 98% rename from interface/src/networking/HFTabletWebEngineRequestInterceptor.cpp rename to libraries/networking/src/HFTabletWebEngineRequestInterceptor.cpp index fd79fc1cb6..6ee8589615 100644 --- a/interface/src/networking/HFTabletWebEngineRequestInterceptor.cpp +++ b/libraries/networking/src/HFTabletWebEngineRequestInterceptor.cpp @@ -11,7 +11,7 @@ #include "HFTabletWebEngineRequestInterceptor.h" #include -#include +#include "AccountManager.h" bool isTabletAuthableHighFidelityURL(const QUrl& url) { static const QStringList HF_HOSTS = { diff --git a/interface/src/networking/HFTabletWebEngineRequestInterceptor.h b/libraries/networking/src/HFTabletWebEngineRequestInterceptor.h similarity index 100% rename from interface/src/networking/HFTabletWebEngineRequestInterceptor.h rename to libraries/networking/src/HFTabletWebEngineRequestInterceptor.h diff --git a/interface/src/networking/HFWebEngineProfile.cpp b/libraries/networking/src/HFWebEngineProfile.cpp similarity index 94% rename from interface/src/networking/HFWebEngineProfile.cpp rename to libraries/networking/src/HFWebEngineProfile.cpp index 6b377fa900..a69d4d653b 100644 --- a/interface/src/networking/HFWebEngineProfile.cpp +++ b/libraries/networking/src/HFWebEngineProfile.cpp @@ -20,6 +20,7 @@ HFWebEngineProfile::HFWebEngineProfile(QObject* parent) : { static const QString WEB_ENGINE_USER_AGENT = "Chrome/48.0 (HighFidelityInterface)"; setHttpUserAgent(WEB_ENGINE_USER_AGENT); + setStorageName(QML_WEB_ENGINE_STORAGE_NAME); // we use the HFWebEngineRequestInterceptor to make sure that web requests are authenticated for the interface user auto requestInterceptor = new HFWebEngineRequestInterceptor(this); diff --git a/interface/src/networking/HFWebEngineProfile.h b/libraries/networking/src/HFWebEngineProfile.h similarity index 100% rename from interface/src/networking/HFWebEngineProfile.h rename to libraries/networking/src/HFWebEngineProfile.h diff --git a/interface/src/networking/HFWebEngineRequestInterceptor.cpp b/libraries/networking/src/HFWebEngineRequestInterceptor.cpp similarity index 95% rename from interface/src/networking/HFWebEngineRequestInterceptor.cpp rename to libraries/networking/src/HFWebEngineRequestInterceptor.cpp index 59897d427f..eaf0de7245 100644 --- a/interface/src/networking/HFWebEngineRequestInterceptor.cpp +++ b/libraries/networking/src/HFWebEngineRequestInterceptor.cpp @@ -13,7 +13,7 @@ #include -#include +#include "AccountManager.h" #include "RequestFilters.h" void HFWebEngineRequestInterceptor::interceptRequest(QWebEngineUrlRequestInfo& info) { diff --git a/interface/src/networking/HFWebEngineRequestInterceptor.h b/libraries/networking/src/HFWebEngineRequestInterceptor.h similarity index 100% rename from interface/src/networking/HFWebEngineRequestInterceptor.h rename to libraries/networking/src/HFWebEngineRequestInterceptor.h diff --git a/interface/src/networking/RequestFilters.cpp b/libraries/networking/src/RequestFilters.cpp similarity index 98% rename from interface/src/networking/RequestFilters.cpp rename to libraries/networking/src/RequestFilters.cpp index fedde94f15..3e72b8a8bd 100644 --- a/interface/src/networking/RequestFilters.cpp +++ b/libraries/networking/src/RequestFilters.cpp @@ -14,7 +14,7 @@ #include -#include +#include "AccountManager.h" namespace { diff --git a/interface/src/networking/RequestFilters.h b/libraries/networking/src/RequestFilters.h similarity index 100% rename from interface/src/networking/RequestFilters.h rename to libraries/networking/src/RequestFilters.h diff --git a/libraries/ui/src/OffscreenUi.cpp b/libraries/ui/src/OffscreenUi.cpp index 84812b4f60..a80105293b 100644 --- a/libraries/ui/src/OffscreenUi.cpp +++ b/libraries/ui/src/OffscreenUi.cpp @@ -91,14 +91,14 @@ QObject* OffscreenUi::getFlags() { void OffscreenUi::create(QOpenGLContext* context) { OffscreenQmlSurface::create(context); - auto rootContext = getRootContext(); + auto myContext = getSurfaceContext(); - rootContext->setContextProperty("OffscreenUi", this); - rootContext->setContextProperty("offscreenFlags", offscreenFlags = new OffscreenFlags()); - rootContext->setContextProperty("fileDialogHelper", new FileDialogHelper()); + myContext->setContextProperty("OffscreenUi", this); + myContext->setContextProperty("offscreenFlags", offscreenFlags = new OffscreenFlags()); + myContext->setContextProperty("fileDialogHelper", new FileDialogHelper()); auto tabletScriptingInterface = DependencyManager::get(); TabletProxy* tablet = tabletScriptingInterface->getTablet("com.highfidelity.interface.tablet.system"); - rootContext->engine()->setObjectOwnership(tablet, QQmlEngine::CppOwnership); + myContext->engine()->setObjectOwnership(tablet, QQmlEngine::CppOwnership); } void OffscreenUi::show(const QUrl& url, const QString& name, std::function f) { @@ -547,14 +547,14 @@ void OffscreenUi::createDesktop(const QUrl& url) { } #ifdef DEBUG - getRootContext()->setContextProperty("DebugQML", QVariant(true)); + getSurfaceContext()->setContextProperty("DebugQML", QVariant(true)); #else - getRootContext()->setContextProperty("DebugQML", QVariant(false)); + getSurfaceContext()->setContextProperty("DebugQML", QVariant(false)); #endif _desktop = dynamic_cast(load(url)); Q_ASSERT(_desktop); - getRootContext()->setContextProperty("desktop", _desktop); + getSurfaceContext()->setContextProperty("desktop", _desktop); _toolWindow = _desktop->findChild("ToolWindow"); diff --git a/libraries/ui/src/VrMenu.cpp b/libraries/ui/src/VrMenu.cpp index 878514dd41..3959e950e9 100644 --- a/libraries/ui/src/VrMenu.cpp +++ b/libraries/ui/src/VrMenu.cpp @@ -115,7 +115,7 @@ private: VrMenu::VrMenu(OffscreenUi* parent) : QObject(parent) { _rootMenu = parent->getRootItem()->findChild("rootMenu"); - parent->getRootContext()->setContextProperty("rootMenu", _rootMenu); + parent->getSurfaceContext()->setContextProperty("rootMenu", _rootMenu); } QObject* VrMenu::findMenuObject(const QString& menuOption) { From 9fcc1e15b8bcbd65c8fd80f42e9c65f1f25332c1 Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Mon, 5 Jun 2017 15:52:47 -0700 Subject: [PATCH 285/357] remove some cruft --- .../avatars-renderer/src/avatars-renderer/Head.cpp | 12 ------------ .../avatars-renderer/src/avatars-renderer/Head.h | 3 --- libraries/avatars/src/HeadData.h | 3 --- 3 files changed, 18 deletions(-) diff --git a/libraries/avatars-renderer/src/avatars-renderer/Head.cpp b/libraries/avatars-renderer/src/avatars-renderer/Head.cpp index 96ecd86ff4..b8a559027b 100644 --- a/libraries/avatars-renderer/src/avatars-renderer/Head.cpp +++ b/libraries/avatars-renderer/src/avatars-renderer/Head.cpp @@ -304,18 +304,6 @@ glm::quat Head::getEyeRotation(const glm::vec3& eyePosition) const { return rotationBetween(orientation * IDENTITY_FORWARD, lookAtDelta + glm::length(lookAtDelta) * _saccade) * orientation; } -void Head::setFinalPitch(float finalPitch) { - _deltaPitch = glm::clamp(finalPitch, MIN_HEAD_PITCH, MAX_HEAD_PITCH) - _basePitch; -} - -void Head::setFinalYaw(float finalYaw) { - _deltaYaw = glm::clamp(finalYaw, MIN_HEAD_YAW, MAX_HEAD_YAW) - _baseYaw; -} - -void Head::setFinalRoll(float finalRoll) { - _deltaRoll = glm::clamp(finalRoll, MIN_HEAD_ROLL, MAX_HEAD_ROLL) - _baseRoll; -} - float Head::getFinalYaw() const { return glm::clamp(_baseYaw + _deltaYaw, MIN_HEAD_YAW, MAX_HEAD_YAW); } diff --git a/libraries/avatars-renderer/src/avatars-renderer/Head.h b/libraries/avatars-renderer/src/avatars-renderer/Head.h index c5902285b9..e3c8d7d2b5 100644 --- a/libraries/avatars-renderer/src/avatars-renderer/Head.h +++ b/libraries/avatars-renderer/src/avatars-renderer/Head.h @@ -71,9 +71,6 @@ public: void setDeltaRoll(float roll) { _deltaRoll = roll; } float getDeltaRoll() const { return _deltaRoll; } - virtual void setFinalYaw(float finalYaw) override; - virtual void setFinalPitch(float finalPitch) override; - virtual void setFinalRoll(float finalRoll) override; virtual float getFinalPitch() const override; virtual float getFinalYaw() const override; virtual float getFinalRoll() const override; diff --git a/libraries/avatars/src/HeadData.h b/libraries/avatars/src/HeadData.h index 0bb38c1dad..c15714bd73 100644 --- a/libraries/avatars/src/HeadData.h +++ b/libraries/avatars/src/HeadData.h @@ -45,9 +45,6 @@ public: float getBaseRoll() const { return _baseRoll; } void setBaseRoll(float roll) { _baseRoll = glm::clamp(roll, MIN_HEAD_ROLL, MAX_HEAD_ROLL); } - virtual void setFinalYaw(float finalYaw) { _baseYaw = finalYaw; } - virtual void setFinalPitch(float finalPitch) { _basePitch = finalPitch; } - virtual void setFinalRoll(float finalRoll) { _baseRoll = finalRoll; } virtual float getFinalYaw() const { return _baseYaw; } virtual float getFinalPitch() const { return _basePitch; } virtual float getFinalRoll() const { return _baseRoll; } From 7a276f027fb7e2c957b8b3caf188cb5275606eb3 Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Mon, 5 Jun 2017 15:53:01 -0700 Subject: [PATCH 286/357] fix orientation used for 3d audio --- interface/src/avatar/MyAvatar.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index 64914a7ec1..158e55ab5c 100755 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -1893,7 +1893,7 @@ void MyAvatar::updateOrientation(float deltaTime) { auto headPose = getHeadControllerPoseInAvatarFrame(); if (headPose.isValid()) { - glm::quat localOrientation = headPose.rotation; + glm::quat localOrientation = headPose.rotation * Quaternions::Y_180; // these angles will be in radians // ... so they need to be converted to degrees before we do math... glm::vec3 euler = glm::eulerAngles(localOrientation) * DEGREES_PER_RADIAN; From 9248715b2153dcef9029021f42d014a6265ddf1a Mon Sep 17 00:00:00 2001 From: Liv Date: Mon, 5 Jun 2017 17:37:32 -0700 Subject: [PATCH 287/357] Fixing z-index for Shape drop down --- scripts/system/html/css/edit-style.css | 3 ++- scripts/system/html/css/jsoneditor.css | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/scripts/system/html/css/edit-style.css b/scripts/system/html/css/edit-style.css index fcb1815ca4..2d5a6e987f 100644 --- a/scripts/system/html/css/edit-style.css +++ b/scripts/system/html/css/edit-style.css @@ -657,7 +657,8 @@ hr { font-family: FiraSans-SemiBold; font-size: 15px; color: #404040; - background-color: #afafaf + background-color: #afafaf; + z-index: 999; } .dropdown li:hover { background-color: #00b4ef; diff --git a/scripts/system/html/css/jsoneditor.css b/scripts/system/html/css/jsoneditor.css index 4d63380a62..ce83b45ff3 100644 --- a/scripts/system/html/css/jsoneditor.css +++ b/scripts/system/html/css/jsoneditor.css @@ -503,7 +503,7 @@ div.jsoneditor-contextmenu-root { div.jsoneditor-contextmenu { position: absolute; box-sizing: content-box; - z-index: 99999; + z-index: 998; } div.jsoneditor-contextmenu ul, From 393aa84a554618be86c082259bc6e4c90d9d7425 Mon Sep 17 00:00:00 2001 From: Liv Date: Mon, 5 Jun 2017 17:45:52 -0700 Subject: [PATCH 288/357] Renaming conical to isConical --- libraries/render-utils/src/GeometryCache.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/libraries/render-utils/src/GeometryCache.cpp b/libraries/render-utils/src/GeometryCache.cpp index 53a10be218..2727b77846 100644 --- a/libraries/render-utils/src/GeometryCache.cpp +++ b/libraries/render-utils/src/GeometryCache.cpp @@ -256,7 +256,7 @@ void setupSmoothShape(GeometryCache::ShapeData& shapeData, const geometry::Solid } template -void extrudePolygon(GeometryCache::ShapeData& shapeData, gpu::BufferPointer& vertexBuffer, gpu::BufferPointer& indexBuffer, bool conical=false) { +void extrudePolygon(GeometryCache::ShapeData& shapeData, gpu::BufferPointer& vertexBuffer, gpu::BufferPointer& indexBuffer, bool isConical=false) { using namespace geometry; Index baseVertex = (Index)(vertexBuffer->getSize() / SHAPE_VERTEX_STRIDE); VertexVector vertices; @@ -264,7 +264,7 @@ void extrudePolygon(GeometryCache::ShapeData& shapeData, gpu::BufferPointer& ver // Top (if not conical) and bottom faces std::vector shape = polygon(); - if (conical) { + if (isConical) { for (const vec3& v : shape) { vertices.push_back(vec3(0, 0.5f, 0)); vertices.push_back(vec3(0, 1, 0)); @@ -302,8 +302,8 @@ void extrudePolygon(GeometryCache::ShapeData& shapeData, gpu::BufferPointer& ver vec3 left = shape[i]; vec3 right = shape[(i + 1) % N]; vec3 normal = glm::normalize(left + right); - vec3 topLeft = (conical ? vec3(0.0, 0.5f, 0.0) : vec3(left.x, 0.5f, left.z)); - vec3 topRight = (conical? vec3(0.0, 0.5f, 0.0) : vec3(right.x, 0.5f, right.z)); + vec3 topLeft = (isConical ? vec3(0.0, 0.5f, 0.0) : vec3(left.x, 0.5f, left.z)); + vec3 topRight = (isConical? vec3(0.0, 0.5f, 0.0) : vec3(right.x, 0.5f, right.z)); vec3 bottomLeft = vec3(left.x, -0.5f, left.z); vec3 bottomRight = vec3(right.x, -0.5f, right.z); From 42cb2332d587599e31cf30ad519ea07d56fbf432 Mon Sep 17 00:00:00 2001 From: Liv Date: Mon, 5 Jun 2017 17:46:13 -0700 Subject: [PATCH 289/357] Remove unimplemented comment on circle --- libraries/render-utils/src/GeometryCache.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/libraries/render-utils/src/GeometryCache.cpp b/libraries/render-utils/src/GeometryCache.cpp index 2727b77846..bfc85ab2bf 100644 --- a/libraries/render-utils/src/GeometryCache.cpp +++ b/libraries/render-utils/src/GeometryCache.cpp @@ -422,7 +422,6 @@ void GeometryCache::buildShapes() { drawCircle(_shapes[Circle], _shapeVertices, _shapeIndices); // Not implememented yet: //Quad, - //Circle, //Torus, } From 5579c409e77f4034e13cbb85c6d5083bc9dc97bf Mon Sep 17 00:00:00 2001 From: Liv Date: Mon, 5 Jun 2017 18:03:10 -0700 Subject: [PATCH 290/357] Style fix --- libraries/render-utils/src/GeometryCache.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/render-utils/src/GeometryCache.cpp b/libraries/render-utils/src/GeometryCache.cpp index bfc85ab2bf..32621e2606 100644 --- a/libraries/render-utils/src/GeometryCache.cpp +++ b/libraries/render-utils/src/GeometryCache.cpp @@ -256,7 +256,7 @@ void setupSmoothShape(GeometryCache::ShapeData& shapeData, const geometry::Solid } template -void extrudePolygon(GeometryCache::ShapeData& shapeData, gpu::BufferPointer& vertexBuffer, gpu::BufferPointer& indexBuffer, bool isConical=false) { +void extrudePolygon(GeometryCache::ShapeData& shapeData, gpu::BufferPointer& vertexBuffer, gpu::BufferPointer& indexBuffer, bool isConical = false) { using namespace geometry; Index baseVertex = (Index)(vertexBuffer->getSize() / SHAPE_VERTEX_STRIDE); VertexVector vertices; From 5cb1918b807bedd1b8f6e7634ec50b01dfadbbad Mon Sep 17 00:00:00 2001 From: David Rowe Date: Tue, 6 Jun 2017 13:26:16 +1200 Subject: [PATCH 291/357] Simplify code --- libraries/animation/src/Rig.cpp | 49 ++++++++++++--------------------- libraries/animation/src/Rig.h | 6 ++-- 2 files changed, 19 insertions(+), 36 deletions(-) diff --git a/libraries/animation/src/Rig.cpp b/libraries/animation/src/Rig.cpp index 0e48cd8bd1..6a53f6c0f2 100644 --- a/libraries/animation/src/Rig.cpp +++ b/libraries/animation/src/Rig.cpp @@ -28,6 +28,7 @@ #include "AnimClip.h" #include "AnimInverseKinematics.h" #include "AnimSkeleton.h" +#include "AnimUtil.h" #include "IKTarget.h" static bool isEqual(const glm::vec3& u, const glm::vec3& v) { @@ -1189,8 +1190,7 @@ void Rig::updateFromHandAndFeetParameters(const HandAndFeetParameters& params, f _animVars.set("leftHandType", (int)IKTarget::Type::RotationAndPosition); _isLeftHandControlled = true; - _lastLeftHandControlledPosition = handPosition; - _lastLeftHandControlledOrientation = params.leftOrientation; + _lastLeftHandControlledPose = AnimPose(glm::vec3(1.0f), params.leftOrientation, handPosition); } else { if (_isLeftHandControlled) { _leftHandRelaxDuration = RELAX_DURATION; @@ -1200,22 +1200,15 @@ void Rig::updateFromHandAndFeetParameters(const HandAndFeetParameters& params, f if (_leftHandRelaxDuration > 0) { // Move hand from controlled position to non-controlled position. _leftHandRelaxDuration = std::max(_leftHandRelaxDuration - dt, 0.0f); - auto ikNode = getAnimInverseKinematicsNode(); if (ikNode) { - float alpha = _leftHandRelaxDuration / RELAX_DURATION; - auto uncontrolledHandPose = ikNode->getUncontrolledLeftHandPose(); - auto uncontrolledHipsPose = ikNode->getUncontrolledHipPose(); - - glm::vec3 relaxedPosition = _geometryOffset * (uncontrolledHandPose.trans() - uncontrolledHipsPose.trans()); - glm::vec3 handPosition = alpha * _lastLeftHandControlledPosition + (1.0f - alpha) * relaxedPosition; - - const AnimPose geometryToRigPose(_geometryToRigTransform); - glm::quat handOrientation = geometryToRigPose.rot() * uncontrolledHandPose.rot(); - handOrientation = slerp(handOrientation, _lastLeftHandControlledOrientation, alpha); - - _animVars.set("leftHandPosition", handPosition); - _animVars.set("leftHandRotation", handOrientation); + float alpha = 1.0f - _leftHandRelaxDuration / RELAX_DURATION; + const AnimPose geometryToRigTransform(_geometryToRigTransform); + AnimPose uncontrolledHandPose = geometryToRigTransform * ikNode->getUncontrolledLeftHandPose(); + AnimPose handPose; + ::blend(1, &_lastLeftHandControlledPose, &uncontrolledHandPose, alpha, &handPose); + _animVars.set("leftHandPosition", handPose.trans()); + _animVars.set("leftHandRotation", handPose.rot()); _animVars.set("leftHandType", (int)IKTarget::Type::RotationAndPosition); } } else { @@ -1240,8 +1233,7 @@ void Rig::updateFromHandAndFeetParameters(const HandAndFeetParameters& params, f _animVars.set("rightHandType", (int)IKTarget::Type::RotationAndPosition); _isRightHandControlled = true; - _lastRightHandControlledPosition = handPosition; - _lastRightHandControlledOrientation = params.rightOrientation; + _lastRightHandControlledPose = AnimPose(glm::vec3(1.0f), params.rightOrientation, handPosition); } else { if (_isRightHandControlled) { _rightHandRelaxDuration = RELAX_DURATION; @@ -1251,22 +1243,15 @@ void Rig::updateFromHandAndFeetParameters(const HandAndFeetParameters& params, f if (_rightHandRelaxDuration > 0) { // Move hand from controlled position to non-controlled position. _rightHandRelaxDuration = std::max(_rightHandRelaxDuration - dt, 0.0f); - auto ikNode = getAnimInverseKinematicsNode(); if (ikNode) { - float alpha = _rightHandRelaxDuration / RELAX_DURATION; - auto uncontrolledHandPose = ikNode->getUncontrolledRightHandPose(); - auto uncontrolledHipsPose = ikNode->getUncontrolledHipPose(); - - glm::vec3 relaxedPosition = _geometryOffset * (uncontrolledHandPose.trans() - uncontrolledHipsPose.trans()); - glm::vec3 handPosition = alpha * _lastRightHandControlledPosition + (1.0f - alpha) * relaxedPosition; - - const AnimPose geometryToRigPose(_geometryToRigTransform); - glm::quat handOrientation = geometryToRigPose.rot() * uncontrolledHandPose.rot(); - handOrientation = slerp(handOrientation, _lastRightHandControlledOrientation, alpha); - - _animVars.set("rightHandPosition", handPosition); - _animVars.set("rightHandRotation", handOrientation); + float alpha = 1.0f - _rightHandRelaxDuration / RELAX_DURATION; + const AnimPose geometryToRigTransform(_geometryToRigTransform); + AnimPose uncontrolledHandPose = geometryToRigTransform * ikNode->getUncontrolledRightHandPose(); + AnimPose handPose; + ::blend(1, &_lastRightHandControlledPose, &uncontrolledHandPose, alpha, &handPose); + _animVars.set("rightHandPosition", handPose.trans()); + _animVars.set("rightHandRotation", handPose.rot()); _animVars.set("rightHandType", (int)IKTarget::Type::RotationAndPosition); } } else { diff --git a/libraries/animation/src/Rig.h b/libraries/animation/src/Rig.h index 1c7e40a04a..0911f330f0 100644 --- a/libraries/animation/src/Rig.h +++ b/libraries/animation/src/Rig.h @@ -360,10 +360,8 @@ private: bool _isRightHandControlled { false }; float _leftHandRelaxDuration { 0.0f }; float _rightHandRelaxDuration { 0.0f }; - glm::vec3 _lastLeftHandControlledPosition; - glm::vec3 _lastRightHandControlledPosition; - glm::quat _lastLeftHandControlledOrientation; - glm::quat _lastRightHandControlledOrientation; + AnimPose _lastLeftHandControlledPose; + AnimPose _lastRightHandControlledPose; }; #endif /* defined(__hifi__Rig__) */ From 3de243b093dd370fb2fdf00909bbb3f603590f32 Mon Sep 17 00:00:00 2001 From: Howard Stearns Date: Mon, 5 Jun 2017 18:48:11 -0700 Subject: [PATCH 292/357] Include the radius of the sphere at the avatar's feet. --- interface/src/avatar/MyAvatar.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index 0370acaf05..a79aa2a50d 100755 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -294,7 +294,7 @@ void MyAvatar::simulateAttachments(float deltaTime) { QByteArray MyAvatar::toByteArrayStateful(AvatarDataDetail dataDetail) { CameraMode mode = qApp->getCamera().getMode(); _globalPosition = getPosition(); - // This might not be right! Isn't the capsule local offset in avatar space? -HR 5/26/17 + // This might not be right! Isn't the capsule local offset in avatar space, and don't we need to add the radius to the y as well? -HRS 5/26/17 _globalBoundingBoxDimensions.x = _characterController.getCapsuleRadius(); _globalBoundingBoxDimensions.y = _characterController.getCapsuleHalfHeight(); _globalBoundingBoxDimensions.z = _characterController.getCapsuleRadius(); @@ -456,7 +456,7 @@ void MyAvatar::update(float deltaTime) { setAudioAverageLoudness(audio->getAudioAverageInputLoudness()); glm::vec3 halfBoundingBoxDimensions(_characterController.getCapsuleRadius(), _characterController.getCapsuleHalfHeight(), _characterController.getCapsuleRadius()); - // This might not be right! Isn't the capsule local offset in avatar space? -HR 5/26/17 + // This might not be right! Isn't the capsule local offset in avatar space? -HRS 5/26/17 halfBoundingBoxDimensions += _characterController.getCapsuleLocalOffset(); QMetaObject::invokeMethod(audio.data(), "setAvatarBoundingBoxParameters", Q_ARG(glm::vec3, (getPosition() - halfBoundingBoxDimensions)), @@ -2271,7 +2271,7 @@ bool MyAvatar::safeLanding(const glm::vec3& position) { // If position is not reliably safe from being stuck by physics, answer true and place a candidate better position in betterPositionOut. bool MyAvatar::requiresSafeLanding(const glm::vec3& positionIn, glm::vec3& betterPositionOut) { // We begin with utilities and tests. The Algorithm in four parts is below. - auto halfHeight = _characterController.getCapsuleHalfHeight(); + auto halfHeight = _characterController.getCapsuleHalfHeight() + _characterController.getCapsuleRadius(); if (halfHeight == 0) { return false; // zero height avatar } From b729707ce78368e6f5a742fa0cd31a83009a1893 Mon Sep 17 00:00:00 2001 From: seefo Date: Tue, 6 Jun 2017 09:10:25 -0700 Subject: [PATCH 293/357] Removed old comments in SnapshotReview.js --- scripts/system/html/js/SnapshotReview.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/scripts/system/html/js/SnapshotReview.js b/scripts/system/html/js/SnapshotReview.js index 28e16f2485..7a5f119037 100644 --- a/scripts/system/html/js/SnapshotReview.js +++ b/scripts/system/html/js/SnapshotReview.js @@ -761,9 +761,6 @@ function printToPolaroid() { type: "snapshot", action: "printToPolaroid" })); - //shareBarHelp.innerHTML = "Printed" - //shareBarHelp.style.backgroundColor = "#000000"; - //shareBarHelp.style.opacity = "0.5"; } else { setPrintButtonLoading(); } From 90d241ca3c643ff5d0adec8afc5dbd4de83200b6 Mon Sep 17 00:00:00 2001 From: "Anthony J. Thibault" Date: Tue, 6 Jun 2017 09:10:46 -0700 Subject: [PATCH 294/357] Account for avatar scale --- scripts/system/controllers/teleport.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/system/controllers/teleport.js b/scripts/system/controllers/teleport.js index d6248fc6e0..b058ec670f 100644 --- a/scripts/system/controllers/teleport.js +++ b/scripts/system/controllers/teleport.js @@ -383,7 +383,7 @@ function getAvatarFootOffset() { // default vertical offset from foot to avatar root. return -MyAvatar.getAbsoluteDefaultJointTranslationInObjectFrame(footJointIndex).y; } else { - return DEFAULT_ROOT_TO_FOOT_OFFSET; + return DEFAULT_ROOT_TO_FOOT_OFFSET * MyAvatar.scale; } } From 8166fec0e04267dc2106eb198c9624cd0bf02c6d Mon Sep 17 00:00:00 2001 From: Chris Howe <1P-Cusack@1stplayable.com> Date: Tue, 6 Jun 2017 12:11:57 -0400 Subject: [PATCH 295/357] Minor changes based on code review feedback See https://worklist.net/21317, https://github.com/highfidelity/hifi/pull/10609 and https://github.com/highfidelity/hifi/pull/10609#pullrequestreview-42090197 --- interface/src/avatar/MyAvatar.cpp | 148 +++++++++++------------------- interface/src/avatar/MyAvatar.h | 18 ++-- scripts/avatarToWorldTests.js | 64 ++++++------- scripts/worldToAvatarTests.js | 58 ++++++------ 4 files changed, 124 insertions(+), 164 deletions(-) diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index a24a737301..7a9864a737 100755 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -773,114 +773,78 @@ controller::Pose MyAvatar::getRightHandTipPose() const { return pose; } +glm::vec3 MyAvatar::worldToJointPoint(const glm::vec3& position, const int jointIndex) const { + glm::vec3 jointPos = getPosition();//default value if no or invalid joint specified + glm::quat jointRot = getRotation();//default value if no or invalid joint specified + if (jointIndex != -1) { + if (_skeletonModel->getJointPositionInWorldFrame(jointIndex, jointPos)) { + _skeletonModel->getJointRotationInWorldFrame(jointIndex, jointRot); + } + else { + qWarning() << "Invalid joint index specified: " << jointIndex; + } + } + glm::vec3 modelOffset = position - jointPos; + glm::vec3 jointSpacePosition = glm::inverse(jointRot) * modelOffset; -//////////////////////////////////////////////////////////////////////////////////////////// -//////////////////////////////////////////////////////////////////////////////////////////// -//:1P: conversion functions for world-space to avatar-space or vice versa -glm::vec3 MyAvatar::worldToAvatarPoint(const glm::vec3& position, const int jointIndex) const -{ - glm::vec3 jointPos = getPosition();//default value if no or invalid joint specified - glm::quat jointRot = getRotation();//default value if no or invalid joint specified - if (jointIndex != -1) - { - if (!_skeletonModel->getJointPositionInWorldFrame(jointIndex, jointPos)) - { - qWarning() << "Invalid joint index specified: " << jointIndex; - } - if (!_skeletonModel->getJointRotationInWorldFrame(jointIndex, jointRot)) - { - qWarning() << "Invalid joint index specified: " << jointIndex; - } - } - glm::vec3 modelOffset = position - jointPos; - glm::vec3 modelPosition = glm::inverse(jointRot) * modelOffset; - - return modelPosition; + return jointSpacePosition; } -glm::vec3 MyAvatar::worldToAvatarDirection(const glm::vec3& worldDir, const int jointIndex) const -{ - glm::quat jointRot = getRotation();//default value if no or invalid joint specified - if (jointIndex != -1) - { - if (!_skeletonModel->getJointRotationInWorldFrame(jointIndex, jointRot)) - { - qWarning() << "Invalid joint index specified: " << jointIndex; - } - } +glm::vec3 MyAvatar::worldToJointDirection(const glm::vec3& worldDir, const int jointIndex) const { + glm::quat jointRot = getRotation();//default value if no or invalid joint specified + if ((jointIndex != -1) && (!_skeletonModel->getJointRotationInWorldFrame(jointIndex, jointRot))) { + qWarning() << "Invalid joint index specified: " << jointIndex; + } - glm::vec3 avatarDir = glm::inverse(jointRot) * worldDir; - return avatarDir; + glm::vec3 jointSpaceDir = glm::inverse(jointRot) * worldDir; + return jointSpaceDir; } -glm::quat MyAvatar::worldToAvatarRotation(const glm::quat& worldRot, const int jointIndex) const -{ - glm::quat jointRot = getRotation();//default value if no or invalid joint specified - if (jointIndex != -1) - { - if (!_skeletonModel->getJointRotationInWorldFrame(jointIndex, jointRot)) - { - qWarning() << "Invalid joint index specified: " << jointIndex; - } - } - glm::quat avatarRot = glm::inverse(jointRot) * worldRot; - return avatarRot; +glm::quat MyAvatar::worldToJointRotation(const glm::quat& worldRot, const int jointIndex) const { + glm::quat jointRot = getRotation();//default value if no or invalid joint specified + if ((jointIndex != -1) && (!_skeletonModel->getJointRotationInWorldFrame(jointIndex, jointRot))) { + qWarning() << "Invalid joint index specified: " << jointIndex; + } + glm::quat jointSpaceRot = glm::inverse(jointRot) * worldRot; + return jointSpaceRot; } -glm::vec3 MyAvatar::avatarToWorldPoint(const glm::vec3& avatarPos, const int jointIndex) const -{ - glm::vec3 jointPos = getPosition();//default value if no or invalid joint specified - glm::quat jointRot = getRotation();//default value if no or invalid joint specified +glm::vec3 MyAvatar::jointToWorldPoint(const glm::vec3& jointSpacePos, const int jointIndex) const { + glm::vec3 jointPos = getPosition();//default value if no or invalid joint specified + glm::quat jointRot = getRotation();//default value if no or invalid joint specified - if (jointIndex != -1) - { - if (!_skeletonModel->getJointPositionInWorldFrame(jointIndex, jointPos)) - { - qWarning() << "Invalid joint index specified: " << jointIndex; - } - if (!_skeletonModel->getJointRotationInWorldFrame(jointIndex, jointRot)) - { - qWarning() << "Invalid joint index specified: " << jointIndex; - } - } + if (jointIndex != -1) { + if (_skeletonModel->getJointPositionInWorldFrame(jointIndex, jointPos)) { + _skeletonModel->getJointRotationInWorldFrame(jointIndex, jointRot); + } + else { + qWarning() << "Invalid joint index specified: " << jointIndex; + } + } - glm::vec3 worldOffset = jointRot * avatarPos; - glm::vec3 worldPos = jointPos + worldOffset; + glm::vec3 worldOffset = jointRot * jointSpacePos; + glm::vec3 worldPos = jointPos + worldOffset; - return worldPos; + return worldPos; } -glm::vec3 MyAvatar::avatarToWorldDirection(const glm::vec3& avatarDir, const int jointIndex) const -{ - glm::quat jointRot = getRotation();//default value if no or invalid joint specified - if (jointIndex != -1) - { - if (!_skeletonModel->getJointRotationInWorldFrame(jointIndex, jointRot)) - { - qWarning() << "Invalid joint index specified: " << jointIndex; - } - } - glm::vec3 worldDir = jointRot * avatarDir; - return worldDir; +glm::vec3 MyAvatar::jointToWorldDirection(const glm::vec3& jointSpaceDir, const int jointIndex) const { + glm::quat jointRot = getRotation();//default value if no or invalid joint specified + if ((jointIndex != -1) && (!_skeletonModel->getJointRotationInWorldFrame(jointIndex, jointRot))) { + qWarning() << "Invalid joint index specified: " << jointIndex; + } + glm::vec3 worldDir = jointRot * jointSpaceDir; + return worldDir; } -glm::quat MyAvatar::avatarToWorldRotation(const glm::quat& avatarRot, const int jointIndex) const -{ - glm::quat jointRot = getRotation();//default value if no or invalid joint specified - if (jointIndex != -1) - { - if (!_skeletonModel->getJointRotationInWorldFrame(jointIndex, jointRot)) - { - qWarning() << "Invalid joint index specified: " << jointIndex; - } - } - glm::quat worldRot = jointRot * avatarRot; - return worldRot; +glm::quat MyAvatar::jointToWorldRotation(const glm::quat& jointSpaceRot, const int jointIndex) const { + glm::quat jointRot = getRotation();//default value if no or invalid joint specified + if ((jointIndex != -1) && (!_skeletonModel->getJointRotationInWorldFrame(jointIndex, jointRot))) { + qWarning() << "Invalid joint index specified: " << jointIndex; + } + glm::quat worldRot = jointRot * jointSpaceRot; + return worldRot; } -//////////////////////////////////////////////////////////////////////////////////////////// -//////////////////////////////////////////////////////////////////////////////////////////// - - // virtual void MyAvatar::render(RenderArgs* renderArgs) { diff --git a/interface/src/avatar/MyAvatar.h b/interface/src/avatar/MyAvatar.h index a4c9f19316..b3e5f277b9 100644 --- a/interface/src/avatar/MyAvatar.h +++ b/interface/src/avatar/MyAvatar.h @@ -379,18 +379,14 @@ public: Q_INVOKABLE controller::Pose getLeftHandTipPose() const; Q_INVOKABLE controller::Pose getRightHandTipPose() const; - //////////////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////////////// - //:1P: world-space to avatar-space rigconversion functions - Q_INVOKABLE glm::vec3 worldToAvatarPoint(const glm::vec3& position, const int jointIndex = -1) const; - Q_INVOKABLE glm::vec3 worldToAvatarDirection(const glm::vec3& direction, const int jointIndex = -1) const; - Q_INVOKABLE glm::quat worldToAvatarRotation(const glm::quat& rotation, const int jointIndex = -1) const; + // world-space to avatar-space rigconversion functions + Q_INVOKABLE glm::vec3 worldToJointPoint(const glm::vec3& position, const int jointIndex = -1) const; + Q_INVOKABLE glm::vec3 worldToJointDirection(const glm::vec3& direction, const int jointIndex = -1) const; + Q_INVOKABLE glm::quat worldToJointRotation(const glm::quat& rotation, const int jointIndex = -1) const; - Q_INVOKABLE glm::vec3 avatarToWorldPoint(const glm::vec3& position, const int jointIndex = -1) const; - Q_INVOKABLE glm::vec3 avatarToWorldDirection(const glm::vec3& direction, const int jointIndex = -1) const; - Q_INVOKABLE glm::quat avatarToWorldRotation(const glm::quat& rotation, const int jointIndex = -1) const; - //////////////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////////////// + Q_INVOKABLE glm::vec3 jointToWorldPoint(const glm::vec3& position, const int jointIndex = -1) const; + Q_INVOKABLE glm::vec3 jointToWorldDirection(const glm::vec3& direction, const int jointIndex = -1) const; + Q_INVOKABLE glm::quat jointToWorldRotation(const glm::quat& rotation, const int jointIndex = -1) const; AvatarWeakPointer getLookAtTargetAvatar() const { return _lookAtTargetAvatar; } void updateLookAtTargetAvatar(); diff --git a/scripts/avatarToWorldTests.js b/scripts/avatarToWorldTests.js index 35e9cc59eb..c6e23fc81b 100644 --- a/scripts/avatarToWorldTests.js +++ b/scripts/avatarToWorldTests.js @@ -20,45 +20,45 @@ var debugBoxBaseProperties = { userData: "{ \"grabbableKey\": { \"grabbable\": false, \"kinematic\": false } }" }; -//avatarToWorldPoint +//jointToWorldPoint // create sphere for finger on left hand // each frame, calculate world position of finger, with some offset // update sphere to match this position -var avatarToWorldPointTest_sphereEntity; -function avatarToWorldPointTest() { +var jointToWorldPointTest_sphereEntity; +function jointToWorldPointTest() { var jointIndex = MyAvatar.getJointIndex("LeftHandPinky4"); var jointOffset_WorldSpace = { x: 0.1, y: 0, z: 0 }; - var worldPos = MyAvatar.avatarToWorldPoint(jointOffset_WorldSpace, jointIndex); + var worldPos = MyAvatar.jointToWorldPoint(jointOffset_WorldSpace, jointIndex); var jointSphereProps = Object.create(debugSphereBaseProperties); - jointSphereProps.name = "avatarToWorldPointTest_Sphere"; + jointSphereProps.name = "jointToWorldPointTest_Sphere"; jointSphereProps.color = { blue: 240, green: 150, red: 150 }; jointSphereProps.position = worldPos; - avatarToWorldPointTest_sphereEntity = Entities.addEntity(jointSphereProps); + jointToWorldPointTest_sphereEntity = Entities.addEntity(jointSphereProps); } -function avatarToWorldPointTest_update(deltaTime) { +function jointToWorldPointTest_update(deltaTime) { var jointIndex = MyAvatar.getJointIndex("LeftHandPinky4"); var jointOffset_WorldSpace = { x: 0.1, y: 0, z: 0 }; - var worldPos = MyAvatar.avatarToWorldPoint(jointOffset_WorldSpace, jointIndex); + var worldPos = MyAvatar.jointToWorldPoint(jointOffset_WorldSpace, jointIndex); var newProperties = { position: worldPos }; - Entities.editEntity(avatarToWorldPointTest_sphereEntity, newProperties); + Entities.editEntity(jointToWorldPointTest_sphereEntity, newProperties); } -//avatarToWorldDirection +//jointToWorldDirection // create line in world space // each frame calculate world space direction of players head z axis // update line to match -var avatarToWorldDirectionTest_lineEntity; -function avatarToWorldDirectionTest() { +var jointToWorldDirectionTest_lineEntity; +function jointToWorldDirectionTest() { var jointIndex = MyAvatar.getJointIndex("Head"); var avatarPos = MyAvatar.getJointPosition(jointIndex); var jointDir = { x: 1, y: 0, z: 1 }; - var worldDir = MyAvatar.avatarToWorldDirection(jointDir, jointIndex); + var worldDir = MyAvatar.jointToWorldDirection(jointDir, jointIndex); print(worldDir.x); print(worldDir.y); print(worldDir.z); - avatarToWorldDirectionTest_lineEntity = Entities.addEntity({ + jointToWorldDirectionTest_lineEntity = Entities.addEntity({ type: "Line", color: {red: 250, green: 0, blue: 0}, dimensions: {x: 5, y: 5, z: 5}, @@ -72,11 +72,11 @@ function avatarToWorldDirectionTest() { position : avatarPos, }); } -function avatarToWorldDirection_update(deltaTime) { +function jointToWorldDirection_update(deltaTime) { var jointIndex = MyAvatar.getJointIndex("Head"); var avatarPos = MyAvatar.getJointPosition(jointIndex); var jointDir = { x: 1, y: 0, z: 0 }; - var worldDir = MyAvatar.avatarToWorldDirection(jointDir, jointIndex); + var worldDir = MyAvatar.jointToWorldDirection(jointDir, jointIndex); var newProperties = { linePoints: [{ x: 0, @@ -87,41 +87,41 @@ function avatarToWorldDirection_update(deltaTime) { position : avatarPos }; - Entities.editEntity(avatarToWorldDirectionTest_lineEntity, newProperties); + Entities.editEntity(jointToWorldDirectionTest_lineEntity, newProperties); } -//avatarToWorldRotation +//jointToWorldRotation // create box in world space // each frame calculate world space rotation of players head // update box rotation to match -var avatarToWorldRotationTest_boxEntity; -function avatarToWorldRotationTest() { +var jointToWorldRotationTest_boxEntity; +function jointToWorldRotationTest() { var jointIndex = MyAvatar.getJointIndex("Head"); var jointPosition_WorldSpace = MyAvatar.getJointPosition(jointIndex); var jointRot = MyAvatar.getJointRotation(jointIndex); - var jointRot_WorldSpace = MyAvatar.avatarToWorldRotation(jointRot, jointIndex); + var jointRot_WorldSpace = MyAvatar.jointToWorldRotation(jointRot, jointIndex); var boxProps = Object.create(debugBoxBaseProperties); - boxProps.name = "avatarToWorldRotationTest_Box"; + boxProps.name = "jointToWorldRotationTest_Box"; boxProps.color = { blue: 250, green: 250, red: 250 }; boxProps.position = jointPosition_WorldSpace; boxProps.rotation = jointRot_WorldSpace; - avatarToWorldRotationTest_boxEntity = Entities.addEntity(boxProps); + jointToWorldRotationTest_boxEntity = Entities.addEntity(boxProps); } -function avatarToWorldRotationTest_update(deltaTime) { +function jointToWorldRotationTest_update(deltaTime) { var jointIndex = MyAvatar.getJointIndex("Head"); var jointPosition_WorldSpace = MyAvatar.getJointPosition(jointIndex); var jointRot = MyAvatar.getJointRotation(jointIndex); - var jointRot_WorldSpace = MyAvatar.avatarToWorldRotation(jointRot, jointIndex); + var jointRot_WorldSpace = MyAvatar.jointToWorldRotation(jointRot, jointIndex); var newProperties = { position: jointPosition_WorldSpace, rotation: jointRot_WorldSpace }; - Entities.editEntity(avatarToWorldRotationTest_boxEntity, newProperties); + Entities.editEntity(jointToWorldRotationTest_boxEntity, newProperties); } -avatarToWorldPointTest(); -Script.update.connect(avatarToWorldPointTest_update); +jointToWorldPointTest(); +Script.update.connect(jointToWorldPointTest_update); -avatarToWorldDirectionTest(); -Script.update.connect(avatarToWorldDirection_update); +jointToWorldDirectionTest(); +Script.update.connect(jointToWorldDirection_update); -avatarToWorldRotationTest(); -Script.update.connect(avatarToWorldRotationTest_update); +jointToWorldRotationTest(); +Script.update.connect(jointToWorldRotationTest_update); diff --git a/scripts/worldToAvatarTests.js b/scripts/worldToAvatarTests.js index d860517a22..6f0b19dc2d 100644 --- a/scripts/worldToAvatarTests.js +++ b/scripts/worldToAvatarTests.js @@ -20,22 +20,22 @@ var debugBoxBaseProperties = { userData: "{ \"grabbableKey\": { \"grabbable\": false, \"kinematic\": false } }" }; -//worldToAvatarPoint +//worldToJointPoint // calculate position offset from joint using getJointPosition -// pass through worldToAvatarPoint to get offset in joint space of players joint +// pass through worldToJointPoint to get offset in joint space of players joint // create a blue sphere and attach it to players joint using the joint space offset // The two spheres should appear in the same place, but the blue sphere will follow the avatar -function worldToAvatarPointTest() { +function worldToJointPointTest() { var jointIndex = MyAvatar.getJointIndex("LeftHandPinky4"); var avatarPos = MyAvatar.position; var jointPosition_WorldSpace = MyAvatar.getJointPosition(jointIndex); var jointOffset_WorldSpace = { x: 0.1, y: 0, z: 0 }; var jointPosition_WorldSpaceOffset = Vec3.sum(jointPosition_WorldSpace, jointOffset_WorldSpace); - var jointPosition_JointSpaceOffset = MyAvatar.worldToAvatarPoint(jointPosition_WorldSpaceOffset, jointIndex); + var jointPosition_JointSpaceOffset = MyAvatar.worldToJointPoint(jointPosition_WorldSpaceOffset, jointIndex); var jointSphereProps = Object.create(debugSphereBaseProperties); - jointSphereProps.name = "worldToAvatarPointTest_Joint"; + jointSphereProps.name = "worldToJointPointTest_Joint"; jointSphereProps.color = { blue: 240, green: 150, red: 150 }; jointSphereProps.localPosition = jointPosition_JointSpaceOffset; jointSphereProps.parentID = AVATAR_SELF_ID; @@ -43,29 +43,29 @@ function worldToAvatarPointTest() { Entities.addEntity(jointSphereProps); var worldSphereProps = Object.create(debugSphereBaseProperties); - worldSphereProps.name = "worldToAvatarPointTest_World"; + worldSphereProps.name = "worldToJointPointTest_World"; worldSphereProps.color = { blue: 150, green: 250, red: 150 }; worldSphereProps.position = jointPosition_WorldSpaceOffset; Entities.addEntity(worldSphereProps); } -//worldToAvatarDirection +//worldToJointDirection // create line and attach to avatars head // each frame calculate direction of world x axis in joint space of players head // update arrow orientation to match -var worldToAvatarDirectionTest_lineEntity; -function worldToAvatarDirectionTest() { +var worldToJointDirectionTest_lineEntity; +function worldToJointDirectionTest() { var jointIndex = MyAvatar.getJointIndex("Head"); var jointPosition_WorldSpace = MyAvatar.getJointPosition(jointIndex); var jointOffset_WorldSpace = { x: 0, y: 0, z: 0 }; var jointPosition_WorldSpaceOffset = Vec3.sum(jointPosition_WorldSpace, jointOffset_WorldSpace); - var jointPosition_JointSpaceOffset = MyAvatar.worldToAvatarPoint(jointPosition_WorldSpaceOffset, jointIndex); + var jointPosition_JointSpaceOffset = MyAvatar.worldToJointPoint(jointPosition_WorldSpaceOffset, jointIndex); var worldDir = { x: 1, y: 0, z: 0 }; - var avatarDir = MyAvatar.worldToAvatarDirection(worldDir, jointIndex); + var avatarDir = MyAvatar.worldToJointDirection(worldDir, jointIndex); - worldToAvatarDirectionTest_lineEntity = Entities.addEntity({ + worldToJointDirectionTest_lineEntity = Entities.addEntity({ type: "Line", color: {red: 200, green: 250, blue: 0}, dimensions: {x: 5, y: 5, z: 5}, @@ -82,10 +82,10 @@ function worldToAvatarDirectionTest() { }); } -function worldToAvatarDirectionTest_update(deltaTime) { +function worldToJointDirectionTest_update(deltaTime) { var jointIndex = MyAvatar.getJointIndex("Head"); var worldDir = { x: 1, y: 0, z: 0 }; - var avatarDir = MyAvatar.worldToAvatarDirection(worldDir, jointIndex); + var avatarDir = MyAvatar.worldToJointDirection(worldDir, jointIndex); var newProperties = { linePoints: [{ x: 0, y: 0, @@ -93,42 +93,42 @@ function worldToAvatarDirectionTest_update(deltaTime) { }, avatarDir ]}; - Entities.editEntity(worldToAvatarDirectionTest_lineEntity, newProperties); + Entities.editEntity(worldToJointDirectionTest_lineEntity, newProperties); } -//worldToAvatarRotation +//worldToJointRotation // create box and parent to some player joint // convert world identity rotation to joint space rotation // each frame, update box with new orientation -var worldToAvatarRotationTest_boxEntity; -function worldToAvatarRotationTest() { +var worldToJointRotationTest_boxEntity; +function worldToJointRotationTest() { var jointIndex = MyAvatar.getJointIndex("RightHandPinky4"); var avatarPos = MyAvatar.position; var jointPosition_WorldSpace = MyAvatar.getJointPosition(jointIndex); var jointOffset_WorldSpace = { x: 0.0, y: 0, z: 0 }; var jointPosition_WorldSpaceOffset = Vec3.sum(jointPosition_WorldSpace, jointOffset_WorldSpace); - var jointPosition_JointSpaceOffset = MyAvatar.worldToAvatarPoint(jointPosition_WorldSpaceOffset, jointIndex); + var jointPosition_JointSpaceOffset = MyAvatar.worldToJointPoint(jointPosition_WorldSpaceOffset, jointIndex); var jointBoxProps = Object.create(debugBoxBaseProperties); - jointBoxProps.name = "worldToAvatarRotationTest_Box"; + jointBoxProps.name = "worldToJointRotationTest_Box"; jointBoxProps.color = { blue: 0, green: 0, red: 250 }; jointBoxProps.localPosition = jointPosition_JointSpaceOffset; jointBoxProps.parentID = AVATAR_SELF_ID; jointBoxProps.parentJointIndex = jointIndex; - worldToAvatarRotationTest_boxEntity = Entities.addEntity(jointBoxProps); + worldToJointRotationTest_boxEntity = Entities.addEntity(jointBoxProps); } -function worldToAvatarRotationTest_update(deltaTime) { +function worldToJointRotationTest_update(deltaTime) { var jointIndex = MyAvatar.getJointIndex("RightHandPinky4"); var worldRot = Quat.fromPitchYawRollDegrees(0,0,0); - var avatarRot = MyAvatar.worldToAvatarRotation(worldRot, jointIndex); + var avatarRot = MyAvatar.worldToJointRotation(worldRot, jointIndex); var newProperties = { localRotation: avatarRot }; - Entities.editEntity(worldToAvatarRotationTest_boxEntity, newProperties); + Entities.editEntity(worldToJointRotationTest_boxEntity, newProperties); } -worldToAvatarPointTest(); -worldToAvatarDirectionTest(); -worldToAvatarRotationTest(); +worldToJointPointTest(); +worldToJointDirectionTest(); +worldToJointRotationTest(); -Script.update.connect(worldToAvatarDirectionTest_update); -Script.update.connect(worldToAvatarRotationTest_update); +Script.update.connect(worldToJointDirectionTest_update); +Script.update.connect(worldToJointRotationTest_update); From 6e5cb63d4f8c2daf18fc015608e5f643e4ea917a Mon Sep 17 00:00:00 2001 From: Liv Erickson Date: Tue, 6 Jun 2017 09:15:41 -0700 Subject: [PATCH 296/357] Add z-index fix for dropped down list --- scripts/system/html/css/edit-style.css | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/system/html/css/edit-style.css b/scripts/system/html/css/edit-style.css index 2d5a6e987f..40f3d682cd 100644 --- a/scripts/system/html/css/edit-style.css +++ b/scripts/system/html/css/edit-style.css @@ -610,6 +610,7 @@ hr { .dropdown dl[dropped="true"] { color: #404040; background: linear-gradient(#afafaf, #afafaf); + z-index: 998; } .dropdown dt { From ad1ee973243fe55389044226a51dac32f9ac071f Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Tue, 6 Jun 2017 09:50:40 -0700 Subject: [PATCH 297/357] remove cruft --- plugins/oculus/src/OculusControllerManager.cpp | 6 ------ 1 file changed, 6 deletions(-) diff --git a/plugins/oculus/src/OculusControllerManager.cpp b/plugins/oculus/src/OculusControllerManager.cpp index dee9f1082e..6f7be26554 100644 --- a/plugins/oculus/src/OculusControllerManager.cpp +++ b/plugins/oculus/src/OculusControllerManager.cpp @@ -222,12 +222,6 @@ bool OculusControllerManager::isHeadControllerMounted() const { void OculusControllerManager::TouchDevice::update(float deltaTime, const controller::InputCalibrationData& inputCalibrationData) { _buttonPressedMap.clear(); - // _poseStateMap.erase(controller::HEAD); - - // if (!_parent.isHeadControllerMounted()) { - // // if the HMD isn't on someone's head, don't take input from the controllers - // return; - // } int numTrackedControllers = 0; quint64 currentTime = usecTimestampNow(); From c3621d7c325c634d2b53e09eec78641b4ed0454f Mon Sep 17 00:00:00 2001 From: NeetBhagat Date: Tue, 6 Jun 2017 22:31:14 +0530 Subject: [PATCH 298/357] Resolved two issues: 1) While in HMD mode -> open Tablet -> Click Desktop. Desktop mode will be on. 2) Menu sync problem while switching modes. --- interface/src/Application.cpp | 13 +++++++------ interface/src/Application.h | 2 +- .../src/display-plugins/OpenGLDisplayPlugin.cpp | 6 +++--- .../src/display-plugins/OpenGLDisplayPlugin.h | 4 ++-- libraries/plugins/src/plugins/Plugin.h | 14 +++++++------- plugins/oculus/src/OculusBaseDisplayPlugin.cpp | 4 +--- plugins/oculus/src/OculusBaseDisplayPlugin.h | 2 +- 7 files changed, 22 insertions(+), 23 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index c681f99ee2..314c51a4f2 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -1360,7 +1360,7 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo if (_autoSwitchDisplayModeSupportedHMDPlugin) { if (getActiveDisplayPlugin() != _autoSwitchDisplayModeSupportedHMDPlugin && - !_autoSwitchDisplayModeSupportedHMDPlugin->isStandBySessionActive()) { + !_autoSwitchDisplayModeSupportedHMDPlugin->isSessionActive()) { startHMDStandBySession(); } // Poll periodically to check whether the user has worn HMD or not. Switch Display mode accordingly. @@ -1602,8 +1602,8 @@ void Application::aboutToQuit() { getActiveDisplayPlugin()->deactivate(); if (_autoSwitchDisplayModeSupportedHMDPlugin - && _autoSwitchDisplayModeSupportedHMDPlugin->isStandBySessionActive()) { - _autoSwitchDisplayModeSupportedHMDPlugin->endStandBySession(); + && _autoSwitchDisplayModeSupportedHMDPlugin->isSessionActive()) { + _autoSwitchDisplayModeSupportedHMDPlugin->endSession(); } // use the CloseEventSender via a QThread to send an event that says the user asked for the app to close auto closeEventSender = DependencyManager::get(); @@ -6827,13 +6827,14 @@ void Application::switchDisplayMode() { // Switch to respective mode as soon as currentHMDWornStatus changes if (currentHMDWornStatus) { qCDebug(interfaceapp) << "Switching from Desktop to HMD mode"; - endHMDStandBySession(); + endHMDSession(); setActiveDisplayPlugin(_autoSwitchDisplayModeSupportedHMDPluginName); } else { qCDebug(interfaceapp) << "Switching from HMD to desktop mode"; setActiveDisplayPlugin(DESKTOP_DISPLAY_PLUGIN_NAME); startHMDStandBySession(); } + emit activeDisplayPluginChanged(); } _previousHMDWornStatus = currentHMDWornStatus; } @@ -6842,8 +6843,8 @@ void Application::startHMDStandBySession() { _autoSwitchDisplayModeSupportedHMDPlugin->startStandBySession(); } -void Application::endHMDStandBySession() { - _autoSwitchDisplayModeSupportedHMDPlugin->endStandBySession(); +void Application::endHMDSession() { + _autoSwitchDisplayModeSupportedHMDPlugin->endSession(); } mat4 Application::getEyeProjection(int eye) const { diff --git a/interface/src/Application.h b/interface/src/Application.h index 4cd47ada58..46e5e882a4 100644 --- a/interface/src/Application.h +++ b/interface/src/Application.h @@ -685,6 +685,6 @@ private: QString _autoSwitchDisplayModeSupportedHMDPluginName; bool _previousHMDWornStatus; void startHMDStandBySession(); - void endHMDStandBySession(); + void endHMDSession(); }; #endif // hifi_Application_h diff --git a/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.cpp b/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.cpp index fbdc1ad71e..bfd158ffb5 100644 --- a/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.cpp +++ b/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.cpp @@ -346,9 +346,9 @@ bool OpenGLDisplayPlugin::startStandBySession() { return Parent::startStandBySession(); } -void OpenGLDisplayPlugin::endStandBySession() { - deactivateStandBySession(); - Parent::endStandBySession(); +void OpenGLDisplayPlugin::endSession() { + deactivateSession(); + Parent::endSession(); } void OpenGLDisplayPlugin::customizeContext() { diff --git a/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.h b/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.h index 9681158c55..10a7558398 100644 --- a/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.h +++ b/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.h @@ -43,7 +43,7 @@ public: bool activate() override final; void deactivate() override final; bool startStandBySession() override final; - void endStandBySession() override final; + void endSession() override final; bool eventFilter(QObject* receiver, QEvent* event) override; bool isDisplayVisible() const override { return true; } @@ -104,7 +104,7 @@ protected: // Returns true on successful activation of standby session virtual bool activateStandBySession() { return true; } - virtual void deactivateStandBySession() {} + virtual void deactivateSession() {} // Plugin specific functionality to send the composed scene to the output window or device virtual void internalPresent(); diff --git a/libraries/plugins/src/plugins/Plugin.h b/libraries/plugins/src/plugins/Plugin.h index 11ea79186a..2d4a24a1fe 100644 --- a/libraries/plugins/src/plugins/Plugin.h +++ b/libraries/plugins/src/plugins/Plugin.h @@ -54,16 +54,16 @@ public: return _active; } virtual bool startStandBySession() { - _standbysessionstatus = true; - return _standbysessionstatus; + _sessionStatus = true; + return _sessionStatus; } - virtual void endStandBySession() { - _standbysessionstatus = false; + virtual void endSession() { + _sessionStatus = false; } - virtual bool isStandBySessionActive() { - return _standbysessionstatus; + virtual bool isSessionActive() { + return _sessionStatus; } /** @@ -85,7 +85,7 @@ signals: protected: bool _active { false }; - bool _standbysessionstatus { false }; + bool _sessionStatus { false }; PluginContainer* _container { nullptr }; static const char* UNKNOWN_PLUGIN_ID; diff --git a/plugins/oculus/src/OculusBaseDisplayPlugin.cpp b/plugins/oculus/src/OculusBaseDisplayPlugin.cpp index df98abf408..93f4787f0f 100644 --- a/plugins/oculus/src/OculusBaseDisplayPlugin.cpp +++ b/plugins/oculus/src/OculusBaseDisplayPlugin.cpp @@ -123,8 +123,6 @@ bool OculusBaseDisplayPlugin::internalActivate() { void OculusBaseDisplayPlugin::internalDeactivate() { Parent::internalDeactivate(); - releaseOculusSession(); - _session = nullptr; } bool OculusBaseDisplayPlugin::activateStandBySession() { @@ -134,7 +132,7 @@ bool OculusBaseDisplayPlugin::activateStandBySession() { } return true; } -void OculusBaseDisplayPlugin::deactivateStandBySession() { +void OculusBaseDisplayPlugin::deactivateSession() { releaseOculusSession(); _session = nullptr; } diff --git a/plugins/oculus/src/OculusBaseDisplayPlugin.h b/plugins/oculus/src/OculusBaseDisplayPlugin.h index bfdcc5db1e..5230b11681 100644 --- a/plugins/oculus/src/OculusBaseDisplayPlugin.h +++ b/plugins/oculus/src/OculusBaseDisplayPlugin.h @@ -35,7 +35,7 @@ protected: bool internalActivate() override; void internalDeactivate() override; bool activateStandBySession() override; - void deactivateStandBySession() override; + void deactivateSession() override; void updatePresentPose() override; protected: From 40823bf5827526f6aae65bd89718c624bf63a724 Mon Sep 17 00:00:00 2001 From: seefo Date: Tue, 6 Jun 2017 10:11:46 -0700 Subject: [PATCH 299/357] Updated Windows build guide's markdown --- BUILD_WIN.md | 38 +++++++++++++++++++++----------------- 1 file changed, 21 insertions(+), 17 deletions(-) diff --git a/BUILD_WIN.md b/BUILD_WIN.md index 311dfd9267..7c3f18592a 100644 --- a/BUILD_WIN.md +++ b/BUILD_WIN.md @@ -1,5 +1,7 @@ This is a stand-alone guide for creating your first High Fidelity build for Windows 64-bit. +## Building High Fidelity + ### Step 1. Installing Visual Studio 2013 If you don't already have the Community or Professional edition of Visual Studio 2013, download and install [Visual Studio Community 2013](https://www.visualstudio.com/en-us/news/releasenotes/vs2013-community-vs). You do not need to install any of the optional components when going through the installer. @@ -18,8 +20,8 @@ Keep the default components checked when going through the installer. ### Step 4. Setting Qt Environment Variable -Go to "Control Panel > System > Advanced System Settings > Environment Variables > New..." (or search “Environment Variables” in Start Search). -* Set "Variable name": QT_CMAKE_PREFIX_PATH +Go to `Control Panel > System > Advanced System Settings > Environment Variables > New...` (or search “Environment Variables” in Start Search). +* Set "Variable name": `QT_CMAKE_PREFIX_PATH` * Set "Variable value": `%QT_DIR%\5.6\msvc2013_64\lib\cmake` ### Step 5. Installing OpenSSL @@ -29,34 +31,36 @@ Download and install the [Win64 OpenSSL v1.0.2L Installer](https://slproweb.com/ ### Step 6. Running CMake to Generate Build Files Run Command Prompt from Start and run the following commands: - cd "%HIFI_DIR%" - mkdir build - cd build - cmake .. -G "Visual Studio 12 Win64" + +> cd "%HIFI_DIR%" +> mkdir build +> cd build +> cmake .. -G "Visual Studio 12 Win64" + -Where %HIFI_DIR% is the directory for the highfidelity repository. +Where `%HIFI_DIR%` is the directory for the highfidelity repository. ### Step 7. Making a Build -Open '%HIFI_DIR%\build\hifi.sln' using Visual Studio. +Open `%HIFI_DIR%\build\hifi.sln` using Visual Studio. Change the Solution Configuration (next to the green play button) from "Debug" to "Release" for best performance. -Run Build > Build Solution. +Run `Build > Build Solution`. ### Step 8. Testing Interface Create another environment variable (see Step #4) -* Set "Variable name": _NO_DEBUG_HEAP -* Set "Variable value": 1 +* Set "Variable name": `_NO_DEBUG_HEAP` +* Set "Variable value": `1` -In Visual Studio, right+click "interface" under the Apps folder in Solution Explorer and select "Set as Startup Project". Run Debug > Start Debugging. +In Visual Studio, right+click "interface" under the Apps folder in Solution Explorer and select "Set as Startup Project". Run `Debug > Start Debugging`. Now, you should have a full build of High Fidelity and be able to run the Interface using Visual Studio. Please check our [Docs](https://wiki.highfidelity.com/wiki/Main_Page) for more information regarding the programming workflow. -Note: You can also run Interface by launching it from command line or File Explorer from %HIFI_DIR%\build\interface\Release\interface.exe +Note: You can also run Interface by launching it from command line or File Explorer from `%HIFI_DIR%\build\interface\Release\interface.exe` -### Troubleshooting +## Troubleshooting For any problems after Step #6, first try this: * Delete your locally cloned copy of the highfidelity repository @@ -66,16 +70,16 @@ For any problems after Step #6, first try this: #### CMake gives you the same error message repeatedly after the build fails -Remove `CMakeCache.txt` found in the '%HIFI_DIR%\build' directory +Remove `CMakeCache.txt` found in the `%HIFI_DIR%\build` directory. #### nmake cannot be found Make sure nmake.exe is located at the following path: + C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin If not, add the directory where nmake is located to the PATH environment variable. #### Qt is throwing an error -Make sure you have the correct version (5.6.2) installed and 'QT_CMAKE_PREFIX_PATH' environment variable is set correctly. - +Make sure you have the correct version (5.6.2) installed and `QT_CMAKE_PREFIX_PATH` environment variable is set correctly. From 9bc1bc47a2012abb73afc937b9a892c2301f9b63 Mon Sep 17 00:00:00 2001 From: seefo Date: Tue, 6 Jun 2017 14:57:42 -0700 Subject: [PATCH 300/357] Added CLI to Oven tool --- tools/oven/src/BakerCLI.cpp | 69 +++++++++++++++++++++++++++++++++++++ tools/oven/src/BakerCLI.h | 32 +++++++++++++++++ tools/oven/src/Oven.cpp | 32 +++++++++++++---- 3 files changed, 126 insertions(+), 7 deletions(-) create mode 100644 tools/oven/src/BakerCLI.cpp create mode 100644 tools/oven/src/BakerCLI.h diff --git a/tools/oven/src/BakerCLI.cpp b/tools/oven/src/BakerCLI.cpp new file mode 100644 index 0000000000..cb23eff224 --- /dev/null +++ b/tools/oven/src/BakerCLI.cpp @@ -0,0 +1,69 @@ +// +// BakerCLI.cpp +// tools/oven/src +// +// Created by Robbie Uvanni on 6/6/17. +// Copyright 2017 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +#include + +#include +#include +#include "ModelBakingLoggingCategory.h" + +#include "Oven.h" +#include "BakerCLI.h" + +#include "FBXBaker.h" +#include "TextureBaker.h" + +void BakerCLI::bakeFile(const QString inputFilename, const QString outputFilename) { + QUrl inputUrl(inputFilename); + + // if the URL doesn't have a scheme, assume it is a local file + if (inputUrl.scheme() != "http" && inputUrl.scheme() != "https" && inputUrl.scheme() != "ftp") { + inputUrl.setScheme("file"); + } + + static const QString MODEL_EXTENSION { ".fbx" }; + + // check what kind of baker we should be creating + bool isFBX = inputFilename.endsWith(MODEL_EXTENSION, Qt::CaseInsensitive); + bool isSupportedImage = false; + + for (QByteArray format : QImageReader::supportedImageFormats()) { + isSupportedImage |= inputFilename.endsWith(format, Qt::CaseInsensitive); + } + + // create our appropiate baker + Baker* baker; + + if (isFBX) { + baker = new FBXBaker(inputUrl, outputFilename, []() -> QThread* { + return qApp->getNextWorkerThread(); + }); + baker->moveToThread(qApp->getFBXBakerThread()); + } else if (isSupportedImage) { + baker = new TextureBaker(inputUrl, image::TextureUsage::CUBE_TEXTURE, outputFilename); + baker->moveToThread(qApp->getNextWorkerThread()); + } else { + qCDebug(model_baking) << "Failed to determine baker type for file" << inputUrl; + return; + } + + // invoke the bake method on the baker thread + QMetaObject::invokeMethod(baker, "bake"); + + // make sure we hear about the results of this baker when it is done + connect(baker, &Baker::finished, this, &BakerCLI::handleFinishedBaker); +} + +void BakerCLI::handleFinishedBaker() { + qCDebug(model_baking) << "Finished baking file."; + sender()->deleteLater(); + QApplication::quit(); +} \ No newline at end of file diff --git a/tools/oven/src/BakerCLI.h b/tools/oven/src/BakerCLI.h new file mode 100644 index 0000000000..6e613aeefc --- /dev/null +++ b/tools/oven/src/BakerCLI.h @@ -0,0 +1,32 @@ +// +// BakerCLI.h +// tools/oven/src +// +// Created by Robbie Uvanni on 6/6/17. +// Copyright 2017 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +#ifndef hifi_BakerCLI_h +#define hifi_BakerCLI_h + +#include +#include + +#include +#include + +class BakerCLI : public QObject { + Q_OBJECT + +public: + void bakeFile(const QString inputFilename, const QString outputFilename); + +private slots: + void handleFinishedBaker(); + +}; + +#endif // hifi_BakerCLI_h \ No newline at end of file diff --git a/tools/oven/src/Oven.cpp b/tools/oven/src/Oven.cpp index af660e9795..57252b4cf9 100644 --- a/tools/oven/src/Oven.cpp +++ b/tools/oven/src/Oven.cpp @@ -11,13 +11,16 @@ #include #include +#include +#include #include #include #include "ui/OvenMainWindow.h" - +#include "ModelBakingLoggingCategory.h" #include "Oven.h" +#include "BakerCli.h" static const QString OUTPUT_FOLDER = "/Users/birarda/code/hifi/lod/test-oven/export"; @@ -30,24 +33,39 @@ Oven::Oven(int argc, char* argv[]) : // init the settings interface so we can save and load settings Setting::init(); + // parse the command line parameters + QCommandLineParser parser; + + parser.addOptions({ + { "i", "Input filename.", "input" }, + { "o", "Output filename.", "output" } + }); + parser.addHelpOption(); + + parser.process(*this); + // enable compression in image library, except for cube maps image::setColorTexturesCompressionEnabled(true); image::setGrayscaleTexturesCompressionEnabled(true); image::setNormalTexturesCompressionEnabled(true); image::setCubeTexturesCompressionEnabled(true); - // check if we were passed any command line arguments that would tell us just to run without the GUI - - // setup the GUI - _mainWindow = new OvenMainWindow; - _mainWindow->show(); - // setup our worker threads setupWorkerThreads(QThread::idealThreadCount() - 1); // Autodesk's SDK means that we need a single thread for all FBX importing/exporting in the same process // setup the FBX Baker thread setupFBXBakerThread(); + + // check if we were passed any command line arguments that would tell us just to run without the GUI + if (parser.isSet("i") && parser.isSet("o")) { + BakerCLI* cli = new BakerCLI(); + cli->bakeFile(parser.value("i"), parser.value("o")); + } else { + // setup the GUI + _mainWindow = new OvenMainWindow; + _mainWindow->show(); + } } Oven::~Oven() { From 30c86ff321d5880accf360deae2be64453821b57 Mon Sep 17 00:00:00 2001 From: Bradley Austin Davis Date: Tue, 6 Jun 2017 14:58:56 -0700 Subject: [PATCH 301/357] Attempt to resolve Tablet scripting interface deadlocks --- .../src/TabletScriptingInterface.cpp | 46 +++++++++++-------- 1 file changed, 27 insertions(+), 19 deletions(-) diff --git a/libraries/script-engine/src/TabletScriptingInterface.cpp b/libraries/script-engine/src/TabletScriptingInterface.cpp index 644f1e6f0c..dadf436ea5 100644 --- a/libraries/script-engine/src/TabletScriptingInterface.cpp +++ b/libraries/script-engine/src/TabletScriptingInterface.cpp @@ -540,7 +540,7 @@ void TabletProxy::gotoWebScreen(const QString& url, const QString& injectedJavaS QObject* TabletProxy::addButton(const QVariant& properties) { auto tabletButtonProxy = QSharedPointer(new TabletButtonProxy(properties.toMap())); - std::lock_guard guard(_tabletMutex); + std::unique_lock guard(_tabletMutex); _tabletButtonProxies.push_back(tabletButtonProxy); if (!_toolbarMode && _qmlTabletRoot) { auto tablet = getQmlTablet(); @@ -550,7 +550,6 @@ QObject* TabletProxy::addButton(const QVariant& properties) { qCCritical(scriptengine) << "Could not find tablet in TabletRoot.qml"; } } else if (_toolbarMode) { - auto tabletScriptingInterface = DependencyManager::get(); QObject* toolbarProxy = tabletScriptingInterface->getSystemToolbarProxy(); @@ -559,6 +558,8 @@ QObject* TabletProxy::addButton(const QVariant& properties) { connectionType = Qt::BlockingQueuedConnection; } + guard.unlock(); + // copy properties from tablet button proxy to toolbar button proxy. QObject* toolbarButtonProxy = nullptr; bool hasResult = QMetaObject::invokeMethod(toolbarProxy, "addButton", connectionType, Q_RETURN_ARG(QObject*, toolbarButtonProxy), Q_ARG(QVariant, tabletButtonProxy->getProperties())); @@ -576,31 +577,38 @@ bool TabletProxy::onHomeScreen() { } void TabletProxy::removeButton(QObject* tabletButtonProxy) { - std::lock_guard guard(_tabletMutex); + std::unique_lock guard(_tabletMutex); auto tablet = getQmlTablet(); if (!tablet) { qCCritical(scriptengine) << "Could not find tablet in TabletRoot.qml"; } - auto iter = std::find(_tabletButtonProxies.begin(), _tabletButtonProxies.end(), tabletButtonProxy); - if (iter != _tabletButtonProxies.end()) { - if (!_toolbarMode && _qmlTabletRoot) { - (*iter)->setQmlButton(nullptr); - if (tablet) { - QMetaObject::invokeMethod(tablet, "removeButtonProxy", Qt::AutoConnection, Q_ARG(QVariant, (*iter)->getProperties())); - } - } else if (_toolbarMode) { - auto tabletScriptingInterface = DependencyManager::get(); - QObject* toolbarProxy = tabletScriptingInterface->getSystemToolbarProxy(); - - // remove button from toolbarProxy - QMetaObject::invokeMethod(toolbarProxy, "removeButton", Qt::AutoConnection, Q_ARG(QVariant, (*iter)->getUuid().toString())); - (*iter)->setToolbarButtonProxy(nullptr); + QSharedPointer buttonProxy; + { + auto iter = std::find(_tabletButtonProxies.begin(), _tabletButtonProxies.end(), tabletButtonProxy); + if (iter == _tabletButtonProxies.end()) { + qCWarning(scriptengine) << "TabletProxy::removeButton() could not find button " << tabletButtonProxy; + return; } + buttonProxy = *iter; _tabletButtonProxies.erase(iter); - } else { - qCWarning(scriptengine) << "TabletProxy::removeButton() could not find button " << tabletButtonProxy; + } + + if (!_toolbarMode && _qmlTabletRoot) { + buttonProxy->setQmlButton(nullptr); + if (tablet) { + guard.unlock(); + QMetaObject::invokeMethod(tablet, "removeButtonProxy", Qt::AutoConnection, Q_ARG(QVariant, buttonProxy->getProperties())); + } + } else if (_toolbarMode) { + auto tabletScriptingInterface = DependencyManager::get(); + QObject* toolbarProxy = tabletScriptingInterface->getSystemToolbarProxy(); + + // remove button from toolbarProxy + guard.unlock(); + QMetaObject::invokeMethod(toolbarProxy, "removeButton", Qt::AutoConnection, Q_ARG(QVariant, buttonProxy->getUuid().toString())); + buttonProxy->setToolbarButtonProxy(nullptr); } } From a36727732fafe6a75d3c79f5743cbf067bed3218 Mon Sep 17 00:00:00 2001 From: Bradley Austin Davis Date: Tue, 6 Jun 2017 09:28:50 -0700 Subject: [PATCH 302/357] Fix bad initializer --- plugins/openvr/src/ViveControllerManager.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/openvr/src/ViveControllerManager.h b/plugins/openvr/src/ViveControllerManager.h index c32579b0d8..f674fad50b 100644 --- a/plugins/openvr/src/ViveControllerManager.h +++ b/plugins/openvr/src/ViveControllerManager.h @@ -143,7 +143,7 @@ private: int _trackedControllers { 0 }; vr::IVRSystem*& _system; - quint64 _timeTilCalibration { 0.0f }; + quint64 _timeTilCalibration { 0 }; float _leftHapticStrength { 0.0f }; float _leftHapticDuration { 0.0f }; float _rightHapticStrength { 0.0f }; From fc6a278217d632c5aa74cd845be1036d8658cbbd Mon Sep 17 00:00:00 2001 From: Bradley Austin Davis Date: Tue, 6 Jun 2017 12:42:28 -0700 Subject: [PATCH 303/357] Fixing dangling thread issues, consolidating thread management --- assignment-client/src/Agent.cpp | 6 +- assignment-client/src/AssignmentClient.cpp | 18 +--- .../src/scripts/EntityScriptServer.cpp | 6 +- gvr-interface/src/RenderingClient.cpp | 12 +-- interface/src/Application.cpp | 43 ++------- interface/src/networking/CloseEventSender.cpp | 7 +- interface/src/networking/CloseEventSender.h | 1 + ...lessVoiceRecognitionScriptingInterface.cpp | 9 +- ...itlessVoiceRecognitionScriptingInterface.h | 1 - interface/src/ui/ModelsBrowser.cpp | 8 +- libraries/audio-client/src/AudioClient.cpp | 94 ++++--------------- libraries/audio-client/src/AudioClient.h | 4 +- libraries/networking/src/MessagesClient.cpp | 12 +-- libraries/networking/src/MessagesClient.h | 2 +- libraries/networking/src/NodeList.cpp | 6 ++ libraries/networking/src/NodeList.h | 1 + libraries/shared/src/ThreadHelpers.cpp | 39 ++++++++ libraries/shared/src/ThreadHelpers.h | 12 ++- tests/qt59/CMakeLists.txt | 15 +++ tests/qt59/src/main.cpp | 78 +++++++++++++++ tools/ac-client/src/ACClientApp.cpp | 15 +-- tools/atp-get/src/ATPGetApp.cpp | 16 +--- 22 files changed, 205 insertions(+), 200 deletions(-) create mode 100644 libraries/shared/src/ThreadHelpers.cpp create mode 100644 tests/qt59/CMakeLists.txt create mode 100644 tests/qt59/src/main.cpp diff --git a/assignment-client/src/Agent.cpp b/assignment-client/src/Agent.cpp index f517716b72..1dc3aefb61 100644 --- a/assignment-client/src/Agent.cpp +++ b/assignment-client/src/Agent.cpp @@ -166,11 +166,7 @@ void Agent::run() { // Setup MessagesClient auto messagesClient = DependencyManager::set(); - QThread* messagesThread = new QThread; - messagesThread->setObjectName("Messages Client Thread"); - messagesClient->moveToThread(messagesThread); - connect(messagesThread, &QThread::started, messagesClient.data(), &MessagesClient::init); - messagesThread->start(); + messagesClient->startThread(); // make sure we hear about connected nodes so we can grab an ATP script if a request is pending connect(nodeList.data(), &LimitedNodeList::nodeActivated, this, &Agent::nodeActivated); diff --git a/assignment-client/src/AssignmentClient.cpp b/assignment-client/src/AssignmentClient.cpp index 0869329d68..abfc66ac55 100644 --- a/assignment-client/src/AssignmentClient.cpp +++ b/assignment-client/src/AssignmentClient.cpp @@ -69,17 +69,7 @@ AssignmentClient::AssignmentClient(Assignment::Type requestAssignmentType, QStri DependencyManager::set(); DependencyManager::set(); - // setup a thread for the NodeList and its PacketReceiver - QThread* nodeThread = new QThread(this); - nodeThread->setObjectName("NodeList Thread"); - nodeThread->start(); - - // make sure the node thread is given highest priority - nodeThread->setPriority(QThread::TimeCriticalPriority); - - // put the NodeList on the node thread - nodeList->moveToThread(nodeThread); - + nodeList->startThread(); // set the logging target to the the CHILD_TARGET_NAME LogHandler::getInstance().setTargetName(ASSIGNMENT_CLIENT_TARGET_NAME); @@ -166,14 +156,8 @@ void AssignmentClient::stopAssignmentClient() { } AssignmentClient::~AssignmentClient() { - QThread* nodeThread = DependencyManager::get()->thread(); - // remove the NodeList from the DependencyManager DependencyManager::destroy(); - - // ask the node thread to quit and wait until it is done - nodeThread->quit(); - nodeThread->wait(); } void AssignmentClient::aboutToQuit() { diff --git a/assignment-client/src/scripts/EntityScriptServer.cpp b/assignment-client/src/scripts/EntityScriptServer.cpp index 270a22e17b..1b226ab642 100644 --- a/assignment-client/src/scripts/EntityScriptServer.cpp +++ b/assignment-client/src/scripts/EntityScriptServer.cpp @@ -236,11 +236,7 @@ void EntityScriptServer::run() { // Setup MessagesClient auto messagesClient = DependencyManager::set(); - QThread* messagesThread = new QThread; - messagesThread->setObjectName("Messages Client Thread"); - messagesClient->moveToThread(messagesThread); - connect(messagesThread, &QThread::started, messagesClient.data(), &MessagesClient::init); - messagesThread->start(); + messagesClient->startThread(); DomainHandler& domainHandler = DependencyManager::get()->getDomainHandler(); connect(&domainHandler, &DomainHandler::settingsReceived, this, &EntityScriptServer::handleSettings); diff --git a/gvr-interface/src/RenderingClient.cpp b/gvr-interface/src/RenderingClient.cpp index e6d2f6b585..b7c6f30a73 100644 --- a/gvr-interface/src/RenderingClient.cpp +++ b/gvr-interface/src/RenderingClient.cpp @@ -37,20 +37,12 @@ RenderingClient::RenderingClient(QObject *parent, const QString& launchURLString DependencyManager::set(); // get our audio client setup on its own thread - QThread* audioThread = new QThread(); auto audioClient = DependencyManager::set(); - audioClient->setPositionGetter(getPositionForAudio); audioClient->setOrientationGetter(getOrientationForAudio); + audioClient->startThread(); - audioClient->moveToThread(audioThread); - connect(audioThread, &QThread::started, audioClient.data(), &AudioClient::start); - connect(audioClient.data(), &AudioClient::destroyed, audioThread, &QThread::quit); - connect(audioThread, &QThread::finished, audioThread, &QThread::deleteLater); - - audioThread->start(); - - + connect(&_avatarTimer, &QTimer::timeout, this, &RenderingClient::sendAvatarPacket); _avatarTimer.setInterval(16); // 60 FPS _avatarTimer.start(); diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 2c4cd4aa0a..5b7f5afb98 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -651,6 +651,7 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo Model::setAbstractViewStateInterface(this); // The model class will sometimes need to know view state details from us auto nodeList = DependencyManager::get(); + nodeList->startThread(); // Set up a watchdog thread to intentionally crash the application on deadlocks _deadlockWatchdogThread = new DeadlockWatchdogThread(); @@ -676,25 +677,11 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo updateHeartbeat(); - // start the nodeThread so its event loop is running - QThread* nodeThread = new QThread(this); - nodeThread->setObjectName("NodeList Thread"); - nodeThread->start(); - - // make sure the node thread is given highest priority - nodeThread->setPriority(QThread::TimeCriticalPriority); - // setup a timer for domain-server check ins QTimer* domainCheckInTimer = new QTimer(nodeList.data()); connect(domainCheckInTimer, &QTimer::timeout, nodeList.data(), &NodeList::sendDomainServerCheckIn); domainCheckInTimer->start(DOMAIN_SERVER_CHECK_IN_MSECS); - // put the NodeList and datagram processing on the node thread - nodeList->moveToThread(nodeThread); - - // put the audio processing on a separate thread - QThread* audioThread = new QThread(); - audioThread->setObjectName("Audio Thread"); auto audioIO = DependencyManager::get(); audioIO->setPositionGetter([]{ @@ -710,7 +697,6 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo return myAvatar ? myAvatar->getOrientationForAudio() : Quaternions::IDENTITY; }); - audioIO->moveToThread(audioThread); recording::Frame::registerFrameHandler(AudioConstants::getAudioFrameName(), [=](recording::Frame::ConstPointer frame) { audioIO->handleRecordedAudioInput(frame->data); }); @@ -724,9 +710,6 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo }); auto audioScriptingInterface = DependencyManager::set(); - connect(audioThread, &QThread::started, audioIO.data(), &AudioClient::start); - connect(audioIO.data(), &AudioClient::destroyed, audioThread, &QThread::quit); - connect(audioThread, &QThread::finished, audioThread, &QThread::deleteLater); connect(audioIO.data(), &AudioClient::muteToggled, this, &Application::audioMuteToggled); connect(audioIO.data(), &AudioClient::mutedByMixer, audioScriptingInterface.data(), &AudioScriptingInterface::mutedByMixer); connect(audioIO.data(), &AudioClient::receivedFirstPacket, audioScriptingInterface.data(), &AudioScriptingInterface::receivedFirstPacket); @@ -744,19 +727,14 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo } }); - audioThread->start(); + audioIO->startThread(); ResourceManager::init(); // Make sure we don't time out during slow operations at startup updateHeartbeat(); // Setup MessagesClient - auto messagesClient = DependencyManager::get(); - QThread* messagesThread = new QThread; - messagesThread->setObjectName("Messages Client Thread"); - messagesClient->moveToThread(messagesThread); - connect(messagesThread, &QThread::started, messagesClient.data(), &MessagesClient::init); - messagesThread->start(); + DependencyManager::get()->startThread(); const DomainHandler& domainHandler = nodeList->getDomainHandler(); @@ -1648,12 +1626,7 @@ void Application::aboutToQuit() { getActiveDisplayPlugin()->deactivate(); // use the CloseEventSender via a QThread to send an event that says the user asked for the app to close - auto closeEventSender = DependencyManager::get(); - QThread* closureEventThread = new QThread(this); - closeEventSender->moveToThread(closureEventThread); - // sendQuitEventAsync will bail immediately if the UserActivityLogger is not enabled - connect(closureEventThread, &QThread::started, closeEventSender.data(), &CloseEventSender::sendQuitEventAsync); - closureEventThread->start(); + DependencyManager::get()->startThread(); // Hide Running Scripts dialog so that it gets destroyed in an orderly manner; prevents warnings at shutdown. DependencyManager::get()->hide("RunningScripts"); @@ -1741,6 +1714,8 @@ void Application::cleanupBeforeQuit() { // stop QML DependencyManager::destroy(); + DependencyManager::destroy(); + if (_snapshotSoundInjector != nullptr) { _snapshotSoundInjector->stop(); } @@ -1800,15 +1775,9 @@ Application::~Application() { ResourceManager::cleanup(); - QThread* nodeThread = DependencyManager::get()->thread(); - // remove the NodeList from the DependencyManager DependencyManager::destroy(); - // ask the node thread to quit and wait until it is done - nodeThread->quit(); - nodeThread->wait(); - Leapmotion::destroy(); if (auto steamClient = PluginManager::getInstance()->getSteamClientPlugin()) { diff --git a/interface/src/networking/CloseEventSender.cpp b/interface/src/networking/CloseEventSender.cpp index 8c3d6ae888..de8bd897b2 100644 --- a/interface/src/networking/CloseEventSender.cpp +++ b/interface/src/networking/CloseEventSender.cpp @@ -14,6 +14,7 @@ #include #include +#include #include #include #include @@ -87,4 +88,8 @@ bool CloseEventSender::hasTimedOutQuitEvent() { && QDateTime::currentMSecsSinceEpoch() - _quitEventStartTimestamp > CLOSURE_EVENT_TIMEOUT_MS; } - +void CloseEventSender::startThread() { + moveToNewNamedThread(this, "CloseEvent Logger Thread", [this] { + sendQuitEventAsync(); + }); +} diff --git a/interface/src/networking/CloseEventSender.h b/interface/src/networking/CloseEventSender.h index 05e6f81ad4..b74412c41c 100644 --- a/interface/src/networking/CloseEventSender.h +++ b/interface/src/networking/CloseEventSender.h @@ -24,6 +24,7 @@ class CloseEventSender : public QObject, public Dependency { SINGLETON_DEPENDENCY public: + void startThread(); bool hasTimedOutQuitEvent(); bool hasFinishedQuitEvent() { return _hasFinishedQuitEvent; } diff --git a/interface/src/scripting/LimitlessVoiceRecognitionScriptingInterface.cpp b/interface/src/scripting/LimitlessVoiceRecognitionScriptingInterface.cpp index 1352630f84..ebb5ca9280 100644 --- a/interface/src/scripting/LimitlessVoiceRecognitionScriptingInterface.cpp +++ b/interface/src/scripting/LimitlessVoiceRecognitionScriptingInterface.cpp @@ -9,9 +9,12 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // +#include + +#include #include #include -#include + #include "LimitlessVoiceRecognitionScriptingInterface.h" const float LimitlessVoiceRecognitionScriptingInterface::_audioLevelThreshold = 0.33f; @@ -24,9 +27,7 @@ LimitlessVoiceRecognitionScriptingInterface::LimitlessVoiceRecognitionScriptingI connect(&_voiceTimer, &QTimer::timeout, this, &LimitlessVoiceRecognitionScriptingInterface::voiceTimeout); connect(&_connection, &LimitlessConnection::onReceivedTranscription, this, [this](QString transcription){emit onReceivedTranscription(transcription);}); connect(&_connection, &LimitlessConnection::onFinishedSpeaking, this, [this](QString transcription){emit onFinishedSpeaking(transcription);}); - _connection.moveToThread(&_connectionThread); - _connectionThread.setObjectName("Limitless Connection"); - _connectionThread.start(); + moveToNewNamedThread(&_connection, "Limitless Connection"); } void LimitlessVoiceRecognitionScriptingInterface::update() { diff --git a/interface/src/scripting/LimitlessVoiceRecognitionScriptingInterface.h b/interface/src/scripting/LimitlessVoiceRecognitionScriptingInterface.h index d1b1139695..2a35c37ab0 100644 --- a/interface/src/scripting/LimitlessVoiceRecognitionScriptingInterface.h +++ b/interface/src/scripting/LimitlessVoiceRecognitionScriptingInterface.h @@ -41,7 +41,6 @@ private: static const int _voiceTimeoutDuration; QTimer _voiceTimer; - QThread _connectionThread; LimitlessConnection _connection; void voiceTimeout(); diff --git a/interface/src/ui/ModelsBrowser.cpp b/interface/src/ui/ModelsBrowser.cpp index 430cc805ed..44089119c6 100644 --- a/interface/src/ui/ModelsBrowser.cpp +++ b/interface/src/ui/ModelsBrowser.cpp @@ -23,6 +23,7 @@ #include #include +#include #include #include @@ -84,12 +85,7 @@ ModelsBrowser::ModelsBrowser(FSTReader::ModelType modelsType, QWidget* parent) : _handler->connect(this, SIGNAL(destroyed()), SLOT(exit())); // Setup and launch update thread - QThread* thread = new QThread(); - thread->setObjectName("Models Browser"); - thread->connect(_handler, SIGNAL(destroyed()), SLOT(quit())); - thread->connect(thread, SIGNAL(finished()), SLOT(deleteLater())); - _handler->moveToThread(thread); - thread->start(); + moveToNewNamedThread(_handler, "Models Browser"); emit startDownloading(); // Initialize the view diff --git a/libraries/audio-client/src/AudioClient.cpp b/libraries/audio-client/src/AudioClient.cpp index e03ca83131..6caa4fb159 100644 --- a/libraries/audio-client/src/AudioClient.cpp +++ b/libraries/audio-client/src/AudioClient.cpp @@ -31,10 +31,13 @@ #include #endif +#include +#include #include #include #include +#include #include #include #include @@ -76,59 +79,6 @@ using Mutex = std::mutex; using Lock = std::unique_lock; static Mutex _deviceMutex; -class BackgroundThread : public QThread { -public: - BackgroundThread(AudioClient* client) : QThread((QObject*)client), _client(client) {} - virtual void join() = 0; -protected: - AudioClient* _client; -}; - -// background thread continuously polling device changes -class CheckDevicesThread : public BackgroundThread { -public: - CheckDevicesThread(AudioClient* client) : BackgroundThread(client) {} - - void join() override { - _shouldQuit = true; - std::unique_lock lock(_joinMutex); - _joinCondition.wait(lock, [&]{ return !_isRunning; }); - } - -protected: - void run() override { - while (!_shouldQuit) { - _client->checkDevices(); - - const unsigned long DEVICE_CHECK_INTERVAL_MSECS = 2 * 1000; - QThread::msleep(DEVICE_CHECK_INTERVAL_MSECS); - } - std::lock_guard lock(_joinMutex); - _isRunning = false; - _joinCondition.notify_one(); - } - -private: - std::atomic _shouldQuit { false }; - bool _isRunning { true }; - std::mutex _joinMutex; - std::condition_variable _joinCondition; -}; - -// background thread buffering local injectors -class LocalInjectorsThread : public BackgroundThread { - Q_OBJECT -public: - LocalInjectorsThread(AudioClient* client) : BackgroundThread(client) {} - - void join() override { return; } - -private slots: - void prepare() { _client->prepareLocalAudioInjectors(); } -}; - -#include "AudioClient.moc" - static void channelUpmix(int16_t* source, int16_t* dest, int numSamples, int numExtraChannels) { for (int i = 0; i < numSamples/2; i++) { @@ -223,16 +173,15 @@ AudioClient::AudioClient() : _inputDevices = getDeviceNames(QAudio::AudioInput); _outputDevices = getDeviceNames(QAudio::AudioOutput); - // start a thread to detect any device changes - _checkDevicesThread = new CheckDevicesThread(this); - _checkDevicesThread->setObjectName("AudioClient CheckDevices Thread"); - _checkDevicesThread->setPriority(QThread::LowPriority); - _checkDevicesThread->start(); - // start a thread to process local injectors - _localInjectorsThread = new LocalInjectorsThread(this); - _localInjectorsThread->setObjectName("AudioClient LocalInjectors Thread"); - _localInjectorsThread->start(); + // start a thread to detect any device changes + _checkDevicesTimer = new QTimer(this); + connect(_checkDevicesTimer, &QTimer::timeout, [this] { + QtConcurrent::run(QThreadPool::globalInstance(), [this] { + checkDevices(); + }); + }); + configureReverb(); @@ -263,15 +212,7 @@ void AudioClient::cleanupBeforeQuit() { stop(); - if (_checkDevicesThread) { - static_cast(_checkDevicesThread)->join(); - delete _checkDevicesThread; - } - - if (_localInjectorsThread) { - static_cast(_localInjectorsThread)->join(); - delete _localInjectorsThread; - } + _checkDevicesTimer->stop(); } void AudioClient::handleMismatchAudioFormat(SharedNodePointer node, const QString& currentCodec, const QString& recievedCodec) { @@ -1369,10 +1310,8 @@ bool AudioClient::outputLocalInjector(AudioInjector* injector) { if (!_activeLocalAudioInjectors.contains(injector)) { qCDebug(audioclient) << "adding new injector"; _activeLocalAudioInjectors.append(injector); - // move local buffer to the LocalAudioThread to avoid dataraces with AudioInjector (like stop()) injectorBuffer->setParent(nullptr); - injectorBuffer->moveToThread(_localInjectorsThread); // update the flag _localInjectorsAvailable.exchange(true, std::memory_order_release); @@ -1782,7 +1721,9 @@ qint64 AudioClient::AudioOutputIODevice::readData(char * data, qint64 maxSize) { } // prepare injectors for the next callback - QMetaObject::invokeMethod(_audio->_localInjectorsThread, "prepare", Qt::QueuedConnection); + QtConcurrent::run(QThreadPool::globalInstance(), [this] { + _audio->prepareLocalAudioInjectors(); + }); int samplesPopped = std::max(networkSamplesPopped, injectorSamplesPopped); int framesPopped = samplesPopped / AudioConstants::STEREO; @@ -1855,3 +1796,8 @@ void AudioClient::setAvatarBoundingBoxParameters(glm::vec3 corner, glm::vec3 sca avatarBoundingBoxCorner = corner; avatarBoundingBoxScale = scale; } + + +void AudioClient::startThread() { + moveToNewNamedThread(this, "Audio Thread", [this] { start(); }); +} diff --git a/libraries/audio-client/src/AudioClient.h b/libraries/audio-client/src/AudioClient.h index b79cee238c..bec2fd2cc9 100644 --- a/libraries/audio-client/src/AudioClient.h +++ b/libraries/audio-client/src/AudioClient.h @@ -104,6 +104,7 @@ public: int _unfulfilledReads; }; + void startThread(); void negotiateAudioFormat(); void selectAudioFormat(const QString& selectedCodecName); @@ -386,8 +387,7 @@ private: RateCounter<> _silentInbound; RateCounter<> _audioInbound; - QThread* _checkDevicesThread { nullptr }; - QThread* _localInjectorsThread { nullptr }; + QTimer* _checkDevicesTimer { nullptr }; }; diff --git a/libraries/networking/src/MessagesClient.cpp b/libraries/networking/src/MessagesClient.cpp index 333552db4e..2302c22a48 100644 --- a/libraries/networking/src/MessagesClient.cpp +++ b/libraries/networking/src/MessagesClient.cpp @@ -16,6 +16,8 @@ #include #include +#include + #include "NetworkLogging.h" #include "NodeList.h" #include "PacketReceiver.h" @@ -30,12 +32,6 @@ MessagesClient::MessagesClient() { connect(nodeList.data(), &LimitedNodeList::nodeActivated, this, &MessagesClient::handleNodeActivated); } -void MessagesClient::init() { - if (QThread::currentThread() != thread()) { - QMetaObject::invokeMethod(this, "init", Qt::BlockingQueuedConnection); - } -} - void MessagesClient::decodeMessagesPacket(QSharedPointer receivedMessage, QString& channel, bool& isText, QString& message, QByteArray& data, QUuid& senderID) { quint16 channelLength; @@ -185,3 +181,7 @@ void MessagesClient::handleNodeActivated(SharedNodePointer node) { } } } + +void MessagesClient::startThread() { + moveToNewNamedThread(this, "Messages Client Thread"); +} diff --git a/libraries/networking/src/MessagesClient.h b/libraries/networking/src/MessagesClient.h index 51b468d646..6d0483fe9d 100644 --- a/libraries/networking/src/MessagesClient.h +++ b/libraries/networking/src/MessagesClient.h @@ -28,7 +28,7 @@ class MessagesClient : public QObject, public Dependency { public: MessagesClient(); - Q_INVOKABLE void init(); + void startThread(); Q_INVOKABLE void sendMessage(QString channel, QString message, bool localOnly = false); Q_INVOKABLE void sendLocalMessage(QString channel, QString message); diff --git a/libraries/networking/src/NodeList.cpp b/libraries/networking/src/NodeList.cpp index 868128f093..2aa30b84aa 100644 --- a/libraries/networking/src/NodeList.cpp +++ b/libraries/networking/src/NodeList.cpp @@ -20,6 +20,7 @@ #include #include +#include #include #include @@ -1115,3 +1116,8 @@ void NodeList::setRequestsDomainListData(bool isRequesting) { }); _requestsDomainListData = isRequesting; } + + +void NodeList::startThread() { + moveToNewNamedThread(this, "NodeList Thread", QThread::TimeCriticalPriority); +} \ No newline at end of file diff --git a/libraries/networking/src/NodeList.h b/libraries/networking/src/NodeList.h index 293b0942d6..ee836fa94b 100644 --- a/libraries/networking/src/NodeList.h +++ b/libraries/networking/src/NodeList.h @@ -52,6 +52,7 @@ class NodeList : public LimitedNodeList { SINGLETON_DEPENDENCY public: + void startThread(); NodeType_t getOwnerType() const { return _ownerType.load(); } void setOwnerType(NodeType_t ownerType) { _ownerType.store(ownerType); } diff --git a/libraries/shared/src/ThreadHelpers.cpp b/libraries/shared/src/ThreadHelpers.cpp new file mode 100644 index 0000000000..14ae35762b --- /dev/null +++ b/libraries/shared/src/ThreadHelpers.cpp @@ -0,0 +1,39 @@ +// +// Created by Bradley Austin Davis on 2017/06/06 +// Copyright 2013-2017 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +#include "ThreadHelpers.h" + +#include + + +void moveToNewNamedThread(QObject* object, const QString& name, std::function startCallback, QThread::Priority priority) { + Q_ASSERT(QThread::currentThread() == object->thread()); + // setup a thread for the NodeList and its PacketReceiver + QThread* thread = new QThread(); + thread->setObjectName(name); + + if (priority != QThread::InheritPriority) { + thread->setPriority(priority); + } + + QString tempName = name; + QObject::connect(thread, &QThread::started, [startCallback] { + startCallback(); + }); + // Make sure the thread will be destroyed and cleaned up + QObject::connect(object, &QObject::destroyed, thread, &QThread::quit); + QObject::connect(thread, &QThread::finished, thread, &QThread::deleteLater); + + // put the object on the thread + object->moveToThread(thread); + thread->start(); +} + +void moveToNewNamedThread(QObject* object, const QString& name, QThread::Priority priority) { + moveToNewNamedThread(object, name, [] {}, priority); +} diff --git a/libraries/shared/src/ThreadHelpers.h b/libraries/shared/src/ThreadHelpers.h index 0a92d36b80..6461fa5724 100644 --- a/libraries/shared/src/ThreadHelpers.h +++ b/libraries/shared/src/ThreadHelpers.h @@ -12,8 +12,13 @@ #define hifi_ThreadHelpers_h #include -#include -#include +#include + +#include +#include +#include +#include +#include template void withLock(L lock, F function) { @@ -26,4 +31,7 @@ void withLock(QMutex& lock, F function) { function(); } +void moveToNewNamedThread(QObject* object, const QString& name, std::function startCallback, QThread::Priority priority = QThread::InheritPriority); +void moveToNewNamedThread(QObject* object, const QString& name, QThread::Priority priority = QThread::InheritPriority); + #endif diff --git a/tests/qt59/CMakeLists.txt b/tests/qt59/CMakeLists.txt new file mode 100644 index 0000000000..32cc125ecf --- /dev/null +++ b/tests/qt59/CMakeLists.txt @@ -0,0 +1,15 @@ + +set(TARGET_NAME qt59) + +if (WIN32) + SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /ignore:4049 /ignore:4217") +endif() + +# This is not a testcase -- just set it up as a regular hifi project +setup_hifi_project(Gui) +set_target_properties(${TARGET_NAME} PROPERTIES FOLDER "Tests/manual-tests/") + +# link in the shared libraries +link_hifi_libraries(shared networking) + +package_libraries_for_deployment() diff --git a/tests/qt59/src/main.cpp b/tests/qt59/src/main.cpp new file mode 100644 index 0000000000..c66a5e6f9a --- /dev/null +++ b/tests/qt59/src/main.cpp @@ -0,0 +1,78 @@ +// +// Created by Bradley Austin Davis on 2017/06/06 +// Copyright 2013-2017 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +#include + +#include + +#include +#include +#include +#include + +#include + + +class Qt59TestApp : public QCoreApplication { + Q_OBJECT +public: + Qt59TestApp(int argc, char* argv[]); + ~Qt59TestApp(); + +private: + void finish(int exitCode); +}; + + + +Qt59TestApp::Qt59TestApp(int argc, char* argv[]) : + QCoreApplication(argc, argv) +{ + + Setting::init(); + DependencyManager::registerInheritance(); + DependencyManager::set([&] { return QString("Mozilla/5.0 (HighFidelityACClient)"); }); + DependencyManager::set(); + DependencyManager::set(NodeType::Agent, 0); + auto nodeList = DependencyManager::get(); + nodeList->startThread(); + auto messagesClient = DependencyManager::set(); + messagesClient->startThread(); + QTimer::singleShot(1000, [this] { finish(0); }); +} + +Qt59TestApp::~Qt59TestApp() { +} + + +void Qt59TestApp::finish(int exitCode) { + auto nodeList = DependencyManager::get(); + + // send the domain a disconnect packet, force stoppage of domain-server check-ins + nodeList->getDomainHandler().disconnect(); + nodeList->setIsShuttingDown(true); + nodeList->getPacketReceiver().setShouldDropPackets(true); + + // remove the NodeList from the DependencyManager + DependencyManager::destroy(); + QCoreApplication::exit(exitCode); +} + + +int main(int argc, char * argv[]) { + QCoreApplication::setApplicationName("Qt59Test"); + QCoreApplication::setOrganizationName(BuildInfo::MODIFIED_ORGANIZATION); + QCoreApplication::setOrganizationDomain(BuildInfo::ORGANIZATION_DOMAIN); + QCoreApplication::setApplicationVersion(BuildInfo::VERSION); + + Qt59TestApp app(argc, argv); + + return app.exec(); +} + +#include "main.moc" \ No newline at end of file diff --git a/tools/ac-client/src/ACClientApp.cpp b/tools/ac-client/src/ACClientApp.cpp index 4c12a09388..b81d092662 100644 --- a/tools/ac-client/src/ACClientApp.cpp +++ b/tools/ac-client/src/ACClientApp.cpp @@ -90,23 +90,14 @@ ACClientApp::ACClientApp(int argc, char* argv[]) : auto nodeList = DependencyManager::get(); - // start the nodeThread so its event loop is running - QThread* nodeThread = new QThread(this); - nodeThread->setObjectName("NodeList Thread"); - nodeThread->start(); - - // make sure the node thread is given highest priority - nodeThread->setPriority(QThread::TimeCriticalPriority); + nodeList->startThread(); // setup a timer for domain-server check ins QTimer* domainCheckInTimer = new QTimer(nodeList.data()); connect(domainCheckInTimer, &QTimer::timeout, nodeList.data(), &NodeList::sendDomainServerCheckIn); domainCheckInTimer->start(DOMAIN_SERVER_CHECK_IN_MSECS); - // put the NodeList and datagram processing on the node thread - nodeList->moveToThread(nodeThread); - const DomainHandler& domainHandler = nodeList->getDomainHandler(); connect(&domainHandler, SIGNAL(hostnameChanged(const QString&)), SLOT(domainChanged(const QString&))); @@ -239,12 +230,8 @@ void ACClientApp::finish(int exitCode) { // tell the packet receiver we're shutting down, so it can drop packets nodeList->getPacketReceiver().setShouldDropPackets(true); - QThread* nodeThread = DependencyManager::get()->thread(); // remove the NodeList from the DependencyManager DependencyManager::destroy(); - // ask the node thread to quit and wait until it is done - nodeThread->quit(); - nodeThread->wait(); printFailedServers(); QCoreApplication::exit(exitCode); diff --git a/tools/atp-get/src/ATPGetApp.cpp b/tools/atp-get/src/ATPGetApp.cpp index 30054fffea..4125582c21 100644 --- a/tools/atp-get/src/ATPGetApp.cpp +++ b/tools/atp-get/src/ATPGetApp.cpp @@ -111,23 +111,13 @@ ATPGetApp::ATPGetApp(int argc, char* argv[]) : auto nodeList = DependencyManager::get(); - - // start the nodeThread so its event loop is running - QThread* nodeThread = new QThread(this); - nodeThread->setObjectName("NodeList Thread"); - nodeThread->start(); - - // make sure the node thread is given highest priority - nodeThread->setPriority(QThread::TimeCriticalPriority); + nodeList->startThread(); // setup a timer for domain-server check ins QTimer* domainCheckInTimer = new QTimer(nodeList.data()); connect(domainCheckInTimer, &QTimer::timeout, nodeList.data(), &NodeList::sendDomainServerCheckIn); domainCheckInTimer->start(DOMAIN_SERVER_CHECK_IN_MSECS); - // put the NodeList and datagram processing on the node thread - nodeList->moveToThread(nodeThread); - const DomainHandler& domainHandler = nodeList->getDomainHandler(); connect(&domainHandler, SIGNAL(hostnameChanged(const QString&)), SLOT(domainChanged(const QString&))); @@ -258,12 +248,8 @@ void ATPGetApp::finish(int exitCode) { // tell the packet receiver we're shutting down, so it can drop packets nodeList->getPacketReceiver().setShouldDropPackets(true); - QThread* nodeThread = DependencyManager::get()->thread(); // remove the NodeList from the DependencyManager DependencyManager::destroy(); - // ask the node thread to quit and wait until it is done - nodeThread->quit(); - nodeThread->wait(); QCoreApplication::exit(exitCode); } From b4bbf98fe3633eeed0e921f8062ae0130c326845 Mon Sep 17 00:00:00 2001 From: Bradley Austin Davis Date: Tue, 6 Jun 2017 13:55:24 -0700 Subject: [PATCH 304/357] Suppress TBB warnings --- .../src/audio/AudioMixerSlavePool.h | 4 +-- .../src/avatars/AvatarMixerSlavePool.h | 3 +- libraries/networking/src/LimitedNodeList.cpp | 2 -- libraries/networking/src/LimitedNodeList.h | 5 ++-- libraries/networking/src/Node.h | 2 +- libraries/networking/src/NodeList.h | 2 +- libraries/shared/src/TBBHelpers.h | 28 +++++++++++++++++++ tools/oven/src/Oven.h | 2 +- 8 files changed, 36 insertions(+), 12 deletions(-) create mode 100644 libraries/shared/src/TBBHelpers.h diff --git a/assignment-client/src/audio/AudioMixerSlavePool.h b/assignment-client/src/audio/AudioMixerSlavePool.h index 4082ea18d9..25047faa89 100644 --- a/assignment-client/src/audio/AudioMixerSlavePool.h +++ b/assignment-client/src/audio/AudioMixerSlavePool.h @@ -16,10 +16,10 @@ #include #include -#include - #include +#include + #include "AudioMixerSlave.h" class AudioMixerSlavePool; diff --git a/assignment-client/src/avatars/AvatarMixerSlavePool.h b/assignment-client/src/avatars/AvatarMixerSlavePool.h index e6ac2a1f4e..15bd681b2c 100644 --- a/assignment-client/src/avatars/AvatarMixerSlavePool.h +++ b/assignment-client/src/avatars/AvatarMixerSlavePool.h @@ -16,10 +16,9 @@ #include #include -#include - #include +#include #include #include "AvatarMixerSlave.h" diff --git a/libraries/networking/src/LimitedNodeList.cpp b/libraries/networking/src/LimitedNodeList.cpp index cba1e664ab..93ae941f1e 100644 --- a/libraries/networking/src/LimitedNodeList.cpp +++ b/libraries/networking/src/LimitedNodeList.cpp @@ -22,8 +22,6 @@ #include #include -#include - #include #include #include diff --git a/libraries/networking/src/LimitedNodeList.h b/libraries/networking/src/LimitedNodeList.h index 056a4d16cf..554386f786 100644 --- a/libraries/networking/src/LimitedNodeList.h +++ b/libraries/networking/src/LimitedNodeList.h @@ -31,7 +31,7 @@ #include #include -#include +#include #include #include @@ -68,9 +68,8 @@ const QString USERNAME_UUID_REPLACEMENT_STATS_KEY = "$username"; const QString LOCAL_SOCKET_CHANGE_STAT = "LocalSocketChanges"; -using namespace tbb; typedef std::pair UUIDNodePair; -typedef concurrent_unordered_map NodeHash; +typedef tbb::concurrent_unordered_map NodeHash; typedef quint8 PingType_t; namespace PingType { diff --git a/libraries/networking/src/Node.h b/libraries/networking/src/Node.h index d1bbffd817..1092fcc7fa 100644 --- a/libraries/networking/src/Node.h +++ b/libraries/networking/src/Node.h @@ -24,7 +24,7 @@ #include #include -#include +#include #include "HifiSockAddr.h" #include "NetworkPeer.h" diff --git a/libraries/networking/src/NodeList.h b/libraries/networking/src/NodeList.h index ee836fa94b..6db760b3ca 100644 --- a/libraries/networking/src/NodeList.h +++ b/libraries/networking/src/NodeList.h @@ -20,7 +20,7 @@ #include // not on windows, not needed for mac or windows #endif -#include +#include #include #include diff --git a/libraries/shared/src/TBBHelpers.h b/libraries/shared/src/TBBHelpers.h new file mode 100644 index 0000000000..6b5c4d416b --- /dev/null +++ b/libraries/shared/src/TBBHelpers.h @@ -0,0 +1,28 @@ +// +// Created by Bradley Austin Davis on 2017/06/06 +// Copyright 2013-2017 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +#pragma once +#ifndef hifi_TBBHelpers_h +#define hifi_TBBHelpers_h + +#ifdef _WIN32 +#pragma warning( push ) +#pragma warning( disable : 4334 ) +#endif + +#include +#include +#include +#include +#include + +#ifdef _WIN32 +#pragma warning( pop ) +#endif + +#endif // hifi_TBBHelpers_h diff --git a/tools/oven/src/Oven.h b/tools/oven/src/Oven.h index 350c615ce0..569b73a3e2 100644 --- a/tools/oven/src/Oven.h +++ b/tools/oven/src/Oven.h @@ -14,7 +14,7 @@ #include -#include +#include #include From 46400f41222ddd5ecea1995f8cf7ffb7666a670d Mon Sep 17 00:00:00 2001 From: seefo Date: Tue, 6 Jun 2017 15:05:26 -0700 Subject: [PATCH 305/357] Cleaned up oven CLI --- tools/oven/src/BakerCLI.cpp | 3 --- tools/oven/src/BakerCLI.h | 4 ---- tools/oven/src/Oven.cpp | 7 ++----- 3 files changed, 2 insertions(+), 12 deletions(-) diff --git a/tools/oven/src/BakerCLI.cpp b/tools/oven/src/BakerCLI.cpp index cb23eff224..3a0d1eeef7 100644 --- a/tools/oven/src/BakerCLI.cpp +++ b/tools/oven/src/BakerCLI.cpp @@ -9,15 +9,12 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -#include - #include #include #include "ModelBakingLoggingCategory.h" #include "Oven.h" #include "BakerCLI.h" - #include "FBXBaker.h" #include "TextureBaker.h" diff --git a/tools/oven/src/BakerCLI.h b/tools/oven/src/BakerCLI.h index 6e613aeefc..7803aa6c86 100644 --- a/tools/oven/src/BakerCLI.h +++ b/tools/oven/src/BakerCLI.h @@ -12,10 +12,6 @@ #ifndef hifi_BakerCLI_h #define hifi_BakerCLI_h -#include -#include - -#include #include class BakerCLI : public QObject { diff --git a/tools/oven/src/Oven.cpp b/tools/oven/src/Oven.cpp index 57252b4cf9..3d356a5f1e 100644 --- a/tools/oven/src/Oven.cpp +++ b/tools/oven/src/Oven.cpp @@ -12,13 +12,11 @@ #include #include #include -#include #include #include #include "ui/OvenMainWindow.h" -#include "ModelBakingLoggingCategory.h" #include "Oven.h" #include "BakerCli.h" @@ -37,11 +35,10 @@ Oven::Oven(int argc, char* argv[]) : QCommandLineParser parser; parser.addOptions({ - { "i", "Input filename.", "input" }, - { "o", "Output filename.", "output" } + { "i", "Path to file that you would like to bake.", "input" }, + { "o", "Path to folder that will be used as output.", "output" } }); parser.addHelpOption(); - parser.process(*this); // enable compression in image library, except for cube maps From aa13812e3fcb48453c78955b91ed07650e1043d3 Mon Sep 17 00:00:00 2001 From: seefo Date: Tue, 6 Jun 2017 15:20:26 -0700 Subject: [PATCH 306/357] Fixed multiline in BUILD_WIN.md --- BUILD_WIN.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/BUILD_WIN.md b/BUILD_WIN.md index 7c3f18592a..818a176f75 100644 --- a/BUILD_WIN.md +++ b/BUILD_WIN.md @@ -31,12 +31,12 @@ Download and install the [Win64 OpenSSL v1.0.2L Installer](https://slproweb.com/ ### Step 6. Running CMake to Generate Build Files Run Command Prompt from Start and run the following commands: - -> cd "%HIFI_DIR%" -> mkdir build -> cd build -> cmake .. -G "Visual Studio 12 Win64" - +```` +cd "%HIFI_DIR%" +mkdir build +cd build +cmake .. -G "Visual Studio 12 Win64" +```` Where `%HIFI_DIR%` is the directory for the highfidelity repository. From a3d2fa2630b713b31297e221284a1efe4184b90a Mon Sep 17 00:00:00 2001 From: seefo Date: Tue, 6 Jun 2017 16:13:18 -0700 Subject: [PATCH 307/357] Made requested changed to Oven CLI --- tools/oven/src/BakerCLI.cpp | 12 ++++++++---- tools/oven/src/BakerCLI.h | 5 ++++- tools/oven/src/Oven.cpp | 13 ++++++++----- 3 files changed, 20 insertions(+), 10 deletions(-) diff --git a/tools/oven/src/BakerCLI.cpp b/tools/oven/src/BakerCLI.cpp index 3a0d1eeef7..04d43853da 100644 --- a/tools/oven/src/BakerCLI.cpp +++ b/tools/oven/src/BakerCLI.cpp @@ -9,16 +9,20 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // +#include #include #include -#include "ModelBakingLoggingCategory.h" +#include "ModelBakingLoggingCategory.h" #include "Oven.h" #include "BakerCLI.h" #include "FBXBaker.h" #include "TextureBaker.h" -void BakerCLI::bakeFile(const QString inputFilename, const QString outputFilename) { +BakerCLI::BakerCLI(Oven* parent) : QObject() { +} + +void BakerCLI::bakeFile(const QString inputFilename, const QString outputPath) { QUrl inputUrl(inputFilename); // if the URL doesn't have a scheme, assume it is a local file @@ -40,12 +44,12 @@ void BakerCLI::bakeFile(const QString inputFilename, const QString outputFilenam Baker* baker; if (isFBX) { - baker = new FBXBaker(inputUrl, outputFilename, []() -> QThread* { + baker = new FBXBaker(inputUrl, outputPath, []() -> QThread* { return qApp->getNextWorkerThread(); }); baker->moveToThread(qApp->getFBXBakerThread()); } else if (isSupportedImage) { - baker = new TextureBaker(inputUrl, image::TextureUsage::CUBE_TEXTURE, outputFilename); + baker = new TextureBaker(inputUrl, image::TextureUsage::CUBE_TEXTURE, outputPath); baker->moveToThread(qApp->getNextWorkerThread()); } else { qCDebug(model_baking) << "Failed to determine baker type for file" << inputUrl; diff --git a/tools/oven/src/BakerCLI.h b/tools/oven/src/BakerCLI.h index 7803aa6c86..88ea028b9f 100644 --- a/tools/oven/src/BakerCLI.h +++ b/tools/oven/src/BakerCLI.h @@ -14,11 +14,14 @@ #include +#include "Oven.h" + class BakerCLI : public QObject { Q_OBJECT public: - void bakeFile(const QString inputFilename, const QString outputFilename); + BakerCLI(Oven* parent); + void bakeFile(const QString inputFilename, const QString outputPath); private slots: void handleFinishedBaker(); diff --git a/tools/oven/src/Oven.cpp b/tools/oven/src/Oven.cpp index 3d356a5f1e..7431863ba5 100644 --- a/tools/oven/src/Oven.cpp +++ b/tools/oven/src/Oven.cpp @@ -22,6 +22,9 @@ static const QString OUTPUT_FOLDER = "/Users/birarda/code/hifi/lod/test-oven/export"; +static const QString CLI_INPUT_PARAMETER = "i"; +static const QString CLI_OUTPUT_PARAMETER = "o"; + Oven::Oven(int argc, char* argv[]) : QApplication(argc, argv) { @@ -35,8 +38,8 @@ Oven::Oven(int argc, char* argv[]) : QCommandLineParser parser; parser.addOptions({ - { "i", "Path to file that you would like to bake.", "input" }, - { "o", "Path to folder that will be used as output.", "output" } + { CLI_INPUT_PARAMETER, "Path to file that you would like to bake.", "input" }, + { CLI_OUTPUT_PARAMETER, "Path to folder that will be used as output.", "output" } }); parser.addHelpOption(); parser.process(*this); @@ -55,9 +58,9 @@ Oven::Oven(int argc, char* argv[]) : setupFBXBakerThread(); // check if we were passed any command line arguments that would tell us just to run without the GUI - if (parser.isSet("i") && parser.isSet("o")) { - BakerCLI* cli = new BakerCLI(); - cli->bakeFile(parser.value("i"), parser.value("o")); + if (parser.isSet(CLI_INPUT_PARAMETER) && parser.isSet(CLI_OUTPUT_PARAMETER)) { + BakerCLI* cli = new BakerCLI(this); + cli->bakeFile(parser.value(CLI_INPUT_PARAMETER), parser.value(CLI_OUTPUT_PARAMETER)); } else { // setup the GUI _mainWindow = new OvenMainWindow; From bac66ee4c70d1b5f290b25cb9b8a55e8e53e6df1 Mon Sep 17 00:00:00 2001 From: samcake Date: Tue, 6 Jun 2017 18:00:41 -0700 Subject: [PATCH 308/357] Introducing the renderview task --- interface/resources/config/render.json | 16 +++++---- interface/src/Application.cpp | 13 +++----- .../render-utils/src/AntialiasingEffect.cpp | 4 --- .../src/DeferredLightingEffect.cpp | 5 +-- libraries/render-utils/src/LightClusters.h | 6 ++-- .../render-utils/src/RenderShadowTask.cpp | 5 +-- libraries/render-utils/src/RenderViewTask.cpp | 33 +++++++++++++++++++ libraries/render-utils/src/RenderViewTask.h | 31 +++++++++++++++++ libraries/render/src/render/EngineStats.cpp | 2 -- libraries/render/src/task/Config.cpp | 2 ++ libraries/render/src/task/Config.h | 5 +-- libraries/render/src/task/Task.h | 1 + 12 files changed, 90 insertions(+), 33 deletions(-) create mode 100644 libraries/render-utils/src/RenderViewTask.cpp create mode 100644 libraries/render-utils/src/RenderViewTask.h diff --git a/interface/resources/config/render.json b/interface/resources/config/render.json index 414d94e11e..b5b72d7d07 100644 --- a/interface/resources/config/render.json +++ b/interface/resources/config/render.json @@ -1,14 +1,16 @@ { - "RenderShadowTask": { - "Enabled": { - "enabled": true - } - }, - "RenderDeferredTask": { - "AmbientOcclusion": { + "RenderMainView": { + "RenderShadowTask": { "Enabled": { "enabled": true } + }, + "RenderDeferredTask": { + "AmbientOcclusion": { + "Enabled": { + "enabled": true + } + } } } } diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index a726785746..3b5a801ece 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -113,6 +113,7 @@ #include #include #include +#include #include #include #include @@ -1795,15 +1796,9 @@ void Application::initializeGL() { // Set up the render engine render::CullFunctor cullFunctor = LODManager::shouldRender; - _renderEngine->addJob("RenderShadowTask", cullFunctor); - const auto items = _renderEngine->addJob("FetchCullSort", cullFunctor); - assert(items.canCast()); static const QString RENDER_FORWARD = "HIFI_RENDER_FORWARD"; - if (QProcessEnvironment::systemEnvironment().contains(RENDER_FORWARD)) { - _renderEngine->addJob("Forward", items); - } else { - _renderEngine->addJob("RenderDeferredTask", items); - } + bool isDeferred = !QProcessEnvironment::systemEnvironment().contains(RENDER_FORWARD); + _renderEngine->addJob("RenderMainView", cullFunctor, isDeferred); _renderEngine->load(); _renderEngine->registerScene(_main3DScene); @@ -5008,7 +5003,7 @@ namespace render { template <> const ItemKey payloadGetKey(const WorldBoxRenderData::Pointer& stuff) { return ItemKey::Builder::opaqueShape(); } template <> const Item::Bound payloadGetBound(const WorldBoxRenderData::Pointer& stuff) { return Item::Bound(); } template <> void payloadRender(const WorldBoxRenderData::Pointer& stuff, RenderArgs* args) { - if (args->_renderMode != RenderArgs::MIRROR_RENDER_MODE && Menu::getInstance()->isOptionChecked(MenuOption::WorldAxes)) { + if (Menu::getInstance()->isOptionChecked(MenuOption::WorldAxes)) { PerformanceTimer perfTimer("worldBox"); auto& batch = *args->_batch; diff --git a/libraries/render-utils/src/AntialiasingEffect.cpp b/libraries/render-utils/src/AntialiasingEffect.cpp index 139f1ae091..f7881b0333 100644 --- a/libraries/render-utils/src/AntialiasingEffect.cpp +++ b/libraries/render-utils/src/AntialiasingEffect.cpp @@ -110,10 +110,6 @@ void Antialiasing::run(const render::RenderContextPointer& renderContext, const RenderArgs* args = renderContext->args; - if (args->_renderMode == RenderArgs::MIRROR_RENDER_MODE) { - return; - } - gpu::doInBatch(args->_context, [&](gpu::Batch& batch) { batch.enableStereo(false); batch.setViewportTransform(args->_viewport); diff --git a/libraries/render-utils/src/DeferredLightingEffect.cpp b/libraries/render-utils/src/DeferredLightingEffect.cpp index 36a9401d00..4b3ee9fec7 100644 --- a/libraries/render-utils/src/DeferredLightingEffect.cpp +++ b/libraries/render-utils/src/DeferredLightingEffect.cpp @@ -504,10 +504,7 @@ void RenderDeferredSetup::run(const render::RenderContextPointer& renderContext, { // Framebuffer copy operations cannot function as multipass stereo operations. batch.enableStereo(false); - - // perform deferred lighting, rendering to free fbo - auto framebufferCache = DependencyManager::get(); - + auto textureCache = DependencyManager::get(); auto deferredLightingEffect = DependencyManager::get(); diff --git a/libraries/render-utils/src/LightClusters.h b/libraries/render-utils/src/LightClusters.h index 105d6fb139..f495dabebb 100644 --- a/libraries/render-utils/src/LightClusters.h +++ b/libraries/render-utils/src/LightClusters.h @@ -152,9 +152,9 @@ public: int numInputLights { 0 }; int numClusteredLights { 0 }; - void setNumClusteredLightReferences(int numRefs) { numClusteredLightReferences = numRefs; emit dirty(); } - void setNumInputLights(int numLights) { numInputLights = numLights; emit dirty(); } - void setNumClusteredLights(int numLights) { numClusteredLights = numLights; emit dirty(); } + void setNumClusteredLightReferences(int numRefs) { numClusteredLightReferences = numRefs; } + void setNumInputLights(int numLights) { numInputLights = numLights; } + void setNumClusteredLights(int numLights) { numClusteredLights = numLights; } int numSceneLights { 0 }; int numFreeSceneLights { 0 }; diff --git a/libraries/render-utils/src/RenderShadowTask.cpp b/libraries/render-utils/src/RenderShadowTask.cpp index d7ec087174..ddb64bc69e 100644 --- a/libraries/render-utils/src/RenderShadowTask.cpp +++ b/libraries/render-utils/src/RenderShadowTask.cpp @@ -48,6 +48,7 @@ void RenderShadowMap::run(const render::RenderContextPointer& renderContext, RenderArgs* args = renderContext->args; gpu::doInBatch(args->_context, [&](gpu::Batch& batch) { args->_batch = &batch; + batch.enableStereo(false); glm::ivec4 viewport{0, 0, fbo->getWidth(), fbo->getHeight()}; batch.setViewportTransform(viewport); @@ -114,7 +115,7 @@ void RenderShadowTask::build(JobModel& task, const render::Varying& input, rende skinProgram, state); } - const auto cachedMode = task.addJob("Setup"); + const auto cachedMode = task.addJob("ShadowSetup"); // CPU jobs: // Fetch and cull the items from the scene @@ -129,7 +130,7 @@ void RenderShadowTask::build(JobModel& task, const render::Varying& input, rende // GPU jobs: Render to shadow map task.addJob("RenderShadowMap", sortedShapes, shapePlumber); - task.addJob("Teardown", cachedMode); + task.addJob("ShadowTeardown", cachedMode); } void RenderShadowTask::configure(const Config& configuration) { diff --git a/libraries/render-utils/src/RenderViewTask.cpp b/libraries/render-utils/src/RenderViewTask.cpp new file mode 100644 index 0000000000..fceaf7b5b9 --- /dev/null +++ b/libraries/render-utils/src/RenderViewTask.cpp @@ -0,0 +1,33 @@ +// +// RenderViewTask.cpp +// render-utils/src/ +// +// Created by Sam Gateau on 5/25/2017. +// Copyright 2017 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// +#include "RenderViewTask.h" + +#include "RenderShadowTask.h" +#include "RenderDeferredTask.h" +#include "RenderForwardTask.h" + + + +void RenderViewTask::build(JobModel& task, const render::Varying& input, render::Varying& output, render::CullFunctor cullFunctor, bool isDeferred) { + // auto items = input.get(); + + task.addJob("RenderShadowTask", cullFunctor); + + const auto items = task.addJob("FetchCullSort", cullFunctor); + assert(items.canCast()); + + if (isDeferred) { + task.addJob("RenderDeferredTask", items); + } else { + task.addJob("Forward", items); + } +} + diff --git a/libraries/render-utils/src/RenderViewTask.h b/libraries/render-utils/src/RenderViewTask.h new file mode 100644 index 0000000000..eb61f56eab --- /dev/null +++ b/libraries/render-utils/src/RenderViewTask.h @@ -0,0 +1,31 @@ +// +// RenderViewTask.h +// render-utils/src/ +// +// Created by Sam Gateau on 5/25/2017. +// Copyright 2017 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// +#pragma once +#ifndef hifi_RenderViewTask_h +#define hifi_RenderViewTask_h + +#include +#include + + +class RenderViewTask { +public: + using Input = RenderFetchCullSortTask::Output; + using JobModel = render::Task::ModelI; + + RenderViewTask() {} + + void build(JobModel& task, const render::Varying& inputs, render::Varying& outputs, render::CullFunctor cullFunctor, bool isDeferred); + +}; + + +#endif // hifi_RenderViewTask_h diff --git a/libraries/render/src/render/EngineStats.cpp b/libraries/render/src/render/EngineStats.cpp index 9e45be5dbd..ae1467ac0f 100644 --- a/libraries/render/src/render/EngineStats.cpp +++ b/libraries/render/src/render/EngineStats.cpp @@ -63,6 +63,4 @@ void EngineStats::run(const RenderContextPointer& renderContext) { config->frameSetPipelineCount = _gpuStats._PSNumSetPipelines; config->frameSetInputFormatCount = _gpuStats._ISNumFormatChanges; - - config->emitDirty(); } diff --git a/libraries/render/src/task/Config.cpp b/libraries/render/src/task/Config.cpp index cb2c4f1e3c..0e630311f6 100644 --- a/libraries/render/src/task/Config.cpp +++ b/libraries/render/src/task/Config.cpp @@ -34,6 +34,7 @@ void TaskConfig::connectChildConfig(QConfigPointer childConfig, const std::strin if (childConfig->metaObject()->indexOfSignal(DIRTY_SIGNAL) != -1) { // Connect dirty->refresh if defined QObject::connect(childConfig.get(), SIGNAL(dirty()), this, SLOT(refresh())); + QObject::connect(childConfig.get(), SIGNAL(dirtyEnabled()), this, SLOT(refresh())); } } @@ -50,6 +51,7 @@ void TaskConfig::transferChildrenConfigs(QConfigPointer source) { if (child->metaObject()->indexOfSignal(DIRTY_SIGNAL) != -1) { // Connect dirty->refresh if defined QObject::connect(child, SIGNAL(dirty()), this, SLOT(refresh())); + QObject::connect(child, SIGNAL(dirtyEnabled()), this, SLOT(refresh())); } } } diff --git a/libraries/render/src/task/Config.h b/libraries/render/src/task/Config.h index c78a3f3bfe..40a3abbd18 100644 --- a/libraries/render/src/task/Config.h +++ b/libraries/render/src/task/Config.h @@ -89,7 +89,7 @@ protected: class JobConfig : public QObject { Q_OBJECT Q_PROPERTY(double cpuRunTime READ getCPURunTime NOTIFY newStats()) //ms - Q_PROPERTY(bool enabled READ isEnabled WRITE setEnabled) + Q_PROPERTY(bool enabled READ isEnabled WRITE setEnabled NOTIFY dirtyEnabled()) double _msCPURunTime{ 0.0 }; public: @@ -99,7 +99,7 @@ public: JobConfig(bool enabled) : alwaysEnabled{ false }, enabled{ enabled } {} bool isEnabled() { return alwaysEnabled || enabled; } - void setEnabled(bool enable) { enabled = alwaysEnabled || enable; } + void setEnabled(bool enable) { enabled = alwaysEnabled || enable; emit dirtyEnabled(); } bool alwaysEnabled{ true }; bool enabled{ true }; @@ -121,6 +121,7 @@ public slots: signals: void loaded(); void newStats(); + void dirtyEnabled(); }; class TaskConfig : public JobConfig { diff --git a/libraries/render/src/task/Task.h b/libraries/render/src/task/Task.h index ed335150a7..f76ba92546 100644 --- a/libraries/render/src/task/Task.h +++ b/libraries/render/src/task/Task.h @@ -170,6 +170,7 @@ protected: std::string _name = ""; }; + // A task is a specialized job to run a collection of other jobs // It can be created on any type T by aliasing the type JobModel in the class T // using JobModel = Task::Model From 608becef7dd7f3af88bc7f81ecc90c30ae816980 Mon Sep 17 00:00:00 2001 From: Mohammed Nafees Date: Wed, 7 Jun 2017 15:51:27 +0530 Subject: [PATCH 309/357] Make the back button work again, uses the browser history directly now. --- scripts/system/html/js/marketplacesInject.js | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/scripts/system/html/js/marketplacesInject.js b/scripts/system/html/js/marketplacesInject.js index d4937ac9db..3b3d4b4937 100644 --- a/scripts/system/html/js/marketplacesInject.js +++ b/scripts/system/html/js/marketplacesInject.js @@ -25,9 +25,7 @@ var canWriteAssets = false; var xmlHttpRequest = null; var isPreparing = false; // Explicitly track download request status. - - var lastPage = "https://metaverse.highfidelity.com/marketplace?"; - + function injectCommonCode(isDirectoryPage) { // Supporting styles from marketplaces.css. @@ -67,7 +65,7 @@ // Footer actions. $("#back-button").on("click", function () { - window.location = lastPage; + window.history.back(); }); $("#all-markets").on("click", function () { EventBridge.emitWebEvent(GOTO_DIRECTORY); @@ -344,12 +342,7 @@ } } - function locationChanged() { - lastPage = location.href; - } - // Load / unload. window.addEventListener("load", onLoad); // More robust to Web site issues than using $(document).ready(). - window.addEventListener("hashchange", locationChanged); }()); From 69520ff3db0f7b37bf34710f68b174e8d4f2fe23 Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Wed, 7 Jun 2017 10:28:02 -0700 Subject: [PATCH 310/357] pull from upstream, code review --- interface/src/avatar/MyAvatar.cpp | 11 +---------- interface/src/avatar/MyAvatar.h | 4 ---- 2 files changed, 1 insertion(+), 14 deletions(-) diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index 158e55ab5c..9e01d59f4f 100755 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -417,7 +417,7 @@ void MyAvatar::update(float deltaTime) { } #ifdef DEBUG_DRAW_HMD_MOVING_AVERAGE - glm::vec3 p = transformPoint(getSensorToWorldMatrix(), getHeadControllerPoseInAvatarFrame() + + glm::vec3 p = transformPoint(getSensorToWorldMatrix(), getHeadControllerPoseInAvatarFrame() * glm::vec3(_headControllerFacingMovingAverage.x, 0.0f, _headControllerFacingMovingAverage.y)); DebugDraw::getInstance().addMarker("facing-avg", getOrientation(), p, glm::vec4(1.0f)); p = transformPoint(getSensorToWorldMatrix(), getHMDSensorPosition() + @@ -644,7 +644,6 @@ void MyAvatar::updateFromHMDSensorMatrix(const glm::mat4& hmdSensorMatrix) { _hmdSensorPosition = newHmdSensorPosition; _hmdSensorOrientation = glm::quat_cast(hmdSensorMatrix); - // _headControllerFacing = getFacingDir2D(_hmdSensorOrientation); auto headPose = _headControllerPoseInSensorFrameCache.get(); if (headPose.isValid()) { _headControllerFacing = getFacingDir2D(headPose.rotation); @@ -2328,14 +2327,6 @@ bool MyAvatar::isDriveKeyDisabled(DriveKeys key) const { } } -glm::vec3 MyAvatar::getWorldBodyPosition() const { - return transformPoint(_sensorToWorldMatrix, extractTranslation(_bodySensorMatrix)); -} - -glm::quat MyAvatar::getWorldBodyOrientation() const { - return glm::quat_cast(_sensorToWorldMatrix * _bodySensorMatrix); -} - // old school meat hook style glm::mat4 MyAvatar::deriveBodyFromHMDSensor() const { glm::vec3 headPosition; diff --git a/interface/src/avatar/MyAvatar.h b/interface/src/avatar/MyAvatar.h index babe47a2bc..f828a48636 100644 --- a/interface/src/avatar/MyAvatar.h +++ b/interface/src/avatar/MyAvatar.h @@ -564,10 +564,6 @@ signals: private: - glm::vec3 getWorldBodyPosition() const; - glm::quat getWorldBodyOrientation() const; - - virtual QByteArray toByteArrayStateful(AvatarDataDetail dataDetail) override; void simulate(float deltaTime); From 99e9e108829eb60369212620b816470dea5f91d3 Mon Sep 17 00:00:00 2001 From: seefo Date: Wed, 7 Jun 2017 10:35:20 -0700 Subject: [PATCH 311/357] Made requested changes to OvenCLI constructor --- tools/oven/src/BakerCLI.cpp | 9 ++++----- tools/oven/src/BakerCLI.h | 2 +- tools/oven/src/Oven.cpp | 11 ++++++++--- 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/tools/oven/src/BakerCLI.cpp b/tools/oven/src/BakerCLI.cpp index 04d43853da..b76e00269f 100644 --- a/tools/oven/src/BakerCLI.cpp +++ b/tools/oven/src/BakerCLI.cpp @@ -19,11 +19,10 @@ #include "FBXBaker.h" #include "TextureBaker.h" -BakerCLI::BakerCLI(Oven* parent) : QObject() { +BakerCLI::BakerCLI(Oven* parent) : QObject(parent) { } -void BakerCLI::bakeFile(const QString inputFilename, const QString outputPath) { - QUrl inputUrl(inputFilename); +void BakerCLI::bakeFile(QUrl inputUrl, const QString outputPath) { // if the URL doesn't have a scheme, assume it is a local file if (inputUrl.scheme() != "http" && inputUrl.scheme() != "https" && inputUrl.scheme() != "ftp") { @@ -33,11 +32,11 @@ void BakerCLI::bakeFile(const QString inputFilename, const QString outputPath) { static const QString MODEL_EXTENSION { ".fbx" }; // check what kind of baker we should be creating - bool isFBX = inputFilename.endsWith(MODEL_EXTENSION, Qt::CaseInsensitive); + bool isFBX = inputUrl.toDisplayString().endsWith(MODEL_EXTENSION, Qt::CaseInsensitive); bool isSupportedImage = false; for (QByteArray format : QImageReader::supportedImageFormats()) { - isSupportedImage |= inputFilename.endsWith(format, Qt::CaseInsensitive); + isSupportedImage |= inputUrl.toDisplayString().endsWith(format, Qt::CaseInsensitive); } // create our appropiate baker diff --git a/tools/oven/src/BakerCLI.h b/tools/oven/src/BakerCLI.h index 88ea028b9f..5935151bb5 100644 --- a/tools/oven/src/BakerCLI.h +++ b/tools/oven/src/BakerCLI.h @@ -21,7 +21,7 @@ class BakerCLI : public QObject { public: BakerCLI(Oven* parent); - void bakeFile(const QString inputFilename, const QString outputPath); + void bakeFile(QUrl inputUrl, const QString outputPath); private slots: void handleFinishedBaker(); diff --git a/tools/oven/src/Oven.cpp b/tools/oven/src/Oven.cpp index 7431863ba5..a38aaa2b97 100644 --- a/tools/oven/src/Oven.cpp +++ b/tools/oven/src/Oven.cpp @@ -58,9 +58,14 @@ Oven::Oven(int argc, char* argv[]) : setupFBXBakerThread(); // check if we were passed any command line arguments that would tell us just to run without the GUI - if (parser.isSet(CLI_INPUT_PARAMETER) && parser.isSet(CLI_OUTPUT_PARAMETER)) { - BakerCLI* cli = new BakerCLI(this); - cli->bakeFile(parser.value(CLI_INPUT_PARAMETER), parser.value(CLI_OUTPUT_PARAMETER)); + if (parser.isSet(CLI_INPUT_PARAMETER) || parser.isSet(CLI_OUTPUT_PARAMETER)) { + if (parser.isSet(CLI_INPUT_PARAMETER) && parser.isSet(CLI_OUTPUT_PARAMETER)) { + BakerCLI* cli = new BakerCLI(this); + cli->bakeFile(parser.value(CLI_INPUT_PARAMETER), parser.value(CLI_OUTPUT_PARAMETER)); + } else { + parser.showHelp(); + QApplication::quit(); + } } else { // setup the GUI _mainWindow = new OvenMainWindow; From c3bf915fd4d289584130425a8b6543c345bd99fa Mon Sep 17 00:00:00 2001 From: Liv Date: Wed, 7 Jun 2017 15:04:39 -0700 Subject: [PATCH 312/357] Changing loop to avoid unused warnings --- libraries/render-utils/src/GeometryCache.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/render-utils/src/GeometryCache.cpp b/libraries/render-utils/src/GeometryCache.cpp index 32621e2606..12de40dce8 100644 --- a/libraries/render-utils/src/GeometryCache.cpp +++ b/libraries/render-utils/src/GeometryCache.cpp @@ -265,7 +265,7 @@ void extrudePolygon(GeometryCache::ShapeData& shapeData, gpu::BufferPointer& ver // Top (if not conical) and bottom faces std::vector shape = polygon(); if (isConical) { - for (const vec3& v : shape) { + for (uint32_t i = 0; i < N; i++) { vertices.push_back(vec3(0, 0.5f, 0)); vertices.push_back(vec3(0, 1, 0)); } From a654bfa692ca3fc89ddcd0057d371f954f8edcb1 Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Thu, 1 Jun 2017 11:20:36 -0700 Subject: [PATCH 313/357] Update server-console to watch interface via pid rather than marker --- interface/src/main.cpp | 2 +- libraries/networking/src/SandboxUtils.cpp | 8 ++++---- libraries/networking/src/SandboxUtils.h | 2 +- server-console/src/main.js | 22 ++++++++++++++++++++++ 4 files changed, 28 insertions(+), 6 deletions(-) diff --git a/interface/src/main.cpp b/interface/src/main.cpp index 63738d2d91..a22130377a 100644 --- a/interface/src/main.cpp +++ b/interface/src/main.cpp @@ -199,7 +199,7 @@ int main(int argc, const char* argv[]) { bool serverContentPathOptionIsSet = parser.isSet(serverContentPathOption); QString serverContentPath = serverContentPathOptionIsSet ? parser.value(serverContentPathOption) : QString(); if (runServer) { - SandboxUtils::runLocalSandbox(serverContentPath, true, RUNNING_MARKER_FILENAME, noUpdater); + SandboxUtils::runLocalSandbox(serverContentPath, true, noUpdater); } Application app(argc, const_cast(argv), startupTime, runningMarkerExisted); diff --git a/libraries/networking/src/SandboxUtils.cpp b/libraries/networking/src/SandboxUtils.cpp index d816f7ebee..c62bd8f982 100644 --- a/libraries/networking/src/SandboxUtils.cpp +++ b/libraries/networking/src/SandboxUtils.cpp @@ -52,9 +52,8 @@ bool readStatus(QByteArray statusData) { return false; } -void runLocalSandbox(QString contentPath, bool autoShutdown, QString runningMarkerName, bool noUpdater) { +void runLocalSandbox(QString contentPath, bool autoShutdown, bool noUpdater) { QString serverPath = "./server-console/server-console.exe"; - qCDebug(networking) << "Running marker path is: " << runningMarkerName; qCDebug(networking) << "Server path is: " << serverPath; qCDebug(networking) << "autoShutdown: " << autoShutdown; qCDebug(networking) << "noUpdater: " << noUpdater; @@ -74,8 +73,9 @@ void runLocalSandbox(QString contentPath, bool autoShutdown, QString runningMark } if (autoShutdown) { - QString interfaceRunningStateFile = RunningMarker::getMarkerFilePath(runningMarkerName); - args << "--shutdownWatcher" << interfaceRunningStateFile; + auto pid = qApp->applicationPid(); + qCDebug(networking) << "autoShutdown pid is" << pid; + args << "--watchProcessShutdown" << QString::number(pid); } if (noUpdater) { diff --git a/libraries/networking/src/SandboxUtils.h b/libraries/networking/src/SandboxUtils.h index 42484b8edf..370b28e1b0 100644 --- a/libraries/networking/src/SandboxUtils.h +++ b/libraries/networking/src/SandboxUtils.h @@ -21,7 +21,7 @@ namespace SandboxUtils { QNetworkReply* getStatus(); bool readStatus(QByteArray statusData); - void runLocalSandbox(QString contentPath, bool autoShutdown, QString runningMarkerName, bool noUpdater); + void runLocalSandbox(QString contentPath, bool autoShutdown, bool noUpdater); }; #endif // hifi_SandboxUtils_h diff --git a/server-console/src/main.js b/server-console/src/main.js index 98bda9a10f..725c6ca0c8 100644 --- a/server-console/src/main.js +++ b/server-console/src/main.js @@ -821,6 +821,15 @@ for (var key in trayIcons) { const notificationIcon = path.join(__dirname, '../resources/console-notification.png'); +function isProcessRunning(pid) { + try { + running = process.kill(pid, 0); + return true; + } catch (e) { + } + return false; +} + function onContentLoaded() { // Disable splash window for now. // maybeShowSplash(); @@ -882,6 +891,19 @@ function onContentLoaded() { startInterface(); } + if (argv.watchProcessShutdown) { + let pid = argv.watchProcessShutdown; + console.log("Watching process: ", pid); + let watchProcessInterval = setInterval(function() { + let isRunning = isProcessRunning(pid); + if (!isRunning) { + log.debug("Watched process is no longer running, shutting down"); + clearTimeout(watchProcessInterval); + forcedShutdown(); + } + }, 5000); + } + // If we were launched with the shutdownWatcher option, then we need to watch for the interface app // shutting down. The interface app will regularly update a running state file which we will check. // If the file doesn't exist or stops updating for a significant amount of time, we will shut down. From 34630f839f05d773db1e4d8f6947e1ea08cad84c Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Thu, 1 Jun 2017 12:48:42 -0700 Subject: [PATCH 314/357] Fix isProcessRunning error in strict mode --- server-console/src/main.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/server-console/src/main.js b/server-console/src/main.js index 725c6ca0c8..55a45a4991 100644 --- a/server-console/src/main.js +++ b/server-console/src/main.js @@ -823,8 +823,7 @@ const notificationIcon = path.join(__dirname, '../resources/console-notification function isProcessRunning(pid) { try { - running = process.kill(pid, 0); - return true; + return process.kill(pid, 0); } catch (e) { } return false; From 37321814b6c2bc5164128a08a21a78bd028478d8 Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Thu, 1 Jun 2017 18:13:27 -0700 Subject: [PATCH 315/357] Rename watchProcessShutdown to shutdownWith --- libraries/networking/src/SandboxUtils.cpp | 3 +-- server-console/src/main.js | 14 +++++++------- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/libraries/networking/src/SandboxUtils.cpp b/libraries/networking/src/SandboxUtils.cpp index c62bd8f982..f6c7634ce5 100644 --- a/libraries/networking/src/SandboxUtils.cpp +++ b/libraries/networking/src/SandboxUtils.cpp @@ -74,8 +74,7 @@ void runLocalSandbox(QString contentPath, bool autoShutdown, bool noUpdater) { if (autoShutdown) { auto pid = qApp->applicationPid(); - qCDebug(networking) << "autoShutdown pid is" << pid; - args << "--watchProcessShutdown" << QString::number(pid); + args << "--shutdownWith" << QString::number(pid); } if (noUpdater) { diff --git a/server-console/src/main.js b/server-console/src/main.js index 55a45a4991..6667a570c8 100644 --- a/server-console/src/main.js +++ b/server-console/src/main.js @@ -890,18 +890,18 @@ function onContentLoaded() { startInterface(); } - if (argv.watchProcessShutdown) { - let pid = argv.watchProcessShutdown; - console.log("Watching process: ", pid); - let watchProcessInterval = setInterval(function() { + // If we were launched with the shutdownWith option, then we need to shutdown when that process (pid) + // is no longer running. + if (argv.shutdownWith) { + let pid = argv.shutdownWith; + console.log("Shutting down with process: ", pid); + let checkProcessInterval = setInterval(function() { let isRunning = isProcessRunning(pid); if (!isRunning) { log.debug("Watched process is no longer running, shutting down"); - clearTimeout(watchProcessInterval); + clearTimeout(checkProcessInterval); forcedShutdown(); } - }, 5000); - } // If we were launched with the shutdownWatcher option, then we need to watch for the interface app // shutting down. The interface app will regularly update a running state file which we will check. From ccd473ad0cfccefa4833b03f544f0a5f2b7faf81 Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Thu, 1 Jun 2017 18:13:40 -0700 Subject: [PATCH 316/357] Remove shutdownWatcher option inside sandbox --- server-console/src/main.js | 26 -------------------------- 1 file changed, 26 deletions(-) diff --git a/server-console/src/main.js b/server-console/src/main.js index 6667a570c8..46cc472e04 100644 --- a/server-console/src/main.js +++ b/server-console/src/main.js @@ -902,32 +902,6 @@ function onContentLoaded() { clearTimeout(checkProcessInterval); forcedShutdown(); } - - // If we were launched with the shutdownWatcher option, then we need to watch for the interface app - // shutting down. The interface app will regularly update a running state file which we will check. - // If the file doesn't exist or stops updating for a significant amount of time, we will shut down. - if (argv.shutdownWatcher) { - log.debug("Shutdown watcher requested... argv.shutdownWatcher:", argv.shutdownWatcher); - var MAX_TIME_SINCE_EDIT = 5000; // 5 seconds between updates - var firstAttemptToCheck = new Date().getTime(); - var shutdownWatchInterval = setInterval(function(){ - var stats = fs.stat(argv.shutdownWatcher, function(err, stats) { - if (err) { - var sinceFirstCheck = new Date().getTime() - firstAttemptToCheck; - if (sinceFirstCheck > MAX_TIME_SINCE_EDIT) { - log.debug("Running state file is missing, assume interface has shutdown... shutting down snadbox."); - forcedShutdown(); - clearTimeout(shutdownWatchInterval); - } - } else { - var sinceEdit = new Date().getTime() - stats.mtime.getTime(); - if (sinceEdit > MAX_TIME_SINCE_EDIT) { - log.debug("Running state of interface hasn't updated in MAX time... shutting down."); - forcedShutdown(); - clearTimeout(shutdownWatchInterval); - } - } - }); }, 1000); } } From 3888385a7294556c617283baa839dd2e99474b0f Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Thu, 1 Jun 2017 18:19:13 -0700 Subject: [PATCH 317/357] Remove the runningMarker timer --- interface/src/main.cpp | 5 +--- libraries/shared/src/RunningMarker.cpp | 35 +------------------------- libraries/shared/src/RunningMarker.h | 12 +-------- 3 files changed, 3 insertions(+), 49 deletions(-) diff --git a/interface/src/main.cpp b/interface/src/main.cpp index a22130377a..83cac6d9bb 100644 --- a/interface/src/main.cpp +++ b/interface/src/main.cpp @@ -190,7 +190,7 @@ int main(int argc, const char* argv[]) { int exitCode; { - RunningMarker runningMarker(nullptr, RUNNING_MARKER_FILENAME); + RunningMarker runningMarker(RUNNING_MARKER_FILENAME); bool runningMarkerExisted = runningMarker.fileExists(); runningMarker.writeRunningMarkerFile(); @@ -204,9 +204,6 @@ int main(int argc, const char* argv[]) { Application app(argc, const_cast(argv), startupTime, runningMarkerExisted); - // Now that the main event loop is setup, launch running marker thread - runningMarker.startRunningMarker(); - // If we failed the OpenGLVersion check, log it. if (override) { auto accountManager = DependencyManager::get(); diff --git a/libraries/shared/src/RunningMarker.cpp b/libraries/shared/src/RunningMarker.cpp index 0c1fd06df8..cb7b39320c 100644 --- a/libraries/shared/src/RunningMarker.cpp +++ b/libraries/shared/src/RunningMarker.cpp @@ -13,44 +13,16 @@ #include #include -#include -#include -#include "NumericalConstants.h" #include "PathUtils.h" -RunningMarker::RunningMarker(QObject* parent, QString name) : - _parent(parent), +RunningMarker::RunningMarker(QString name) : _name(name) { } -void RunningMarker::startRunningMarker() { - static const int RUNNING_STATE_CHECK_IN_MSECS = MSECS_PER_SECOND; - - // start the nodeThread so its event loop is running - _runningMarkerThread = new QThread(_parent); - _runningMarkerThread->setObjectName("Running Marker Thread"); - _runningMarkerThread->start(); - - writeRunningMarkerFile(); // write the first file, even before timer - - _runningMarkerTimer = new QTimer(); - QObject::connect(_runningMarkerTimer, &QTimer::timeout, [=](){ - writeRunningMarkerFile(); - }); - _runningMarkerTimer->start(RUNNING_STATE_CHECK_IN_MSECS); - - // put the time on the thread - _runningMarkerTimer->moveToThread(_runningMarkerThread); -} - RunningMarker::~RunningMarker() { deleteRunningMarkerFile(); - QMetaObject::invokeMethod(_runningMarkerTimer, "stop", Qt::BlockingQueuedConnection); - _runningMarkerThread->quit(); - _runningMarkerTimer->deleteLater(); - _runningMarkerThread->deleteLater(); } bool RunningMarker::fileExists() const { @@ -77,8 +49,3 @@ void RunningMarker::deleteRunningMarkerFile() { QString RunningMarker::getFilePath() const { return QStandardPaths::writableLocation(QStandardPaths::DataLocation) + "/" + _name; } - -QString RunningMarker::getMarkerFilePath(QString name) { - return QStandardPaths::writableLocation(QStandardPaths::DataLocation) + "/" + name; -} - diff --git a/libraries/shared/src/RunningMarker.h b/libraries/shared/src/RunningMarker.h index f9c8e72d37..ae7c550660 100644 --- a/libraries/shared/src/RunningMarker.h +++ b/libraries/shared/src/RunningMarker.h @@ -12,21 +12,14 @@ #ifndef hifi_RunningMarker_h #define hifi_RunningMarker_h -#include #include -class QThread; -class QTimer; - class RunningMarker { public: - RunningMarker(QObject* parent, QString name); + RunningMarker(QString name); ~RunningMarker(); - void startRunningMarker(); - QString getFilePath() const; - static QString getMarkerFilePath(QString name); bool fileExists() const; @@ -34,10 +27,7 @@ public: void deleteRunningMarkerFile(); private: - QObject* _parent { nullptr }; QString _name; - QThread* _runningMarkerThread { nullptr }; - QTimer* _runningMarkerTimer { nullptr }; }; #endif // hifi_RunningMarker_h From f10f717ea205917873b721a4caa23c1758b340a8 Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Fri, 2 Jun 2017 08:58:35 -0700 Subject: [PATCH 318/357] Add clarifying comment to use of kill in isProcessRunning --- server-console/src/main.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/server-console/src/main.js b/server-console/src/main.js index 46cc472e04..408a17bd56 100644 --- a/server-console/src/main.js +++ b/server-console/src/main.js @@ -823,6 +823,9 @@ const notificationIcon = path.join(__dirname, '../resources/console-notification function isProcessRunning(pid) { try { + // Sending a signal of 0 is effectively a NOOP. + // If sending the signal is successful, kill will return true. + // If the process is not running, an exception will be thrown. return process.kill(pid, 0); } catch (e) { } From 2146f96091a4b0462eb61d0ee3e33a47b72ee61d Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Fri, 2 Jun 2017 13:51:39 -0700 Subject: [PATCH 319/357] Replace static use of qApp with QCoreApplication --- libraries/networking/src/SandboxUtils.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/networking/src/SandboxUtils.cpp b/libraries/networking/src/SandboxUtils.cpp index f6c7634ce5..4a348b0662 100644 --- a/libraries/networking/src/SandboxUtils.cpp +++ b/libraries/networking/src/SandboxUtils.cpp @@ -73,7 +73,7 @@ void runLocalSandbox(QString contentPath, bool autoShutdown, bool noUpdater) { } if (autoShutdown) { - auto pid = qApp->applicationPid(); + auto pid = QCoreApplication::applicationPid(); args << "--shutdownWith" << QString::number(pid); } From 1b45276de2686a083d263a67b014227a6c762346 Mon Sep 17 00:00:00 2001 From: samcake Date: Wed, 7 Jun 2017 15:55:38 -0700 Subject: [PATCH 320/357] Adjust the preview to avoid seeing the masked pixels in HMD mode --- .../src/display-plugins/hmd/HmdDisplayPlugin.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/libraries/display-plugins/src/display-plugins/hmd/HmdDisplayPlugin.cpp b/libraries/display-plugins/src/display-plugins/hmd/HmdDisplayPlugin.cpp index cab96c258b..08c8d4f754 100644 --- a/libraries/display-plugins/src/display-plugins/hmd/HmdDisplayPlugin.cpp +++ b/libraries/display-plugins/src/display-plugins/hmd/HmdDisplayPlugin.cpp @@ -221,6 +221,12 @@ void HmdDisplayPlugin::internalPresent() { float shiftLeftBy = getLeftCenterPixel() - (sourceSize.x / 2); float newWidth = sourceSize.x - shiftLeftBy; + // Experimentally adjusted the region presented in preview to avoid seeing the masked pixels and recenter the center... + static float SCALE_WIDTH = 0.9f; + static float SCALE_OFFSET = 2.0f; + newWidth *= SCALE_WIDTH; + shiftLeftBy *= SCALE_OFFSET; + const unsigned int RATIO_Y = 9; const unsigned int RATIO_X = 16; glm::uvec2 originalClippedSize { newWidth, newWidth * RATIO_Y / RATIO_X }; From 9cf027a68c3facf258f6fea15123f7675aae312e Mon Sep 17 00:00:00 2001 From: howard-stearns Date: Wed, 7 Jun 2017 16:44:13 -0700 Subject: [PATCH 321/357] pr feedback --- interface/src/avatar/MyAvatar.cpp | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index 811c0ae55e..bc621543e3 100755 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -2261,7 +2261,6 @@ bool MyAvatar::safeLanding(const glm::vec3& position) { if (!requiresSafeLanding(position, better)) { return false; } - qDebug() << "rechecking" << position << " => " << better << " collisions:" << getCollisionsEnabled() << " physics:" << qApp->isPhysicsEnabled(); if (!getCollisionsEnabled()) { goToLocation(better); // recurses on next update } else { // If you try to go while stuck, physics will keep you stuck. @@ -2334,18 +2333,19 @@ bool MyAvatar::requiresSafeLanding(const glm::vec3& positionIn, glm::vec3& bette } // See if we have room between entities above and below, but that we are not contained. + // First check if the surface above us is the bottom of something, and the surface below us it the top of something. + // I.e., we are in a clearing between two objects. if (isDown(upperNormal) && isUp(lowerNormal)) { - // The surface above us is the bottom of something, and the surface below us it the top of something. - // I.e., we are in a clearing between two objects. - auto delta = glm::distance(upperIntersection, lowerIntersection); + auto spaceBetween = glm::distance(upperIntersection, lowerIntersection); const float halfHeightFactor = 2.5f; // Until case 5003 is fixed (and maybe after?), we need a fudge factor. Also account for content modelers not being precise. - if (delta > (halfHeightFactor * halfHeight)) { + if (spaceBetween > (halfHeightFactor * halfHeight)) { // There is room for us to fit in that clearing. If there wasn't, physics would oscilate us between the objects above and below. // We're now going to iterate upwards through successive upperIntersections, testing to see if we're contained within the top surface of some entity. // There will be one of two outcomes: // a) We're not contained, so we have enough room and our position is good. // b) We are contained, so we'll bail out of this but try again at a position above the containing entity. - for (;;) { + const int iterationLimit = 1000; + for (int counter = 0; counter < iterationLimit; counter++) { ignore.push_back(upperId); if (!findIntersection(upperIntersection, up, upperIntersection, upperId, upperNormal)) { // We're not inside an entity, and from the nested tests, we have room between what is above and below. So position is good! @@ -2360,6 +2360,7 @@ bool MyAvatar::requiresSafeLanding(const glm::vec3& positionIn, glm::vec3& bette // We found a new bottom surface, which we're not interested in. // But there could still be a top surface above us for an entity we haven't seen, so keep looking upward. } + qCDebug(interfaceapp) << "Loop in requiresSafeLanding. Floor/ceiling do not make sense."; } } From 26bd6b67ae39663cf03f752882c3107307738f68 Mon Sep 17 00:00:00 2001 From: seefo Date: Wed, 7 Jun 2017 16:44:49 -0700 Subject: [PATCH 322/357] Final touches to polaroid feature --- scripts/system/html/js/SnapshotReview.js | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/scripts/system/html/js/SnapshotReview.js b/scripts/system/html/js/SnapshotReview.js index 7a5f119037..a3d1923aa9 100644 --- a/scripts/system/html/js/SnapshotReview.js +++ b/scripts/system/html/js/SnapshotReview.js @@ -723,15 +723,24 @@ function takeSnapshot() { } function isPrintDisabled() { - return document.getElementById('print-icon').className === "print-icon print-icon-default" && + var printElement = document.getElementById('print-icon'); + + return printElement.classList.contains("print-icon") && + printElement.classList.contains("print-icon-default") && document.getElementById('print-button').disabled; } function isPrintProcessing() { - return document.getElementById('print-icon').className === "print-icon print-icon-loading" && + var printElement = document.getElementById('print-icon'); + + return printElement.classList.contains("print-icon") && + printElement.classList.contains("print-icon-loading") && document.getElementById('print-button').disabled; } function isPrintEnabled() { - return document.getElementById('print-icon').className === "print-icon print-icon-default" && + var printElement = document.getElementById('print-icon'); + + return printElement.classList.contains("print-icon") && + printElement.classList.contains("print-icon-default") && !document.getElementById('print-button').disabled; } From 34bd2b8a2b93140b4b8f209eb081a6a4ebc67eb3 Mon Sep 17 00:00:00 2001 From: Liv Date: Thu, 8 Jun 2017 09:01:01 -0700 Subject: [PATCH 323/357] style fix --- libraries/render-utils/src/GeometryCache.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/render-utils/src/GeometryCache.cpp b/libraries/render-utils/src/GeometryCache.cpp index 12de40dce8..0c551feee7 100644 --- a/libraries/render-utils/src/GeometryCache.cpp +++ b/libraries/render-utils/src/GeometryCache.cpp @@ -265,7 +265,7 @@ void extrudePolygon(GeometryCache::ShapeData& shapeData, gpu::BufferPointer& ver // Top (if not conical) and bottom faces std::vector shape = polygon(); if (isConical) { - for (uint32_t i = 0; i < N; i++) { + for (uint32_t i = 0; i < N; i++) { vertices.push_back(vec3(0, 0.5f, 0)); vertices.push_back(vec3(0, 1, 0)); } From 0c7ffa0ac6416ac040590ed61940416a2e1b640c Mon Sep 17 00:00:00 2001 From: seefo Date: Thu, 8 Jun 2017 09:47:01 -0700 Subject: [PATCH 324/357] Replaced baker in OvenCLI with an std::unique_ptr --- tools/oven/src/BakerCLI.cpp | 17 ++++++----------- tools/oven/src/BakerCLI.h | 5 ++++- 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/tools/oven/src/BakerCLI.cpp b/tools/oven/src/BakerCLI.cpp index b76e00269f..7bdd221514 100644 --- a/tools/oven/src/BakerCLI.cpp +++ b/tools/oven/src/BakerCLI.cpp @@ -40,30 +40,25 @@ void BakerCLI::bakeFile(QUrl inputUrl, const QString outputPath) { } // create our appropiate baker - Baker* baker; - if (isFBX) { - baker = new FBXBaker(inputUrl, outputPath, []() -> QThread* { - return qApp->getNextWorkerThread(); - }); - baker->moveToThread(qApp->getFBXBakerThread()); + _baker = std::unique_ptr { new FBXBaker(inputUrl, outputPath, []() -> QThread* { return qApp->getNextWorkerThread(); }) }; + _baker->moveToThread(qApp->getFBXBakerThread()); } else if (isSupportedImage) { - baker = new TextureBaker(inputUrl, image::TextureUsage::CUBE_TEXTURE, outputPath); - baker->moveToThread(qApp->getNextWorkerThread()); + _baker = std::unique_ptr { new TextureBaker(inputUrl, image::TextureUsage::CUBE_TEXTURE, outputPath) }; + _baker->moveToThread(qApp->getNextWorkerThread()); } else { qCDebug(model_baking) << "Failed to determine baker type for file" << inputUrl; return; } // invoke the bake method on the baker thread - QMetaObject::invokeMethod(baker, "bake"); + QMetaObject::invokeMethod(_baker.get(), "bake"); // make sure we hear about the results of this baker when it is done - connect(baker, &Baker::finished, this, &BakerCLI::handleFinishedBaker); + connect(_baker.get(), &Baker::finished, this, &BakerCLI::handleFinishedBaker); } void BakerCLI::handleFinishedBaker() { qCDebug(model_baking) << "Finished baking file."; - sender()->deleteLater(); QApplication::quit(); } \ No newline at end of file diff --git a/tools/oven/src/BakerCLI.h b/tools/oven/src/BakerCLI.h index 5935151bb5..cb2b908059 100644 --- a/tools/oven/src/BakerCLI.h +++ b/tools/oven/src/BakerCLI.h @@ -14,6 +14,7 @@ #include +#include "Baker.h" #include "Oven.h" class BakerCLI : public QObject { @@ -24,8 +25,10 @@ public: void bakeFile(QUrl inputUrl, const QString outputPath); private slots: - void handleFinishedBaker(); + void handleFinishedBaker(); +private: + std::unique_ptr _baker; }; #endif // hifi_BakerCLI_h \ No newline at end of file From 3b471425926daf1a7bd8cc201fe89b882aaa107b Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Thu, 8 Jun 2017 10:28:38 -0700 Subject: [PATCH 325/357] fix bug that causes hmd avatar eyes to be all the way to the side when there's not another avatar to look at --- interface/src/Application.cpp | 2 +- interface/src/avatar/MyAvatar.cpp | 6 +++--- interface/src/avatar/MyAvatar.h | 1 - 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index ea5a9c0a89..44b0a36f7a 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -4163,7 +4163,7 @@ void Application::updateMyAvatarLookAtPosition() { lookAtSpot = transformPoint(worldHeadMat, glm::vec3(0.0f, 0.0f, -TREE_SCALE)); } else { lookAtSpot = myAvatar->getHead()->getEyePosition() + - (myAvatar->getHead()->getFinalOrientationInWorldFrame() * glm::vec3(0.0f, 0.0f, -TREE_SCALE)); + (myAvatar->getHead()->getFinalOrientationInWorldFrame() * glm::vec3(0.0f, 0.0f, TREE_SCALE)); } } diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index bc621543e3..dea2404cee 100755 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -2664,8 +2664,8 @@ bool MyAvatar::FollowHelper::shouldActivateVertical(const MyAvatar& myAvatar, co return (offset.y > CYLINDER_TOP) || (offset.y < CYLINDER_BOTTOM); } -void MyAvatar::FollowHelper::prePhysicsUpdate(MyAvatar& myAvatar, const glm::mat4& desiredBodyMatrix, const glm::mat4& currentBodyMatrix, bool hasDriveInput) { - _desiredBodyMatrix = desiredBodyMatrix; +void MyAvatar::FollowHelper::prePhysicsUpdate(MyAvatar& myAvatar, const glm::mat4& desiredBodyMatrix, + const glm::mat4& currentBodyMatrix, bool hasDriveInput) { if (myAvatar.getHMDLeanRecenterEnabled()) { if (!isActive(Rotation) && shouldActivateRotation(myAvatar, desiredBodyMatrix, currentBodyMatrix)) { @@ -2679,7 +2679,7 @@ void MyAvatar::FollowHelper::prePhysicsUpdate(MyAvatar& myAvatar, const glm::mat } } - glm::mat4 desiredWorldMatrix = myAvatar.getSensorToWorldMatrix() * _desiredBodyMatrix; + glm::mat4 desiredWorldMatrix = myAvatar.getSensorToWorldMatrix() * desiredBodyMatrix; glm::mat4 currentWorldMatrix = myAvatar.getSensorToWorldMatrix() * currentBodyMatrix; AnimPose followWorldPose(currentWorldMatrix); diff --git a/interface/src/avatar/MyAvatar.h b/interface/src/avatar/MyAvatar.h index 3e2581382d..fb11705a9c 100644 --- a/interface/src/avatar/MyAvatar.h +++ b/interface/src/avatar/MyAvatar.h @@ -702,7 +702,6 @@ private: Vertical, NumFollowTypes }; - glm::mat4 _desiredBodyMatrix; float _timeRemaining[NumFollowTypes]; void deactivate(); From 110a2f5d037058d55db92ec311ff3f74da8b47dc Mon Sep 17 00:00:00 2001 From: seefo Date: Thu, 8 Jun 2017 10:35:50 -0700 Subject: [PATCH 326/357] Resolved FB#4399 --- domain-server/resources/web/content/index.shtml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/domain-server/resources/web/content/index.shtml b/domain-server/resources/web/content/index.shtml index c7eb765878..e1ba5499b6 100644 --- a/domain-server/resources/web/content/index.shtml +++ b/domain-server/resources/web/content/index.shtml @@ -21,7 +21,7 @@

        If your domain has any content that you would like to re-use at a later date, save a manual backup of your models.json.gz file, which is usually stored at the following paths:
        -

        C:\Users\[username]\AppData\Roaming\High Fidelity\assignment-client/entities/models.json.gz
        +
        C:/Users/[username]/AppData/Roaming/High Fidelity/assignment-client/entities/models.json.gz
        /Users/[username]/Library/Application Support/High Fidelity/assignment-client/entities/models.json.gz
        /home/[username]/.local/share/High Fidelity/assignment-client/entities/models.json.gz

        From a4f4d49bec82425be82abca9b44e17528e0d445d Mon Sep 17 00:00:00 2001 From: seefo Date: Thu, 8 Jun 2017 11:50:23 -0700 Subject: [PATCH 327/357] Oven will now give proper return codes when used via CLI --- tools/oven/src/BakerCLI.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/oven/src/BakerCLI.cpp b/tools/oven/src/BakerCLI.cpp index 7bdd221514..14eb9de150 100644 --- a/tools/oven/src/BakerCLI.cpp +++ b/tools/oven/src/BakerCLI.cpp @@ -48,7 +48,7 @@ void BakerCLI::bakeFile(QUrl inputUrl, const QString outputPath) { _baker->moveToThread(qApp->getNextWorkerThread()); } else { qCDebug(model_baking) << "Failed to determine baker type for file" << inputUrl; - return; + QApplication::exit(1); } // invoke the bake method on the baker thread @@ -60,5 +60,5 @@ void BakerCLI::bakeFile(QUrl inputUrl, const QString outputPath) { void BakerCLI::handleFinishedBaker() { qCDebug(model_baking) << "Finished baking file."; - QApplication::quit(); + QApplication::exit(_baker.get()->hasErrors()); } \ No newline at end of file From fce3badd1d985eddc0e5fa1ee2bee19169eff8ee Mon Sep 17 00:00:00 2001 From: seefo Date: Thu, 8 Jun 2017 10:48:38 -0700 Subject: [PATCH 328/357] Resolved FB#5005 --- libraries/networking/src/UserActivityLogger.cpp | 10 ++++++++++ libraries/networking/src/UserActivityLogger.h | 5 ++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/libraries/networking/src/UserActivityLogger.cpp b/libraries/networking/src/UserActivityLogger.cpp index 28117c0933..51445dce2a 100644 --- a/libraries/networking/src/UserActivityLogger.cpp +++ b/libraries/networking/src/UserActivityLogger.cpp @@ -20,6 +20,10 @@ #include #include "AddressManager.h" +UserActivityLogger::UserActivityLogger() { + _timer.start(); +} + UserActivityLogger& UserActivityLogger::getInstance() { static UserActivityLogger sharedInstance; return sharedInstance; @@ -42,6 +46,12 @@ void UserActivityLogger::logAction(QString action, QJsonObject details, JSONCall actionPart.setHeader(QNetworkRequest::ContentDispositionHeader, "form-data; name=\"action_name\""); actionPart.setBody(QByteArray().append(action)); multipart->append(actionPart); + + // Log the local-time that this event was logged + QHttpPart elapsedPart; + elapsedPart.setHeader(QNetworkRequest::ContentDispositionHeader, "form-data; name=\"elapsed_ms\""); + elapsedPart.setBody(QByteArray().append(_timer.elapsed())); + multipart->append(elapsedPart); // If there are action details, add them to the multipart if (!details.isEmpty()) { diff --git a/libraries/networking/src/UserActivityLogger.h b/libraries/networking/src/UserActivityLogger.h index 9fad498b86..179e8e6e66 100644 --- a/libraries/networking/src/UserActivityLogger.h +++ b/libraries/networking/src/UserActivityLogger.h @@ -18,6 +18,7 @@ #include #include #include +#include #include #include "AddressManager.h" @@ -51,8 +52,10 @@ private slots: void requestError(QNetworkReply& errorReply); private: - UserActivityLogger() {}; + UserActivityLogger(); Setting::Handle _disabled { "UserActivityLoggerDisabled", false }; + + QElapsedTimer _timer; }; #endif // hifi_UserActivityLogger_h From 0e27ad767ce36c88d12d1c94523ffbd3459f9a51 Mon Sep 17 00:00:00 2001 From: Liv Date: Thu, 8 Jun 2017 13:07:01 -0700 Subject: [PATCH 329/357] Move chat app to be included as part of the default scripts --- scripts/defaultScripts.js | 3 ++- .../marketplace/chat/Chat.js => scripts/system/chat.js | 2 +- .../marketplace/chat => scripts/system/html}/ChatPage.html | 0 3 files changed, 3 insertions(+), 2 deletions(-) rename unpublishedScripts/marketplace/chat/Chat.js => scripts/system/chat.js (99%) rename {unpublishedScripts/marketplace/chat => scripts/system/html}/ChatPage.html (100%) diff --git a/scripts/defaultScripts.js b/scripts/defaultScripts.js index 81ce72d901..fa6300270c 100644 --- a/scripts/defaultScripts.js +++ b/scripts/defaultScripts.js @@ -29,7 +29,8 @@ var DEFAULT_SCRIPTS_COMBINED = [ "system/notifications.js", "system/dialTone.js", "system/firstPersonHMD.js", - "system/tablet-ui/tabletUI.js" + "system/tablet-ui/tabletUI.js", + "system/chat.js" ]; var DEFAULT_SCRIPTS_SEPARATE = [ "system/controllers/controllerScripts.js" diff --git a/unpublishedScripts/marketplace/chat/Chat.js b/scripts/system/chat.js similarity index 99% rename from unpublishedScripts/marketplace/chat/Chat.js rename to scripts/system/chat.js index 33bfcfeb4d..be6600a874 100644 --- a/unpublishedScripts/marketplace/chat/Chat.js +++ b/scripts/system/chat.js @@ -9,7 +9,7 @@ (function() { - var webPageURL = "ChatPage.html"; // URL of tablet web page. + var webPageURL = Script.resolvePath("html/ChatPage.html");; // URL of tablet web page. var randomizeWebPageURL = true; // Set to true for debugging. var lastWebPageURL = ""; // Last random URL of tablet web page. var onChatPage = false; // True when chat web page is opened. diff --git a/unpublishedScripts/marketplace/chat/ChatPage.html b/scripts/system/html/ChatPage.html similarity index 100% rename from unpublishedScripts/marketplace/chat/ChatPage.html rename to scripts/system/html/ChatPage.html From 03edb06ecb9868da944156a5fb486312e171f135 Mon Sep 17 00:00:00 2001 From: Liv Date: Thu, 8 Jun 2017 13:46:33 -0700 Subject: [PATCH 330/357] change design to run chat separately so it can be removed if users prefer to not use it --- scripts/defaultScripts.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/scripts/defaultScripts.js b/scripts/defaultScripts.js index fa6300270c..aef8d9d85b 100644 --- a/scripts/defaultScripts.js +++ b/scripts/defaultScripts.js @@ -29,11 +29,11 @@ var DEFAULT_SCRIPTS_COMBINED = [ "system/notifications.js", "system/dialTone.js", "system/firstPersonHMD.js", - "system/tablet-ui/tabletUI.js", - "system/chat.js" + "system/tablet-ui/tabletUI.js" ]; var DEFAULT_SCRIPTS_SEPARATE = [ - "system/controllers/controllerScripts.js" + "system/controllers/controllerScripts.js", + "system/chat.js" ]; // add a menu item for debugging From ce4c3e1601278f2ac5159ea549173c12604f815f Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Thu, 8 Jun 2017 13:55:30 -0700 Subject: [PATCH 331/357] fix bug that causes hmd avatar eyes to be all the way to the side when there's not another avatar to look at --- interface/src/Application.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 44b0a36f7a..eec82d0537 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -4160,7 +4160,7 @@ void Application::updateMyAvatarLookAtPosition() { if (isHMD) { glm::mat4 worldHeadMat = myAvatar->getSensorToWorldMatrix() * myAvatar->getHeadControllerPoseInSensorFrame().getMatrix(); - lookAtSpot = transformPoint(worldHeadMat, glm::vec3(0.0f, 0.0f, -TREE_SCALE)); + lookAtSpot = transformPoint(worldHeadMat, glm::vec3(0.0f, 0.0f, TREE_SCALE)); } else { lookAtSpot = myAvatar->getHead()->getEyePosition() + (myAvatar->getHead()->getFinalOrientationInWorldFrame() * glm::vec3(0.0f, 0.0f, TREE_SCALE)); From b7f8cc7f0b5a6a0b5f973035472789763e390649 Mon Sep 17 00:00:00 2001 From: Vladyslav Stelmakhovskyi Date: Thu, 8 Jun 2017 22:58:40 +0200 Subject: [PATCH 332/357] Fix intendantion --- scripts/system/edit.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/system/edit.js b/scripts/system/edit.js index eea35c5851..2c3cc496dc 100644 --- a/scripts/system/edit.js +++ b/scripts/system/edit.js @@ -641,9 +641,9 @@ var toolBar = (function () { enabled: active })); isActive = active; - activeButton.editProperties({isActive: isActive}); + activeButton.editProperties({isActive: isActive}); - var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system"); + var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system"); if (!isActive) { entityListTool.setVisible(false); From 8334dff610f1c206a1ef4c1f9b731a272bf03786 Mon Sep 17 00:00:00 2001 From: "Anthony J. Thibault" Date: Thu, 8 Jun 2017 15:00:12 -0700 Subject: [PATCH 333/357] compute rotation from derivative of spline This should fix bad rotation values for the spine during bowing/touching toes. --- .../resources/avatar/avatar-animation.json | 6 +- .../animation/src/AnimInverseKinematics.cpp | 159 +++++++++++------- .../animation/src/AnimInverseKinematics.h | 16 +- 3 files changed, 106 insertions(+), 75 deletions(-) diff --git a/interface/resources/avatar/avatar-animation.json b/interface/resources/avatar/avatar-animation.json index 35f2d4b9af..1412b45968 100644 --- a/interface/resources/avatar/avatar-animation.json +++ b/interface/resources/avatar/avatar-animation.json @@ -103,8 +103,8 @@ "rotationVar": "spine2Rotation", "typeVar": "spine2Type", "weightVar": "spine2Weight", - "weight": 1.0, - "flexCoefficients": [1.0, 0.5, 0.5] + "weight": 2.0, + "flexCoefficients": [1.0, 0.5, 0.25] }, { "jointName": "Head", @@ -113,7 +113,7 @@ "typeVar": "headType", "weightVar": "headWeight", "weight": 4.0, - "flexCoefficients": [1, 0.05, 0.25, 0.25, 0.25] + "flexCoefficients": [1, 0.5, 0.25, 0.2, 0.1] }, { "jointName": "LeftArm", diff --git a/libraries/animation/src/AnimInverseKinematics.cpp b/libraries/animation/src/AnimInverseKinematics.cpp index c155f4733f..ed61058f6c 100644 --- a/libraries/animation/src/AnimInverseKinematics.cpp +++ b/libraries/animation/src/AnimInverseKinematics.cpp @@ -21,6 +21,7 @@ #include "SwingTwistConstraint.h" #include "AnimationLogging.h" #include "CubicHermiteSpline.h" +#include "AnimUtil.h" AnimInverseKinematics::IKTargetVar::IKTargetVar(const QString& jointNameIn, const QString& positionVarIn, const QString& rotationVarIn, const QString& typeVarIn, const QString& weightVarIn, float weightIn, const std::vector& flexCoefficientsIn) : @@ -475,16 +476,85 @@ static CubicHermiteSplineFunctorWithArcLength computeSplineFromTipAndBase(const return CubicHermiteSplineFunctorWithArcLength(p0, m0, p1, m1); } +// pre-compute information about each joint influeced by this spline IK target. +void AnimInverseKinematics::computeSplineJointInfosForIKTarget(const AnimContext& context, const IKTarget& target) { + std::vector splineJointInfoVec; + + // build spline between the default poses. + AnimPose tipPose = _skeleton->getAbsoluteDefaultPose(target.getIndex()); + AnimPose basePose = _skeleton->getAbsoluteDefaultPose(_hipsIndex); + + CubicHermiteSplineFunctorWithArcLength spline; + if (target.getIndex() == _headIndex) { + // set gain factors so that more curvature occurs near the tip of the spline. + const float HIPS_GAIN = 0.5f; + const float HEAD_GAIN = 1.0f; + spline = computeSplineFromTipAndBase(tipPose, basePose, HIPS_GAIN, HEAD_GAIN); + } else { + spline = computeSplineFromTipAndBase(tipPose, basePose); + } + + // measure the total arc length along the spline + float totalArcLength = spline.arcLength(1.0f); + + glm::vec3 baseToTip = tipPose.trans() - basePose.trans(); + float baseToTipLength = glm::length(baseToTip); + glm::vec3 baseToTipNormal = baseToTip / baseToTipLength; + + int index = target.getIndex(); + int endIndex = _skeleton->getParentIndex(_hipsIndex); + while (index != endIndex) { + AnimPose defaultPose = _skeleton->getAbsoluteDefaultPose(index); + + float ratio = glm::dot(defaultPose.trans() - basePose.trans(), baseToTipNormal) / baseToTipLength; + + // compute offset from spline to the default pose. + float t = spline.arcLengthInverse(ratio * totalArcLength); + + // compute the rotation by using the derivative of the spline as the y-axis, and the defaultPose x-axis + glm::vec3 y = glm::normalize(spline.d(t)); + glm::vec3 x = defaultPose.rot() * Vectors::UNIT_X; + glm::vec3 u, v, w; + generateBasisVectors(y, x, v, u, w); + glm::mat3 m(u, v, glm::cross(u, v)); + glm::quat rot = glm::normalize(glm::quat_cast(m)); + + AnimPose pose(glm::vec3(1.0f), rot, spline(t)); + AnimPose offsetPose = pose.inverse() * defaultPose; + + SplineJointInfo splineJointInfo = { index, ratio, offsetPose }; + splineJointInfoVec.push_back(splineJointInfo); + index = _skeleton->getParentIndex(index); + } + + _splineJointInfoMap[target.getIndex()] = splineJointInfoVec; +} + +const std::vector* AnimInverseKinematics::findOrCreateSplineJointInfo(const AnimContext& context, const IKTarget& target) { + // find or create splineJointInfo for this target + auto iter = _splineJointInfoMap.find(target.getIndex()); + if (iter != _splineJointInfoMap.end()) { + return &(iter->second); + } else { + computeSplineJointInfosForIKTarget(context, target); + auto iter = _splineJointInfoMap.find(target.getIndex()); + if (iter != _splineJointInfoMap.end()) { + return &(iter->second); + } + } + + return nullptr; +} + void AnimInverseKinematics::solveTargetWithSpline(const AnimContext& context, const IKTarget& target, const AnimPoseVec& absolutePoses, bool debug) { std::map debugJointMap; const int baseIndex = _hipsIndex; - // build spline + // build spline from tip to base AnimPose tipPose = AnimPose(glm::vec3(1.0f), target.getRotation(), target.getTranslation()); AnimPose basePose = absolutePoses[baseIndex]; - CubicHermiteSplineFunctorWithArcLength spline; if (target.getIndex() == _headIndex) { // set gain factors so that more curvature occurs near the tip of the spline. @@ -496,19 +566,6 @@ void AnimInverseKinematics::solveTargetWithSpline(const AnimContext& context, co } float totalArcLength = spline.arcLength(1.0f); - // find or create splineJointInfo for the head target - const std::vector* splineJointInfoVec = nullptr; - auto iter = _splineJointInfoMap.find(target.getIndex()); - if (iter != _splineJointInfoMap.end()) { - splineJointInfoVec = &(iter->second); - } else { - computeSplineJointInfosForIKTarget(context, target); - auto iter = _splineJointInfoMap.find(target.getIndex()); - if (iter != _splineJointInfoMap.end()) { - splineJointInfoVec = &(iter->second); - } - } - // This prevents the rotation interpolation from rotating the wrong physical way (but correct mathematical way) // when the head is arched backwards very far. glm::quat halfRot = glm::normalize(glm::lerp(basePose.rot(), tipPose.rot(), 0.5f)); @@ -516,6 +573,9 @@ void AnimInverseKinematics::solveTargetWithSpline(const AnimContext& context, co tipPose.rot() = -tipPose.rot(); } + // find or create splineJointInfo for this target + const std::vector* splineJointInfoVec = findOrCreateSplineJointInfo(context, target); + if (splineJointInfoVec && splineJointInfoVec->size() > 0) { const int baseParentIndex = _skeleton->getParentIndex(baseIndex); AnimPose parentAbsPose = (baseParentIndex >= 0) ? absolutePoses[baseParentIndex] : AnimPose(); @@ -526,14 +586,28 @@ void AnimInverseKinematics::solveTargetWithSpline(const AnimContext& context, co float t = spline.arcLengthInverse(splineJointInfo.ratio * totalArcLength); glm::vec3 trans = spline(t); - // for head splines, preform most rotation toward the tip by using ease in function. t^2 + // for head splines, preform most twist toward the tip by using ease in function. t^2 float rotT = t; if (target.getIndex() == _headIndex) { rotT = t * t; } - glm::quat rot = glm::normalize(glm::lerp(basePose.rot(), tipPose.rot(), rotT)); - AnimPose absPose = AnimPose(glm::vec3(1.0f), rot, trans) * splineJointInfo.offsetPose; - AnimPose relPose = parentAbsPose.inverse() * absPose; + glm::quat twistRot = glm::normalize(glm::lerp(basePose.rot(), tipPose.rot(), rotT)); + + // compute the rotation by using the derivative of the spline as the y-axis, and the twistRot x-axis + glm::vec3 y = glm::normalize(spline.d(t)); + glm::vec3 x = twistRot * Vectors::UNIT_X; + glm::vec3 u, v, w; + generateBasisVectors(y, x, v, u, w); + glm::mat3 m(u, v, glm::cross(u, v)); + glm::quat rot = glm::normalize(glm::quat_cast(m)); + + AnimPose desiredAbsPose = AnimPose(glm::vec3(1.0f), rot, trans) * splineJointInfo.offsetPose; + + // apply flex coefficent + AnimPose flexedAbsPose; + ::blend(1, &absolutePoses[splineJointInfo.jointIndex], &desiredAbsPose, target.getFlexCoefficient(i), &flexedAbsPose); + + AnimPose relPose = parentAbsPose.inverse() * flexedAbsPose; _rotationAccumulators[splineJointInfo.jointIndex].add(relPose.rot(), target.getWeight()); bool constrained = false; @@ -564,7 +638,7 @@ void AnimInverseKinematics::solveTargetWithSpline(const AnimContext& context, co debugJointMap[splineJointInfo.jointIndex] = DebugJoint(relPose.rot(), relPose.trans(), constrained); } - parentAbsPose = absPose; + parentAbsPose = flexedAbsPose; } } @@ -1450,51 +1524,6 @@ void AnimInverseKinematics::initRelativePosesFromSolutionSource(SolutionSource s } } -// pre-compute information about each joint influeced by this spline IK target. -void AnimInverseKinematics::computeSplineJointInfosForIKTarget(const AnimContext& context, const IKTarget& target) { - std::vector splineJointInfoVec; - - // build spline between the default poses. - AnimPose tipPose = _skeleton->getAbsoluteDefaultPose(target.getIndex()); - AnimPose basePose = _skeleton->getAbsoluteDefaultPose(_hipsIndex); - - CubicHermiteSplineFunctorWithArcLength spline; - if (target.getIndex() == _headIndex) { - // set gain factors so that more curvature occurs near the tip of the spline. - const float HIPS_GAIN = 0.5f; - const float HEAD_GAIN = 1.0f; - spline = computeSplineFromTipAndBase(tipPose, basePose, HIPS_GAIN, HEAD_GAIN); - } else { - spline = computeSplineFromTipAndBase(tipPose, basePose); - } - - // measure the total arc length along the spline - float totalArcLength = spline.arcLength(1.0f); - - glm::vec3 baseToTip = tipPose.trans() - basePose.trans(); - float baseToTipLength = glm::length(baseToTip); - glm::vec3 baseToTipNormal = baseToTip / baseToTipLength; - - int index = target.getIndex(); - int endIndex = _skeleton->getParentIndex(_hipsIndex); - while (index != endIndex) { - AnimPose defaultPose = _skeleton->getAbsoluteDefaultPose(index); - - float ratio = glm::dot(defaultPose.trans() - basePose.trans(), baseToTipNormal) / baseToTipLength; - - // compute offset from spline to the default pose. - float t = spline.arcLengthInverse(ratio * totalArcLength); - AnimPose pose(glm::vec3(1.0f), glm::normalize(glm::lerp(basePose.rot(), tipPose.rot(), t)), spline(t)); - AnimPose offsetPose = pose.inverse() * defaultPose; - - SplineJointInfo splineJointInfo = { index, ratio, offsetPose }; - splineJointInfoVec.push_back(splineJointInfo); - index = _skeleton->getParentIndex(index); - } - - _splineJointInfoMap[target.getIndex()] = splineJointInfoVec; -} - void AnimInverseKinematics::debugDrawSpineSplines(const AnimContext& context, const std::vector& targets) const { for (auto& target : targets) { diff --git a/libraries/animation/src/AnimInverseKinematics.h b/libraries/animation/src/AnimInverseKinematics.h index ff1ab9115f..352238d1e4 100644 --- a/libraries/animation/src/AnimInverseKinematics.h +++ b/libraries/animation/src/AnimInverseKinematics.h @@ -74,10 +74,18 @@ protected: void debugDrawRelativePoses(const AnimContext& context) const; void debugDrawConstraints(const AnimContext& context) const; void debugDrawSpineSplines(const AnimContext& context, const std::vector& targets) const; - void computeSplineJointInfosForIKTarget(const AnimContext& context, const IKTarget& target); void initRelativePosesFromSolutionSource(SolutionSource solutionSource, const AnimPoseVec& underPose); void blendToPoses(const AnimPoseVec& targetPoses, const AnimPoseVec& underPose, float blendFactor); + // used to pre-compute information about each joint influeced by a spline IK target. + struct SplineJointInfo { + int jointIndex; // joint in the skeleton that this information pertains to. + float ratio; // percentage (0..1) along the spline for this joint. + AnimPose offsetPose; // local offset from the spline to the joint. + }; + + void computeSplineJointInfosForIKTarget(const AnimContext& context, const IKTarget& target); + const std::vector* findOrCreateSplineJointInfo(const AnimContext& context, const IKTarget& target); // for AnimDebugDraw rendering virtual const AnimPoseVec& getPosesInternal() const override { return _relativePoses; } @@ -117,12 +125,6 @@ protected: AnimPoseVec _relativePoses; // current relative poses AnimPoseVec _limitCenterPoses; // relative - // used to pre-compute information about each joint influeced by a spline IK target. - struct SplineJointInfo { - int jointIndex; // joint in the skeleton that this information pertains to. - float ratio; // percentage (0..1) along the spline for this joint. - AnimPose offsetPose; // local offset from the spline to the joint. - }; std::map> _splineJointInfoMap; // experimental data for moving hips during IK From 6657c4d997302e100edf15262697630eaff7a28f Mon Sep 17 00:00:00 2001 From: Liv Erickson Date: Thu, 8 Jun 2017 17:22:18 -0700 Subject: [PATCH 334/357] Update chat.js remove stray semicolon --- scripts/system/chat.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/system/chat.js b/scripts/system/chat.js index be6600a874..d03c6aae98 100644 --- a/scripts/system/chat.js +++ b/scripts/system/chat.js @@ -9,7 +9,7 @@ (function() { - var webPageURL = Script.resolvePath("html/ChatPage.html");; // URL of tablet web page. + var webPageURL = Script.resolvePath("html/ChatPage.html"); // URL of tablet web page. var randomizeWebPageURL = true; // Set to true for debugging. var lastWebPageURL = ""; // Last random URL of tablet web page. var onChatPage = false; // True when chat web page is opened. From 08d93173f0c6ee939c6a9dff0bb8e8a2001923b0 Mon Sep 17 00:00:00 2001 From: Chris Howe Date: Fri, 9 Jun 2017 11:07:56 -0400 Subject: [PATCH 335/357] Minor code feedback changes, moving test scripts to developer/tests. --- interface/src/avatar/MyAvatar.cpp | 6 ++---- scripts/{ => developer/tests}/avatarToWorldTests.js | 0 scripts/{ => developer/tests}/worldToAvatarTests.js | 0 3 files changed, 2 insertions(+), 4 deletions(-) rename scripts/{ => developer/tests}/avatarToWorldTests.js (100%) rename scripts/{ => developer/tests}/worldToAvatarTests.js (100%) diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index 7a9864a737..fc514de80d 100755 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -779,8 +779,7 @@ glm::vec3 MyAvatar::worldToJointPoint(const glm::vec3& position, const int joint if (jointIndex != -1) { if (_skeletonModel->getJointPositionInWorldFrame(jointIndex, jointPos)) { _skeletonModel->getJointRotationInWorldFrame(jointIndex, jointRot); - } - else { + } else { qWarning() << "Invalid joint index specified: " << jointIndex; } } @@ -816,8 +815,7 @@ glm::vec3 MyAvatar::jointToWorldPoint(const glm::vec3& jointSpacePos, const int if (jointIndex != -1) { if (_skeletonModel->getJointPositionInWorldFrame(jointIndex, jointPos)) { _skeletonModel->getJointRotationInWorldFrame(jointIndex, jointRot); - } - else { + } else { qWarning() << "Invalid joint index specified: " << jointIndex; } } diff --git a/scripts/avatarToWorldTests.js b/scripts/developer/tests/avatarToWorldTests.js similarity index 100% rename from scripts/avatarToWorldTests.js rename to scripts/developer/tests/avatarToWorldTests.js diff --git a/scripts/worldToAvatarTests.js b/scripts/developer/tests/worldToAvatarTests.js similarity index 100% rename from scripts/worldToAvatarTests.js rename to scripts/developer/tests/worldToAvatarTests.js From dc02e3478298e9b92b55a4915881fd512f0daeef Mon Sep 17 00:00:00 2001 From: seefo Date: Thu, 8 Jun 2017 16:22:52 -0700 Subject: [PATCH 336/357] Resolved FB#5009 --- interface/src/AvatarBookmarks.cpp | 24 ++++++++++++++++++++++-- interface/src/AvatarBookmarks.h | 1 + 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/interface/src/AvatarBookmarks.cpp b/interface/src/AvatarBookmarks.cpp index 5cdfc8213f..db2a240b92 100644 --- a/interface/src/AvatarBookmarks.cpp +++ b/interface/src/AvatarBookmarks.cpp @@ -21,15 +21,35 @@ #include "MainWindow.h" #include "Menu.h" - #include "AvatarBookmarks.h" +#include "InterfaceLogging.h" + #include AvatarBookmarks::AvatarBookmarks() { - _bookmarksFilename = QStandardPaths::writableLocation(QStandardPaths::DataLocation) + "/" + AVATARBOOKMARKS_FILENAME; + _bookmarksFilename = PathUtils::getAppDataPath() + "/" + AVATARBOOKMARKS_FILENAME; readFromFile(); } +void AvatarBookmarks::readFromFile() { + // migrate old avatarbookmarks.json, used to be in 'local' folder on windows + QString oldConfigPath = QStandardPaths::writableLocation(QStandardPaths::DataLocation) + "/" + AVATARBOOKMARKS_FILENAME; + QFile oldConfig(oldConfigPath); + + // I imagine that in a year from now, this code for migrating (as well as the two lines above) + // may be removed since all bookmarks should have been migrated by then + // - Robbie Uvanni (6.8.2017) + if (oldConfig.exists()) { + if (QDir().rename(oldConfigPath, _bookmarksFilename)) { + qCDebug(interfaceapp) << "Successfully migrated" << AVATARBOOKMARKS_FILENAME; + } else { + qCDebug(interfaceapp) << "Failed to migrate" << AVATARBOOKMARKS_FILENAME; + } + } + + Bookmarks::readFromFile(); +} + void AvatarBookmarks::setupMenus(Menu* menubar, MenuWrapper* menu) { // Add menus/actions auto bookmarkAction = menubar->addActionToQMenuAndActionHash(menu, MenuOption::BookmarkAvatar); diff --git a/interface/src/AvatarBookmarks.h b/interface/src/AvatarBookmarks.h index 725af88b0d..dc5a0aee6e 100644 --- a/interface/src/AvatarBookmarks.h +++ b/interface/src/AvatarBookmarks.h @@ -29,6 +29,7 @@ public slots: protected: void addBookmarkToMenu(Menu* menubar, const QString& name, const QString& address) override; + void readFromFile(); private: const QString AVATARBOOKMARKS_FILENAME = "avatarbookmarks.json"; From 5b62c9e83b1261146bf3edc292c36ab41c61a358 Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Fri, 9 Jun 2017 10:45:04 -0700 Subject: [PATCH 337/357] try again to get forward not-looking-at-anyone gaze to work right --- interface/src/Application.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 4821b98e3f..890b5cb455 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -4126,13 +4126,13 @@ void Application::updateMyAvatarLookAtPosition() { } } else { // I am not looking at anyone else, so just look forward - if (isHMD) { - glm::mat4 worldHeadMat = myAvatar->getSensorToWorldMatrix() * - myAvatar->getHeadControllerPoseInSensorFrame().getMatrix(); + auto headPose = myAvatar->getHeadControllerPoseInSensorFrame(); + if (headPose.isValid()) { + glm::mat4 worldHeadMat = myAvatar->getSensorToWorldMatrix() * headPose.getMatrix(); lookAtSpot = transformPoint(worldHeadMat, glm::vec3(0.0f, 0.0f, TREE_SCALE)); } else { lookAtSpot = myAvatar->getHead()->getEyePosition() + - (myAvatar->getHead()->getFinalOrientationInWorldFrame() * glm::vec3(0.0f, 0.0f, TREE_SCALE)); + (myAvatar->getHead()->getFinalOrientationInWorldFrame() * glm::vec3(0.0f, 0.0f, -TREE_SCALE)); } } From 1808505d8b588912643ad3856a9c419ad6f9c47c Mon Sep 17 00:00:00 2001 From: Liv Date: Fri, 9 Jun 2017 10:54:57 -0700 Subject: [PATCH 338/357] Coding standard fixes --- libraries/render-utils/src/GeometryCache.cpp | 27 ++++++++++---------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/libraries/render-utils/src/GeometryCache.cpp b/libraries/render-utils/src/GeometryCache.cpp index 0c551feee7..bab7b56686 100644 --- a/libraries/render-utils/src/GeometryCache.cpp +++ b/libraries/render-utils/src/GeometryCache.cpp @@ -266,7 +266,7 @@ void extrudePolygon(GeometryCache::ShapeData& shapeData, gpu::BufferPointer& ver std::vector shape = polygon(); if (isConical) { for (uint32_t i = 0; i < N; i++) { - vertices.push_back(vec3(0, 0.5f, 0)); + vertices.push_back(vec3(0.0f, 0.5f, 0.0f)); vertices.push_back(vec3(0, 1, 0)); } } @@ -302,8 +302,8 @@ void extrudePolygon(GeometryCache::ShapeData& shapeData, gpu::BufferPointer& ver vec3 left = shape[i]; vec3 right = shape[(i + 1) % N]; vec3 normal = glm::normalize(left + right); - vec3 topLeft = (isConical ? vec3(0.0, 0.5f, 0.0) : vec3(left.x, 0.5f, left.z)); - vec3 topRight = (isConical? vec3(0.0, 0.5f, 0.0) : vec3(right.x, 0.5f, right.z)); + vec3 topLeft = (isConical ? vec3(0.0f, 0.5f, 0.0f) : vec3(left.x, 0.5f, left.z)); + vec3 topRight = (isConical? vec3(0.0f, 0.5f, 0.0f) : vec3(right.x, 0.5f, right.z)); vec3 bottomLeft = vec3(left.x, -0.5f, left.z); vec3 bottomRight = vec3(right.x, -0.5f, right.z); @@ -340,26 +340,27 @@ void drawCircle(GeometryCache::ShapeData& shapeData, gpu::BufferPointer& vertexB Index baseVertex = (Index)(vertexBuffer->getSize() / SHAPE_VERTEX_STRIDE); VertexVector vertices; IndexVector solidIndices, wireIndices; + const int numCircleVertices = 64; - std::vector shape = polygon<64>(); + std::vector shape = polygon(); for (const vec3& v : shape) { - vertices.push_back(vec3(v.x, 0, v.z)); + vertices.push_back(vec3(v.x, 0.0f, v.z)); vertices.push_back(vec3(0, 0, 0)); } - for (uint32_t i = 2; i < 64; ++i) { + for (uint32_t i = 2; i < numCircleVertices; ++i) { solidIndices.push_back(baseVertex + 0); solidIndices.push_back(baseVertex + i); solidIndices.push_back(baseVertex + i - 1); - solidIndices.push_back(baseVertex + 64); - solidIndices.push_back(baseVertex + i + 64 - 1); - solidIndices.push_back(baseVertex + i + 64); + solidIndices.push_back(baseVertex + numCircleVertices); + solidIndices.push_back(baseVertex + i + numCircleVertices - 1); + solidIndices.push_back(baseVertex + i + numCircleVertices); } - for (uint32_t i = 1; i <= 64; ++i) { - wireIndices.push_back(baseVertex + (i % 64)); + for (uint32_t i = 1; i <= numCircleVertices; ++i) { + wireIndices.push_back(baseVertex + (i % numCircleVertices)); wireIndices.push_back(baseVertex + i - 1); - wireIndices.push_back(baseVertex + (i % 64) + 64); - wireIndices.push_back(baseVertex + (i - 1) + 64); + wireIndices.push_back(baseVertex + (i % numCircleVertices) + numCircleVertices); + wireIndices.push_back(baseVertex + (i - 1) + numCircleVertices); } shapeData.setupVertices(vertexBuffer, vertices); From 06a5d0970c5916d7bcc78cc35a6e46cfed00f7c7 Mon Sep 17 00:00:00 2001 From: seefo Date: Fri, 9 Jun 2017 10:58:07 -0700 Subject: [PATCH 339/357] Fixed issue with invalid time being sent when logging --- libraries/networking/src/UserActivityLogger.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/networking/src/UserActivityLogger.cpp b/libraries/networking/src/UserActivityLogger.cpp index 51445dce2a..0cfd1e09e7 100644 --- a/libraries/networking/src/UserActivityLogger.cpp +++ b/libraries/networking/src/UserActivityLogger.cpp @@ -50,7 +50,7 @@ void UserActivityLogger::logAction(QString action, QJsonObject details, JSONCall // Log the local-time that this event was logged QHttpPart elapsedPart; elapsedPart.setHeader(QNetworkRequest::ContentDispositionHeader, "form-data; name=\"elapsed_ms\""); - elapsedPart.setBody(QByteArray().append(_timer.elapsed())); + elapsedPart.setBody(QString::number(_timer.elapsed()).toLocal8Bit()); multipart->append(elapsedPart); // If there are action details, add them to the multipart From 8c488d95d1a097eb36359c667c821c376a63eabe Mon Sep 17 00:00:00 2001 From: Liv Date: Fri, 9 Jun 2017 11:46:38 -0700 Subject: [PATCH 340/357] Stylish updates --- libraries/render-utils/src/GeometryCache.cpp | 61 ++++++++++---------- 1 file changed, 31 insertions(+), 30 deletions(-) diff --git a/libraries/render-utils/src/GeometryCache.cpp b/libraries/render-utils/src/GeometryCache.cpp index bab7b56686..0f50e3361d 100644 --- a/libraries/render-utils/src/GeometryCache.cpp +++ b/libraries/render-utils/src/GeometryCache.cpp @@ -69,7 +69,7 @@ std::vector polygon() { std::vector result; result.reserve(SIDES); double angleIncrement = 2.0 * M_PI / SIDES; - for (size_t i = 0; i < SIDES; ++i) { + for (size_t i = 0; i < SIDES; i++) { double angle = (double)i * angleIncrement; result.push_back(vec3{ cos(angle) * 0.5, 0.0, sin(angle) * 0.5 }); } @@ -172,20 +172,20 @@ void setupFlatShape(GeometryCache::ShapeData& shapeData, const geometry::Solid& face = shape.faces[f]; // Compute the face normal vec3 faceNormal = shape.getFaceNormal(f); // Create the vertices for the face - for (Index i = 0; i < N; ++i) { + for (Index i = 0; i < N; i++) { Index originalIndex = face[i]; vertices.push_back(shape.vertices[originalIndex]); vertices.push_back(faceNormal); } // Create the wire indices for unseen edges - for (Index i = 0; i < N; ++i) { + for (Index i = 0; i < N; i++) { Index a = i; Index b = (i + 1) % N; auto token = indexToken(face[a], face[b]); @@ -197,7 +197,7 @@ void setupFlatShape(GeometryCache::ShapeData& shapeData, const geometry::Solid& face = shape.faces[f]; // Create the wire indices for unseen edges - for (Index i = 0; i < N; ++i) { + for (Index i = 0; i < N; i++) { Index a = face[i]; Index b = face[(i + 1) % N]; auto token = indexToken(a, b); @@ -244,7 +244,7 @@ void setupSmoothShape(GeometryCache::ShapeData& shapeData, const geometry::Solid } // Create the solid face indices - for (Index i = 0; i < N - 2; ++i) { + for (Index i = 0; i < N - 2; i++) { solidIndices.push_back(face[i] + baseVertex); solidIndices.push_back(face[i + 1] + baseVertex); solidIndices.push_back(face[i + 2] + baseVertex); @@ -267,20 +267,20 @@ void extrudePolygon(GeometryCache::ShapeData& shapeData, gpu::BufferPointer& ver if (isConical) { for (uint32_t i = 0; i < N; i++) { vertices.push_back(vec3(0.0f, 0.5f, 0.0f)); - vertices.push_back(vec3(0, 1, 0)); + vertices.push_back(vec3(0.0f, 1.0f, 0.0f)); } } else { for (const vec3& v : shape) { vertices.push_back(vec3(v.x, 0.5f, v.z)); - vertices.push_back(vec3(0, 1, 0)); + vertices.push_back(vec3(0.0f, 1.0f, 0.0f)); } } for (const vec3& v : shape) { vertices.push_back(vec3(v.x, -0.5f, v.z)); - vertices.push_back(vec3(0, -1, 0)); + vertices.push_back(vec3(0.0f, -1.0f, 0.0f)); } - for (uint32_t i = 2; i < N; ++i) { + for (uint32_t i = 2; i < N; i++) { solidIndices.push_back(baseVertex + 0); solidIndices.push_back(baseVertex + i); solidIndices.push_back(baseVertex + i - 1); @@ -288,7 +288,7 @@ void extrudePolygon(GeometryCache::ShapeData& shapeData, gpu::BufferPointer& ver solidIndices.push_back(baseVertex + i + N - 1); solidIndices.push_back(baseVertex + i + N); } - for (uint32_t i = 1; i <= N; ++i) { + for (uint32_t i = 1; i <= N; i++) { wireIndices.push_back(baseVertex + (i % N)); wireIndices.push_back(baseVertex + i - 1); wireIndices.push_back(baseVertex + (i % N) + N); @@ -298,12 +298,12 @@ void extrudePolygon(GeometryCache::ShapeData& shapeData, gpu::BufferPointer& ver // Now do the sides baseVertex += 2 * N; - for (uint32_t i = 0; i < N; ++i) { + for (uint32_t i = 0; i < N; i++) { vec3 left = shape[i]; vec3 right = shape[(i + 1) % N]; vec3 normal = glm::normalize(left + right); vec3 topLeft = (isConical ? vec3(0.0f, 0.5f, 0.0f) : vec3(left.x, 0.5f, left.z)); - vec3 topRight = (isConical? vec3(0.0f, 0.5f, 0.0f) : vec3(right.x, 0.5f, right.z)); + vec3 topRight = (isConical ? vec3(0.0f, 0.5f, 0.0f) : vec3(right.x, 0.5f, right.z)); vec3 bottomLeft = vec3(left.x, -0.5f, left.z); vec3 bottomRight = vec3(right.x, -0.5f, right.z); @@ -340,27 +340,28 @@ void drawCircle(GeometryCache::ShapeData& shapeData, gpu::BufferPointer& vertexB Index baseVertex = (Index)(vertexBuffer->getSize() / SHAPE_VERTEX_STRIDE); VertexVector vertices; IndexVector solidIndices, wireIndices; - const int numCircleVertices = 64; + const int NUM_CIRCLE_VERTICES = 64; - std::vector shape = polygon(); + std::vector shape = polygon(); for (const vec3& v : shape) { vertices.push_back(vec3(v.x, 0.0f, v.z)); - vertices.push_back(vec3(0, 0, 0)); + vertices.push_back(vec3(0.0f, 0.0f, 0.0f)); } - for (uint32_t i = 2; i < numCircleVertices; ++i) { + for (uint32_t i = 2; i < NUM_CIRCLE_VERTICES; i++) { solidIndices.push_back(baseVertex + 0); solidIndices.push_back(baseVertex + i); solidIndices.push_back(baseVertex + i - 1); - solidIndices.push_back(baseVertex + numCircleVertices); - solidIndices.push_back(baseVertex + i + numCircleVertices - 1); - solidIndices.push_back(baseVertex + i + numCircleVertices); + solidIndices.push_back(baseVertex + NUM_CIRCLE_VERTICES); + solidIndices.push_back(baseVertex + i + NUM_CIRCLE_VERTICES - 1); + solidIndices.push_back(baseVertex + i + NUM_CIRCLE_VERTICES); } - for (uint32_t i = 1; i <= numCircleVertices; ++i) { - wireIndices.push_back(baseVertex + (i % numCircleVertices)); + + for (uint32_t i = 1; i <= NUM_CIRCLE_VERTICES; i++) { + wireIndices.push_back(baseVertex + (i % NUM_CIRCLE_VERTICES)); wireIndices.push_back(baseVertex + i - 1); - wireIndices.push_back(baseVertex + (i % numCircleVertices) + numCircleVertices); - wireIndices.push_back(baseVertex + (i - 1) + numCircleVertices); + wireIndices.push_back(baseVertex + (i % NUM_CIRCLE_VERTICES) + NUM_CIRCLE_VERTICES); + wireIndices.push_back(baseVertex + (i - 1) + NUM_CIRCLE_VERTICES); } shapeData.setupVertices(vertexBuffer, vertices); @@ -399,8 +400,8 @@ void GeometryCache::buildShapes() { Index baseVertex = (Index)(_shapeVertices->getSize() / SHAPE_VERTEX_STRIDE); ShapeData& shapeData = _shapes[Line]; shapeData.setupVertices(_shapeVertices, VertexVector { - vec3(-0.5, 0, 0), vec3(-0.5f, 0, 0), - vec3(0.5f, 0, 0), vec3(0.5f, 0, 0) + vec3(-0.5f, 0.0f, 0.0f), vec3(-0.5f, 0.0f, 0.0f), + vec3(0.5f, 0.0f, 0.0f), vec3(0.5f, 0.0f, 0.0f) }); IndexVector wireIndices; // Only two indices @@ -641,7 +642,7 @@ void GeometryCache::updateVertices(int id, const QVector& points, con auto pointCount = points.size(); auto colorCount = colors.size(); int compactColor = 0; - for (auto i = 0; i < pointCount; ++i) { + for (auto i = 0; i < pointCount; i++) { const auto& point = points[i]; *(vertex++) = point.x; *(vertex++) = point.y; @@ -718,7 +719,7 @@ void GeometryCache::updateVertices(int id, const QVector& points, con const glm::vec3 NORMAL(0.0f, 0.0f, 1.0f); auto pointCount = points.size(); auto colorCount = colors.size(); - for (auto i = 0; i < pointCount; ++i) { + for (auto i = 0; i < pointCount; i++) { const glm::vec3& point = points[i]; if (i < colorCount) { const glm::vec4& color = colors[i]; From 7785473ccbe3317adbf9e43516dde49b7bfc4a16 Mon Sep 17 00:00:00 2001 From: Liv Date: Fri, 9 Jun 2017 12:59:08 -0700 Subject: [PATCH 341/357] moving else --- libraries/render-utils/src/GeometryCache.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/libraries/render-utils/src/GeometryCache.cpp b/libraries/render-utils/src/GeometryCache.cpp index 0f50e3361d..dcf90012c1 100644 --- a/libraries/render-utils/src/GeometryCache.cpp +++ b/libraries/render-utils/src/GeometryCache.cpp @@ -269,8 +269,7 @@ void extrudePolygon(GeometryCache::ShapeData& shapeData, gpu::BufferPointer& ver vertices.push_back(vec3(0.0f, 0.5f, 0.0f)); vertices.push_back(vec3(0.0f, 1.0f, 0.0f)); } - } - else { + } else { for (const vec3& v : shape) { vertices.push_back(vec3(v.x, 0.5f, v.z)); vertices.push_back(vec3(0.0f, 1.0f, 0.0f)); From 0343d4e443a7fe55a57cfeb07af9cfcac3734ff2 Mon Sep 17 00:00:00 2001 From: seefo Date: Fri, 9 Jun 2017 13:25:02 -0700 Subject: [PATCH 342/357] Resolved FB5087 --- interface/src/CrashHandler.cpp | 19 ++++++++++++++----- interface/src/CrashHandler.h | 2 +- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/interface/src/CrashHandler.cpp b/interface/src/CrashHandler.cpp index 19e887eb6e..55a1071ff8 100644 --- a/interface/src/CrashHandler.cpp +++ b/interface/src/CrashHandler.cpp @@ -73,7 +73,7 @@ CrashHandler::Action CrashHandler::promptUserForAction(bool showCrashMessage) { layout->addWidget(label); QRadioButton* option1 = new QRadioButton("Reset all my settings"); - QRadioButton* option2 = new QRadioButton("Reset my settings but retain avatar info."); + QRadioButton* option2 = new QRadioButton("Reset my settings but keep essential info"); QRadioButton* option3 = new QRadioButton("Continue with my current settings"); option3->setChecked(true); layout->addWidget(option1); @@ -95,7 +95,7 @@ CrashHandler::Action CrashHandler::promptUserForAction(bool showCrashMessage) { return CrashHandler::DELETE_INTERFACE_INI; } if (option2->isChecked()) { - return CrashHandler::RETAIN_AVATAR_INFO; + return CrashHandler::RETAIN_IMPORTANT_INFO; } } @@ -104,7 +104,7 @@ CrashHandler::Action CrashHandler::promptUserForAction(bool showCrashMessage) { } void CrashHandler::handleCrash(CrashHandler::Action action) { - if (action != CrashHandler::DELETE_INTERFACE_INI && action != CrashHandler::RETAIN_AVATAR_INFO) { + if (action != CrashHandler::DELETE_INTERFACE_INI && action != CrashHandler::RETAIN_IMPORTANT_INFO) { // CrashHandler::DO_NOTHING or unexpected value return; } @@ -116,12 +116,15 @@ void CrashHandler::handleCrash(CrashHandler::Action action) { const QString DISPLAY_NAME_KEY = "displayName"; const QString FULL_AVATAR_URL_KEY = "fullAvatarURL"; const QString FULL_AVATAR_MODEL_NAME_KEY = "fullAvatarModelName"; + const QString TUTORIAL_COMPLETE_FLAG_KEY = "tutorialComplete"; + QString displayName; QUrl fullAvatarURL; QString fullAvatarModelName; QUrl address; + bool tutorialComplete; - if (action == CrashHandler::RETAIN_AVATAR_INFO) { + if (action == CrashHandler::RETAIN_IMPORTANT_INFO) { // Read avatar info // Location and orientation @@ -135,6 +138,9 @@ void CrashHandler::handleCrash(CrashHandler::Action action) { fullAvatarURL = settings.value(FULL_AVATAR_URL_KEY).toUrl(); fullAvatarModelName = settings.value(FULL_AVATAR_MODEL_NAME_KEY).toString(); settings.endGroup(); + + // Tutorial complete + tutorialComplete = settings.value(TUTORIAL_COMPLETE_FLAG_KEY).toBool(); } // Delete Interface.ini @@ -143,7 +149,7 @@ void CrashHandler::handleCrash(CrashHandler::Action action) { settingsFile.remove(); } - if (action == CrashHandler::RETAIN_AVATAR_INFO) { + if (action == CrashHandler::RETAIN_IMPORTANT_INFO) { // Write avatar info // Location and orientation @@ -157,6 +163,9 @@ void CrashHandler::handleCrash(CrashHandler::Action action) { settings.setValue(FULL_AVATAR_URL_KEY, fullAvatarURL); settings.setValue(FULL_AVATAR_MODEL_NAME_KEY, fullAvatarModelName); settings.endGroup(); + + // Tutorial complete + settings.setValue(TUTORIAL_COMPLETE_FLAG_KEY, tutorialComplete); } } diff --git a/interface/src/CrashHandler.h b/interface/src/CrashHandler.h index da2e1575db..bff8bba6dd 100644 --- a/interface/src/CrashHandler.h +++ b/interface/src/CrashHandler.h @@ -22,7 +22,7 @@ public: private: enum Action { DELETE_INTERFACE_INI, - RETAIN_AVATAR_INFO, + RETAIN_IMPORTANT_INFO, DO_NOTHING }; From 6fe20f90a3a7181543eca834b746fb2c3b2ec48b Mon Sep 17 00:00:00 2001 From: ZappoMan Date: Thu, 8 Jun 2017 12:37:19 -0700 Subject: [PATCH 343/357] add better debugging for audio problems use OS default device if settings have no values --- interface/resources/qml/hifi/Audio.qml | 15 ++++++-- .../AudioDeviceScriptingInterface.cpp | 36 +++++++++++++++++-- libraries/audio-client/src/AudioClient.cpp | 25 ++++++++++--- 3 files changed, 67 insertions(+), 9 deletions(-) diff --git a/interface/resources/qml/hifi/Audio.qml b/interface/resources/qml/hifi/Audio.qml index 66760ff290..46cec99e69 100644 --- a/interface/resources/qml/hifi/Audio.qml +++ b/interface/resources/qml/hifi/Audio.qml @@ -161,7 +161,12 @@ Rectangle { text.text: devicename onCheckBoxClicked: { if (checked) { - AudioDevice.setInputDeviceAsync(devicename) + if (devicename.length > 0) { + console.log("Audio.qml about to call AudioDevice.setInputDeviceAsync().devicename:" + devicename); + AudioDevice.setInputDeviceAsync(devicename); + } else { + console.log("Audio.qml attempted to set input device to empty device name."); + } } } } @@ -217,7 +222,13 @@ Rectangle { text.text: devicename onCheckBoxClicked: { if (checked) { - AudioDevice.setOutputDeviceAsync(devicename) + if (devicename.length > 0) { + console.log("Audio.qml about to call AudioDevice.setOutputDeviceAsync().devicename:" + devicename); + AudioDevice.setOutputDeviceAsync(devicename); + } else { + console.log("Audio.qml attempted to set output device to empty device name."); + } + } } } diff --git a/interface/src/scripting/AudioDeviceScriptingInterface.cpp b/interface/src/scripting/AudioDeviceScriptingInterface.cpp index 05168b0d4c..d22f948344 100644 --- a/interface/src/scripting/AudioDeviceScriptingInterface.cpp +++ b/interface/src/scripting/AudioDeviceScriptingInterface.cpp @@ -9,7 +9,9 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -#include "AudioClient.h" +#include +#include + #include "AudioDeviceScriptingInterface.h" #include "SettingsScriptingInterface.h" @@ -44,17 +46,23 @@ AudioDeviceScriptingInterface::AudioDeviceScriptingInterface(): QAbstractListMod onDeviceChanged(); //set up previously saved device SettingsScriptingInterface* settings = SettingsScriptingInterface::getInstance(); - const QString inDevice = settings->getValue("audio_input_device").toString(); + const QString inDevice = settings->getValue("audio_input_device", _currentInputDevice).toString(); if (inDevice != _currentInputDevice) { + qCDebug(audioclient) << __FUNCTION__ << "about to call setInputDeviceAsync() device: [" << inDevice << "] _currentInputDevice:" << _currentInputDevice; setInputDeviceAsync(inDevice); } - const QString outDevice = settings->getValue("audio_output_device").toString(); + + // If the audio_output_device setting is not available, use the _currentOutputDevice + auto outDevice = settings->getValue("audio_output_device", _currentOutputDevice).toString(); if (outDevice != _currentOutputDevice) { + qCDebug(audioclient) << __FUNCTION__ << "about to call setOutputDeviceAsync() outDevice: [" << outDevice << "] _currentOutputDevice:" << _currentOutputDevice; setOutputDeviceAsync(outDevice); } } bool AudioDeviceScriptingInterface::setInputDevice(const QString& deviceName) { + qCDebug(audioclient) << __FUNCTION__ << "deviceName:" << deviceName; + bool result; QMetaObject::invokeMethod(DependencyManager::get().data(), "switchInputToAudioDevice", Qt::BlockingQueuedConnection, @@ -64,6 +72,9 @@ bool AudioDeviceScriptingInterface::setInputDevice(const QString& deviceName) { } bool AudioDeviceScriptingInterface::setOutputDevice(const QString& deviceName) { + + qCDebug(audioclient) << __FUNCTION__ << "deviceName:" << deviceName; + bool result; QMetaObject::invokeMethod(DependencyManager::get().data(), "switchOutputToAudioDevice", Qt::BlockingQueuedConnection, @@ -86,8 +97,10 @@ bool AudioDeviceScriptingInterface::setDeviceFromMenu(const QString& deviceMenuN for (ScriptingAudioDeviceInfo di: _devices) { if (mode == di.mode && deviceMenuName.contains(di.name)) { if (mode == QAudio::AudioOutput) { + qCDebug(audioclient) << __FUNCTION__ << "about to call setOutputDeviceAsync() device: [" << di.name << "]"; setOutputDeviceAsync(di.name); } else { + qCDebug(audioclient) << __FUNCTION__ << "about to call setInputDeviceAsync() device: [" << di.name << "]"; setInputDeviceAsync(di.name); } return true; @@ -98,12 +111,26 @@ bool AudioDeviceScriptingInterface::setDeviceFromMenu(const QString& deviceMenuN } void AudioDeviceScriptingInterface::setInputDeviceAsync(const QString& deviceName) { + qCDebug(audioclient) << __FUNCTION__ << "deviceName:" << deviceName; + + if (deviceName.isEmpty()) { + qCDebug(audioclient) << __FUNCTION__ << "attempt to set empty deviceName:" << deviceName << "... ignoring!"; + return; + } + QMetaObject::invokeMethod(DependencyManager::get().data(), "switchInputToAudioDevice", Qt::QueuedConnection, Q_ARG(const QString&, deviceName)); } void AudioDeviceScriptingInterface::setOutputDeviceAsync(const QString& deviceName) { + qCDebug(audioclient) << __FUNCTION__ << "deviceName:" << deviceName; + + if (deviceName.isEmpty()) { + qCDebug(audioclient) << __FUNCTION__ << "attempt to set empty deviceName:" << deviceName << "... ignoring!"; + return; + } + QMetaObject::invokeMethod(DependencyManager::get().data(), "switchOutputToAudioDevice", Qt::QueuedConnection, Q_ARG(const QString&, deviceName)); @@ -241,8 +268,11 @@ void AudioDeviceScriptingInterface::onCurrentInputDeviceChanged(const QString& n void AudioDeviceScriptingInterface::onCurrentOutputDeviceChanged(const QString& name) { currentDeviceUpdate(name, QAudio::AudioOutput); + + // FIXME - this is kinda janky to set the setting on the result of a signal //we got a signal that device changed. Save it now SettingsScriptingInterface* settings = SettingsScriptingInterface::getInstance(); + qCDebug(audioclient) << __FUNCTION__ << "about to call settings->setValue('audio_output_device', name); name:" << name; settings->setValue("audio_output_device", name); emit currentOutputDeviceChanged(name); } diff --git a/libraries/audio-client/src/AudioClient.cpp b/libraries/audio-client/src/AudioClient.cpp index e03ca83131..f0363cd49c 100644 --- a/libraries/audio-client/src/AudioClient.cpp +++ b/libraries/audio-client/src/AudioClient.cpp @@ -216,7 +216,10 @@ AudioClient::AudioClient() : connect(&_receivedAudioStream, &MixedProcessedAudioStream::processSamples, this, &AudioClient::processReceivedSamples, Qt::DirectConnection); - connect(this, &AudioClient::changeDevice, this, [=](const QAudioDeviceInfo& outputDeviceInfo) { switchOutputToAudioDevice(outputDeviceInfo); }); + connect(this, &AudioClient::changeDevice, this, [=](const QAudioDeviceInfo& outputDeviceInfo) { + qCDebug(audioclient) << "got AudioClient::changeDevice signal, about to call switchOutputToAudioDevice() outputDeviceInfo: [" << outputDeviceInfo.deviceName() << "]"; + switchOutputToAudioDevice(outputDeviceInfo); + }); connect(&_receivedAudioStream, &InboundAudioStream::mismatchedAudioCodec, this, &AudioClient::handleMismatchAudioFormat); @@ -438,7 +441,8 @@ QAudioDeviceInfo defaultAudioDeviceForMode(QAudio::Mode mode) { CoUninitialize(); } - qCDebug(audioclient) << "[" << deviceName << "] [" << getNamedAudioDeviceForMode(mode, deviceName).deviceName() << "]"; + qCDebug(audioclient) << "defaultAudioDeviceForMode mode: " << (mode == QAudio::AudioOutput ? "Output" : "Input") + << " [" << deviceName << "] [" << getNamedAudioDeviceForMode(mode, deviceName).deviceName() << "]"; return getNamedAudioDeviceForMode(mode, deviceName); #endif @@ -614,8 +618,12 @@ void AudioClient::start() { } void AudioClient::stop() { + // "switch" to invalid devices in order to shut down the state + qCDebug(audioclient) << "AudioClient::stop(), about to call switchInputToAudioDevice(null)"; switchInputToAudioDevice(QAudioDeviceInfo()); + + qCDebug(audioclient) << "AudioClient::stop(), about to call switchOutputToAudioDevice(null)"; switchOutputToAudioDevice(QAudioDeviceInfo()); } @@ -807,12 +815,12 @@ QVector AudioClient::getDeviceNames(QAudio::Mode mode) { } bool AudioClient::switchInputToAudioDevice(const QString& inputDeviceName) { - qCDebug(audioclient) << "[" << inputDeviceName << "] [" << getNamedAudioDeviceForMode(QAudio::AudioInput, inputDeviceName).deviceName() << "]"; + qCDebug(audioclient) << "switchInputToAudioDevice [" << inputDeviceName << "] [" << getNamedAudioDeviceForMode(QAudio::AudioInput, inputDeviceName).deviceName() << "]"; return switchInputToAudioDevice(getNamedAudioDeviceForMode(QAudio::AudioInput, inputDeviceName)); } bool AudioClient::switchOutputToAudioDevice(const QString& outputDeviceName) { - qCDebug(audioclient) << "[" << outputDeviceName << "] [" << getNamedAudioDeviceForMode(QAudio::AudioOutput, outputDeviceName).deviceName() << "]"; + qCDebug(audioclient) << "switchOutputToAudioDevice [" << outputDeviceName << "] [" << getNamedAudioDeviceForMode(QAudio::AudioOutput, outputDeviceName).deviceName() << "]"; return switchOutputToAudioDevice(getNamedAudioDeviceForMode(QAudio::AudioOutput, outputDeviceName)); } @@ -1357,6 +1365,7 @@ void AudioClient::setIsStereoInput(bool isStereoInput) { } // change in channel count for desired input format, restart the input device + qCDebug(audioclient) << __FUNCTION__ << "about to call switchInputToAudioDevice:" << _inputAudioDeviceName; switchInputToAudioDevice(_inputAudioDeviceName); } } @@ -1395,6 +1404,7 @@ void AudioClient::outputFormatChanged() { } bool AudioClient::switchInputToAudioDevice(const QAudioDeviceInfo& inputDeviceInfo) { + qCDebug(audioclient) << __FUNCTION__ << "inputDeviceInfo: [" << inputDeviceInfo.deviceName() << "]"; bool supportedFormat = false; // cleanup any previously initialized device @@ -1509,6 +1519,8 @@ void AudioClient::outputNotify() { } bool AudioClient::switchOutputToAudioDevice(const QAudioDeviceInfo& outputDeviceInfo) { + qCDebug(audioclient) << "AudioClient::switchOutputToAudioDevice() outputDeviceInfo: [" << outputDeviceInfo.deviceName() << "]"; + bool supportedFormat = false; Lock localAudioLock(_localAudioMutex); @@ -1643,7 +1655,11 @@ bool AudioClient::switchOutputToAudioDevice(const QAudioDeviceInfo& outputDevice } int AudioClient::setOutputBufferSize(int numFrames, bool persist) { + qCDebug(audioclient) << __FUNCTION__ << "numFrames:" << numFrames << "persist:" << persist; + numFrames = std::min(std::max(numFrames, MIN_BUFFER_FRAMES), MAX_BUFFER_FRAMES); + qCDebug(audioclient) << __FUNCTION__ << "clamped numFrames:" << numFrames << "_sessionOutputBufferSizeFrames:" << _sessionOutputBufferSizeFrames; + if (numFrames != _sessionOutputBufferSizeFrames) { qCInfo(audioclient, "Audio output buffer set to %d frames", numFrames); _sessionOutputBufferSizeFrames = numFrames; @@ -1655,6 +1671,7 @@ int AudioClient::setOutputBufferSize(int numFrames, bool persist) { // The buffer size can't be adjusted after QAudioOutput::start() has been called, so // recreate the device by switching to the default. QAudioDeviceInfo outputDeviceInfo = defaultAudioDeviceForMode(QAudio::AudioOutput); + qCDebug(audioclient) << __FUNCTION__ << "about to send changeDevice signal outputDeviceInfo: [" << outputDeviceInfo.deviceName() << "]"; emit changeDevice(outputDeviceInfo); // On correct thread, please, as setOutputBufferSize can be called from main thread. } } From 8bc7ce63579908e2ea943657b9ab77c15e3c9c33 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Fri, 9 Jun 2017 13:55:57 -0700 Subject: [PATCH 344/357] put back defaultAvatar_full.fst mode to 644 --- interface/resources/meshes/defaultAvatar_full.fst | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 interface/resources/meshes/defaultAvatar_full.fst diff --git a/interface/resources/meshes/defaultAvatar_full.fst b/interface/resources/meshes/defaultAvatar_full.fst old mode 100755 new mode 100644 From fff8876b21154e7c260d4929e017099a88bec45c Mon Sep 17 00:00:00 2001 From: David Rowe Date: Sat, 10 Jun 2017 09:33:45 +1200 Subject: [PATCH 345/357] Code review --- scripts/system/libraries/WebTablet.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/scripts/system/libraries/WebTablet.js b/scripts/system/libraries/WebTablet.js index 9a000d551e..f8f4e96f25 100644 --- a/scripts/system/libraries/WebTablet.js +++ b/scripts/system/libraries/WebTablet.js @@ -71,10 +71,12 @@ function calcSpawnInfo(hand, tabletHeight) { rotation = Quat.multiply(rotation, Quat.fromPitchYawRollDegrees(0, -90, 0)); } var normal = Vec3.multiplyQbyV(rotation, Vec3.UNIT_NEG_Y); - var lookAt = Quat.lookAt({x: 0, y: 0, z: 0}, normal, Vec3.multiplyQbyV(MyAvatar.orientation, Vec3.UNIT_Y)); - rotation = Quat.multiply(Quat.angleAxis(30, Vec3.multiplyQbyV(lookAt, Vec3.UNIT_X)), lookAt); + var lookAt = Quat.lookAt(Vec3.ZERO, normal, Vec3.multiplyQbyV(MyAvatar.orientation, Vec3.UNIT_Y)); + var TABLET_RAKE_ANGLE = 30; + rotation = Quat.multiply(Quat.angleAxis(TABLET_RAKE_ANGLE, Vec3.multiplyQbyV(lookAt, Vec3.UNIT_X)), lookAt); - position = Vec3.sum(position, Vec3.multiplyQbyV(rotation, { x: 0, y: tabletHeight * 0.4, z: tabletHeight * 0.05 })); + var RELATIVE_SPAWN_OFFSET = { x: 0, y: 0.4, z: 0.05 }; + position = Vec3.sum(position, Vec3.multiplyQbyV(rotation, Vec3.multiply(tabletHeight, RELATIVE_SPAWN_OFFSET))); return { position: position, From d2bea94768ffd8f0595db7ecb59d557927fb0467 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Fri, 9 Jun 2017 15:52:21 -0700 Subject: [PATCH 346/357] simplify fileOnUrl to always look right beside FBX --- libraries/fbx/src/FBXReader.cpp | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/libraries/fbx/src/FBXReader.cpp b/libraries/fbx/src/FBXReader.cpp index 236daf6443..6d4f586c52 100644 --- a/libraries/fbx/src/FBXReader.cpp +++ b/libraries/fbx/src/FBXReader.cpp @@ -460,17 +460,11 @@ FBXLight extractLight(const FBXNode& object) { } QByteArray fileOnUrl(const QByteArray& filepath, const QString& url) { - QString path = QFileInfo(url).path(); - QByteArray filename = filepath; - QFileInfo checkFile(path + "/" + filepath); + // in order to match the behaviour when loading models from remote URLs + // we assume that all external textures are right beside the loaded model + // ignoring any relative paths or absolute paths inside of models - // check if the file exists at the RelativeFilename - if (!(checkFile.exists() && checkFile.isFile())) { - // if not, assume it is in the fbx directory - filename = filename.mid(filename.lastIndexOf('/') + 1); - } - - return filename; + return filepath.mid(filepath.lastIndexOf('/') + 1); } FBXGeometry* FBXReader::extractFBXGeometry(const QVariantHash& mapping, const QString& url) { From e96c55956f7bdf90be9a767947bd19121d91f633 Mon Sep 17 00:00:00 2001 From: Zach Fox Date: Mon, 12 Jun 2017 09:37:51 -0700 Subject: [PATCH 347/357] First pass at the fix --- libraries/render-utils/src/text/Font.cpp | 3 +++ libraries/render-utils/src/text/Font.h | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/libraries/render-utils/src/text/Font.cpp b/libraries/render-utils/src/text/Font.cpp index c6a7da3a1a..f51a779066 100644 --- a/libraries/render-utils/src/text/Font.cpp +++ b/libraries/render-utils/src/text/Font.cpp @@ -14,6 +14,8 @@ #include "../RenderUtilsLogging.h" #include "FontFamilies.h" +static std::mutex fontMutex; + struct TextureVertex { glm::vec2 pos; glm::vec2 tex; @@ -56,6 +58,7 @@ Font::Pointer Font::load(QIODevice& fontFile) { } Font::Pointer Font::load(const QString& family) { + std::lock_guard lock(fontMutex); if (!LOADED_FONTS.contains(family)) { static const QString SDFF_COURIER_PRIME_FILENAME{ ":/CourierPrime.sdff" }; diff --git a/libraries/render-utils/src/text/Font.h b/libraries/render-utils/src/text/Font.h index 5b6b4f2a43..2b61f19492 100644 --- a/libraries/render-utils/src/text/Font.h +++ b/libraries/render-utils/src/text/Font.h @@ -31,10 +31,10 @@ public: const glm::vec4* color, EffectType effectType, const glm::vec2& bound, bool layered = false); - static Pointer load(QIODevice& fontFile); static Pointer load(const QString& family); private: + static Pointer load(QIODevice& fontFile); QStringList tokenizeForWrapping(const QString& str) const; QStringList splitLines(const QString& str) const; glm::vec2 computeTokenExtent(const QString& str) const; From cb5a114145ebddfd70925ff231b5a1c33afe4303 Mon Sep 17 00:00:00 2001 From: seefo Date: Mon, 12 Jun 2017 10:47:55 -0700 Subject: [PATCH 348/357] Fixed Ubuntu warning --- interface/src/CrashHandler.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/src/CrashHandler.cpp b/interface/src/CrashHandler.cpp index 55a1071ff8..f7d71de3fe 100644 --- a/interface/src/CrashHandler.cpp +++ b/interface/src/CrashHandler.cpp @@ -122,7 +122,7 @@ void CrashHandler::handleCrash(CrashHandler::Action action) { QUrl fullAvatarURL; QString fullAvatarModelName; QUrl address; - bool tutorialComplete; + bool tutorialComplete = false; if (action == CrashHandler::RETAIN_IMPORTANT_INFO) { // Read avatar info From 1968ecbc8f0f8dc4a29890ebaaf2b4ddda4475a5 Mon Sep 17 00:00:00 2001 From: Bradley Austin Davis Date: Tue, 6 Jun 2017 16:29:52 -0700 Subject: [PATCH 349/357] Simplify eventBridge mechanism exposing functionality to web pages --- .../resources/html/createGlobalEventBridge.js | 2 +- interface/resources/qml/Browser.qml | 15 +-- interface/resources/qml/QmlWebWindow.qml | 10 +- interface/resources/qml/QmlWindow.qml | 9 -- interface/resources/qml/TabletBrowser.qml | 12 +- interface/resources/qml/ToolWindow.qml | 13 +-- .../qml/controls/TabletWebScreen.qml | 12 +- .../resources/qml/controls/TabletWebView.qml | 11 +- interface/resources/qml/controls/WebView.qml | 11 +- .../qml/dialogs/TabletLoginDialog.qml | 1 - .../qml/dialogs/preferences/AvatarBrowser.qml | 16 +-- .../dialogs/preferences/AvatarPreference.qml | 4 +- interface/resources/qml/hifi/Audio.qml | 1 - interface/resources/qml/hifi/Pal.qml | 2 - .../qml/hifi/dialogs/TabletAssetServer.qml | 1 - .../qml/hifi/dialogs/TabletDCDialog.qml | 1 - .../qml/hifi/dialogs/TabletDebugWindow.qml | 1 - .../hifi/dialogs/TabletEntityStatistics.qml | 1 - .../qml/hifi/dialogs/TabletLODTools.qml | 1 - .../qml/hifi/dialogs/TabletRunningScripts.qml | 1 - interface/resources/qml/hifi/tablet/Edit.qml | 2 - .../resources/qml/hifi/tablet/EditTabView.qml | 6 +- .../qml/hifi/tablet/InputRecorder.qml | 1 - .../qml/hifi/tablet/NewModelDialog.qml | 1 - .../qml/hifi/tablet/TabletAddressDialog.qml | 2 - .../hifi/tablet/TabletAttachmentsDialog.qml | 1 - .../hifi/tablet/TabletAudioPreferences.qml | 1 - .../hifi/tablet/TabletAvatarPreferences.qml | 1 - .../hifi/tablet/TabletGeneralPreferences.qml | 1 - .../hifi/tablet/TabletGraphicsPreferences.qml | 1 - .../qml/hifi/tablet/TabletLodPreferences.qml | 1 - .../resources/qml/hifi/tablet/TabletMenu.qml | 1 - .../qml/hifi/tablet/TabletMenuStack.qml | 1 - .../tablet/TabletNetworkingPreferences.qml | 1 - .../resources/qml/hifi/tablet/TabletRoot.qml | 8 +- .../resources/qml/hifi/tablet/WindowRoot.qml | 7 +- .../preferences/TabletAvatarBrowser.qml | 15 +-- libraries/gl/src/gl/OffscreenQmlSurface.cpp | 107 +++++++++++------- libraries/gl/src/gl/OffscreenQmlSurface.h | 5 +- libraries/ui/src/QmlWindowClass.cpp | 4 +- plugins/openvr/src/ViveControllerManager.cpp | 15 ++- scripts/system/html/js/eventBridgeLoader.js | 2 +- 42 files changed, 112 insertions(+), 197 deletions(-) diff --git a/interface/resources/html/createGlobalEventBridge.js b/interface/resources/html/createGlobalEventBridge.js index 027d6fe8db..4a0de464c3 100644 --- a/interface/resources/html/createGlobalEventBridge.js +++ b/interface/resources/html/createGlobalEventBridge.js @@ -32,7 +32,7 @@ var EventBridge; var webChannel = new QWebChannel(qt.webChannelTransport, function (channel) { // replace the TempEventBridge with the real one. var tempEventBridge = EventBridge; - EventBridge = channel.objects.eventBridgeWrapper.eventBridge; + EventBridge = channel.objects.eventBridge; tempEventBridge._callbacks.forEach(function (callback) { EventBridge.scriptEventReceived.connect(callback); }); diff --git a/interface/resources/qml/Browser.qml b/interface/resources/qml/Browser.qml index 4f7639dd0e..55927fda24 100644 --- a/interface/resources/qml/Browser.qml +++ b/interface/resources/qml/Browser.qml @@ -21,8 +21,6 @@ ScrollingWindow { property alias url: webview.url property alias webView: webview - property alias eventBridge: eventBridgeWrapper.eventBridge - signal loadingChanged(int status) x: 100 @@ -210,17 +208,6 @@ ScrollingWindow { url: "https://highfidelity.com/" profile: FileTypeProfile; - property alias eventBridgeWrapper: eventBridgeWrapper - - QtObject { - id: eventBridgeWrapper - WebChannel.id: "eventBridgeWrapper" - property var eventBridge; - } - - - webChannel.registeredObjects: [eventBridgeWrapper] - // Create a global EventBridge object for raiseAndLowerKeyboard. WebEngineScript { id: createGlobalEventBridge @@ -267,6 +254,8 @@ ScrollingWindow { } Component.onCompleted: { + webChannel.registerObject("eventBridge", eventBridge); + webChannel.registerObject("eventBridgeWrapper", eventBridgeWrapper); desktop.initWebviewProfileHandlers(webview.profile); } } diff --git a/interface/resources/qml/QmlWebWindow.qml b/interface/resources/qml/QmlWebWindow.qml index d40b1595ba..d2daf0fa1d 100644 --- a/interface/resources/qml/QmlWebWindow.qml +++ b/interface/resources/qml/QmlWebWindow.qml @@ -26,15 +26,8 @@ Windows.ScrollingWindow { // Don't destroy on close... otherwise the JS/C++ will have a dangling pointer destroyOnCloseButton: false property alias source: webview.url - property alias eventBridge: eventBridgeWrapper.eventBridge; property alias scriptUrl: webview.userScriptUrl - QtObject { - id: eventBridgeWrapper - WebChannel.id: "eventBridgeWrapper" - property var eventBridge; - } - // This is for JS/QML communication, which is unused in a WebWindow, // but not having this here results in spurious warnings about a // missing signal @@ -70,7 +63,6 @@ Windows.ScrollingWindow { url: "about:blank" anchors.fill: parent focus: true - webChannel.registeredObjects: [eventBridgeWrapper] property string userScriptUrl: "" @@ -107,6 +99,8 @@ Windows.ScrollingWindow { } Component.onCompleted: { + webChannel.registerObject("eventBridge", eventBridge); + webChannel.registerObject("eventBridgeWrapper", eventBridgeWrapper); eventBridge.webEventReceived.connect(onWebEventReceived); } } diff --git a/interface/resources/qml/QmlWindow.qml b/interface/resources/qml/QmlWindow.qml index ac18d36ce6..9ef151b32e 100644 --- a/interface/resources/qml/QmlWindow.qml +++ b/interface/resources/qml/QmlWindow.qml @@ -30,15 +30,6 @@ Windows.Window { property bool keyboardRaised: false property bool punctuationMode: false - // JavaScript event bridge object in case QML content includes Web content. - property alias eventBridge: eventBridgeWrapper.eventBridge; - - QtObject { - id: eventBridgeWrapper - WebChannel.id: "eventBridgeWrapper" - property var eventBridge; - } - onSourceChanged: { if (dynamicContent) { dynamicContent.destroy(); diff --git a/interface/resources/qml/TabletBrowser.qml b/interface/resources/qml/TabletBrowser.qml index d89aa8626f..c3d879c513 100644 --- a/interface/resources/qml/TabletBrowser.qml +++ b/interface/resources/qml/TabletBrowser.qml @@ -18,7 +18,6 @@ Item { property variant permissionsBar: {'securityOrigin':'none','feature':'none'} property alias url: webview.url property WebEngineView webView: webview - property alias eventBridge: eventBridgeWrapper.eventBridge property bool canGoBack: webview.canGoBack property bool canGoForward: webview.canGoForward @@ -32,12 +31,6 @@ Item { webview.profile = profile; } - QtObject { - id: eventBridgeWrapper - WebChannel.id: "eventBridgeWrapper" - property var eventBridge; - } - WebEngineView { id: webview objectName: "webEngineView" @@ -78,9 +71,10 @@ Item { property string newUrl: "" - webChannel.registeredObjects: [eventBridgeWrapper] - Component.onCompleted: { + webChannel.registerObject("eventBridge", eventBridge); + webChannel.registerObject("eventBridgeWrapper", eventBridgeWrapper); + // Ensure the JS from the web-engine makes it to our logging webview.javaScriptConsoleMessage.connect(function(level, message, lineNumber, sourceID) { console.log("Web Entity JS message: " + sourceID + " " + lineNumber + " " + message); diff --git a/interface/resources/qml/ToolWindow.qml b/interface/resources/qml/ToolWindow.qml index 9c0b0a8c1a..b1120058f9 100644 --- a/interface/resources/qml/ToolWindow.qml +++ b/interface/resources/qml/ToolWindow.qml @@ -79,15 +79,11 @@ ScrollingWindow { id: webView anchors.fill: parent enabled: false - property alias eventBridgeWrapper: eventBridgeWrapper - - QtObject { - id: eventBridgeWrapper - WebChannel.id: "eventBridgeWrapper" - property var eventBridge + Component.onCompleted: { + webChannel.registerObject("eventBridge", eventBridge); + webChannel.registerObject("eventBridgeWrapper", eventBridgeWrapper); } - webChannel.registeredObjects: [eventBridgeWrapper] onEnabledChanged: toolWindow.updateVisiblity() } } @@ -251,12 +247,9 @@ ScrollingWindow { tab.enabled = true; tab.originalUrl = properties.source; - var eventBridge = properties.eventBridge; - var result = tab.item; result.enabled = true; tabView.tabCount++; - result.eventBridgeWrapper.eventBridge = eventBridge; result.url = properties.source; return result; } diff --git a/interface/resources/qml/controls/TabletWebScreen.qml b/interface/resources/qml/controls/TabletWebScreen.qml index 0b265f6fbb..68f8226e21 100644 --- a/interface/resources/qml/controls/TabletWebScreen.qml +++ b/interface/resources/qml/controls/TabletWebScreen.qml @@ -6,7 +6,6 @@ import "../controls-uit" as HiFiControls Item { property alias url: root.url property alias scriptURL: root.userScriptUrl - property alias eventBridge: eventBridgeWrapper.eventBridge property alias canGoBack: root.canGoBack; property var goBack: root.goBack; property alias urlTag: root.urlTag @@ -22,12 +21,6 @@ Item { } */ - QtObject { - id: eventBridgeWrapper - WebChannel.id: "eventBridgeWrapper" - property var eventBridge; - } - property alias viewProfile: root.profile WebEngineView { @@ -71,10 +64,11 @@ Item { userScripts: [ createGlobalEventBridge, raiseAndLowerKeyboard, userScript ] property string newUrl: "" - - webChannel.registeredObjects: [eventBridgeWrapper] + Component.onCompleted: { + webChannel.registerObject("eventBridge", eventBridge); + webChannel.registerObject("eventBridgeWrapper", eventBridgeWrapper); // Ensure the JS from the web-engine makes it to our logging root.javaScriptConsoleMessage.connect(function(level, message, lineNumber, sourceID) { console.log("Web Entity JS message: " + sourceID + " " + lineNumber + " " + message); diff --git a/interface/resources/qml/controls/TabletWebView.qml b/interface/resources/qml/controls/TabletWebView.qml index 3b23cbc19e..0a5a68717e 100644 --- a/interface/resources/qml/controls/TabletWebView.qml +++ b/interface/resources/qml/controls/TabletWebView.qml @@ -17,7 +17,6 @@ Item { property int headerHeight: 70 property string url property string scriptURL - property alias eventBridge: eventBridgeWrapper.eventBridge property bool keyboardEnabled: false property bool keyboardRaised: false property bool punctuationMode: false @@ -135,12 +134,6 @@ Item { loadUrl(url); } - QtObject { - id: eventBridgeWrapper - WebChannel.id: "eventBridgeWrapper" - property var eventBridge; - } - WebEngineView { id: webview objectName: "webEngineView" @@ -182,9 +175,9 @@ Item { property string newUrl: "" - webChannel.registeredObjects: [eventBridgeWrapper] - Component.onCompleted: { + webChannel.registerObject("eventBridge", eventBridge); + webChannel.registerObject("eventBridgeWrapper", eventBridgeWrapper); // Ensure the JS from the web-engine makes it to our logging webview.javaScriptConsoleMessage.connect(function(level, message, lineNumber, sourceID) { console.log("Web Entity JS message: " + sourceID + " " + lineNumber + " " + message); diff --git a/interface/resources/qml/controls/WebView.qml b/interface/resources/qml/controls/WebView.qml index d08562eea3..38136c7eec 100644 --- a/interface/resources/qml/controls/WebView.qml +++ b/interface/resources/qml/controls/WebView.qml @@ -6,7 +6,6 @@ import "../controls-uit" as HiFiControls Item { property alias url: root.url property alias scriptURL: root.userScriptUrl - property alias eventBridge: eventBridgeWrapper.eventBridge property alias canGoBack: root.canGoBack; property var goBack: root.goBack; property alias urlTag: root.urlTag @@ -22,12 +21,6 @@ Item { } */ - QtObject { - id: eventBridgeWrapper - WebChannel.id: "eventBridgeWrapper" - property var eventBridge; - } - property alias viewProfile: root.profile WebEngineView { @@ -72,9 +65,9 @@ Item { property string newUrl: "" - webChannel.registeredObjects: [eventBridgeWrapper] - Component.onCompleted: { + webChannel.registerObject("eventBridge", eventBridge); + webChannel.registerObject("eventBridgeWrapper", eventBridgeWrapper); // Ensure the JS from the web-engine makes it to our logging root.javaScriptConsoleMessage.connect(function(level, message, lineNumber, sourceID) { console.log("Web Entity JS message: " + sourceID + " " + lineNumber + " " + message); diff --git a/interface/resources/qml/dialogs/TabletLoginDialog.qml b/interface/resources/qml/dialogs/TabletLoginDialog.qml index 30c3e678b4..36ca480b24 100644 --- a/interface/resources/qml/dialogs/TabletLoginDialog.qml +++ b/interface/resources/qml/dialogs/TabletLoginDialog.qml @@ -20,7 +20,6 @@ TabletModalWindow { id: loginDialogRoot objectName: "LoginDialog" - property var eventBridge; signal sendToScript(var message); property bool isHMD: false property bool gotoPreviousApp: false; diff --git a/interface/resources/qml/dialogs/preferences/AvatarBrowser.qml b/interface/resources/qml/dialogs/preferences/AvatarBrowser.qml index 652e02b6b9..e2a012ad46 100644 --- a/interface/resources/qml/dialogs/preferences/AvatarBrowser.qml +++ b/interface/resources/qml/dialogs/preferences/AvatarBrowser.qml @@ -24,8 +24,6 @@ Window { resizable: true modality: Qt.ApplicationModal - property alias eventBridge: eventBridgeWrapper.eventBridge - Item { anchors.fill: parent @@ -45,16 +43,6 @@ Window { bottom: keyboard.top } - property alias eventBridgeWrapper: eventBridgeWrapper - - QtObject { - id: eventBridgeWrapper - WebChannel.id: "eventBridgeWrapper" - property var eventBridge; - } - - webChannel.registeredObjects: [eventBridgeWrapper] - // Create a global EventBridge object for raiseAndLowerKeyboard. WebEngineScript { id: createGlobalEventBridge @@ -73,6 +61,10 @@ Window { userScripts: [ createGlobalEventBridge, raiseAndLowerKeyboard ] + Component.onCompleted: { + webChannel.registerObject("eventBridge", eventBridge); + webChannel.registerObject("eventBridgeWrapper", eventBridgeWrapper); + } } Keyboard { diff --git a/interface/resources/qml/dialogs/preferences/AvatarPreference.qml b/interface/resources/qml/dialogs/preferences/AvatarPreference.qml index bcc5a1d9e6..b27827d9d7 100644 --- a/interface/resources/qml/dialogs/preferences/AvatarPreference.qml +++ b/interface/resources/qml/dialogs/preferences/AvatarPreference.qml @@ -116,9 +116,7 @@ Preference { Component { id: tabletAvatarBrowserBuilder; - TabletAvatarBrowser { - eventBridge: tabletRoot.eventBridge - } + TabletAvatarBrowser { } } } diff --git a/interface/resources/qml/hifi/Audio.qml b/interface/resources/qml/hifi/Audio.qml index 46cec99e69..48de891733 100644 --- a/interface/resources/qml/hifi/Audio.qml +++ b/interface/resources/qml/hifi/Audio.qml @@ -31,7 +31,6 @@ Rectangle { HifiConstants { id: hifi; } objectName: "AudioWindow" - property var eventBridge; property string title: "Audio Options" signal sendToScript(var message); diff --git a/interface/resources/qml/hifi/Pal.qml b/interface/resources/qml/hifi/Pal.qml index 2d6b21b219..250015bab9 100644 --- a/interface/resources/qml/hifi/Pal.qml +++ b/interface/resources/qml/hifi/Pal.qml @@ -44,7 +44,6 @@ Rectangle { property var activeTab: "nearbyTab"; property bool currentlyEditingDisplayName: false property bool punctuationMode: false; - property var eventBridge; HifiConstants { id: hifi; } @@ -1043,7 +1042,6 @@ Rectangle { } // Keyboard HifiControls.TabletWebView { - eventBridge: pal.eventBridge; id: userInfoViewer; anchors { top: parent.top; diff --git a/interface/resources/qml/hifi/dialogs/TabletAssetServer.qml b/interface/resources/qml/hifi/dialogs/TabletAssetServer.qml index 6e0263787b..47c9af1f57 100644 --- a/interface/resources/qml/hifi/dialogs/TabletAssetServer.qml +++ b/interface/resources/qml/hifi/dialogs/TabletAssetServer.qml @@ -24,7 +24,6 @@ Rectangle { property string title: "Asset Browser" property bool keyboardRaised: false - property var eventBridge; signal sendToScript(var message); property bool isHMD: false diff --git a/interface/resources/qml/hifi/dialogs/TabletDCDialog.qml b/interface/resources/qml/hifi/dialogs/TabletDCDialog.qml index b33b957e15..0f363d1be9 100644 --- a/interface/resources/qml/hifi/dialogs/TabletDCDialog.qml +++ b/interface/resources/qml/hifi/dialogs/TabletDCDialog.qml @@ -20,7 +20,6 @@ Rectangle { id: root objectName: "DCConectionTiming" - property var eventBridge; signal sendToScript(var message); property bool isHMD: false diff --git a/interface/resources/qml/hifi/dialogs/TabletDebugWindow.qml b/interface/resources/qml/hifi/dialogs/TabletDebugWindow.qml index d4bbe0af04..22e9dc07a2 100644 --- a/interface/resources/qml/hifi/dialogs/TabletDebugWindow.qml +++ b/interface/resources/qml/hifi/dialogs/TabletDebugWindow.qml @@ -19,7 +19,6 @@ Rectangle { id: root objectName: "DebugWindow" - property var eventBridge; property var title: "Debug Window" property bool isHMD: false diff --git a/interface/resources/qml/hifi/dialogs/TabletEntityStatistics.qml b/interface/resources/qml/hifi/dialogs/TabletEntityStatistics.qml index 35ee58be0c..da295917a0 100644 --- a/interface/resources/qml/hifi/dialogs/TabletEntityStatistics.qml +++ b/interface/resources/qml/hifi/dialogs/TabletEntityStatistics.qml @@ -20,7 +20,6 @@ Rectangle { id: root objectName: "EntityStatistics" - property var eventBridge; signal sendToScript(var message); property bool isHMD: false diff --git a/interface/resources/qml/hifi/dialogs/TabletLODTools.qml b/interface/resources/qml/hifi/dialogs/TabletLODTools.qml index 26e9759e0d..2291a42bf6 100644 --- a/interface/resources/qml/hifi/dialogs/TabletLODTools.qml +++ b/interface/resources/qml/hifi/dialogs/TabletLODTools.qml @@ -20,7 +20,6 @@ Rectangle { id: root objectName: "LODTools" - property var eventBridge; signal sendToScript(var message); property bool isHMD: false diff --git a/interface/resources/qml/hifi/dialogs/TabletRunningScripts.qml b/interface/resources/qml/hifi/dialogs/TabletRunningScripts.qml index d826b40ad1..11643ae1f1 100644 --- a/interface/resources/qml/hifi/dialogs/TabletRunningScripts.qml +++ b/interface/resources/qml/hifi/dialogs/TabletRunningScripts.qml @@ -23,7 +23,6 @@ Rectangle { property string title: "Running Scripts" HifiConstants { id: hifi } signal sendToScript(var message); - property var eventBridge; property var scripts: ScriptDiscoveryService; property var scriptsModel: scripts.scriptsModelFilter property var runningScriptsModel: ListModel { } diff --git a/interface/resources/qml/hifi/tablet/Edit.qml b/interface/resources/qml/hifi/tablet/Edit.qml index ea31eb26d8..e2e8c4362e 100644 --- a/interface/resources/qml/hifi/tablet/Edit.qml +++ b/interface/resources/qml/hifi/tablet/Edit.qml @@ -7,14 +7,12 @@ StackView { objectName: "stack" initialItem: Qt.resolvedUrl('EditTabView.qml') - property var eventBridge; signal sendToScript(var message); HifiConstants { id: hifi } function pushSource(path) { editRoot.push(Qt.resolvedUrl(path)); - editRoot.currentItem.eventBridge = editRoot.eventBridge; editRoot.currentItem.sendToScript.connect(editRoot.sendToScript); } diff --git a/interface/resources/qml/hifi/tablet/EditTabView.qml b/interface/resources/qml/hifi/tablet/EditTabView.qml index d084f1c7b3..e4a20a0316 100644 --- a/interface/resources/qml/hifi/tablet/EditTabView.qml +++ b/interface/resources/qml/hifi/tablet/EditTabView.qml @@ -181,7 +181,6 @@ TabView { WebView { id: entityListToolWebView url: "../../../../../scripts/system/html/entityList.html" - eventBridge: editRoot.eventBridge anchors.fill: parent enabled: true } @@ -196,7 +195,6 @@ TabView { WebView { id: entityPropertiesWebView url: "../../../../../scripts/system/html/entityProperties.html" - eventBridge: editRoot.eventBridge anchors.fill: parent enabled: true } @@ -211,7 +209,6 @@ TabView { WebView { id: gridControlsWebView url: "../../../../../scripts/system/html/gridControls.html" - eventBridge: editRoot.eventBridge anchors.fill: parent enabled: true } @@ -226,7 +223,6 @@ TabView { WebView { id: particleExplorerWebView url: "../../../../../scripts/system/particle_explorer/particleExplorer.html" - eventBridge: editRoot.eventBridge anchors.fill: parent enabled: true } @@ -289,7 +285,7 @@ TabView { editTabView.currentIndex = id; } else { console.warn('Attempt to switch to invalid tab:', id); - } + } } else if (typeof id === 'string'){ switch (id.toLowerCase()) { case 'create': diff --git a/interface/resources/qml/hifi/tablet/InputRecorder.qml b/interface/resources/qml/hifi/tablet/InputRecorder.qml index 76b122d07d..292deb751e 100644 --- a/interface/resources/qml/hifi/tablet/InputRecorder.qml +++ b/interface/resources/qml/hifi/tablet/InputRecorder.qml @@ -18,7 +18,6 @@ import "../../dialogs" Rectangle { id: inputRecorder - property var eventBridge; HifiConstants { id: hifi } signal sendToScript(var message); color: hifi.colors.baseGray; diff --git a/interface/resources/qml/hifi/tablet/NewModelDialog.qml b/interface/resources/qml/hifi/tablet/NewModelDialog.qml index 2d9d121209..5040c043f4 100644 --- a/interface/resources/qml/hifi/tablet/NewModelDialog.qml +++ b/interface/resources/qml/hifi/tablet/NewModelDialog.qml @@ -20,7 +20,6 @@ Rectangle { // height: parent.height HifiConstants { id: hifi } color: hifi.colors.baseGray; - property var eventBridge; signal sendToScript(var message); property bool keyboardEnabled: false property bool punctuationMode: false diff --git a/interface/resources/qml/hifi/tablet/TabletAddressDialog.qml b/interface/resources/qml/hifi/tablet/TabletAddressDialog.qml index 7159b078ee..073f143dbe 100644 --- a/interface/resources/qml/hifi/tablet/TabletAddressDialog.qml +++ b/interface/resources/qml/hifi/tablet/TabletAddressDialog.qml @@ -29,7 +29,6 @@ StackView { initialItem: addressBarDialog width: parent !== null ? parent.width : undefined height: parent !== null ? parent.height : undefined - property var eventBridge; property int cardWidth: 212; property int cardHeight: 152; property string metaverseBase: addressBarDialog.metaverseServerUrl + "/api/v1/"; @@ -80,7 +79,6 @@ StackView { var card = tabletWebView.createObject(); card.url = addressBarDialog.metaverseServerUrl + targetString; card.parentStackItem = root; - card.eventBridge = root.eventBridge; root.push(card); return; } diff --git a/interface/resources/qml/hifi/tablet/TabletAttachmentsDialog.qml b/interface/resources/qml/hifi/tablet/TabletAttachmentsDialog.qml index 634c9d41ec..19548365aa 100644 --- a/interface/resources/qml/hifi/tablet/TabletAttachmentsDialog.qml +++ b/interface/resources/qml/hifi/tablet/TabletAttachmentsDialog.qml @@ -25,7 +25,6 @@ Item { property bool keyboardRaised: false property bool punctuationMode: false - property var eventBridge; signal sendToScript(var message); anchors.fill: parent diff --git a/interface/resources/qml/hifi/tablet/TabletAudioPreferences.qml b/interface/resources/qml/hifi/tablet/TabletAudioPreferences.qml index 2046071e4c..b30e741be9 100644 --- a/interface/resources/qml/hifi/tablet/TabletAudioPreferences.qml +++ b/interface/resources/qml/hifi/tablet/TabletAudioPreferences.qml @@ -19,7 +19,6 @@ StackView { objectName: "stack" property string title: "Audio Settings" - property var eventBridge; signal sendToScript(var message); function pushSource(path) { diff --git a/interface/resources/qml/hifi/tablet/TabletAvatarPreferences.qml b/interface/resources/qml/hifi/tablet/TabletAvatarPreferences.qml index 75973f32ae..94fb29c6a1 100644 --- a/interface/resources/qml/hifi/tablet/TabletAvatarPreferences.qml +++ b/interface/resources/qml/hifi/tablet/TabletAvatarPreferences.qml @@ -19,7 +19,6 @@ StackView { objectName: "stack" property string title: "Avatar Settings" - property var eventBridge; signal sendToScript(var message); function pushSource(path) { diff --git a/interface/resources/qml/hifi/tablet/TabletGeneralPreferences.qml b/interface/resources/qml/hifi/tablet/TabletGeneralPreferences.qml index 17d3f1b959..fe043f6ac7 100644 --- a/interface/resources/qml/hifi/tablet/TabletGeneralPreferences.qml +++ b/interface/resources/qml/hifi/tablet/TabletGeneralPreferences.qml @@ -19,7 +19,6 @@ StackView { objectName: "stack" property string title: "General Settings" property alias gotoPreviousApp: root.gotoPreviousApp; - property var eventBridge; signal sendToScript(var message); function pushSource(path) { diff --git a/interface/resources/qml/hifi/tablet/TabletGraphicsPreferences.qml b/interface/resources/qml/hifi/tablet/TabletGraphicsPreferences.qml index 95ee2c3a72..25b5be05f2 100644 --- a/interface/resources/qml/hifi/tablet/TabletGraphicsPreferences.qml +++ b/interface/resources/qml/hifi/tablet/TabletGraphicsPreferences.qml @@ -19,7 +19,6 @@ StackView { objectName: "stack" property string title: "Graphics Settings" - property var eventBridge; signal sendToScript(var message); function pushSource(path) { diff --git a/interface/resources/qml/hifi/tablet/TabletLodPreferences.qml b/interface/resources/qml/hifi/tablet/TabletLodPreferences.qml index 6f38fee8b9..b502c26245 100644 --- a/interface/resources/qml/hifi/tablet/TabletLodPreferences.qml +++ b/interface/resources/qml/hifi/tablet/TabletLodPreferences.qml @@ -19,7 +19,6 @@ StackView { objectName: "stack" property string title: "LOD Settings" - property var eventBridge; signal sendToScript(var message); function pushSource(path) { diff --git a/interface/resources/qml/hifi/tablet/TabletMenu.qml b/interface/resources/qml/hifi/tablet/TabletMenu.qml index 62b61d129b..457fe84c3a 100644 --- a/interface/resources/qml/hifi/tablet/TabletMenu.qml +++ b/interface/resources/qml/hifi/tablet/TabletMenu.qml @@ -21,7 +21,6 @@ FocusScope { property var point: Qt.point(50, 50); TabletMenuStack { id: menuPopperUpper } property string subMenu: "" - property var eventBridge; signal sendToScript(var message); Rectangle { diff --git a/interface/resources/qml/hifi/tablet/TabletMenuStack.qml b/interface/resources/qml/hifi/tablet/TabletMenuStack.qml index bacc11228e..2fd33e9cbc 100644 --- a/interface/resources/qml/hifi/tablet/TabletMenuStack.qml +++ b/interface/resources/qml/hifi/tablet/TabletMenuStack.qml @@ -49,7 +49,6 @@ Item { function pushSource(path) { d.push(Qt.resolvedUrl(path)); - d.currentItem.eventBridge = tabletMenu.eventBridge d.currentItem.sendToScript.connect(tabletMenu.sendToScript); d.currentItem.focus = true; d.currentItem.forceActiveFocus(); diff --git a/interface/resources/qml/hifi/tablet/TabletNetworkingPreferences.qml b/interface/resources/qml/hifi/tablet/TabletNetworkingPreferences.qml index 7184d91044..91d6140fc3 100644 --- a/interface/resources/qml/hifi/tablet/TabletNetworkingPreferences.qml +++ b/interface/resources/qml/hifi/tablet/TabletNetworkingPreferences.qml @@ -19,7 +19,6 @@ StackView { objectName: "stack" property var title: "Networking Settings" - property var eventBridge; signal sendToScript(var message); function pushSource(path) { diff --git a/interface/resources/qml/hifi/tablet/TabletRoot.qml b/interface/resources/qml/hifi/tablet/TabletRoot.qml index e7654d9ff1..b6cdce0853 100644 --- a/interface/resources/qml/hifi/tablet/TabletRoot.qml +++ b/interface/resources/qml/hifi/tablet/TabletRoot.qml @@ -8,7 +8,6 @@ Item { id: tabletRoot objectName: "tabletRoot" property string username: "Unknown user" - property var eventBridge; property var rootMenu; property var openModal: null; property var openMessage: null; @@ -111,7 +110,6 @@ Item { function openBrowserWindow(request, profile) { var component = Qt.createComponent("../../controls/TabletWebView.qml"); var newWindow = component.createObject(tabletRoot); - newWindow.eventBridge = tabletRoot.eventBridge; newWindow.remove = true; newWindow.profile = profile; request.openIn(newWindow.webView); @@ -175,7 +173,7 @@ Item { // Hook up callback for clara.io download from the marketplace. Connections { id: eventBridgeConnection - target: null + target: eventBridge onWebEventReceived: { if (message.slice(0, 17) === "CLARA.IO DOWNLOAD") { ApplicationInterface.addAssetToWorldFromURL(message.slice(18)); @@ -184,10 +182,6 @@ Item { } onLoaded: { - if (loader.item.hasOwnProperty("eventBridge")) { - loader.item.eventBridge = eventBridge; - eventBridgeConnection.target = eventBridge - } if (loader.item.hasOwnProperty("sendToScript")) { loader.item.sendToScript.connect(tabletRoot.sendToScript); } diff --git a/interface/resources/qml/hifi/tablet/WindowRoot.qml b/interface/resources/qml/hifi/tablet/WindowRoot.qml index ee8dbbff59..12f302d60a 100644 --- a/interface/resources/qml/hifi/tablet/WindowRoot.qml +++ b/interface/resources/qml/hifi/tablet/WindowRoot.qml @@ -18,7 +18,6 @@ Windows.ScrollingWindow { id: tabletRoot objectName: "tabletRoot" property string username: "Unknown user" - property var eventBridge; property var rootMenu; property string subMenu: "" @@ -93,7 +92,7 @@ Windows.ScrollingWindow { // Hook up callback for clara.io download from the marketplace. Connections { id: eventBridgeConnection - target: null + target: eventBridge onWebEventReceived: { if (message.slice(0, 17) === "CLARA.IO DOWNLOAD") { ApplicationInterface.addAssetToWorldFromURL(message.slice(18)); @@ -102,10 +101,6 @@ Windows.ScrollingWindow { } onLoaded: { - if (loader.item.hasOwnProperty("eventBridge")) { - loader.item.eventBridge = eventBridge; - eventBridgeConnection.target = eventBridge - } if (loader.item.hasOwnProperty("sendToScript")) { loader.item.sendToScript.connect(tabletRoot.sendToScript); } diff --git a/interface/resources/qml/hifi/tablet/tabletWindows/preferences/TabletAvatarBrowser.qml b/interface/resources/qml/hifi/tablet/tabletWindows/preferences/TabletAvatarBrowser.qml index 029cf7d46b..cab76bf818 100644 --- a/interface/resources/qml/hifi/tablet/tabletWindows/preferences/TabletAvatarBrowser.qml +++ b/interface/resources/qml/hifi/tablet/tabletWindows/preferences/TabletAvatarBrowser.qml @@ -27,8 +27,6 @@ Item { property bool keyboardRaised: false property bool punctuationMode: false - property alias eventBridge: eventBridgeWrapper.eventBridge - anchors.fill: parent BaseWebView { @@ -43,14 +41,6 @@ Item { bottom: footer.top } - QtObject { - id: eventBridgeWrapper - WebChannel.id: "eventBridgeWrapper" - property var eventBridge; - } - - webChannel.registeredObjects: [eventBridgeWrapper] - // Create a global EventBridge object for raiseAndLowerKeyboard. WebEngineScript { id: createGlobalEventBridge @@ -68,6 +58,11 @@ Item { } userScripts: [ createGlobalEventBridge, raiseAndLowerKeyboard ] + + Component.onCompleted: { + webChannel.registerObject("eventBridge", eventBridge); + webChannel.registerObject("eventBridgeWrapper", eventBridgeWrapper); + } } Rectangle { diff --git a/libraries/gl/src/gl/OffscreenQmlSurface.cpp b/libraries/gl/src/gl/OffscreenQmlSurface.cpp index 65c311424f..9dcc1d7991 100644 --- a/libraries/gl/src/gl/OffscreenQmlSurface.cpp +++ b/libraries/gl/src/gl/OffscreenQmlSurface.cpp @@ -277,6 +277,23 @@ QString getEventBridgeJavascript() { return javaScriptToInject; } +class EventBridgeWrapper : public QObject { + Q_OBJECT + Q_PROPERTY(QObject* eventBridge READ getEventBridge CONSTANT); + +public: + EventBridgeWrapper(QObject* eventBridge, QObject* parent = nullptr) : QObject(parent), _eventBridge(eventBridge) { + } + + QObject* getEventBridge() { + return _eventBridge; + } + +private: + QObject* _eventBridge; +}; + + QQmlEngine* acquireEngine(QQuickWindow* window) { Q_ASSERT(QThread::currentThread() == qApp->thread()); @@ -430,7 +447,6 @@ OffscreenQmlSurface::~OffscreenQmlSurface() { _canvas->deleteLater(); _rootItem->deleteLater(); - _qmlComponent->deleteLater(); _quickWindow->deleteLater(); releaseEngine(); } @@ -473,11 +489,12 @@ void OffscreenQmlSurface::create(QOpenGLContext* shareContext) { _qmlContext = new QQmlContext(qmlEngine->rootContext()); _qmlContext->setContextProperty("offscreenWindow", QVariant::fromValue(getWindow())); - _qmlContext->setContextProperty("globalEventBridge", this); + _qmlContext->setContextProperty("eventBridge", this); _qmlContext->setContextProperty("webEntity", this); - _qmlComponent = new QQmlComponent(qmlEngine); - + // FIXME Compatibility mechanism for existing HTML and JS that uses eventBridgeWrapper + // Find a way to flag older scripts using this mechanism and wanr that this is deprecated + _qmlContext->setContextProperty("eventBridgeWrapper", new EventBridgeWrapper(this, _qmlContext)); if (!_canvas->makeCurrent()) { qWarning("Failed to make context current for QML Renderer"); @@ -577,71 +594,79 @@ void OffscreenQmlSurface::setBaseUrl(const QUrl& baseUrl) { _qmlContext->setBaseUrl(baseUrl); } -QObject* OffscreenQmlSurface::load(const QUrl& qmlSource, std::function f) { +QObject* OffscreenQmlSurface::load(const QUrl& qmlSource, bool createNewContext, std::function f) { // Synchronous loading may take a while; restart the deadlock timer QMetaObject::invokeMethod(qApp, "updateHeartbeat", Qt::DirectConnection); - if ((qmlSource.isRelative() && !qmlSource.isEmpty()) || qmlSource.scheme() == QLatin1String("file")) { - _qmlComponent->loadUrl(_qmlContext->resolvedUrl(qmlSource), QQmlComponent::PreferSynchronous); - } else { - _qmlComponent->loadUrl(qmlSource, QQmlComponent::PreferSynchronous); + QQmlContext* targetContext = _qmlContext; + if (_rootItem && createNewContext) { + targetContext = new QQmlContext(targetContext); } + QUrl finalQmlSource = qmlSource; + if ((qmlSource.isRelative() && !qmlSource.isEmpty()) || qmlSource.scheme() == QLatin1String("file")) { + finalQmlSource = _qmlContext->resolvedUrl(qmlSource); + } - if (_qmlComponent->isLoading()) { - connect(_qmlComponent, &QQmlComponent::statusChanged, this, - [this, f](QQmlComponent::Status){ - finishQmlLoad(f); - }); + auto qmlComponent = new QQmlComponent(_qmlContext->engine(), finalQmlSource, QQmlComponent::PreferSynchronous); + if (qmlComponent->isLoading()) { + connect(qmlComponent, &QQmlComponent::statusChanged, this, + [this, qmlComponent, targetContext, f](QQmlComponent::Status) { + finishQmlLoad(qmlComponent, targetContext, f); + }); return nullptr; } - return finishQmlLoad(f); + return finishQmlLoad(qmlComponent, targetContext, f); +} + +QObject* OffscreenQmlSurface::loadInNewContext(const QUrl& qmlSource, std::function f) { + return load(qmlSource, true, f); +} + +QObject* OffscreenQmlSurface::load(const QUrl& qmlSource, std::function f) { + return load(qmlSource, false, f); } void OffscreenQmlSurface::clearCache() { _qmlContext->engine()->clearComponentCache(); } -QObject* OffscreenQmlSurface::finishQmlLoad(std::function f) { -#if 0 - if (!_rootItem) { - QQmlComponent component(_qmlContext->engine()); - component.setData(R"QML( -import QtQuick 2.0 -import QtWebChannel 1.0 -Item { Component.onCompleted: globalEventBridge.WebChannel.id = "globalEventBridge"; } -)QML", QUrl()); - QObject *helper = component.create(_qmlContext); - qDebug() << "Created helper"; - } -#endif - disconnect(_qmlComponent, &QQmlComponent::statusChanged, this, 0); - if (_qmlComponent->isError()) { - QList errorList = _qmlComponent->errors(); - foreach(const QQmlError& error, errorList) { - qWarning() << error.url() << error.line() << error; +QObject* OffscreenQmlSurface::finishQmlLoad(QQmlComponent* qmlComponent, QQmlContext* qmlContext, std::function f) { + disconnect(qmlComponent, &QQmlComponent::statusChanged, this, 0); + if (qmlComponent->isError()) { + for (const auto& error : qmlComponent->errors()) { + qCWarning(glLogging) << error.url() << error.line() << error; } + qmlComponent->deleteLater(); return nullptr; } - QObject* newObject = _qmlComponent->beginCreate(_qmlContext); - if (_qmlComponent->isError()) { - QList errorList = _qmlComponent->errors(); - foreach(const QQmlError& error, errorList) + QObject* newObject = qmlComponent->beginCreate(qmlContext); + if (qmlComponent->isError()) { + for (const auto& error : qmlComponent->errors()) { qCWarning(glLogging) << error.url() << error.line() << error; + } if (!_rootItem) { qFatal("Unable to finish loading QML root"); } + qmlComponent->deleteLater(); return nullptr; } - _qmlContext->engine()->setObjectOwnership(this, QQmlEngine::CppOwnership); - newObject->setProperty("eventBridge", QVariant::fromValue(this)); + qmlContext->engine()->setObjectOwnership(this, QQmlEngine::CppOwnership); + f(qmlContext, newObject); - f(_qmlContext, newObject); - _qmlComponent->completeCreate(); + QObject* eventBridge = qmlContext->contextProperty("eventBridge").value(); + if (qmlContext != _qmlContext && eventBridge && eventBridge != this) { + // FIXME Compatibility mechanism for existing HTML and JS that uses eventBridgeWrapper + // Find a way to flag older scripts using this mechanism and wanr that this is deprecated + qmlContext->setContextProperty("eventBridgeWrapper", new EventBridgeWrapper(eventBridge, qmlContext)); + } + + qmlComponent->completeCreate(); + qmlComponent->deleteLater(); // All quick items should be focusable diff --git a/libraries/gl/src/gl/OffscreenQmlSurface.h b/libraries/gl/src/gl/OffscreenQmlSurface.h index 2a078d2b4f..ae81ae48b4 100644 --- a/libraries/gl/src/gl/OffscreenQmlSurface.h +++ b/libraries/gl/src/gl/OffscreenQmlSurface.h @@ -48,6 +48,8 @@ public: void resize(const QSize& size, bool forceResize = false); QSize size() const; + Q_INVOKABLE QObject* load(const QUrl& qmlSource, bool createNewContext, std::function f = [](QQmlContext*, QObject*) {}); + Q_INVOKABLE QObject* loadInNewContext(const QUrl& qmlSource, std::function f = [](QQmlContext*, QObject*) {}); Q_INVOKABLE QObject* load(const QUrl& qmlSource, std::function f = [](QQmlContext*, QObject*) {}); Q_INVOKABLE QObject* load(const QString& qmlSourceFile, std::function f = [](QQmlContext*, QObject*) {}) { return load(QUrl(qmlSourceFile), f); @@ -118,7 +120,7 @@ protected: void setFocusText(bool newFocusText); private: - QObject* finishQmlLoad(std::function f); + QObject* finishQmlLoad(QQmlComponent* qmlComponent, QQmlContext* qmlContext, std::function f); QPointF mapWindowToUi(const QPointF& sourcePosition, QObject* sourceObject); void setupFbo(); bool allowNewFrame(uint8_t fps); @@ -134,7 +136,6 @@ private: QQuickWindow* _quickWindow { nullptr }; QMyQuickRenderControl* _renderControl{ nullptr }; QQmlContext* _qmlContext { nullptr }; - QQmlComponent* _qmlComponent { nullptr }; QQuickItem* _rootItem { nullptr }; OffscreenGLCanvas* _canvas { nullptr }; diff --git a/libraries/ui/src/QmlWindowClass.cpp b/libraries/ui/src/QmlWindowClass.cpp index c0e94058ae..58d39448ac 100644 --- a/libraries/ui/src/QmlWindowClass.cpp +++ b/libraries/ui/src/QmlWindowClass.cpp @@ -104,9 +104,9 @@ void QmlWindowClass::initQml(QVariantMap properties) { Q_ASSERT(invokeResult); } else { // Build the event bridge and wrapper on the main thread - offscreenUi->load(qmlSource(), [&](QQmlContext* context, QObject* object) { + offscreenUi->loadInNewContext(qmlSource(), [&](QQmlContext* context, QObject* object) { _qmlWindow = object; - _qmlWindow->setProperty("eventBridge", QVariant::fromValue(this)); + context->setContextProperty("eventBridge", this); context->engine()->setObjectOwnership(this, QQmlEngine::CppOwnership); context->engine()->setObjectOwnership(object, QQmlEngine::CppOwnership); if (properties.contains(TITLE_PROPERTY)) { diff --git a/plugins/openvr/src/ViveControllerManager.cpp b/plugins/openvr/src/ViveControllerManager.cpp index b5fa7cadad..7330daf228 100644 --- a/plugins/openvr/src/ViveControllerManager.cpp +++ b/plugins/openvr/src/ViveControllerManager.cpp @@ -123,15 +123,18 @@ bool ViveControllerManager::isSupported() const { bool ViveControllerManager::activate() { InputPlugin::activate(); - _container->addMenu(MENU_PATH); - _container->addMenuItem(PluginType::INPUT_PLUGIN, MENU_PATH, RENDER_CONTROLLERS, - [this] (bool clicked) { this->setRenderControllers(clicked); }, - true, true); - if (!_system) { _system = acquireOpenVrSystem(); } - Q_ASSERT(_system); + + if (!_system) { + return false; + } + + _container->addMenu(MENU_PATH); + _container->addMenuItem(PluginType::INPUT_PLUGIN, MENU_PATH, RENDER_CONTROLLERS, + [this](bool clicked) { this->setRenderControllers(clicked); }, + true, true); enableOpenVrKeyboard(_container); diff --git a/scripts/system/html/js/eventBridgeLoader.js b/scripts/system/html/js/eventBridgeLoader.js index 0e95345b40..411780853b 100644 --- a/scripts/system/html/js/eventBridgeLoader.js +++ b/scripts/system/html/js/eventBridgeLoader.js @@ -13,7 +13,7 @@ var WebChannel; openEventBridge = function(callback) { WebChannel = new QWebChannel(qt.webChannelTransport, function (channel) { - EventBridge = WebChannel.objects.eventBridgeWrapper.eventBridge; + EventBridge = WebChannel.objects.eventBridge; callback(EventBridge); }); } From 3d4f9be05b0c75adc5c2644097f4f810fa4649c5 Mon Sep 17 00:00:00 2001 From: howard-stearns Date: Mon, 12 Jun 2017 17:01:13 -0700 Subject: [PATCH 350/357] fix teleport vs stuck-in-floor work --- libraries/entities-renderer/src/RenderableModelEntityItem.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/entities-renderer/src/RenderableModelEntityItem.cpp b/libraries/entities-renderer/src/RenderableModelEntityItem.cpp index eab0e3011e..e89646d838 100644 --- a/libraries/entities-renderer/src/RenderableModelEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableModelEntityItem.cpp @@ -605,7 +605,7 @@ bool RenderableModelEntityItem::findDetailedRayIntersection(const glm::vec3& ori QString extraInfo; return _model->findRayIntersectionAgainstSubMeshes(origin, direction, distance, - face, surfaceNormal, extraInfo, precisionPicking, precisionPicking); + face, surfaceNormal, extraInfo, precisionPicking, false); } void RenderableModelEntityItem::getCollisionGeometryResource() { From f4ed635725ec1631a1c49e40f1a105fa94e43d87 Mon Sep 17 00:00:00 2001 From: Sam Cake Date: Mon, 12 Jun 2017 22:59:42 -0700 Subject: [PATCH 351/357] Fix bug in clearFramebuffer with Stencil Buffer --- libraries/gpu-gl/src/gpu/gl/GLBackendOutput.cpp | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/libraries/gpu-gl/src/gpu/gl/GLBackendOutput.cpp b/libraries/gpu-gl/src/gpu/gl/GLBackendOutput.cpp index 1e6691538b..5c6a18d7af 100644 --- a/libraries/gpu-gl/src/gpu/gl/GLBackendOutput.cpp +++ b/libraries/gpu-gl/src/gpu/gl/GLBackendOutput.cpp @@ -63,11 +63,17 @@ void GLBackend::do_clearFramebuffer(const Batch& batch, size_t paramOffset) { int useScissor = batch._params[paramOffset + 0]._int; GLuint glmask = 0; + bool restoreStencilMask = false; + uint8_t cacheStencilMask = 0xFF; if (masks & Framebuffer::BUFFER_STENCIL) { glClearStencil(stencil); glmask |= GL_STENCIL_BUFFER_BIT; - // TODO: we will probably need to also check the write mask of stencil like we do - // for depth buffer, but as would say a famous Fez owner "We'll cross that bridge when we come to it" + + cacheStencilMask = _pipeline._stateCache.stencilActivation.getWriteMaskFront(); + if (cacheStencilMask != 0xFF) { + restoreStencilMask = true; + glStencilMask( 0xFF); + } } bool restoreDepthMask = false; @@ -121,6 +127,11 @@ void GLBackend::do_clearFramebuffer(const Batch& batch, size_t paramOffset) { glDisable(GL_SCISSOR_TEST); } + // Restore Stencil write mask + if (restoreStencilMask) { + glStencilMask(cacheStencilMask); + } + // Restore write mask meaning turn back off if (restoreDepthMask) { glDepthMask(GL_FALSE); From 0edb763dac65201583e5e2c3e6688eddea35f0f1 Mon Sep 17 00:00:00 2001 From: Menithal Date: Tue, 13 Jun 2017 19:04:43 +0300 Subject: [PATCH 352/357] 21324: Formatting and PR Feedback Changes --- .../particle_explorer/hifi-entity-ui.js | 325 +++++++++--------- .../particle_explorer/particleExplorer.js | 175 +++++++--- 2 files changed, 288 insertions(+), 212 deletions(-) diff --git a/scripts/system/particle_explorer/hifi-entity-ui.js b/scripts/system/particle_explorer/hifi-entity-ui.js index 66f8e74b1c..7f3beb3b77 100644 --- a/scripts/system/particle_explorer/hifi-entity-ui.js +++ b/scripts/system/particle_explorer/hifi-entity-ui.js @@ -43,18 +43,24 @@ and If there is any changes to either the Entities or properties of **/ -var RADIAN = Math.PI / 180; +var RADIANS_PER_DEGREE = Math.PI / 180; var roundFloat = function (input, round) { - round = round ? round: 1000; - return Math.round(parseFloat(input) * round)/round; + round = round ? round : 1000; + var sanitizedInput; + if (typeof input === "string") { + sanitizedInput = parseFloat(input); + } else { + sanitizedInput = input; + } + return Math.round(sanitizedInput * round) / round; }; function HifiEntityUI(parent) { this.parent = parent; var self = this; - this.webBridgeSync = _.debounce(function(id, val) { + this.webBridgeSync = _.debounce(function (id, val) { if (self.EventBridge) { var sendPackage = {}; sendPackage[id] = val; @@ -64,7 +70,7 @@ function HifiEntityUI(parent) { } HifiEntityUI.prototype = { - setOnSelect: function (callback){ + setOnSelect: function (callback) { this.onSelect = callback; }, submitChanges: function (structure) { @@ -77,7 +83,7 @@ HifiEntityUI.prototype = { setUI: function (structure) { this.structure = structure; }, - disableFields: function() { + disableFields: function () { var fields = document.getElementsByTagName("input"); for (var i = 0; i < fields.length; i++) { if (fields[i].getAttribute("type") !== "button") { @@ -93,7 +99,8 @@ HifiEntityUI.prototype = { textures = document.getElementsByClassName("with-texture"); for (i = 0; i < textures.length; i++) { - textures[i].className = textures[i].className.replace("with-texture", "no-texture"); + textures[i].classList.remove("with-textures"); + textures[i].classList.add("no-texture"); } var textareas = document.getElementsByTagName("textarea"); @@ -101,7 +108,7 @@ HifiEntityUI.prototype = { textareas[x].remove(); } }, - getSettings: function() { + getSettings: function () { var self = this; var json = {}; var keys = Object.keys(self.builtRows); @@ -110,7 +117,8 @@ HifiEntityUI.prototype = { var key = keys[i]; var el = self.builtRows[key]; if (el.className.indexOf("checkbox") !== -1) { - json[key] = document.getElementById(key).checked ? true: false; + json[key] = document.getElementById(key) + .checked ? true : false; } else if (el.className.indexOf("vector-section") !== -1) { var vector = {}; if (el.className.indexOf("rgb") !== -1) { @@ -136,14 +144,15 @@ HifiEntityUI.prototype = { vector.z = z.value; } json[key] = vector; - } else if (el.className.length > 0){ - json[key] = document.getElementById(key).value; + } else if (el.className.length > 0) { + json[key] = document.getElementById(key) + .value; } } return json; }, - fillFields: function(currentProperties) { + fillFields: function (currentProperties) { var self = this; var fields = document.getElementsByTagName("input"); @@ -159,64 +168,66 @@ HifiEntityUI.prototype = { for (var e in keys) { - var value = keys[e]; + if (keys.hasOwnProperty[e]) { + var value = keys[e]; - var property = currentProperties[value]; - var field = self.builtRows[value]; - if (field) { - var el = document.getElementById(value); + var property = currentProperties[value]; + var field = self.builtRows[value]; + if (field) { + var el = document.getElementById(value); - if (field.className.indexOf("radian") !== -1) { - el.value = property / RADIAN; - el.onchange({ - target: el - }); - } else if (field.className.indexOf("range") !== -1 || field.className.indexOf("texture") !== -1) { - el.value = property; - el.onchange({ - target: el - }); - } else if (field.className.indexOf("checkbox") !== -1) { - if (property) { - el.setAttribute("checked", property); - } else { - el.removeAttribute("checked"); - } - } else if (field.className.indexOf("vector-section") !== -1) { - if (field.className.indexOf("rgb") !== -1) { - var red = document.getElementById(value + "-red"); - var blue = document.getElementById(value + "-blue"); - var green = document.getElementById(value + "-green"); - red.value = parseInt(property.red); - blue.value = parseInt(property.blue); - green.value = parseInt(property.green); - - red.oninput({ - target: red + if (field.className.indexOf("radian") !== -1) { + el.value = property / RADIANS_PER_DEGREE; + el.onchange({ + target: el }); - } else if (field.className.indexOf("xyz") !== -1) { - var x = document.getElementById(value + "-x"); - var y = document.getElementById(value + "-y"); - var z = document.getElementById(value + "-z"); + } else if (field.className.indexOf("range") !== -1 || field.className.indexOf("texture") !== -1) { + el.value = property; + el.onchange({ + target: el + }); + } else if (field.className.indexOf("checkbox") !== -1) { + if (property) { + el.setAttribute("checked", property); + } else { + el.removeAttribute("checked"); + } + } else if (field.className.indexOf("vector-section") !== -1) { + if (field.className.indexOf("rgb") !== -1) { + var red = document.getElementById(value + "-red"); + var blue = document.getElementById(value + "-blue"); + var green = document.getElementById(value + "-green"); + red.value = parseInt(property.red); + blue.value = parseInt(property.blue); + green.value = parseInt(property.green); - x.value = roundFloat(property.x, 100); - y.value = roundFloat(property.y, 100); - z.value = roundFloat(property.z, 100); - } else if (field.className.indexOf("pyr") !== -1) { - var pitch = document.getElementById(value + "-Pitch"); - var yaw = document.getElementById(value + "-Yaw"); - var roll = document.getElementById(value + "-Roll"); + red.oninput({ + target: red + }); + } else if (field.className.indexOf("xyz") !== -1) { + var x = document.getElementById(value + "-x"); + var y = document.getElementById(value + "-y"); + var z = document.getElementById(value + "-z"); - pitch.value = roundFloat(property.x, 100); - yaw.value = roundFloat(property.y, 100); - roll.value = roundFloat(property.z, 100); + x.value = roundFloat(property.x, 100); + y.value = roundFloat(property.y, 100); + z.value = roundFloat(property.z, 100); + } else if (field.className.indexOf("pyr") !== -1) { + var pitch = document.getElementById(value + "-Pitch"); + var yaw = document.getElementById(value + "-Yaw"); + var roll = document.getElementById(value + "-Roll"); + pitch.value = roundFloat(property.x, 100); + yaw.value = roundFloat(property.y, 100); + roll.value = roundFloat(property.z, 100); + + } } } } } }, - connect: function(EventBridge) { + connect: function (EventBridge) { this.EventBridge = EventBridge; var self = this; @@ -225,7 +236,7 @@ HifiEntityUI.prototype = { messageType: 'page_loaded' })); - EventBridge.scriptEventReceived.connect(function(data) { + EventBridge.scriptEventReceived.connect(function (data) { data = JSON.parse(data); if (data.messageType === 'particle_settings') { @@ -238,16 +249,16 @@ HifiEntityUI.prototype = { } }); }, - build: function() { + build: function () { var self = this; var sections = Object.keys(this.structure); this.builtRows = {}; - sections.forEach(function(section, index) { + sections.forEach(function (section, index) { var properties = self.structure[section]; self.addSection(self.parent, section, properties, index); }); }, - addSection: function(parent, section, properties, index) { + addSection: function (parent, section, properties, index) { var self = this; var sectionDivHeader = document.createElement("div"); @@ -272,37 +283,33 @@ HifiEntityUI.prototype = { animationWrapper.className = "section-wrap"; for (var property in properties) { - - var builtRow = self.addElement(animationWrapper, properties[property]); - var id = properties[property].id; - if (id) { - self.builtRows[id] = builtRow; + if (properties.hasOwnProperty[property]) { + var builtRow = self.addElement(animationWrapper, properties[property]); + var id = properties[property].id; + if (id) { + self.builtRows[id] = builtRow; + } } } sectionDivBody.appendChild(animationWrapper); parent.appendChild(sectionDivBody); - _.defer(function() { + _.defer(function () { var height = (animationWrapper.clientHeight) + "px"; if (collapsed) { - sectionDivBody.className = sectionDivBody.className - .replace("visible", "") - .replace(/\s{2,}/g, " "); - + sectionDivBody.classList.remove("visible"); sectionDivBody.style.maxHeight = "0px"; } else { - sectionDivBody.className += " visible"; + sectionDivBody.classList.add("visible"); sectionDivBody.style.maxHeight = height; } - sectionDivHeader.onclick = function() { + sectionDivHeader.onclick = function () { collapsed = !collapsed; if (collapsed) { - sectionDivBody.className = sectionDivBody.className - .replace("visible", "") - .replace(/\s{2,}/g, " "); + sectionDivBody.classList.remove("visible"); sectionDivBody.style.maxHeight = "0px"; } else { - sectionDivBody.className += " visible"; + sectionDivBody.classList.add("visible"); sectionDivBody.style.maxHeight = (animationWrapper.clientHeight) + "px"; } // sectionDivBody.style.display = collapsed ? "none": "block"; @@ -311,7 +318,7 @@ HifiEntityUI.prototype = { }; }); }, - addLabel: function(parent, group) { + addLabel: function (parent, group) { var label = document.createElement("label"); label.innerHTML = group.name; parent.appendChild(label); @@ -323,10 +330,10 @@ HifiEntityUI.prototype = { } return label; }, - addVector: function(parent, group, labels, domArray) { + addVector: function (parent, group, labels, domArray) { var self = this; var inputs = labels ? labels : ["x", "y", "z"]; - domArray = domArray ? domArray: []; + domArray = domArray ? domArray : []; parent.id = group.id; for (var index in inputs) { var element = document.createElement("input"); @@ -349,7 +356,7 @@ HifiEntityUI.prototype = { if (group.oninput) { element.oninput = group.oninput; } else { - element.oninput = function(event) { + element.oninput = function (event) { self.webBridgeSync(group.id, { x: domArray[0].value, y: domArray[1].value, @@ -364,7 +371,8 @@ HifiEntityUI.prototype = { this.addLabel(parent, group); var className = ""; for (var i = 0; i < inputs.length; i++) { - className += inputs[i].charAt(0).toLowerCase(); + className += inputs[i].charAt(0) + .toLowerCase(); } parent.className += " property vector-section " + className; @@ -383,16 +391,16 @@ HifiEntityUI.prototype = { } parent.appendChild(tupleContainer); }, - addVectorQuaternion: function(parent, group) { + addVectorQuaternion: function (parent, group) { this.addVector(parent, group, ["Pitch", "Yaw", "Roll"]); }, - addColorPicker: function(parent, group) { + addColorPicker: function (parent, group) { var self = this; var $colPickContainer = $('
        ', { id: group.id, class: "color-picker" }); - var updateColors = function(red, green, blue) { + var updateColors = function (red, green, blue) { $colPickContainer.css('background-color', "rgb(" + red + "," + green + "," + @@ -401,7 +409,7 @@ HifiEntityUI.prototype = { var inputs = ["red", "green", "blue"]; var domArray = []; - group.oninput = function(event) { + group.oninput = function (event) { $colPickContainer.colpickSetColor( { r: domArray[0].value, @@ -435,7 +443,7 @@ HifiEntityUI.prototype = { g: domArray[1].value, b: domArray[2].value }, - onChange: function(hsb, hex, rgb, el) { + onChange: function (hsb, hex, rgb, el) { updateColors(rgb.r, rgb.g, rgb.b); domArray[0].value = rgb.r; @@ -447,9 +455,11 @@ HifiEntityUI.prototype = { blue: rgb.b }); }, - onSubmit: function(hsb, hex, rgb, el) { - $(el).css('background-color', '#' + hex); - $(el).colpickHide(); + onSubmit: function (hsb, hex, rgb, el) { + $(el) + .css('background-color', '#' + hex); + $(el) + .colpickHide(); domArray[0].value = rgb.r; domArray[1].value = rgb.g; domArray[2].value = rgb.b; @@ -461,7 +471,7 @@ HifiEntityUI.prototype = { } }); }, - addTextureField: function(parent, group) { + addTextureField: function (parent, group) { var self = this; this.addLabel(parent, group); parent.className += " property texture"; @@ -471,20 +481,21 @@ HifiEntityUI.prototype = { textureUrl.id = group.id; textureImage.className = "texture-image no-texture"; var image = document.createElement("img"); - var imageLoad = _.debounce(function(url) { + var imageLoad = _.debounce(function (url) { if (url.length > 0) { - textureImage.className = textureImage.className.replace(' no-texture', ' with-texture'); + textureImage.classList.remove("no-texture"); + textureImage.classList.add("with-texture"); image.src = url; image.style.display = "block"; } else { image.src = ""; image.style.display = "none"; - textureImage.className += " no-texture"; + textureImage.classList.add("no-texture"); } self.webBridgeSync(group.id, url); }, 250); - textureUrl.oninput = function(event) { + textureUrl.oninput = function (event) { // Add throttle var url = event.target.value; imageLoad(url); @@ -494,7 +505,7 @@ HifiEntityUI.prototype = { parent.appendChild(textureImage); parent.appendChild(textureUrl); }, - addSlider: function(parent, group) { + addSlider: function (parent, group) { var self = this; this.addLabel(parent, group); parent.className += " property range"; @@ -518,7 +529,7 @@ HifiEntityUI.prototype = { slider.setAttribute("max", group.max !== undefined ? group.max : 10000); slider.setAttribute("step", 1); - inputField.oninput = function(event) { + inputField.oninput = function (event) { if (parseInt(event.target.value) > parseInt(slider.getAttribute("max")) && group.max !== 1) { slider.setAttribute("max", event.target.value); @@ -528,7 +539,7 @@ HifiEntityUI.prototype = { self.webBridgeSync(group.id, slider.value); }; inputField.onchange = inputField.oninput; - slider.oninput = function(event) { + slider.oninput = function (event) { inputField.value = event.target.value; self.webBridgeSync(group.id, slider.value); }; @@ -542,20 +553,20 @@ HifiEntityUI.prototype = { inputField.setAttribute("min", (group.min !== undefined ? group.min : 0)); inputField.setAttribute("max", (group.max !== undefined ? group.max : 180)); - inputField.oninput = function(event) { + inputField.oninput = function (event) { slider.value = event.target.value; - self.webBridgeSync(group.id, slider.value * RADIAN); + self.webBridgeSync(group.id, slider.value * RADIANS_PER_DEGREE); }; inputField.onchange = inputField.oninput; inputField.id = group.id; - slider.oninput = function(event) { + slider.oninput = function (event) { if (event.target.value > 0) { inputField.value = Math.floor(event.target.value); } else { inputField.value = Math.ceil(event.target.value); } - self.webBridgeSync(group.id, slider.value * RADIAN); + self.webBridgeSync(group.id, slider.value * RADIANS_PER_DEGREE); }; var degrees = document.createElement("label"); degrees.innerHTML = "°"; @@ -574,7 +585,7 @@ HifiEntityUI.prototype = { slider.setAttribute("max", group.max !== undefined ? group.max : 1); slider.setAttribute("step", 0.01); - inputField.oninput = function(event) { + inputField.oninput = function (event) { if (parseFloat(event.target.value) > parseFloat(slider.getAttribute("max")) && group.max !== 1) { slider.setAttribute("max", event.target.value); } @@ -584,7 +595,7 @@ HifiEntityUI.prototype = { // bind web sock update here. }; inputField.onchange = inputField.oninput; - slider.oninput = function(event) { + slider.oninput = function (event) { inputField.value = event.target.value; self.webBridgeSync(group.id, inputField.value); }; @@ -594,11 +605,11 @@ HifiEntityUI.prototype = { // UpdateBinding }, - addCheckBox: function(parent, group) { + addCheckBox: function (parent, group) { var checkBox = document.createElement("input"); checkBox.setAttribute("type", "checkbox"); var self = this; - checkBox.onchange = function(event) { + checkBox.onchange = function (event) { self.webBridgeSync(group.id, event.target.checked); }; checkBox.id = group.id; @@ -607,62 +618,62 @@ HifiEntityUI.prototype = { label.setAttribute("for", checkBox.id); parent.className += " property checkbox"; }, - addElement: function(parent, group) { + addElement: function (parent, group) { var self = this; var property = document.createElement("div"); property.id = group.id; var row = document.createElement("div"); switch (group.type) { - case "Button": - var button = document.createElement("input"); - button.setAttribute("type", "button"); - button.id = group.id; - if (group.disabled) { - button.disabled = group.disabled; - } - button.className = group.class; - button.value = group.name; + case "Button": + var button = document.createElement("input"); + button.setAttribute("type", "button"); + button.id = group.id; + if (group.disabled) { + button.disabled = group.disabled; + } + button.className = group.class; + button.value = group.name; - button.onclick = group.callback; - parent.appendChild(button); - break; - case "Row": - var hr = document.createElement("hr"); - hr.className = "splitter"; - if (group.id) { - hr.id = group.id; - } - parent.appendChild(hr); - break; - case "Boolean": - self.addCheckBox(row, group); - parent.appendChild(row); - break; - case "SliderFloat": - case "SliderInteger": - case "SliderRadian": - self.addSlider(row, group); - parent.appendChild(row); - break; - case "Texture": - self.addTextureField(row, group); - parent.appendChild(row); - break; - case "Color": - self.addColorPicker(row, group); - parent.appendChild(row); - break; - case "Vector": - self.addVector(row, group); - parent.appendChild(row); - break; - case "VectorQuaternion": - self.addVectorQuaternion(row, group); - parent.appendChild(row); - break; - default: - console.log("not defined"); + button.onclick = group.callback; + parent.appendChild(button); + break; + case "Row": + var hr = document.createElement("hr"); + hr.className = "splitter"; + if (group.id) { + hr.id = group.id; + } + parent.appendChild(hr); + break; + case "Boolean": + self.addCheckBox(row, group); + parent.appendChild(row); + break; + case "SliderFloat": + case "SliderInteger": + case "SliderRadian": + self.addSlider(row, group); + parent.appendChild(row); + break; + case "Texture": + self.addTextureField(row, group); + parent.appendChild(row); + break; + case "Color": + self.addColorPicker(row, group); + parent.appendChild(row); + break; + case "Vector": + self.addVector(row, group); + parent.appendChild(row); + break; + case "VectorQuaternion": + self.addVectorQuaternion(row, group); + parent.appendChild(row); + break; + default: + console.log("not defined"); } return row; } diff --git a/scripts/system/particle_explorer/particleExplorer.js b/scripts/system/particle_explorer/particleExplorer.js index 82c74da0f5..17d8269634 100644 --- a/scripts/system/particle_explorer/particleExplorer.js +++ b/scripts/system/particle_explorer/particleExplorer.js @@ -15,24 +15,27 @@ /* global HifiEntityUI, openEventBridge, console, EventBridge, document, window */ /* eslint no-console: 0, no-global-assign: 0 */ -(function(){ +(function () { var root = document.getElementById("particle-explorer"); - window.onload = function(){ + window.onload = function () { var ui = new HifiEntityUI(root); var textarea = document.createElement("textarea"); var properties = ""; var menuStructure = { General: [ - { type: "Row", id: "export-import-field" }, + { + type: "Row", + id: "export-import-field" + }, { id: "show-properties-button", name: "Show Properties", type: "Button", class: "blue", disabled: true, - callback: function(event){ + callback: function (event) { var insertZone = document.getElementById("export-import-field"); var json = ui.getSettings(); properties = JSON.stringify(json); @@ -41,22 +44,26 @@ insertZone.appendChild(textarea); insertZone.parentNode.parentNode.style.maxHeight = insertZone.parentNode.clientHeight + "px"; - document.getElementById("export-properties-button").removeAttribute("disabled"); - textarea.onchange = function(e) { - if (e.target.value !== properties){ - document.getElementById("import-properties-button").removeAttribute("disabled"); + document.getElementById("export-properties-button") + .removeAttribute("disabled"); + textarea.onchange = function (e) { + if (e.target.value !== properties) { + document.getElementById("import-properties-button") + .removeAttribute("disabled"); } }; textarea.oninput = textarea.onchange; } else { - textarea.onchange = function(){}; + textarea.onchange = function () {}; textarea.oninput = textarea.onchange; textarea.value = ""; textarea.remove(); insertZone.parentNode.parentNode.style.maxHeight = - insertZone.parentNode.clientHeight + "px"; - document.getElementById("export-properties-button").setAttribute("disabled",true); - document.getElementById("import-properties-button").setAttribute("disabled",true); + insertZone.parentNode.clientHeight + "px"; + document.getElementById("export-properties-button") + .setAttribute("disabled", true); + document.getElementById("import-properties-button") + .setAttribute("disabled", true); } } }, @@ -66,7 +73,7 @@ type: "Button", class: "blue", disabled: true, - callback: function(event){ + callback: function (event) { ui.fillFields(JSON.parse(textarea.value)); ui.submitChanges(JSON.parse(textarea.value)); } @@ -77,11 +84,11 @@ type: "Button", class: "red", disabled: true, - callback: function(event){ + callback: function (event) { textarea.select(); try { var success = document.execCommand('copy'); - if (!success ){ + if (!success) { throw "Not success :("; } } catch (e) { @@ -89,13 +96,17 @@ } } }, - { type: "Row"}, + { + type: "Row" + }, { id: "isEmitting", name: "Is Emitting", type: "Boolean" }, - { type: "Row" }, + { + type: "Row" + }, { id: "lifespan", name: "Lifespan", @@ -103,7 +114,9 @@ min: 0.01, max: 10 }, - { type: "Row" }, + { + type: "Row" + }, { id: "maxParticles", name: "Max Particles", @@ -111,13 +124,17 @@ min: 1, max: 10000 }, - { type: "Row" }, + { + type: "Row" + }, { id: "textures", name: "Textures", type: "Texture" }, - { type: "Row" } + { + type: "Row" + } ], Emit: [ { @@ -127,14 +144,18 @@ max: 1000, min: 1 }, - { type: "Row" }, + { + type: "Row" + }, { id: "emitSpeed", name: "Emit Speed", type: "SliderFloat", max: 5 }, - { type: "Row" }, + { + type: "Row" + }, { id: "emitDimensions", name: "Emit Dimension", @@ -144,7 +165,9 @@ step: 0.01 } }, - { type: "Row" }, + { + type: "Row" + }, { id: "emitOrientation", unit: "deg", @@ -155,13 +178,17 @@ step: 0.01 } }, - { type: "Row" }, + { + type: "Row" + }, { id: "emitShouldTrail", name: "Emit Should Trail", type: "Boolean" }, - { type: "Row" } + { + type: "Row" + } ], Radius: [ { @@ -170,28 +197,36 @@ type: "SliderFloat", max: 4.0 }, - { type: "Row" }, + { + type: "Row" + }, { id: "radiusSpread", name: "Radius Spread", type: "SliderFloat", max: 4.0 }, - { type: "Row" }, + { + type: "Row" + }, { id: "radiusStart", name: "Radius Start", type: "SliderFloat", max: 4.0 }, - { type: "Row" }, + { + type: "Row" + }, { id: "radiusFinish", name: "Radius Finish", type: "SliderFloat", max: 4.0 }, - { type: "Row" } + { + type: "Row" + } ], Color: [ { @@ -204,7 +239,9 @@ blue: 255 } }, - { type: "Row" }, + { + type: "Row" + }, { id: "colorSpread", name: "Color Spread", @@ -215,7 +252,9 @@ blue: 0 } }, - { type: "Row" }, + { + type: "Row" + }, { id: "colorStart", name: "Color Start", @@ -226,7 +265,9 @@ blue: 255 } }, - { type: "Row" }, + { + type: "Row" + }, { id: "colorFinish", name: "Color Finish", @@ -237,7 +278,9 @@ blue: 255 } }, - { type: "Row" } + { + type: "Row" + } ], Acceleration: [ { @@ -248,7 +291,9 @@ step: 0.01 } }, - { type: "Row" }, + { + type: "Row" + }, { id: "accelerationSpread", name: "Acceleration Spread", @@ -257,7 +302,9 @@ step: 0.01 } }, - { type: "Row" } + { + type: "Row" + } ], Alpha: [ { @@ -265,25 +312,33 @@ name: "Alpha", type: "SliderFloat" }, - { type: "Row" }, + { + type: "Row" + }, { id: "alphaSpread", name: "Alpha Spread", type: "SliderFloat" }, - { type: "Row" }, + { + type: "Row" + }, { id: "alphaStart", name: "Alpha Start", type: "SliderFloat" }, - { type: "Row" }, + { + type: "Row" + }, { id: "alphaFinish", name: "Alpha Finish", type: "SliderFloat" }, - { type: "Row" } + { + type: "Row" + } ], Polar: [ { @@ -292,14 +347,18 @@ unit: "deg", type: "SliderRadian" }, - { type: "Row" }, + { + type: "Row" + }, { id: "polarFinish", name: "Polar Finish", unit: "deg", type: "SliderRadian" }, - { type: "Row" } + { + type: "Row" + } ], Azimuth: [ { @@ -310,40 +369,46 @@ min: -180, max: 0 }, - { type: "Row" }, + { + type: "Row" + }, { id: "azimuthFinish", name: "Azimuth Finish", unit: "deg", type: "SliderRadian" }, - { type: "Row" } + { + type: "Row" + } ] }; ui.setUI(menuStructure); - ui.setOnSelect(function(){ - document.getElementById("show-properties-button").removeAttribute("disabled"); - document.getElementById("export-properties-button").setAttribute("disabled",true); - document.getElementById("import-properties-button").setAttribute("disabled",true); + ui.setOnSelect(function () { + document.getElementById("show-properties-button") + .removeAttribute("disabled"); + document.getElementById("export-properties-button") + .setAttribute("disabled", true); + document.getElementById("import-properties-button") + .setAttribute("disabled", true); }); ui.build(); var overrideLoad = false; if (openEventBridge === undefined) { overrideLoad = true, - openEventBridge = function(callback) { - callback( - { - emitWebEvent: function(){}, - submitChanges: function(){}, + openEventBridge = function (callback) { + callback({ + emitWebEvent: function () {}, + submitChanges: function () {}, scriptEventReceived: { - connect: function() { + connect: function () { } } }); - }; + }; } - openEventBridge( function(EventBridge) { + openEventBridge(function (EventBridge) { ui.connect(EventBridge); }); if (overrideLoad) { From 020760cc978ee36cfc4a1a65d01acf22176fde46 Mon Sep 17 00:00:00 2001 From: Menithal Date: Tue, 13 Jun 2017 20:16:56 +0300 Subject: [PATCH 353/357] 21324: Fixed accidental inccorect bracket --- .../particle_explorer/hifi-entity-ui.js | 5 +++-- .../particle_explorer/particleExplorer.js | 21 +++++++------------ 2 files changed, 10 insertions(+), 16 deletions(-) diff --git a/scripts/system/particle_explorer/hifi-entity-ui.js b/scripts/system/particle_explorer/hifi-entity-ui.js index 7f3beb3b77..510bf61fd8 100644 --- a/scripts/system/particle_explorer/hifi-entity-ui.js +++ b/scripts/system/particle_explorer/hifi-entity-ui.js @@ -168,7 +168,7 @@ HifiEntityUI.prototype = { for (var e in keys) { - if (keys.hasOwnProperty[e]) { + if (keys.hasOwnProperty(e)) { var value = keys[e]; var property = currentProperties[value]; @@ -283,7 +283,8 @@ HifiEntityUI.prototype = { animationWrapper.className = "section-wrap"; for (var property in properties) { - if (properties.hasOwnProperty[property]) { + console.log(properties, properties.hasOwnProperty(property)); + if (properties.hasOwnProperty(property)) { var builtRow = self.addElement(animationWrapper, properties[property]); var id = properties[property].id; if (id) { diff --git a/scripts/system/particle_explorer/particleExplorer.js b/scripts/system/particle_explorer/particleExplorer.js index 17d8269634..ca6a873b73 100644 --- a/scripts/system/particle_explorer/particleExplorer.js +++ b/scripts/system/particle_explorer/particleExplorer.js @@ -44,12 +44,10 @@ insertZone.appendChild(textarea); insertZone.parentNode.parentNode.style.maxHeight = insertZone.parentNode.clientHeight + "px"; - document.getElementById("export-properties-button") - .removeAttribute("disabled"); + document.getElementById("export-properties-button").removeAttribute("disabled"); textarea.onchange = function (e) { if (e.target.value !== properties) { - document.getElementById("import-properties-button") - .removeAttribute("disabled"); + document.getElementById("import-properties-button").removeAttribute("disabled"); } }; textarea.oninput = textarea.onchange; @@ -60,10 +58,8 @@ textarea.remove(); insertZone.parentNode.parentNode.style.maxHeight = insertZone.parentNode.clientHeight + "px"; - document.getElementById("export-properties-button") - .setAttribute("disabled", true); - document.getElementById("import-properties-button") - .setAttribute("disabled", true); + document.getElementById("export-properties-button").setAttribute("disabled", true); + document.getElementById("import-properties-button").setAttribute("disabled", true); } } }, @@ -385,12 +381,9 @@ }; ui.setUI(menuStructure); ui.setOnSelect(function () { - document.getElementById("show-properties-button") - .removeAttribute("disabled"); - document.getElementById("export-properties-button") - .setAttribute("disabled", true); - document.getElementById("import-properties-button") - .setAttribute("disabled", true); + document.getElementById("show-properties-button").removeAttribute("disabled"); + document.getElementById("export-properties-button").setAttribute("disabled", true); + document.getElementById("import-properties-button").setAttribute("disabled", true); }); ui.build(); var overrideLoad = false; From 395cc55fb290b9460b39df5b10b9cc87ecb78b95 Mon Sep 17 00:00:00 2001 From: Menithal Date: Tue, 13 Jun 2017 20:20:54 +0300 Subject: [PATCH 354/357] Fixed formatting --- .../particle_explorer/hifi-entity-ui.js | 97 +++++++++---------- 1 file changed, 48 insertions(+), 49 deletions(-) diff --git a/scripts/system/particle_explorer/hifi-entity-ui.js b/scripts/system/particle_explorer/hifi-entity-ui.js index 510bf61fd8..a1d02e287d 100644 --- a/scripts/system/particle_explorer/hifi-entity-ui.js +++ b/scripts/system/particle_explorer/hifi-entity-ui.js @@ -283,7 +283,6 @@ HifiEntityUI.prototype = { animationWrapper.className = "section-wrap"; for (var property in properties) { - console.log(properties, properties.hasOwnProperty(property)); if (properties.hasOwnProperty(property)) { var builtRow = self.addElement(animationWrapper, properties[property]); var id = properties[property].id; @@ -626,55 +625,55 @@ HifiEntityUI.prototype = { var row = document.createElement("div"); switch (group.type) { - case "Button": - var button = document.createElement("input"); - button.setAttribute("type", "button"); - button.id = group.id; - if (group.disabled) { - button.disabled = group.disabled; - } - button.className = group.class; - button.value = group.name; + case "Button": + var button = document.createElement("input"); + button.setAttribute("type", "button"); + button.id = group.id; + if (group.disabled) { + button.disabled = group.disabled; + } + button.className = group.class; + button.value = group.name; - button.onclick = group.callback; - parent.appendChild(button); - break; - case "Row": - var hr = document.createElement("hr"); - hr.className = "splitter"; - if (group.id) { - hr.id = group.id; - } - parent.appendChild(hr); - break; - case "Boolean": - self.addCheckBox(row, group); - parent.appendChild(row); - break; - case "SliderFloat": - case "SliderInteger": - case "SliderRadian": - self.addSlider(row, group); - parent.appendChild(row); - break; - case "Texture": - self.addTextureField(row, group); - parent.appendChild(row); - break; - case "Color": - self.addColorPicker(row, group); - parent.appendChild(row); - break; - case "Vector": - self.addVector(row, group); - parent.appendChild(row); - break; - case "VectorQuaternion": - self.addVectorQuaternion(row, group); - parent.appendChild(row); - break; - default: - console.log("not defined"); + button.onclick = group.callback; + parent.appendChild(button); + break; + case "Row": + var hr = document.createElement("hr"); + hr.className = "splitter"; + if (group.id) { + hr.id = group.id; + } + parent.appendChild(hr); + break; + case "Boolean": + self.addCheckBox(row, group); + parent.appendChild(row); + break; + case "SliderFloat": + case "SliderInteger": + case "SliderRadian": + self.addSlider(row, group); + parent.appendChild(row); + break; + case "Texture": + self.addTextureField(row, group); + parent.appendChild(row); + break; + case "Color": + self.addColorPicker(row, group); + parent.appendChild(row); + break; + case "Vector": + self.addVector(row, group); + parent.appendChild(row); + break; + case "VectorQuaternion": + self.addVectorQuaternion(row, group); + parent.appendChild(row); + break; + default: + console.log("not defined"); } return row; } From c2c1e607c01138c52cff4ec4a227cf4cfe546b58 Mon Sep 17 00:00:00 2001 From: Menithal Date: Tue, 13 Jun 2017 20:31:41 +0300 Subject: [PATCH 355/357] Formating --- scripts/system/edit.js | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/scripts/system/edit.js b/scripts/system/edit.js index ade44e31b5..7c2200ff18 100644 --- a/scripts/system/edit.js +++ b/scripts/system/edit.js @@ -198,7 +198,7 @@ function hideMarketplace() { // } function adjustPositionPerBoundingBox(position, direction, registration, dimensions, orientation) { - // Adjust the position such that the bounding box (registration, dimenions, and orientation) lies behind the original + // Adjust the position such that the bounding box (registration, dimenions, and orientation) lies behind the original // position in the given direction. var CORNERS = [ { x: 0, y: 0, z: 0 }, @@ -1352,7 +1352,7 @@ function parentSelectedEntities() { } }); - if(parentCheck) { + if (parentCheck) { Window.notify("Entities parented"); }else { Window.notify("Entities are already parented to last"); @@ -1554,7 +1554,7 @@ function importSVO(importURL) { var properties = Entities.getEntityProperties(pastedEntityIDs[0], ["position", "dimensions", "registrationPoint"]); var position = Vec3.sum(deltaPosition, properties.position); - position = grid.snapToSurface(grid.snapToGrid(position, false, properties.dimensions, + position = grid.snapToSurface(grid.snapToGrid(position, false, properties.dimensions, properties.registrationPoint), properties.dimensions, properties.registrationPoint); deltaPosition = Vec3.subtract(position, properties.position); } @@ -1886,11 +1886,11 @@ var PropertiesTool = function (opts) { } pushCommandForSelections(); selectionManager._update(); - } else if(data.type === 'parent') { + } else if (data.type === 'parent') { parentSelectedEntities(); - } else if(data.type === 'unparent') { + } else if (data.type === 'unparent') { unparentSelectedEntities(); - } else if(data.type === 'saveUserData'){ + } else if (data.type === 'saveUserData'){ //the event bridge and json parsing handle our avatar id string differently. var actualID = data.id.split('"')[1]; Entities.editEntity(actualID, data.properties); @@ -2183,7 +2183,7 @@ var selectedParticleEntityID = null; function selectParticleEntity(entityID) { var properties = Entities.getEntityProperties(entityID); - if(properties.emitOrientation) { + if (properties.emitOrientation) { properties.emitOrientation = Quat.safeEulerAngles(properties.emitOrientation); } var particleData = { @@ -2213,7 +2213,7 @@ entityListTool.webView.webEventReceived.connect(function (data) { if (data.type === 'parent') { parentSelectedEntities(); - } else if(data.type === 'unparent') { + } else if (data.type === 'unparent') { unparentSelectedEntities(); } else if (data.type === "selectionUpdate") { var ids = data.entityIds; From 35f83afd09bb55d93b69625e55ba29cf3611cba4 Mon Sep 17 00:00:00 2001 From: Matti Lahtinen Date: Tue, 13 Jun 2017 20:43:14 +0300 Subject: [PATCH 356/357] Removed unneccessary print --- scripts/system/particle_explorer/particleExplorerTool.js | 4 ---- 1 file changed, 4 deletions(-) diff --git a/scripts/system/particle_explorer/particleExplorerTool.js b/scripts/system/particle_explorer/particleExplorerTool.js index 0603583e2b..d85fc169b1 100644 --- a/scripts/system/particle_explorer/particleExplorerTool.js +++ b/scripts/system/particle_explorer/particleExplorerTool.js @@ -41,10 +41,6 @@ ParticleExplorerTool = function() { data.updatedSettings.emitOrientation = Quat.fromVec3Degrees(data.updatedSettings.emitOrientation); } Entities.editEntity(that.activeParticleEntity, data.updatedSettings); - - if ( data.updatedSettings.emitOrientation ) { - print('-settings-udate- ' + that.activeParticleEntity + ' - ' + JSON.stringify(data.updatedSettings)); - } } } From c3f664502a0c2f387e8e975d7b312c54fbdb1daa Mon Sep 17 00:00:00 2001 From: Brad Davis Date: Tue, 13 Jun 2017 10:57:10 -0700 Subject: [PATCH 357/357] Add support for querying the desired output audio device for OpenVR --- plugins/openvr/CMakeLists.txt | 5 ++-- plugins/openvr/src/OpenVrDisplayPlugin.cpp | 30 ++++++++++++++++++++++ plugins/openvr/src/OpenVrDisplayPlugin.h | 3 +++ plugins/openvr/src/OpenVrHelpers.cpp | 16 ++++++++++++ plugins/openvr/src/OpenVrHelpers.h | 1 + 5 files changed, 53 insertions(+), 2 deletions(-) diff --git a/plugins/openvr/CMakeLists.txt b/plugins/openvr/CMakeLists.txt index af65f3dbf7..6a95ef6d76 100644 --- a/plugins/openvr/CMakeLists.txt +++ b/plugins/openvr/CMakeLists.txt @@ -10,10 +10,10 @@ if (WIN32) # we're using static GLEW, so define GLEW_STATIC add_definitions(-DGLEW_STATIC) set(TARGET_NAME openvr) - setup_hifi_plugin(OpenGL Script Qml Widgets) + setup_hifi_plugin(OpenGL Script Qml Widgets Multimedia) link_hifi_libraries(shared gl networking controllers ui plugins display-plugins ui-plugins input-plugins script-engine - render-utils model gpu gpu-gl render model-networking fbx ktx image procedural) + audio-client render-utils model gpu gpu-gl render model-networking fbx ktx image procedural) include_hifi_library_headers(octree) @@ -21,4 +21,5 @@ if (WIN32) find_package(OpenVR REQUIRED) target_include_directories(${TARGET_NAME} PRIVATE ${OPENVR_INCLUDE_DIRS}) target_link_libraries(${TARGET_NAME} ${OPENVR_LIBRARIES}) + target_link_libraries(${TARGET_NAME} Winmm.lib) endif() diff --git a/plugins/openvr/src/OpenVrDisplayPlugin.cpp b/plugins/openvr/src/OpenVrDisplayPlugin.cpp index 8105de7a13..15fb7d72c9 100644 --- a/plugins/openvr/src/OpenVrDisplayPlugin.cpp +++ b/plugins/openvr/src/OpenVrDisplayPlugin.cpp @@ -7,6 +7,9 @@ // #include "OpenVrDisplayPlugin.h" +// Odd ordering of header is required to avoid 'macro redinition warnings' +#include + #include #include #include @@ -713,3 +716,30 @@ bool OpenVrDisplayPlugin::isKeyboardVisible() { int OpenVrDisplayPlugin::getRequiredThreadCount() const { return Parent::getRequiredThreadCount() + (_threadedSubmit ? 1 : 0); } + +QString OpenVrDisplayPlugin::getPreferredAudioInDevice() const { + QString device = getVrSettingString(vr::k_pch_audio_Section, vr::k_pch_audio_OnPlaybackDevice_String); + if (!device.isEmpty()) { + static const WCHAR INIT = 0; + size_t size = device.size() + 1; + std::vector deviceW; + deviceW.assign(size, INIT); + device.toWCharArray(deviceW.data()); + device = AudioClient::friendlyNameForAudioDevice(deviceW.data()); + } + return device; +} + +QString OpenVrDisplayPlugin::getPreferredAudioOutDevice() const { + QString device = getVrSettingString(vr::k_pch_audio_Section, vr::k_pch_audio_OnRecordDevice_String); + if (!device.isEmpty()) { + static const WCHAR INIT = 0; + size_t size = device.size() + 1; + std::vector deviceW; + deviceW.assign(size, INIT); + device.toWCharArray(deviceW.data()); + device = AudioClient::friendlyNameForAudioDevice(deviceW.data()); + } + return device; +} + diff --git a/plugins/openvr/src/OpenVrDisplayPlugin.h b/plugins/openvr/src/OpenVrDisplayPlugin.h index 01e02c9892..a1bbed8754 100644 --- a/plugins/openvr/src/OpenVrDisplayPlugin.h +++ b/plugins/openvr/src/OpenVrDisplayPlugin.h @@ -58,6 +58,9 @@ public: // Possibly needs an additional thread for VR submission int getRequiredThreadCount() const override; + QString getPreferredAudioInDevice() const override; + QString getPreferredAudioOutDevice() const override; + protected: bool internalActivate() override; void internalDeactivate() override; diff --git a/plugins/openvr/src/OpenVrHelpers.cpp b/plugins/openvr/src/OpenVrHelpers.cpp index d9db757b2f..7e287a16c3 100644 --- a/plugins/openvr/src/OpenVrHelpers.cpp +++ b/plugins/openvr/src/OpenVrHelpers.cpp @@ -72,6 +72,21 @@ bool openVrSupported() { return (enableDebugOpenVR || !isOculusPresent()) && vr::VR_IsHmdPresent(); } +QString getVrSettingString(const char* section, const char* setting) { + QString result; + static const uint32_t BUFFER_SIZE = 1024; + static char BUFFER[BUFFER_SIZE]; + vr::IVRSettings * vrSettings = vr::VRSettings(); + if (vrSettings) { + vr::EVRSettingsError error = vr::VRSettingsError_None; + vrSettings->GetString(vr::k_pch_audio_Section, vr::k_pch_audio_OnPlaybackDevice_String, BUFFER, BUFFER_SIZE, &error); + if (error == vr::VRSettingsError_None) { + result = BUFFER; + } + } + return result; +} + vr::IVRSystem* acquireOpenVrSystem() { bool hmdPresent = vr::VR_IsHmdPresent(); if (hmdPresent) { @@ -82,6 +97,7 @@ vr::IVRSystem* acquireOpenVrSystem() { #endif vr::EVRInitError eError = vr::VRInitError_None; activeHmd = vr::VR_Init(&eError, vr::VRApplication_Scene); + #if DEV_BUILD qCDebug(displayplugins) << "OpenVR display: HMD is " << activeHmd << " error is " << eError; #endif diff --git a/plugins/openvr/src/OpenVrHelpers.h b/plugins/openvr/src/OpenVrHelpers.h index f00cd9e117..f4253899a2 100644 --- a/plugins/openvr/src/OpenVrHelpers.h +++ b/plugins/openvr/src/OpenVrHelpers.h @@ -25,6 +25,7 @@ bool openVrQuitRequested(); void enableOpenVrKeyboard(PluginContainer* container); void disableOpenVrKeyboard(); bool isOpenVrKeyboardShown(); +QString getVrSettingString(const char* section, const char* setting); template

        n|{E?;vXS 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�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